]> O.S.I.I.S - jp/crow.git/commitdiff
sample directory
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sat, 3 Aug 2019 17:49:15 +0000 (19:49 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sat, 3 Aug 2019 17:49:15 +0000 (19:49 +0200)
441 files changed:
Crow.NetStd.sln [deleted file]
Crow.sln
Crow/Crow.NetStd.csproj [deleted file]
Crow/Crow.csproj
Crow/src/GraphicObjects/Container.cs
Crow/src/Interface.cs
Crow/src/backends/win32/WinBackend.cs
Crow/src/backends/xcb/XCBBackend.cs
CrowIDE/src/Editors/SourceEditor.cs
CrowIDE/ui/editors/SvgEdit.itemp
Samples/CrowIDE/CrowIDE.csproj [new file with mode: 0644]
Samples/CrowIDE/CrowIDE.userprefs [new file with mode: 0644]
Samples/CrowIDE/DefaultTemplateOverrides/ContextMenu.template [new file with mode: 0644]
Samples/CrowIDE/DefaultTemplateOverrides/MenuItem.template [new file with mode: 0644]
Samples/CrowIDE/DefaultTemplateOverrides/TabItem.template [new file with mode: 0644]
Samples/CrowIDE/IDE.style [new file with mode: 0644]
Samples/CrowIDE/icons/basic_floppydisk.svg [new file with mode: 0644]
Samples/CrowIDE/icons/binding.svg [new file with mode: 0644]
Samples/CrowIDE/icons/blank-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/center-align.svg [new file with mode: 0644]
Samples/CrowIDE/icons/cogwheel.svg [new file with mode: 0644]
Samples/CrowIDE/icons/compile.svg [new file with mode: 0644]
Samples/CrowIDE/icons/copy-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/cs-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/curly-brackets.svg [new file with mode: 0644]
Samples/CrowIDE/icons/drawsvg.svg [new file with mode: 0644]
Samples/CrowIDE/icons/edit.svg [new file with mode: 0644]
Samples/CrowIDE/icons/eraser.svg [new file with mode: 0644]
Samples/CrowIDE/icons/expand-arrows-1.svg [new file with mode: 0644]
Samples/CrowIDE/icons/file-code.svg [new file with mode: 0644]
Samples/CrowIDE/icons/file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/font-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/light-bulb.svg [new file with mode: 0644]
Samples/CrowIDE/icons/magic-wand.svg [new file with mode: 0644]
Samples/CrowIDE/icons/magnet.svg [new file with mode: 0644]
Samples/CrowIDE/icons/move-arrows.svg [new file with mode: 0644]
Samples/CrowIDE/icons/open-folder-1.svg [new file with mode: 0644]
Samples/CrowIDE/icons/open.svg [new file with mode: 0644]
Samples/CrowIDE/icons/paint-brush.svg [new file with mode: 0644]
Samples/CrowIDE/icons/palette.svg [new file with mode: 0644]
Samples/CrowIDE/icons/paragraph.svg [new file with mode: 0644]
Samples/CrowIDE/icons/paste-on-document.svg [new file with mode: 0644]
Samples/CrowIDE/icons/pin.svg [new file with mode: 0644]
Samples/CrowIDE/icons/previous.svg [new file with mode: 0644]
Samples/CrowIDE/icons/question.svg [new file with mode: 0644]
Samples/CrowIDE/icons/redo.svg [new file with mode: 0644]
Samples/CrowIDE/icons/reply.svg [new file with mode: 0644]
Samples/CrowIDE/icons/save.svg [new file with mode: 0644]
Samples/CrowIDE/icons/scissors.svg [new file with mode: 0644]
Samples/CrowIDE/icons/search.svg [new file with mode: 0644]
Samples/CrowIDE/icons/share-arrow.svg [new file with mode: 0644]
Samples/CrowIDE/icons/sign-out.svg [new file with mode: 0644]
Samples/CrowIDE/icons/text-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/text-label.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Border.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Button.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.CheckBox.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.ColorPicker.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.ComboBox.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Container.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.DirectoryView.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Docker.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Expandable.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.FileDialog.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Grid.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Group.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.GroupBox.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.HorizontalStack.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.IMLContainer.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Image.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Label.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.ListBox.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Menu.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.MenuItem.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.MessageBox.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.ProgressBar.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.RadioButton.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.ScrollBar.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Scroller.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Shape.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Slider.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Spinner.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Splitter.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.TabItem.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.TabView.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.TemplatedContainer.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.TemplatedGroup.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.TextBox.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.TreeView.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.VerticalStack.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Window.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/Crow.Wrapper.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/bar-chart.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/bar-menu.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/bullets.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/calendar.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/check-square-1.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/database.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/ellipsis.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/exclamation-circle-1.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/exclamation-circle.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/file-code.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/grab.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/hard-drive-1.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/hash.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/info.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/layout.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/line-list.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/list.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/modal-list.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/options.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/package.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/padding.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/picture-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/pointer.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/puzzle-piece.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/refresh-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/sliders.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/split-browser-1.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/table.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/tasks.svg [new file with mode: 0644]
Samples/CrowIDE/icons/toolbox/warning.svg [new file with mode: 0644]
Samples/CrowIDE/icons/tools.svg [new file with mode: 0644]
Samples/CrowIDE/icons/trash.svg [new file with mode: 0644]
Samples/CrowIDE/icons/undo.svg [new file with mode: 0644]
Samples/CrowIDE/icons/xml-file.svg [new file with mode: 0644]
Samples/CrowIDE/icons/zoom-in.svg [new file with mode: 0644]
Samples/CrowIDE/icons/zoom-out.svg [new file with mode: 0644]
Samples/CrowIDE/images/save.svg [new file with mode: 0644]
Samples/CrowIDE/src/CrowIDE.cs [new file with mode: 0644]
Samples/CrowIDE/src/DesignInterface.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/CodeBuffer.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/CodeBufferEventArgs.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/Node.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/TextBuffer.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/TextBufferEventArgs.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/TextEditor.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/TextFormatting.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/CodeBuffer/Token.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/EditPane.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/Editor.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/ImlSchematicEditor.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/ImlVisualEditor.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/Parsers/BufferParser.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/Parsers/CSharpParser.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/Parsers/StyleParser.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/Parsers/XMLParser.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/Parsers2/Tokenizer.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/SourceEditor.cs [new file with mode: 0644]
Samples/CrowIDE/src/Editors/SvgEditor.cs [new file with mode: 0644]
Samples/CrowIDE/src/Extensions.cs [new file with mode: 0644]
Samples/CrowIDE/src/GraphicObjectDesignContainer.cs [new file with mode: 0644]
Samples/CrowIDE/src/INetProject.cs [new file with mode: 0644]
Samples/CrowIDE/src/MemberView/CategoryContainer.cs [new file with mode: 0644]
Samples/CrowIDE/src/MemberView/MembersView.cs [new file with mode: 0644]
Samples/CrowIDE/src/MemberView/PropertyContainer.cs [new file with mode: 0644]
Samples/CrowIDE/src/Project.cs [new file with mode: 0644]
Samples/CrowIDE/src/ProjectTree/CSProjectFile.cs [new file with mode: 0644]
Samples/CrowIDE/src/ProjectTree/ImlProjectItem.cs [new file with mode: 0644]
Samples/CrowIDE/src/ProjectTree/ProjectFile.cs [new file with mode: 0644]
Samples/CrowIDE/src/ProjectTree/ProjectItem.cs [new file with mode: 0644]
Samples/CrowIDE/src/ProjectTree/ProjectNodes.cs [new file with mode: 0644]
Samples/CrowIDE/src/ProjectTree/ProjectReference.cs [new file with mode: 0644]
Samples/CrowIDE/src/ProjectTree/StyleProjectItem.cs [new file with mode: 0644]
Samples/CrowIDE/src/Solution.cs [new file with mode: 0644]
Samples/CrowIDE/src/SolutionControler.cs [new file with mode: 0644]
Samples/CrowIDE/src/VerticalLine.cs [new file with mode: 0644]
Samples/CrowIDE/ui/CategoryExp.template [new file with mode: 0755]
Samples/CrowIDE/ui/CrowIDE.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/GTreeExpITemp.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/WinSchemaItem.template [new file with mode: 0755]
Samples/CrowIDE/ui/DockWindows/toolboxBut.template [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winDesign.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winEditor.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winErrors.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winGTExplorer.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winProperties.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winSchema.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winSolution.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winStyleView.crow [new file with mode: 0644]
Samples/CrowIDE/ui/DockWindows/winToolbox.crow [new file with mode: 0644]
Samples/CrowIDE/ui/IcoBut.template [new file with mode: 0644]
Samples/CrowIDE/ui/ItemTemplates/Enum.template [new file with mode: 0755]
Samples/CrowIDE/ui/ItemTemplates/Fill.template [new file with mode: 0755]
Samples/CrowIDE/ui/LQIsExplorer.crow [new file with mode: 0644]
Samples/CrowIDE/ui/MemberView.crow [new file with mode: 0644]
Samples/CrowIDE/ui/MembersItem.template [new file with mode: 0755]
Samples/CrowIDE/ui/MembersView.template [new file with mode: 0755]
Samples/CrowIDE/ui/NewFile.crow [new file with mode: 0644]
Samples/CrowIDE/ui/Options.crow [new file with mode: 0644]
Samples/CrowIDE/ui/ProjectProperties.crow [new file with mode: 0644]
Samples/CrowIDE/ui/ProjectTree.template [new file with mode: 0644]
Samples/CrowIDE/ui/TreeExpandable.template [new file with mode: 0644]
Samples/CrowIDE/ui/editors/EditPane.template [new file with mode: 0644]
Samples/CrowIDE/ui/editors/EditPaneItems.template [new file with mode: 0644]
Samples/CrowIDE/ui/editors/EditTabItem.template [new file with mode: 0644]
Samples/CrowIDE/ui/editors/IMLEdit.itemp [new file with mode: 0644]
Samples/CrowIDE/ui/editors/SourceEditor.crow [new file with mode: 0644]
Samples/CrowIDE/ui/editors/SrcEdit.itemp [new file with mode: 0644]
Samples/CrowIDE/ui/editors/SvgEdit.itemp [new file with mode: 0644]
Samples/CrowIDE/ui/editors/TextEditor.crow [new file with mode: 0644]
Samples/CrowIDE/ui/test.crow [new file with mode: 0644]
Samples/HelloWorld/HelloWorld.csproj [new file with mode: 0644]
Samples/HelloWorld/main.cs [new file with mode: 0644]
Samples/HelloWorld/obj/HelloWorld.csproj.nuget.cache [new file with mode: 0644]
Samples/HelloWorld/obj/HelloWorld.csproj.nuget.g.props [new file with mode: 0644]
Samples/HelloWorld/obj/HelloWorld.csproj.nuget.g.targets [new file with mode: 0644]
Samples/HelloWorld/obj/project.assets.json [new file with mode: 0644]
Samples/HelloWorld/ui/helloworld.crow [new file with mode: 0644]
Samples/ShowCase/ShowCase.csproj [new file with mode: 0644]
Samples/ShowCase/main.cs [new file with mode: 0644]
Samples/ShowCase/obj/ShowCase.csproj.nuget.cache [new file with mode: 0644]
Samples/ShowCase/obj/ShowCase.csproj.nuget.g.props [new file with mode: 0644]
Samples/ShowCase/obj/ShowCase.csproj.nuget.g.targets [new file with mode: 0644]
Samples/ShowCase/obj/project.assets.json [new file with mode: 0644]
Samples/ShowCase/packages.config [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/CheckBox2.imlt [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/Container/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Container/1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Container/2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Container/3.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/DragAndDrop/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Experimental/DockWindow.template [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Experimental/testDock.crow [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/Experimental/testDock2.crow [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/Experimental/testStack.crow [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/Experimental/testTypeViewer.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/GraphicObject/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/GraphicObject/1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/GraphicObject/2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/GraphicObject/4.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/GraphicObject/5.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/GraphicObject/6.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/GraphicObject/7.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Group/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Group/1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Group/2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Group/3.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Group/4.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Splitter/1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Splitter/3.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/0h.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/1h.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/2h.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/3.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/3h.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Stack/4.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TabItem.template [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/6.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/7.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testGroupBox.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testMsgBox.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testPopper.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTabView.crow [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTabView2.crow [new file with mode: 0644]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTreeView.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow2.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow3.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedContainer/test_Listbox.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedControl/testButton.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedControl/testCheckbox.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedControl/testCombobox.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedControl/testItemTemplateTag.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedControl/testRadioButton.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedControl/testScrollbar.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedControl/testSpinner.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedGroup/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedGroup/1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TemplatedGroup/2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/TmpExpandable.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Wrapper/1.1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Wrapper/1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Wrapper/2.1.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Wrapper/2.2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/Wrapper/2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/basicTests/7.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/colorItem.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/colorItem2.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/itemTmp.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/log.xml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/perfMsr.crow [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/testMeter.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/testWindow.goml.sav [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/tmpDirItem.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/tmpMembers.goml [new file with mode: 0755]
Samples/ShowCase/ui/Interfaces/treeList.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/0.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/2.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/3.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/4.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/5.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/6.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/clip0.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/clip1.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/clip2.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/clip3.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/clip4.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/colorPicker.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/fps.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/perfMeasures.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/test1.1.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/test1.2.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/test1.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/test2WayBinding.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testBind0.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testCtxMenu.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testDisable.crow [new file with mode: 0644]
Samples/ShowCase/ui/divers/testFileDialog.crow [new file with mode: 0644]
Samples/ShowCase/ui/divers/testFocus.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testIMLContainer.crow [new file with mode: 0644]
Samples/ShowCase/ui/divers/testImage.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testMenu.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testOutOfClipUpdate.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testPropLess.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testShape.crow [new file with mode: 0644]
Samples/ShowCase/ui/divers/testStacks.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testTextBox.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/testVisibility.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/test_stack.crow [new file with mode: 0755]
Samples/ShowCase/ui/divers/welcome.crow [new file with mode: 0644]
Samples/ShowCase/ui/helloworld.crow [new file with mode: 0644]
Samples/ShowCase/ui/showcase.crow [new file with mode: 0755]
Samples/common/CrowVkWin.cs [new file with mode: 0644]
Samples/common/CrowWin.cs [new file with mode: 0644]
Samples/common/ui/Interfaces/CheckBox2.imlt [new file with mode: 0644]
Samples/common/ui/Interfaces/Container/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Container/1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Container/2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Container/3.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/3.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/4.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/5.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/6.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/clip0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/clip1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/clip2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/clip3.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/clip4.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/colorPicker.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/fps.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/perfMeasures.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/test1.1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/test1.2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/test1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/test2WayBinding.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testBind0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testCtxMenu.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testDisable.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/testFileDialog.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/testFocus.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testIMLContainer.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/testImage.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testMenu.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testOutOfClipUpdate.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testPropLess.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testShape.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Divers/testStacks.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testTextBox.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/testVisibility.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/test_stack.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Divers/welcome.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/DragAndDrop/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Experimental/DockWindow.template [new file with mode: 0755]
Samples/common/ui/Interfaces/Experimental/testDock.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Experimental/testDock2.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Experimental/testStack.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/Experimental/testTypeViewer.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/GraphicObject/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/GraphicObject/1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/GraphicObject/2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/GraphicObject/4.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/GraphicObject/5.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/GraphicObject/6.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/GraphicObject/7.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Group/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Group/1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Group/2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Group/3.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Group/4.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Splitter/1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Splitter/3.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/0h.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/1h.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/2h.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/3.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/3h.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Stack/4.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TabItem.template [new file with mode: 0644]
Samples/common/ui/Interfaces/TemplatedContainer/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/6.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/7.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/testGroupBox.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/testMsgBox.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/testPopper.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/testTabView.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/TemplatedContainer/testTabView2.crow [new file with mode: 0644]
Samples/common/ui/Interfaces/TemplatedContainer/testTreeView.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/testWindow.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/testWindow2.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/testWindow3.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedContainer/test_Listbox.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedControl/testButton.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedControl/testCheckbox.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedControl/testCombobox.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedControl/testItemTemplateTag.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedControl/testRadioButton.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedControl/testScrollbar.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedControl/testSpinner.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedGroup/0.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedGroup/1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TemplatedGroup/2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/TmpExpandable.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/Wrapper/1.1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Wrapper/1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Wrapper/2.1.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Wrapper/2.2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/Wrapper/2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/basicTests/7.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/colorItem.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/colorItem2.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/itemTmp.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/log.xml [new file with mode: 0755]
Samples/common/ui/Interfaces/perfMsr.crow [new file with mode: 0755]
Samples/common/ui/Interfaces/testMeter.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/testWindow.goml.sav [new file with mode: 0755]
Samples/common/ui/Interfaces/tmpDirItem.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/tmpMembers.goml [new file with mode: 0755]
Samples/common/ui/Interfaces/treeList.crow [new file with mode: 0755]
Samples/main.cs [new file with mode: 0644]
netfx.props [new file with mode: 0644]

diff --git a/Crow.NetStd.sln b/Crow.NetStd.sln
deleted file mode 100644 (file)
index a62e160..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crow.NetStd", "Crow\Crow.NetStd.csproj", "{75BDE4C7-4BAF-4A03-B697-5D1370775E20}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.NetStd", "Tests\Tests.NetStd.csproj", "{28BAF8B8-6A6E-40D5-8E9C-E7C1165C59DD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrowIDE.NetStd", "CrowIDE\CrowIDE.NetStd.csproj", "{A01B3151-BC81-437C-B526-CC8DBB808638}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Debug|x64 = Debug|x64
-               Debug|x86 = Debug|x86
-               Release|Any CPU = Release|Any CPU
-               Release|x64 = Release|x64
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {75BDE4C7-4BAF-4A03-B697-5D1370775E20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {75BDE4C7-4BAF-4A03-B697-5D1370775E20}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {75BDE4C7-4BAF-4A03-B697-5D1370775E20}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {75BDE4C7-4BAF-4A03-B697-5D1370775E20}.Release|Any CPU.Build.0 = Release|Any CPU
-               {28BAF8B8-6A6E-40D5-8E9C-E7C1165C59DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {28BAF8B8-6A6E-40D5-8E9C-E7C1165C59DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {28BAF8B8-6A6E-40D5-8E9C-E7C1165C59DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {28BAF8B8-6A6E-40D5-8E9C-E7C1165C59DD}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A01B3151-BC81-437C-B526-CC8DBB808638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A01B3151-BC81-437C-B526-CC8DBB808638}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A01B3151-BC81-437C-B526-CC8DBB808638}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A01B3151-BC81-437C-B526-CC8DBB808638}.Release|Any CPU.Build.0 = Release|Any CPU
-       EndGlobalSection
-EndGlobal
index 68347c39583abba827b3ac2cd42573fe23c9e385..dcb8a1ec23b8645b41978b25c223f3658b90b809 100644 (file)
--- a/Crow.sln
+++ b/Crow.sln
@@ -1,11 +1,13 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crow", "Crow\Crow.csproj", "{C2980F9B-4798-4C05-99E2-E174810F7C7B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{74289092-9F70-4941-AFCB-DFD7BE2140B6}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{B2C7855A-2878-47FD-AD32-9A83DB4AB8C6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrowIDE", "CrowIDE\CrowIDE.csproj", "{B6D911CD-1D09-42FC-B300-9187190F2AE1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld", "Samples\HelloWorld\HelloWorld.csproj", "{F535A8AB-CD93-49AB-B1B0-FFF9AE51ED6A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShowCase", "Samples\ShowCase\ShowCase.csproj", "{56329D48-D382-4850-93DE-59C453894E8A}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -13,18 +15,18 @@ Global
                Release|Any CPU = Release|Any CPU
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Release|Any CPU.Build.0 = Release|Any CPU
                {C2980F9B-4798-4C05-99E2-E174810F7C7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {C2980F9B-4798-4C05-99E2-E174810F7C7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {C2980F9B-4798-4C05-99E2-E174810F7C7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {C2980F9B-4798-4C05-99E2-E174810F7C7B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F535A8AB-CD93-49AB-B1B0-FFF9AE51ED6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F535A8AB-CD93-49AB-B1B0-FFF9AE51ED6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F535A8AB-CD93-49AB-B1B0-FFF9AE51ED6A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F535A8AB-CD93-49AB-B1B0-FFF9AE51ED6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {56329D48-D382-4850-93DE-59C453894E8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {56329D48-D382-4850-93DE-59C453894E8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {56329D48-D382-4850-93DE-59C453894E8A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {56329D48-D382-4850-93DE-59C453894E8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
        EndGlobalSection
        GlobalSection(MonoDevelopProperties) = preSolution
                Policies = $0
@@ -65,4 +67,9 @@ Global
                description = @C.R.O.W. c# Rapid Open Widgets\n\nCrow is a pure c# widget toolkit with XML definition of interface, bindings, styling...\n
                version = 0.8.0
        EndGlobalSection
+       GlobalSection(NestedProjects) = preSolution
+               {F535A8AB-CD93-49AB-B1B0-FFF9AE51ED6A} = {B2C7855A-2878-47FD-AD32-9A83DB4AB8C6}
+               {56329D48-D382-4850-93DE-59C453894E8A} = {B2C7855A-2878-47FD-AD32-9A83DB4AB8C6}
+               {348A1983-0794-445A-975C-CBBF68EAC810} = {B2C7855A-2878-47FD-AD32-9A83DB4AB8C6}
+       EndGlobalSection
 EndGlobal
diff --git a/Crow/Crow.NetStd.csproj b/Crow/Crow.NetStd.csproj
deleted file mode 100644 (file)
index 0421fa3..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <RootNamespace>Crow</RootNamespace>
-    <Description>C.R.O.W. is a widget toolkit and rendering engine entirely developed in C# with templates, styles, compositing, and bindings.</Description>        
-        
-<!--    <TargetFramework>netstandard2.0</TargetFramework>-->
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-        
-    <OutputPath>$(SolutionDir)build/$(Configuration)</OutputPath>
-    <IntermediateOutputPath>$(SolutionDir)build/obj/$(Configuration)</IntermediateOutputPath>  
-
-    <DefineConstants>DESIGN_MODE</DefineConstants>
-    
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>        
-    <EnableDefaultItems>false</EnableDefaultItems>
-    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
-    <PackOnBuild>true</PackOnBuild>
-    <PackageId>Crow</PackageId>
-    <PackageVersion>0.8.0.1-beta</PackageVersion>
-<!--    <PackageVersionSuffix>-beta</PackageVersionSuffix>not working-->
-    <Authors>JP Bruyère</Authors>
-    <Title>C# Rapid Open Widget Toolkit</Title>
-    <PackageLicenseUrl>https://opensource.org/licenses/MIT</PackageLicenseUrl>
-    <PackageIconUrl>https://jpbruyere.github.io/Crow/images/crow.png</PackageIconUrl>
-    <PackageProjectUrl>https://github.com/jpbruyere/Crow/wiki</PackageProjectUrl>
-    <PackageTags>Crow Widget Interface GUI C# .Net Mono</PackageTags>
-    <PackageCopyright>Copyright 2013-2018</PackageCopyright>
-    <PackageReleaseNotes></PackageReleaseNotes>
-    <Owners>JP Bruyère</Owners>
-  </PropertyGroup>
-   
-  
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DefineConstants>TRACE;DESIGN_MODE;DEBUG</DefineConstants>
-  </PropertyGroup>
-  
-  <ItemGroup>
-    <Compile Include="src\**\*.cs" Exclude="src\Mono.Cairo\NativeMethods-internal.cs" />
-        
-    <EmbeddedResource Include="Templates\*.*">
-      <LogicalName>Crow.%(Filename).template</LogicalName>
-    </EmbeddedResource>
-    
-    <EmbeddedResource Include="Default.style" />
-    <EmbeddedResource Include="Icons\*.*" />
-        
-    <PackageReference Include="NuGet.Build.Packaging" Version="0.2.2" />
-  </ItemGroup>  
-  <ItemGroup>
-    <Folder Include="src\backends\win32\" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Remove="src\backends\win32\User32\Structs\RawInputDevice.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="src\backends\win32\User32\Structs\RawInputDevice.cs" />
-  </ItemGroup>
-</Project>
index dce02f07e457c436711c9376ba6b91bd4be05fad..61afef5644f77dea7636937c22cb3c865cce6eb4 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project Sdk="Microsoft.NET.Sdk">
+  <Import Project="$(SolutionDir)netfx.props" />
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{C2980F9B-4798-4C05-99E2-E174810F7C7B}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Crow</RootNamespace>
+    <TargetFrameworks>net471;netstandard2.0</TargetFrameworks>
     <AssemblyName>Crow</AssemblyName>
-    <FileAlignment>512</FileAlignment>
-    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
-    <NoStdLib>False</NoStdLib>
-    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
-    <WarningLevel>4</WarningLevel>
-    <NoWin32Manifest>False</NoWin32Manifest>
-    <SignAssembly>false</SignAssembly>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <Description>C# Rapid Open Widget</Description>
-    <BaseAddress>4194304</BaseAddress>
-    <OutputPath>$(SolutionDir)build\$(Configuration)</OutputPath>
-    <IntermediateOutputPath>$(SolutionDir)build\obj\$(Configuration)</IntermediateOutputPath>
-    <AssemblyOriginatorKeyFile>crow.key</AssemblyOriginatorKeyFile>
+    <Copyright></Copyright>
+    <AssemblyVersion>0.8.1</AssemblyVersion>    
+    <Description>C.R.O.W. is a widget toolkit and rendering engine entirely developed in C# with templates, styles, compositing, and bindings.</Description>        
+                    
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>        
+    <EnableDefaultItems>false</EnableDefaultItems>
+    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
+        
+    <Authors>Jean-Philippe Bruyère</Authors>
+    <Title>C# Rapid Open Widget Toolkit</Title>
+       <License>MIT</License>
+    <PackageId>Crow</PackageId>
+    <PackageTags>GUI Widget toolkit Interface C# .Net Mono</PackageTags>
+    <PackageVersion>$(AssemblyVersion)-beta</PackageVersion>
+    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+    <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
+    <PackageProjectUrl>https://github.com/jpbruyere/Crow/wiki</PackageProjectUrl>        
+    <PackageLicense>https://opensource.org/licenses/MIT</PackageLicense>
+    <PackageIconUrl>https://jpbruyere.github.io/Crow/images/crow.png</PackageIconUrl>
+    <PackageCopyright>Copyright 2013-2019</PackageCopyright>
+    <PackageReleaseNotes>Turn on vulkan layer through vkvg</PackageReleaseNotes>    
+    <RepositoryUrl>https://github.com/jpbruyere/Crow</RepositoryUrl>
+        
+    <OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>        
+    <DefineConstants>DESIGN_MODE</DefineConstants>
     <ReleaseVersion>0.8.0</ReleaseVersion>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
-  </PropertyGroup>
+  </PropertyGroup>   
+  
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
+    <DefineConstants>TRACE;DEBUG;DESIGN_MODE;_DEBUG_CLIP_RECTANGLE;NETFRAMEWORK;NET471</DefineConstants>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <Optimize>false</Optimize>
-    <OutputPath>$(SolutionDir)build\Debug</OutputPath>
-    <DefineConstants>TRACE0;DEBUG;DEBUG_BINDING_FUNC_CALLS0;DEBUG_DRAGNDROP0;DEBUG_LOG0;XLIB_BACKEND0;DESIGN_MODE;DEBUG_UPDATE0;DEBUG_FOCUS0;DEBUG_DISPOSE0;MEASURE_TIME;DEBUG_LOAD0;DEBUG_BINDING0;DEBUG_CLIP_RECTANGLE0</DefineConstants>
-    <EnvironmentVariables>
-      <EnvironmentVariables>
-        <Variable name="MONO_CAIRO_DEBUG_DISPOSE" value="1" />
-      </EnvironmentVariables>
-    </EnvironmentVariables>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <Optimize>true</Optimize>
-    <DefineConstants>DESIGN_MODE</DefineConstants>
-    <OutputPath>$(SolutionDir)build\Release</OutputPath>
   </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="src\**\*.cs" Exclude="src\Mono.Cairo\NativeMethods-internal.cs;src\backends\win32\User32\Structs\RawInputDevice.cs" />
-  </ItemGroup>
-  <ItemGroup>
+       
+  <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
     <Reference Include="System" />
+    <Reference Include="mscorlib" />
     <Reference Include="System.Data" />
     <Reference Include="System.Xml" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Drawing" />
+    <Reference Include="Microsoft.CSharp" />        
+  </ItemGroup> 
+  
+  <ItemGroup Condition="$(TargetFramework.StartsWith('netstandard'))">
+    <PackageReference Include="System.Reflection.Emit.ILGeneration" Version="4.3.0" />
+    <PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.3.0" />
   </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+       
+  <ItemGroup>
+    <Compile Include="src\**\*.cs" Exclude="src\Mono.Cairo\NativeMethods-internal.cs" />
+        
+    <EmbeddedResource Include="Templates\*.*">
+      <LogicalName>Crow.%(Filename).template</LogicalName>
+    </EmbeddedResource>
+    
+    <EmbeddedResource Include="Default.style" />
+    <EmbeddedResource Include="Icons\*.*" />
+  </ItemGroup>  
   <ItemGroup>
-    <Folder Include="src\GraphicObjects\" />
-    <Folder Include="src\Cairo\" />
-    <Folder Include="Images\" />
-    <Folder Include="Images\Icons\" />
-    <Folder Include="src\CompilerServices\" />
-    <Folder Include="src\Fill\" />
-    <Folder Include="src\Input\" />
-    <Folder Include="src\rsvg\" />
-    <Folder Include="src\IML\" />
-    <Folder Include="Icons\" />
-    <Folder Include="src\debug\" />
-    <Folder Include="src\backends\" />
-    <Folder Include="src\backends\xlib\" />
-    <Folder Include="src\backends\xcb\" />
+    <Compile Remove="src\backends\win32\User32\Structs\RawInputDevice.cs" />
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="Icons\*.*" />
-    <EmbeddedResource Include="Default.style" />
-    <EmbeddedResource Include="Templates\Button.template">
-      <LogicalName>Crow.Button.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\CheckBox.template">
-      <LogicalName>Crow.CheckBox.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\ComboBox.template">
-      <LogicalName>Crow.ComboBox.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\Expandable.template">
-      <LogicalName>Crow.Expandable.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\DirectoryView.template">
-      <LogicalName>Crow.DirectoryView.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\FileDialog.template">
-      <LogicalName>Crow.FileDialog.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\GroupBox.template">
-      <LogicalName>Crow.GroupBox.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\ListBox.template">
-      <LogicalName>Crow.ListBox.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\MessageBox.template">
-      <LogicalName>Crow.MessageBox.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\Popper.template">
-      <LogicalName>Crow.Popper.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\RadioButton.template">
-      <LogicalName>Crow.RadioButton.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\ScrollBar.template">
-      <LogicalName>Crow.ScrollBar.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\Slider.template">
-      <LogicalName>Crow.Slider.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\Spinner.template">
-      <LogicalName>Crow.Spinner.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\TabItem.template">
-      <LogicalName>Crow.TabItem.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\TreeView.template">
-      <LogicalName>Crow.TreeView.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\Window.template">
-      <LogicalName>Crow.Window.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Images\Icons\Cursors\ibeam" />
-    <EmbeddedResource Include="Templates\MenuItem.template">
-      <LogicalName>Crow.MenuItem.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\Menu.template">
-      <LogicalName>Crow.Menu.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\ColorPicker.template">
-      <LogicalName>Crow.ColorPicker.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\ToolWindow.template">
-      <LogicalName>Crow.ToolWindow.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\FileItems.template">
-      <LogicalName>Crow.FileItems.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\DefaultItem.template">
-      <LogicalName>Crow.DefaultItem.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\ScrollingListBox.template">
-      <LogicalName>Crow.ScrollingListBox.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\imgItem.template" />
-    <EmbeddedResource Include="Templates\ArrowBut.template">
-      <LogicalName>Crow.ArrowBut.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\treeList.template" />
-    <EmbeddedResource Include="Templates\CheckBox2.template">
-      <LogicalName>Crow.CheckBox2.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\Tooltip.template">
-      <LogicalName>Crow.Tooltip.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\ContextMenu.template">
-      <LogicalName>Crow.ContextMenu.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\DockWindow.template">
-      <LogicalName>Crow.DockWindow.template</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Templates\HScrollBar.template">
-      <LogicalName>Crow.HScrollBar.template</LogicalName>
-    </EmbeddedResource>
-    <None Include="Crow.dll.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-    <EmbeddedResource Include="Images\Icons\Cursors\arrow" />
-    <EmbeddedResource Include="Images\Icons\Cursors\bottom_left_corner" />
-    <EmbeddedResource Include="Images\Icons\Cursors\bottom_right_corner" />
-    <EmbeddedResource Include="Images\Icons\Cursors\cross" />
-    <EmbeddedResource Include="Images\Icons\Cursors\hand" />
-    <EmbeddedResource Include="Images\Icons\Cursors\help" />
-    <EmbeddedResource Include="Images\Icons\Cursors\move" />
-    <EmbeddedResource Include="Images\Icons\Cursors\sb_h_double_arrow" />
-    <EmbeddedResource Include="Images\Icons\Cursors\sb_v_double_arrow" />
-    <EmbeddedResource Include="Images\Icons\Cursors\top_left_corner" />
-    <EmbeddedResource Include="Images\Icons\Cursors\top_right_corner" />
+    <None Include="src\backends\win32\User32\Structs\RawInputDevice.cs" />
   </ItemGroup>
 </Project>
index 8bff81005d96c473353238179192f252f3871329..ce54514e28e4e9ad38085f76a4337561d2eecb4e 100644 (file)
@@ -63,7 +63,7 @@ namespace Crow
                /// override this to handle specific steps in child addition in derived class,
                /// and don't forget to call the base.SetChild
                /// </summary>
-               public virtual void SetChild(Widget _child)
+               public new virtual void SetChild(Widget _child)
                {
                        base.SetChild (_child);
                }
index 9ba6462a4e6ee19d4e2854be6c72dbd8ea76b823..038df67085e72eee67e1924f8fd92addb29bd80e 100644 (file)
@@ -119,10 +119,10 @@ namespace Crow
                protected virtual void InitBackend () {
             if (Environment.OSVersion.Platform == PlatformID.Unix)
                 backend = new Crow.XCB.XCBBackend();
+                               //backend = new Crow.XLib.XLibBackend ();
             else
                 backend = new Crow.Win32.Win32Backend();
-
-                       //backend = new Crow.XLib.XLibBackend ();
+                
                        backend.Init (this);
 
                        initTooltip ();
@@ -185,7 +185,7 @@ namespace Crow
                {                       
                        while (running) {
                                Update ();
-                               Thread.Sleep (1);
+                               Thread.Sleep (30);
                        }
                }
 
index 183adc12c6d83c27a54de20014ea7bba142cb3d4..0b3f873c0f0dd4809d1e9bf48069a924f93e10d0 100755 (executable)
@@ -29,95 +29,88 @@ using System.Runtime.InteropServices;
 using System.Text;
 using OpenToolkit.NT.Native;
 
-namespace Crow.Win32
-{
-
-    public class Win32Backend : IBackend
-    {
-        public void CleanUp()
-        {
-            User32.Window.ReleaseDC(handle, hdc);
-            User32.Window.DestroyWindow(handle);
-        }
-
-        public void Flush()
-        {
+namespace Crow.Win32 {
+
+       public class Win32Backend : IBackend {
+               public void CleanUp () {
+                       User32.Window.ReleaseDC (handle, hdc);
+                       User32.Window.DestroyWindow (handle);
+               }
+
+               public void Flush () {
                        iFace.surf.Flush ();
-            //throw new NotImplementedException();
-        }
-
-        WindowProc WindowProcedureDelegate;
-        string className = "myWindowClass";
-        IntPtr instance = Marshal.GetHINSTANCE(typeof(Win32Backend).Module);
-        IntPtr handle = IntPtr.Zero;
-        IntPtr hdc = IntPtr.Zero;
+                       //throw new NotImplementedException();
+               }
+
+               WindowProc WindowProcedureDelegate;
+               string className = "myWindowClass";
+               IntPtr instance;// = Marshal.GetHINSTANCE(typeof(Win32Backend).Module);
+               IntPtr handle = IntPtr.Zero;
+               IntPtr hdc = IntPtr.Zero;
                Interface iFace;
 
-        public void Init(Interface _iFace)
-        {
+               public void Init (Interface _iFace) {
                        iFace = _iFace;
 
-            WindowProcedureDelegate = WindowProcedure;
-
-            Rect rect = new Rect
-            {
-                Left = iFace.ClientRectangle.Left,
-                Top = iFace.ClientRectangle.Top,
-                Right = iFace.ClientRectangle.Right,
-                Bottom = iFace.ClientRectangle.Bottom
-            };
-
-            User32.Window.AdjustWindowRectEx(ref rect, 0, false, 0);
-
-            ExtendedWindowClass wc = new ExtendedWindowClass
-            {
-                Size = ExtendedWindowClass.SizeInBytes,
-                Style = 0,
-                WindowProc = WindowProcedureDelegate,
-                ClassExtra = 0,
-                WindowExtra = 0,
-                Instance = instance,
-                Icon = IntPtr.Zero,
-                Cursor = User32.Cursor.LoadCursor(CursorName.Arrow),
-                //Background = Gdi32.GetStockObject(GetStockObjectType.BlackBrush),
-                MenuName = null,
-                ClassName = className,
-            };
-
-            ushort atom = User32.WindowClass.RegisterClassEx(ref wc);
-
-            handle = User32.Window.CreateWindowEx(
-                ExtendedWindowStyles.ClientEdge,
-                className,
-                "The title of my window",
-                WindowStyles.OverlappedWindow,
-
-                rect.Left,
-                rect.Top,
-                rect.Width,
-                rect.Height,
-                IntPtr.Zero,
-                IntPtr.Zero,
-                instance,
-                IntPtr.Zero
-            );
-
-            User32.Window.ShowWindow(handle, ShowWindowCommand.Show);
-
-            hdc = User32.Window.GetDC(handle);
-            iFace.surf = new Cairo.Win32Surface(hdc);
-
-        }
-
-        public void ProcessEvents()
-        {
+                       WindowProcedureDelegate = WindowProcedure;
+
+                       Rect rect = new Rect
+                       {
+                               Left = iFace.ClientRectangle.Left,
+                               Top = iFace.ClientRectangle.Top,
+                               Right = iFace.ClientRectangle.Right,
+                               Bottom = iFace.ClientRectangle.Bottom
+                       };
+
+                       User32.Window.AdjustWindowRectEx (ref rect, 0, false, 0);
+
+                       ExtendedWindowClass wc = new ExtendedWindowClass
+                       {
+                               Size = ExtendedWindowClass.SizeInBytes,
+                               Style = 0,
+                               WindowProc = WindowProcedureDelegate,
+                               ClassExtra = 0,
+                               WindowExtra = 0,
+                               Instance = instance,
+                               Icon = IntPtr.Zero,
+                               Cursor = User32.Cursor.LoadCursor (CursorName.Arrow),
+                               //Background = Gdi32.GetStockObject(GetStockObjectType.BlackBrush),
+                               MenuName = null,
+                               ClassName = className,
+                       };
+
+                       ushort atom = User32.WindowClass.RegisterClassEx (ref wc);
+
+                       handle = User32.Window.CreateWindowEx (
+                               ExtendedWindowStyles.ClientEdge,
+                               className,
+                               "The title of my window",
+                               WindowStyles.OverlappedWindow,
+
+                               rect.Left,
+                               rect.Top,
+                               rect.Width,
+                               rect.Height,
+                               IntPtr.Zero,
+                               IntPtr.Zero,
+                               instance,
+                               IntPtr.Zero
+                       );
+
+                       User32.Window.ShowWindow (handle, ShowWindowCommand.Show);
+
+                       hdc = User32.Window.GetDC (handle);
+                       iFace.surf = new Cairo.Win32Surface (hdc);
+
+               }
+
+               public void ProcessEvents () {
                        Msg msg;
-            while (User32.Message.PeekMessage(out msg, IntPtr.Zero, 0, 0, PeekMessageActions.Remove))
-            {
-                User32.Message.TranslateMessage(ref msg);
-                User32.Message.DispatchMessage(ref msg);
-            }
-        }
+                       while (User32.Message.PeekMessage (out msg, IntPtr.Zero, 0, 0, PeekMessageActions.Remove)) {
+                               User32.Message.TranslateMessage (ref msg);
+                               User32.Message.DispatchMessage (ref msg);
+                       }
+               }
 
                public bool IsDown (Key key) {
                        return false;
@@ -140,19 +133,17 @@ namespace Crow.Win32
                        }
                }
 
-               void HandleWindowPositionChanged(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam)
-               {
-                       var pos = Marshal.PtrToStructure<WindowPosition>(lParam);
-                       if (pos.HWnd == handle)
-                       {
-                               Rectangle bounds = new Rectangle(pos.X, pos.Y, pos.Width, pos.Height);
+               void HandleWindowPositionChanged (IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam) {
+                       var pos = Marshal.PtrToStructure<WindowPosition> (lParam);
+                       if (pos.HWnd == handle) {
+                               Rectangle bounds = new Rectangle (pos.X, pos.Y, pos.Width, pos.Height);
 
                                User32.Window.SetWindowPos
                                (
-                                       handle, 
-                                       IntPtr.Zero, 
-                                       bounds.X, 
-                                       bounds.Y, 
+                                       handle,
+                                       IntPtr.Zero,
+                                       bounds.X,
+                                       bounds.Y,
                                        bounds.Width,
                                        bounds.Height,
                                        SetWindowPosFlags.NoZOrder | SetWindowPosFlags.NoOwnerZOrder |
@@ -163,153 +154,151 @@ namespace Crow.Win32
                        }
                }
 
-               static Key GetKey(int code)
-               {
-                       switch (code)
-                       {
-                       // 0 - 15
-                       case 0: return Key.NoSymbol;
-                       case 1: return Key.Escape;
-                       case 2: return Key.key_1;
-                       case 3: return Key.key_2;
-                       case 4: return Key.key_3;
-                       case 5: return Key.key_4;
-                       case 6: return Key.key_5;
-                       case 7: return Key.key_6;
-                       case 8: return Key.key_7;
-                       case 9: return Key.key_8;
-                       case 10: return Key.key_9;
-                       case 11: return Key.key_0;
-                       case 12: return Key.minus;
-                       case 13: return Key.plus;
-                       case 14: return Key.BackSpace;
-                       case 15: return Key.Tab;
+               static Key GetKey (int code) {
+                       switch (code) {
+                               // 0 - 15
+                               case 0: return Key.NoSymbol;
+                               case 1: return Key.Escape;
+                               case 2: return Key.key_1;
+                               case 3: return Key.key_2;
+                               case 4: return Key.key_3;
+                               case 5: return Key.key_4;
+                               case 6: return Key.key_5;
+                               case 7: return Key.key_6;
+                               case 8: return Key.key_7;
+                               case 9: return Key.key_8;
+                               case 10: return Key.key_9;
+                               case 11: return Key.key_0;
+                               case 12: return Key.minus;
+                               case 13: return Key.plus;
+                               case 14: return Key.BackSpace;
+                               case 15: return Key.Tab;
 
                                // 16-31
-                       case 16: return Key.Q;
-                       case 17: return Key.W;
-                       case 18: return Key.E;
-                       case 19: return Key.R;
-                       case 20: return Key.T;
-                       case 21: return Key.Y;
-                       case 22: return Key.U;
-                       case 23: return Key.I;
-                       case 24: return Key.O;
-                       case 25: return Key.P;
-                       case 26: return Key.bracketleft;
-                       case 27: return Key.bracketright;
-                       case 28: return Key.Return;
-                       case 29: return Key.Control_L;
-                       case 30: return Key.A;
-                       case 31: return Key.S;
+                               case 16: return Key.Q;
+                               case 17: return Key.W;
+                               case 18: return Key.E;
+                               case 19: return Key.R;
+                               case 20: return Key.T;
+                               case 21: return Key.Y;
+                               case 22: return Key.U;
+                               case 23: return Key.I;
+                               case 24: return Key.O;
+                               case 25: return Key.P;
+                               case 26: return Key.bracketleft;
+                               case 27: return Key.bracketright;
+                               case 28: return Key.Return;
+                               case 29: return Key.Control_L;
+                               case 30: return Key.A;
+                               case 31: return Key.S;
 
                                // 32 - 47
-                       case 32: return Key.D;
-                       case 33: return Key.F;
-                       case 34: return Key.G;
-                       case 35: return Key.H;
-                       case 36: return Key.J;
-                       case 37: return Key.K;
-                       case 38: return Key.L;
-                       case 39: return Key.semicolon;
-                       case 40: return Key.quotedbl;
-                       case 41: return Key.grave;
-                       case 42: return Key.Shift_L;
-                       case 43: return Key.backslash;
-                       case 44: return Key.Z;
-                       case 45: return Key.X;
-                       case 46: return Key.C;
-                       case 47: return Key.V;
+                               case 32: return Key.D;
+                               case 33: return Key.F;
+                               case 34: return Key.G;
+                               case 35: return Key.H;
+                               case 36: return Key.J;
+                               case 37: return Key.K;
+                               case 38: return Key.L;
+                               case 39: return Key.semicolon;
+                               case 40: return Key.quotedbl;
+                               case 41: return Key.grave;
+                               case 42: return Key.Shift_L;
+                               case 43: return Key.backslash;
+                               case 44: return Key.Z;
+                               case 45: return Key.X;
+                               case 46: return Key.C;
+                               case 47: return Key.V;
 
                                // 48 - 63
-                       case 48: return Key.B;
-                       case 49: return Key.N;
-                       case 50: return Key.M;
-                       case 51: return Key.comma;
-                       case 52: return Key.period;
-                       case 53: return Key.slash;
-                       case 54: return Key.Shift_R;
-                       case 55: return Key.Print;
-                       case 56: return Key.Alt_L;
-                       case 57: return Key.space;
-                       case 58: return Key.Caps_Lock;
-                       case 59: return Key.F1;
-                       case 60: return Key.F2;
-                       case 61: return Key.F3;
-                       case 62: return Key.F4;
-                       case 63: return Key.F5;
+                               case 48: return Key.B;
+                               case 49: return Key.N;
+                               case 50: return Key.M;
+                               case 51: return Key.comma;
+                               case 52: return Key.period;
+                               case 53: return Key.slash;
+                               case 54: return Key.Shift_R;
+                               case 55: return Key.Print;
+                               case 56: return Key.Alt_L;
+                               case 57: return Key.space;
+                               case 58: return Key.Caps_Lock;
+                               case 59: return Key.F1;
+                               case 60: return Key.F2;
+                               case 61: return Key.F3;
+                               case 62: return Key.F4;
+                               case 63: return Key.F5;
 
                                // 64 - 79
-                       case 64: return Key.F6;
-                       case 65: return Key.F7;
-                       case 66: return Key.F8;
-                       case 67: return Key.F9;
-                       case 68: return Key.F10;
-                       case 69: return Key.Num_Lock;
-                       case 70: return Key.Scroll_Lock;
-                       case 71: return Key.Home;
-                       case 72: return Key.Up;
-                       case 73: return Key.Page_Up;
-                       case 74: return Key.KP_Subtract;
-                       case 75: return Key.Left;
-                       case 76: return Key.KP_5;
-                       case 77: return Key.Right;
-                       case 78: return Key.KP_Add;
-                       case 79: return Key.End;
+                               case 64: return Key.F6;
+                               case 65: return Key.F7;
+                               case 66: return Key.F8;
+                               case 67: return Key.F9;
+                               case 68: return Key.F10;
+                               case 69: return Key.Num_Lock;
+                               case 70: return Key.Scroll_Lock;
+                               case 71: return Key.Home;
+                               case 72: return Key.Up;
+                               case 73: return Key.Page_Up;
+                               case 74: return Key.KP_Subtract;
+                               case 75: return Key.Left;
+                               case 76: return Key.KP_5;
+                               case 77: return Key.Right;
+                               case 78: return Key.KP_Add;
+                               case 79: return Key.End;
 
                                // 80 - 95
-                       case 80: return Key.Down;
-                       case 81: return Key.Page_Down;
-                       case 82: return Key.Insert;
-                       case 83: return Key.Delete;
-                       case 84: return Key.NoSymbol;
-                       case 85: return Key.NoSymbol;
-                       case 86: return Key.NoSymbol;
-                       case 87: return Key.F11;
-                       case 88: return Key.F12;
-                       case 89: return Key.Pause;
-                       case 90: return Key.NoSymbol;
-                       case 91: return Key.Meta_L;
-                       case 92: return Key.Meta_R;
-                       case 93: return Key.Menu;
-                       case 94: return Key.NoSymbol;
-                       case 95: return Key.NoSymbol;
+                               case 80: return Key.Down;
+                               case 81: return Key.Page_Down;
+                               case 82: return Key.Insert;
+                               case 83: return Key.Delete;
+                               case 84: return Key.NoSymbol;
+                               case 85: return Key.NoSymbol;
+                               case 86: return Key.NoSymbol;
+                               case 87: return Key.F11;
+                               case 88: return Key.F12;
+                               case 89: return Key.Pause;
+                               case 90: return Key.NoSymbol;
+                               case 91: return Key.Meta_L;
+                               case 92: return Key.Meta_R;
+                               case 93: return Key.Menu;
+                               case 94: return Key.NoSymbol;
+                               case 95: return Key.NoSymbol;
 
                                // 96 - 106
-                       case 96: return Key.NoSymbol;
-                       case 97: return Key.NoSymbol;
-                       case 98: return Key.NoSymbol;
-                       case 99: return Key.NoSymbol;
-                       case 100: return Key.F13;
-                       case 101: return Key.F14;
-                       case 102: return Key.F15;
-                       case 103: return Key.F16;
-                       case 104: return Key.F17;
-                       case 105: return Key.F18;
-                       case 106: return Key.F19;
-
-                       default: return Key.NoSymbol;
+                               case 96: return Key.NoSymbol;
+                               case 97: return Key.NoSymbol;
+                               case 98: return Key.NoSymbol;
+                               case 99: return Key.NoSymbol;
+                               case 100: return Key.F13;
+                               case 101: return Key.F14;
+                               case 102: return Key.F15;
+                               case 103: return Key.F16;
+                               case 104: return Key.F17;
+                               case 105: return Key.F18;
+                               case 106: return Key.F19;
+
+                               default: return Key.NoSymbol;
                        }
                }
                const long ExtendedBit = 1 << 24; // Used to distinguish left and right control, alt and enter keys.
 
                void handleKeyboard (IntPtr lParam, IntPtr wParam, bool pressed) {
-                       bool extended = (lParam.ToInt64() & ExtendedBit) != 0;
-                       uint scancode = (uint)((lParam.ToInt64() >> 16) & 0xFF);
+                       bool extended = (lParam.ToInt64 () & ExtendedBit) != 0;
+                       uint scancode = (uint)((lParam.ToInt64 () >> 16) & 0xFF);
                        //ushort repeat_count = unchecked((ushort)((ulong)lParam.ToInt64() & 0xffffu));
-//                     VirtualKey vkey = (VirtualKey)wParam;
-//                     var key = WinKeyMap.TranslateKey(scancode, vkey, extended, false, out bool is_valid);
+                       //                      VirtualKey vkey = (VirtualKey)wParam;
+                       //                      var key = WinKeyMap.TranslateKey(scancode, vkey, extended, false, out bool is_valid);
                        Key k = GetKey ((int)scancode);
 
-                       if (pressed) 
+                       if (pressed)
                                iFace.ProcessKeyDown (k);
                        else
-                               iFace.ProcessKeyUp (k);                 
+                               iFace.ProcessKeyUp (k);
                }
                void handleChar (IntPtr lParam, IntPtr wParam) {
                        char c = IntPtr.Size == 4 ?
-                               (char)wParam.ToInt32() :
-                               (char)wParam.ToInt64();
+                               (char)wParam.ToInt32 () :
+                               (char)wParam.ToInt64 ();
 
                        if (!char.IsControl (c))
                                iFace.ProcessKeyPress (c);
@@ -317,153 +306,151 @@ namespace Crow.Win32
 
 
 
-        IntPtr WindowProcedure(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam)
-        {
-            var result = IntPtr.Zero;
-
-
-            switch (message)
-            {
-            case WindowMessage.MouseMove:
-                iFace.ProcessMouseMove
-                ((int)((uint)lParam.ToInt32() & 0x0000FFFF), (int)(((uint)lParam.ToInt32() & 0xFFFF0000) >> 16));
-                break;
-            case WindowMessage.LButtonDown:
-                iFace.ProcessMouseButtonDown(Crow.MouseButton.Left);
-                return IntPtr.Zero;
-            case WindowMessage.RButtonDown:
-                iFace.ProcessMouseButtonDown(Crow.MouseButton.Right);
-                return IntPtr.Zero;
-            case WindowMessage.MButtonDown:
-                iFace.ProcessMouseButtonDown(Crow.MouseButton.Middle);
-                return IntPtr.Zero;
-            case WindowMessage.LButtonUp:
-                iFace.ProcessMouseButtonUp(Crow.MouseButton.Left);
-                return IntPtr.Zero;
-            case WindowMessage.RButtonUp:
-                iFace.ProcessMouseButtonUp(Crow.MouseButton.Right);
-                return IntPtr.Zero;
-            case WindowMessage.MButtonUp:
-                iFace.ProcessMouseButtonUp(Crow.MouseButton.Middle);
-                return IntPtr.Zero;
-                       case WindowMessage.MouseWheel:
-                               iFace.ProcessMouseWheelChanged ((((long)wParam << 32) >> 48) / 120.0f);                                 
-                               return IntPtr.Zero;                                     
-                       case WindowMessage.MouseHWheel:
-                               iFace.ProcessMouseWheelChanged ((((long)wParam << 32) >> 48) / 120.0f);
-                               return IntPtr.Zero;                                     
-                       case WindowMessage.KeyDown:
-                       case WindowMessage.SystemKeyDown:
-                               handleKeyboard (lParam, wParam, true);
-                               return IntPtr.Zero;
-                       case WindowMessage.KeyUp:
-                       case WindowMessage.SystemKeyUp:                                 
-                               handleKeyboard (lParam, wParam, false);
-                               return IntPtr.Zero;
-                       case WindowMessage.Char:
-                               handleChar (lParam, wParam);
-                               break;
-                       case WindowMessage.WindowPosChanged:
-                               HandleWindowPositionChanged(handle, message, wParam, lParam);
-                               break;
-
-
-            /*case WindowMessage.Activate:
-                HandleActivate(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.EnterMenuLoop:
-            case WindowMessage.EnterSizeMove:
-                HandleEnterModalLoop(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.ExitMenuLoop:
-            case WindowMessage.ExitSizeMove:
-                HandleExitModalLoop(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.EraseBackground:
-                // This is triggered only when the client area changes.
-                // As such it does not affect steady-state performance.
-                break;
-
-
-            case WindowMessage.StyleChanged:
-                HandleStyleChanged(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.Size:
-                HandleSize(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.SetCursor:
-                result = HandleSetCursor(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.CaptureChanged:
-                HandleCaptureChanged(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.Char:
-                HandleChar(handle, message, wParam, lParam);
-                break;
-
-
-
-            case WindowMessage.MouseLeave:
-                HandleMouseLeave(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.MouseWheel:
-                HandleMouseWheel(handle, message, wParam, lParam);
-                return IntPtr.Zero;
-
-            case WindowMessage.MouseHWheel:
-                HandleMouseHWheel(handle, message, wParam, lParam);
-                return IntPtr.Zero;
-
-
-            // Keyboard events:
-            case WindowMessage.KeyDown:
-            case WindowMessage.KeyUp:
-            case WindowMessage.SystemKeyDown:
-            case WindowMessage.SystemKeyUp:
-                HandleKeyboard(handle, message, wParam, lParam);
-                return IntPtr.Zero;
-
-            case WindowMessage.SystemChar:
-                return IntPtr.Zero;
-
-            case WindowMessage.KillFocus:
-                HandleKillFocus(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.DropFiles:
-                HandleDropFiles(handle, message, wParam, lParam);
-                break;
-
-            case WindowMessage.Create:
-                HandleCreate(handle, message, wParam, lParam);
-                break;
-            case WindowMessage.Paint:
-                dc = User32.Window.BeginPaint(handle, out paintStruct);
-
-                return IntPtr.Zero;*/
-            case WindowMessage.Close:
-                User32.Window.DestroyWindow(handle);                   
-                return IntPtr.Zero;
-            case WindowMessage.Destroy:
-                User32.Message.PostQuitMessage(0);
-                //User32.WindowClass.UnregisterClass(className, instance);
-                break;
-            }
-
-            if (result != IntPtr.Zero)
-                return result;
+               IntPtr WindowProcedure (IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam) {
+                       var result = IntPtr.Zero;
+
+
+                       switch (message) {
+                               case WindowMessage.MouseMove:
+                                       iFace.ProcessMouseMove
+                                       ((int)((uint)lParam.ToInt32 () & 0x0000FFFF), (int)(((uint)lParam.ToInt32 () & 0xFFFF0000) >> 16));
+                                       break;
+                               case WindowMessage.LButtonDown:
+                                       iFace.ProcessMouseButtonDown (Crow.MouseButton.Left);
+                                       return IntPtr.Zero;
+                               case WindowMessage.RButtonDown:
+                                       iFace.ProcessMouseButtonDown (Crow.MouseButton.Right);
+                                       return IntPtr.Zero;
+                               case WindowMessage.MButtonDown:
+                                       iFace.ProcessMouseButtonDown (Crow.MouseButton.Middle);
+                                       return IntPtr.Zero;
+                               case WindowMessage.LButtonUp:
+                                       iFace.ProcessMouseButtonUp (Crow.MouseButton.Left);
+                                       return IntPtr.Zero;
+                               case WindowMessage.RButtonUp:
+                                       iFace.ProcessMouseButtonUp (Crow.MouseButton.Right);
+                                       return IntPtr.Zero;
+                               case WindowMessage.MButtonUp:
+                                       iFace.ProcessMouseButtonUp (Crow.MouseButton.Middle);
+                                       return IntPtr.Zero;
+                               case WindowMessage.MouseWheel:
+                                       iFace.ProcessMouseWheelChanged ((((long)wParam << 32) >> 48) / 120.0f);
+                                       return IntPtr.Zero;
+                               case WindowMessage.MouseHWheel:
+                                       iFace.ProcessMouseWheelChanged ((((long)wParam << 32) >> 48) / 120.0f);
+                                       return IntPtr.Zero;
+                               case WindowMessage.KeyDown:
+                               case WindowMessage.SystemKeyDown:
+                                       handleKeyboard (lParam, wParam, true);
+                                       return IntPtr.Zero;
+                               case WindowMessage.KeyUp:
+                               case WindowMessage.SystemKeyUp:
+                                       handleKeyboard (lParam, wParam, false);
+                                       return IntPtr.Zero;
+                               case WindowMessage.Char:
+                                       handleChar (lParam, wParam);
+                                       break;
+                               case WindowMessage.WindowPosChanged:
+                                       HandleWindowPositionChanged (handle, message, wParam, lParam);
+                                       break;
+
+
+                               /*case WindowMessage.Activate:
+                                       HandleActivate(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.EnterMenuLoop:
+                               case WindowMessage.EnterSizeMove:
+                                       HandleEnterModalLoop(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.ExitMenuLoop:
+                               case WindowMessage.ExitSizeMove:
+                                       HandleExitModalLoop(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.EraseBackground:
+                                       // This is triggered only when the client area changes.
+                                       // As such it does not affect steady-state performance.
+                                       break;
+
+
+                               case WindowMessage.StyleChanged:
+                                       HandleStyleChanged(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.Size:
+                                       HandleSize(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.SetCursor:
+                                       result = HandleSetCursor(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.CaptureChanged:
+                                       HandleCaptureChanged(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.Char:
+                                       HandleChar(handle, message, wParam, lParam);
+                                       break;
+
+
+
+                               case WindowMessage.MouseLeave:
+                                       HandleMouseLeave(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.MouseWheel:
+                                       HandleMouseWheel(handle, message, wParam, lParam);
+                                       return IntPtr.Zero;
+
+                               case WindowMessage.MouseHWheel:
+                                       HandleMouseHWheel(handle, message, wParam, lParam);
+                                       return IntPtr.Zero;
+
+
+                               // Keyboard events:
+                               case WindowMessage.KeyDown:
+                               case WindowMessage.KeyUp:
+                               case WindowMessage.SystemKeyDown:
+                               case WindowMessage.SystemKeyUp:
+                                       HandleKeyboard(handle, message, wParam, lParam);
+                                       return IntPtr.Zero;
+
+                               case WindowMessage.SystemChar:
+                                       return IntPtr.Zero;
+
+                               case WindowMessage.KillFocus:
+                                       HandleKillFocus(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.DropFiles:
+                                       HandleDropFiles(handle, message, wParam, lParam);
+                                       break;
+
+                               case WindowMessage.Create:
+                                       HandleCreate(handle, message, wParam, lParam);
+                                       break;
+                               case WindowMessage.Paint:
+                                       dc = User32.Window.BeginPaint(handle, out paintStruct);
+
+                                       return IntPtr.Zero;*/
+                               case WindowMessage.Close:
+                                       User32.Window.DestroyWindow (handle);
+                                       return IntPtr.Zero;
+                               case WindowMessage.Destroy:
+                                       User32.Message.PostQuitMessage (0);
+                                       //User32.WindowClass.UnregisterClass(className, instance);
+                                       break;
+                       }
 
-            return User32.Window.DefWindowProc(handle, message, wParam, lParam);
-        }
+                       if (result != IntPtr.Zero)
+                               return result;
+
+                       return User32.Window.DefWindowProc (handle, message, wParam, lParam);
+               }
 
-    }
+       }
 }
 
index 93a9be637d2940528d3d08434497d2b8f35bc399..59376a8e32c774da35c95260245c4022abfabc8f 100644 (file)
@@ -409,15 +409,13 @@ namespace Crow.XCB
                                        xcb_window_class_t.INPUT_OUTPUT, scr.root_visual, mask, intPtr);
                        }
 
-
                        xcb_map_window (conn, win);
 
                        xcb_flush (conn);
 
-
                        IntPtr visual = findVisual (scr_it, scr.root_visual);
 
-                       loadCursors (); 
+                       //loadCursors ();       
 
                        iFace.surf = new Cairo.XcbSurface (conn, win, visual, iFace.ClientRectangle.Width, iFace.ClientRectangle.Height);
                }
index d1e1ba8e40a1cd83e1e28d1527596540580ca65e..decda6d83271a32aa76e336c6388c688196581da 100644 (file)
@@ -602,10 +602,14 @@ namespace Crow.Coding
                                                level = currentNode.Level - 1;
                                }
 
-                               for (int l = 0; l < level; l++) {                                       
+                               /*for (int l = 0; l < level; l++) {                                     
                                        gr.MoveTo (rFld.Center.X + 0.5, y);
                                        gr.LineTo (rFld.Center.X + 0.5, y + fe.Ascent + fe.Descent);
                                        rFld.Left += foldHSpace;
+                               }*/
+                               if (level > 0) {
+                                       gr.MoveTo (rFld.Center.X + 0.5, y);
+                                       gr.LineTo (rFld.Center.X + 0.5, y + fe.Ascent + fe.Descent);
                                }
                                if (closingNode) {
                                        gr.MoveTo (rFld.Center.X + 0.5, y);
index e7318b8cb7fdcd5b35349ba2cfeb65d1faf6c55f..5b72d88605d21d2b516d1bb290191bfa627db501 100644 (file)
@@ -21,7 +21,7 @@
                        </HorizontalStack>
                </VerticalStack>
                <Splitter/>
-               <IMLContainer Path="#Crow.Coding.ui.editors.SourceEditor.crow"/>
+               <IMLContainer Path="#CrowIDE.ui.editors.SourceEditor.crow"/>
                <Label DataSource="{../editor.Error}" Text="{Message}"
                        Visible="{../editor.HasError}"
                        Height="Fit" Width="Stretched" Background="DarkRed" Foreground="White"
diff --git a/Samples/CrowIDE/CrowIDE.csproj b/Samples/CrowIDE/CrowIDE.csproj
new file mode 100644 (file)
index 0000000..6670a8e
--- /dev/null
@@ -0,0 +1,47 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <Import Project="$(SolutionDir)netfx.props" />
+  <PropertyGroup>
+    <TargetFrameworks>net472</TargetFrameworks>
+    <TargetFramework>net472</TargetFramework>
+    <OutputType>Exe</OutputType>
+    <StartupObject>Crow.Coding.CrowIDE</StartupObject>
+    <OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>        
+    <IntermediateOutputPath>$(SolutionDir)build\obj\$(Configuration)</IntermediateOutputPath>                
+    <EnableDefaultItems>false</EnableDefaultItems>
+    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
+    <ReleaseVersion>0.8.0</ReleaseVersion>
+  </PropertyGroup>
+    
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugType>full</DebugType>
+    <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>        
+    <DefineConstants>TRACE;DEBUG</DefineConstants>
+  </PropertyGroup>
+  
+  <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
+    <Reference Include="System" />
+    <PackageReference Include="CVKL" Version="0.1.5-beta" />
+    <ProjectReference Include="..\..\Crow\Crow.csproj" />
+  </ItemGroup>    
+        
+  <ItemGroup>
+    <Compile Include="..\common\CrowWin.cs" />
+    <Compile Include="src\**\*.cs" Exclude="src\ProjectTree\CSProjectFile.cs" />  
+    <EmbeddedResource Remove="icons\blank-file2.svg" />
+    <EmbeddedResource Include="icons\*.*">
+      <LogicalName>CrowIDE.icons.%(Filename)%(Extension)</LogicalName>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ui\**\*.crow" />
+    <EmbeddedResource Include="ui\**\*.itemp" />  
+    <EmbeddedResource Include="ui\**\*.template">
+      <LogicalName>Crow.Coding.%(Filename).template</LogicalName>
+    </EmbeddedResource> 
+    <EmbeddedResource Include="DefaultTemplateOverrides\*.*">
+      <LogicalName>Crow.%(Filename).template</LogicalName>
+    </EmbeddedResource>        
+    <EmbeddedResource Include="IDE.style" />        
+  </ItemGroup>
+  <ItemGroup Condition="$(TargetFramework.StartsWith('netstandard'))">
+    <PackageReference Include="System.CodeDom" Version="4.5.0" />        
+  </ItemGroup>    
+</Project>
diff --git a/Samples/CrowIDE/CrowIDE.userprefs b/Samples/CrowIDE/CrowIDE.userprefs
new file mode 100644 (file)
index 0000000..0f4ab21
--- /dev/null
@@ -0,0 +1,19 @@
+<Properties StartupConfiguration="{B6D911CD-1D09-42FC-B300-9187190F2AE1}|Default">
+  <MonoDevelop.Ide.Workbench />
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
+  <MonoDevelop.Ide.DebuggingService.Breakpoints>
+    <BreakpointStore />
+  </MonoDevelop.Ide.DebuggingService.Breakpoints>
+  <MonoDevelop.Ide.DebuggingService.PinnedWatches>
+    <Watch file="../src/GraphicObjects/Shape.cs" line="42" offsetX="508" offsetY="265" expression="c" liveUpdate="False" />
+    <Watch file="../src/GraphicObjects/Shape.cs" line="48" offsetX="524" offsetY="319" expression="tmp" liveUpdate="False" />
+    <Watch file="../src/GraphicObjects/Slider.cs" line="88" offsetX="534" offsetY="788" expression="value" liveUpdate="False" />
+    <Watch file="src/SourceEditor/SourceEditor.cs" line="632" offsetX="703" offsetY="8806" expression="cl.Tokens [t]" liveUpdate="False" />
+    <Watch file="src/SourceEditor/CSharpParser.cs" line="202" offsetX="590" offsetY="1493" expression="currentTok" liveUpdate="False" />
+    <Watch file="src/SourceEditor/Parser.cs" line="258" offsetX="328" offsetY="3348" expression="tmp" liveUpdate="False" />
+    <Watch file="src/SourceEditor/SourceEditor.cs" line="629" offsetX="835" offsetY="9513" expression="lineIndex" liveUpdate="False" />
+    <Watch file="src/SourceEditor/BufferParser.cs" line="90" offsetX="544" offsetY="972" expression="SyntacticTreeMaxDepth" liveUpdate="False" />
+  </MonoDevelop.Ide.DebuggingService.PinnedWatches>
+  <MultiItemStartupConfigurations />
+  <MonoDevelop.Ide.ItemProperties.CrowIDE PreferredExecutionTarget="MonoDevelop.Default" />
+</Properties>
\ No newline at end of file
diff --git a/Samples/CrowIDE/DefaultTemplateOverrides/ContextMenu.template b/Samples/CrowIDE/DefaultTemplateOverrides/ContextMenu.template
new file mode 100644 (file)
index 0000000..38e6b7b
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<MenuItem MinimumSize="20,20" Height="Fit" Width="160" Caption="Context Menu" Data="{ContextCommands}" Orientation="Vertical"
+       IsOpened ="true" Visible="{/IsOpened}" SelectionBackground="Transparent">
+       <Template>              
+               <Border Background="DimGrey" Foreground="Black" CornerRadius="2">
+                       <GenericStack Orientation="{./Orientation}" Name="ItemsContainer" Margin="2"/>
+               </Border>               
+       </Template>
+       <ItemTemplate>
+               <MenuItem Command="{}" Width="150" PopWidth="120" SelectionBackground="Transparent" IsEnabled="{CanExecute}">
+                       <Template>
+                               <Popper Font="{./Font}" Caption="{./Caption}"  Background="{./Background}" PopDirection="{./PopDirection}"
+                                       Foreground = "{./Foreground}" CanPop="{./HasChildren}" MouseDown="./onMI_Click"
+                                       IsPopped="{²./IsOpened}" PopWidth="{./PopWidth}" PopHeight="{./PopHeight}">
+                                       <Template>
+                                               <Border Name="border1"
+                                                               CornerRadius="0"
+                                                               MouseEnter="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}"
+                                                               MouseLeave="{Foreground=Transparent}"
+                                                               MouseDown="{Foreground=vgradient|0:Black|0.05:Grey|0.85:Grey|1:White}"
+                                                               MouseUp="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}"
+                                                               MinimumSize = "60,0"
+                                                               Foreground="Transparent"
+                                                               Background="{./Background}">
+                                                               <HorizontalStack Spacing="5">
+                                                                       <Image Height="14" Width="14" Picture="{Icon}" />
+                                                                       <Label Text="{./Caption}"
+                                                                               Foreground="{./Foreground}"
+                                                                               Margin="1" HorizontalAlignment="Left"
+                                                                               Font="{./Font}" />
+                                                               </HorizontalStack>
+                                               </Border>
+                                       </Template>
+                                       <Border Foreground="DimGrey" Width="{../PopWidth}" Height="{../PopHeight}" Background="DimGrey">
+                                               <VerticalStack Name="ItemsContainer"/>
+                                       </Border>
+                               </Popper>
+                       </Template>
+               </MenuItem>
+       </ItemTemplate>
+</MenuItem>
+
diff --git a/Samples/CrowIDE/DefaultTemplateOverrides/MenuItem.template b/Samples/CrowIDE/DefaultTemplateOverrides/MenuItem.template
new file mode 100644 (file)
index 0000000..2ed8496
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<Popper Font="{./Font}" Caption="{./Caption}"  Background="{./Background}" PopDirection="{./PopDirection}"
+       Foreground = "{./Foreground}" CanPop="{./HasChildren}"
+       IsPopped="{²./IsOpened}" PopWidth="{./PopWidth}" PopHeight="{./PopHeight}" IsEnabled="{./IsEnabled}">
+       <Template>
+               <CheckBox IsChecked="{²./IsPopped}" Caption="{./Caption}" Background="{./Background}" Foreground="{./Foreground}">
+                       <Template>
+                               <Border Name="border1" ForwardMouseEvents="true"
+                                               MouseEnter="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}"
+                                               MouseLeave="{Foreground=Transparent}"
+                                               MouseDown="{Foreground=vgradient|0:Black|0.05:Grey|0.85:Grey|1:White}"
+                                               MouseUp="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}"
+                                               MinimumSize = "40,0"
+                                               Foreground="Transparent"
+                                               Background="{./Background}">
+                                               <HorizontalStack HorizontalAlignment="Left" Margin="1">
+                                                       <Image Width="10" Height="10" Picture="{../../../../../Icon}"/>
+                                                       <Label Text="{./Caption}"
+                                                               Foreground="{./Foreground}"
+                                                               Font="{./Font}" />
+                                               </HorizontalStack>
+                               </Border>
+                       </Template>
+               </CheckBox>
+       </Template>
+       <Border Foreground="DimGrey" Width="{../PopWidth}" Height="{../PopHeight}" Background="Jet">
+               <VerticalStack Name="ItemsContainer"/>
+       </Border>
+</Popper>
diff --git a/Samples/CrowIDE/DefaultTemplateOverrides/TabItem.template b/Samples/CrowIDE/DefaultTemplateOverrides/TabItem.template
new file mode 100644 (file)
index 0000000..c07119b
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<GenericStack Orientation="Vertical" Spacing="0"               
+               MouseEnter="{caption.Foreground=White}"
+               MouseLeave="{caption.Foreground=Grey}">
+       <HorizontalStack Margin="2" Left="{./TabOffset}"
+               Name="TabTitle"
+               HorizontalAlignment="Left"
+               Height="{./TabHeight}"
+               Width="{./TabWidth}">
+               <Label Name="caption" Text="{./Caption}" Foreground="Grey" Width="Stretched"/>
+               <Border CornerRadius="5" BorderWidth="1" Foreground="Transparent"  Height="12" Width="12"
+                                       MouseEnter="{Foreground=White}" MouseLeave="{Foreground=Transparent}">
+                       <Image Focusable="true" Name="Image" Margin="0" Width="Stretched" Height="Stretched" Path="#Crow.Icons.exit2.svg"
+                                MouseClick="./butCloseTabClick"/>
+               </Border>
+       </HorizontalStack>
+       <Container Name="Content"/>
+</GenericStack>
+
diff --git a/Samples/CrowIDE/IDE.style b/Samples/CrowIDE/IDE.style
new file mode 100644 (file)
index 0000000..5b5054a
--- /dev/null
@@ -0,0 +1,64 @@
+Label {    
+    Foreground="Black";
+}
+icon {
+       Width="14";
+       Height="14";
+}
+MemberViewLabel {
+       Margin="1";
+       Height="Fit";
+       Width="50%";
+       Background="White";
+}
+MemberViewHStack {
+       Focusable="true";
+       Height="Fit";
+       Spacing="1";
+       MouseEnter="{Background=SteelBlue}";
+       MouseLeave="{Background=Transparent}";
+}
+
+IcoBut {
+       Template = "#Crow.Coding.IcoBut.template";
+       MinimumSize = "10,10";
+       Width = "8";
+       Height = "14";
+       Background = "Black";
+}
+
+WinSchema {
+       Template="#Crow.Coding.ui.DockWindows.WinSchemaItem.template";
+       Focusable = "true";
+       MinimumSize="150,50";
+       Width = "Fit";
+       Height = "Fit";
+}
+TabItem {
+       AllowDrag="false";
+       Background="Grey";
+       SelectedBackground="0.9,0.9,0.91,1.0";
+    Foreground="Black";
+}
+TreeItemBorder {
+       CornerRadius="2";
+       Margin="0";
+       //Focusable="true";
+       Height="Fit";
+       Width="Stretched";
+       Foreground="Transparent";
+       MouseEnter="{Foreground=DimGrey}";
+       MouseLeave="{Foreground=Transparent}";
+}
+TreeIcon {
+       Margin="0";
+       Width="14";
+       Height="14";
+}
+Splitter {
+       Thickness="1";
+       Background="RoyalBlue";
+}
+DockWindow {
+    Background="0.98,0.98,0.99,0.9";
+}
diff --git a/Samples/CrowIDE/icons/basic_floppydisk.svg b/Samples/CrowIDE/icons/basic_floppydisk.svg
new file mode 100644 (file)
index 0000000..55d901d
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
+<g>
+       <polygon fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="63,63 1,63 1,1 51,1 63,13         "/>
+</g>
+<rect x="7" y="31" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" width="50" height="32"/>
+<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="14" y1="39" x2="50" y2="39"/>
+<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="14" y1="47" x2="50" y2="47"/>
+<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="14" y1="55" x2="50" y2="55"/>
+<rect x="15" y="1" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" width="34" height="19"/>
+<rect x="38" y="5" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" width="5" height="11"/>
+</svg>
diff --git a/Samples/CrowIDE/icons/binding.svg b/Samples/CrowIDE/icons/binding.svg
new file mode 100644 (file)
index 0000000..04f669e
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14.9 1.1c-1.4-1.4-3.7-1.4-5.1 0l-4.4 4.3c-1.4 1.5-1.4 3.7 0 5.2 0.1 0.1 0.3 0.2 0.4 0.3l1.5-1.5c-0.1-0.1-0.3-0.2-0.4-0.3-0.6-0.6-0.6-1.6 0-2.2l4.4-4.4c0.6-0.6 1.6-0.6 2.2 0s0.6 1.6 0 2.2l-1.3 1.3c0.4 0.8 0.5 1.7 0.4 2.5l2.3-2.3c1.5-1.4 1.5-3.7 0-5.1z"></path>
+<path fill="#dddddd" d="M10.2 5.1l-1.5 1.5c0 0 0.3 0.2 0.4 0.3 0.6 0.6 0.6 1.6 0 2.2l-4.4 4.4c-0.6 0.6-1.6 0.6-2.2 0s-0.6-1.6 0-2.2l1.3-1.3c-0.4-0.8-0.1-1.3-0.4-2.5l-2.3 2.3c-1.4 1.4-1.4 3.7 0 5.1s3.7 1.4 5.1 0l4.4-4.4c1.4-1.4 1.4-3.7 0-5.1-0.2-0.1-0.4-0.3-0.4-0.3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/blank-file.svg b/Samples/CrowIDE/icons/blank-file.svg
new file mode 100644 (file)
index 0000000..5880a3a
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#ffffff" d="M 10,0 H 2 V 16 H 14 V 4 Z"/>
+<path fill="#444444" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"/>
+</svg>
diff --git a/Samples/CrowIDE/icons/center-align.svg b/Samples/CrowIDE/icons/center-align.svg
new file mode 100644 (file)
index 0000000..92e3fac
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M5 0h6v3h-6v-3z"></path>
+<path fill="#FFFFFF" d="M1 4h14v3h-14v-3z"></path>
+<path fill="#FFFFFF" d="M3 8h10v3h-10v-3z"></path>
+<path fill="#FFFFFF" d="M0 12h16v3h-16v-3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/cogwheel.svg b/Samples/CrowIDE/icons/cogwheel.svg
new file mode 100644 (file)
index 0000000..c104c47
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M15.2 6l-1.1-0.2c-0.1-0.2-0.1-0.4-0.2-0.6l0.6-0.9 0.5-0.7-2.6-2.6-0.7 0.5-0.9 0.6c-0.2-0.1-0.4-0.1-0.6-0.2l-0.2-1.1-0.2-0.8h-3.6l-0.2 0.8-0.2 1.1c-0.2 0.1-0.4 0.1-0.6 0.2l-0.9-0.6-0.7-0.4-2.5 2.5 0.5 0.7 0.6 0.9c-0.2 0.2-0.2 0.4-0.3 0.6l-1.1 0.2-0.8 0.2v3.6l0.8 0.2 1.1 0.2c0.1 0.2 0.1 0.4 0.2 0.6l-0.6 0.9-0.5 0.7 2.6 2.6 0.7-0.5 0.9-0.6c0.2 0.1 0.4 0.1 0.6 0.2l0.2 1.1 0.2 0.8h3.6l0.2-0.8 0.2-1.1c0.2-0.1 0.4-0.1 0.6-0.2l0.9 0.6 0.7 0.5 2.6-2.6-0.5-0.7-0.6-0.9c0.1-0.2 0.2-0.4 0.2-0.6l1.1-0.2 0.8-0.2v-3.6l-0.8-0.2zM15 9l-1.7 0.3c-0.1 0.5-0.3 1-0.6 1.5l0.9 1.4-1.4 1.4-1.4-0.9c-0.5 0.3-1 0.5-1.5 0.6l-0.3 1.7h-2l-0.3-1.7c-0.5-0.1-1-0.3-1.5-0.6l-1.4 0.9-1.4-1.4 0.9-1.4c-0.3-0.5-0.5-1-0.6-1.5l-1.7-0.3v-2l1.7-0.3c0.1-0.5 0.3-1 0.6-1.5l-1-1.4 1.4-1.4 1.4 0.9c0.5-0.3 1-0.5 1.5-0.6l0.4-1.7h2l0.3 1.7c0.5 0.1 1 0.3 1.5 0.6l1.4-0.9 1.4 1.4-0.9 1.4c0.3 0.5 0.5 1 0.6 1.5l1.7 0.3v2z"></path>
+<path fill="#FFFFFF" d="M8 4.5c-1.9 0-3.5 1.6-3.5 3.5s1.6 3.5 3.5 3.5 3.5-1.6 3.5-3.5c0-1.9-1.6-3.5-3.5-3.5zM8 10.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5c0 1.4-1.1 2.5-2.5 2.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/compile.svg b/Samples/CrowIDE/icons/compile.svg
new file mode 100644 (file)
index 0000000..c1a14e7
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M12 7v-2l-1.2-0.4c-0.1-0.3-0.2-0.7-0.4-1l0.6-1.2-1.5-1.3-1.1 0.5c-0.3-0.2-0.6-0.3-1-0.4l-0.4-1.2h-2l-0.4 1.2c-0.3 0.1-0.7 0.2-1 0.4l-1.1-0.5-1.4 1.4 0.6 1.2c-0.2 0.3-0.3 0.6-0.4 1l-1.3 0.3v2l1.2 0.4c0.1 0.3 0.2 0.7 0.4 1l-0.5 1.1 1.4 1.4 1.2-0.6c0.3 0.2 0.6 0.3 1 0.4l0.3 1.3h2l0.4-1.2c0.3-0.1 0.7-0.2 1-0.4l1.2 0.6 1.4-1.4-0.6-1.2c0.2-0.3 0.3-0.6 0.4-1l1.2-0.4zM3 6c0-1.7 1.3-3 3-3s3 1.3 3 3c0 1.7-1.3 3-3 3s-3-1.3-3-3z"></path>
+<path fill="#FFFFFF" d="M7.5 6c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path>
+<path fill="#FFFFFF" d="M16 3v-1h-0.6c0-0.2-0.1-0.4-0.2-0.5l0.4-0.4-0.7-0.7-0.4 0.4c-0.2-0.1-0.3-0.2-0.5-0.2v-0.6h-1v0.6c-0.2 0-0.4 0.1-0.5 0.2l-0.4-0.4-0.7 0.7 0.4 0.4c-0.1 0.2-0.2 0.3-0.2 0.5h-0.6v1h0.6c0 0.2 0.1 0.4 0.2 0.5l-0.4 0.4 0.7 0.7 0.4-0.4c0.2 0.1 0.3 0.2 0.5 0.2v0.6h1v-0.6c0.2 0 0.4-0.1 0.5-0.2l0.4 0.4 0.7-0.7-0.4-0.4c0.1-0.2 0.2-0.3 0.2-0.5h0.6zM13.5 3.5c-0.6 0-1-0.4-1-1s0.4-1 1-1 1 0.4 1 1c0 0.6-0.4 1-1 1z"></path>
+<path fill="#FFFFFF" d="M15.4 11.8c-0.1-0.3-0.2-0.6-0.4-0.9l0.3-0.6-0.7-0.7-0.5 0.4c-0.3-0.2-0.6-0.3-0.9-0.4l-0.2-0.6h-1l-0.2 0.6c-0.3 0.1-0.6 0.2-0.9 0.4l-0.6-0.3-0.7 0.7 0.3 0.6c-0.2 0.3-0.3 0.6-0.4 0.9l-0.5 0.1v1l0.6 0.2c0.1 0.3 0.2 0.6 0.4 0.9l-0.3 0.6 0.7 0.7 0.6-0.3c0.3 0.2 0.6 0.3 0.9 0.4l0.1 0.5h1l0.2-0.6c0.3-0.1 0.6-0.2 0.9-0.4l0.6 0.3 0.7-0.7-0.4-0.5c0.2-0.3 0.3-0.6 0.4-0.9l0.6-0.2v-1l-0.6-0.2zM12.5 14c-0.8 0-1.5-0.7-1.5-1.5s0.7-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/copy-file.svg b/Samples/CrowIDE/icons/copy-file.svg
new file mode 100644 (file)
index 0000000..63c2dd3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M13 3h-3l-3-3h-7v13h6v3h10v-10l-3-3zM7 1l2 2h-2v-2zM1 12v-11h5v3h3v8h-8zM15 15h-8v-2h3v-9h2v3h3v8zM13 6v-2l2 2h-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/cs-file.svg b/Samples/CrowIDE/icons/cs-file.svg
new file mode 100644 (file)
index 0000000..5ddb69a
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+
+ <g class="layer">
+  <title>Layer 1</title>
+  <path d="m10,0l-8,0l0,16l12,0l0,-12l-4,-4z" fill="#ffffff" id="svg_1"/>
+  <path d="m10,0l-8,0l0,16l12,0l0,-12l-4,-4zm-1,5l4,0l0,10l-10,0l0,-14l6,0l0,4zm1,-1l0,-3l3,3l-3,0z" fill="#444444" id="svg_2"/>
+  <text fill="#007f00" font-family="Monospace" font-size="16" font-style="normal" font-weight="bold" id="svg_4" stroke="#000000" stroke-width="0" text-anchor="middle" transform="matrix(0.69828, 0, 0, 0.877654, 0.704781, 2.22646)" x="7.714503" xml:space="preserve" y="12.444685">c</text>
+  <text fill="#007f00" font-family="Monospace" font-size="7" font-style="normal" font-weight="bold" id="svg_5" stroke="#000000" stroke-width="0" text-anchor="middle" transform="matrix(0.999951, 0, 0, 0.975655, -2.14552, 0.0604767)" x="12.987902" xml:space="preserve" y="11.031572">#</text>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/Samples/CrowIDE/icons/curly-brackets.svg b/Samples/CrowIDE/icons/curly-brackets.svg
new file mode 100644 (file)
index 0000000..89ef798
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M2.1 3.1c0.2 1.3 0.4 1.6 0.4 2.9 0 0.8-1.5 1.5-1.5 1.5v1c0 0 1.5 0.7 1.5 1.5 0 1.3-0.2 1.6-0.4 2.9-0.3 2.1 0.8 3.1 1.8 3.1s2.1 0 2.1 0v-2c0 0-1.8 0.2-1.8-1 0-0.9 0.2-0.9 0.4-2.9 0.1-0.9-0.5-1.6-1.1-2.1 0.6-0.5 1.2-1.1 1.1-2-0.3-2-0.4-2-0.4-2.9 0-1.2 1.8-1.1 1.8-1.1v-2c0 0-1 0-2.1 0s-2.1 1-1.8 3.1z"></path>
+<path fill="#dddddd" d="M13.9 3.1c-0.2 1.3-0.4 1.6-0.4 2.9 0 0.8 1.5 1.5 1.5 1.5v1c0 0-1.5 0.7-1.5 1.5 0 1.3 0.2 1.6 0.4 2.9 0.3 2.1-0.8 3.1-1.8 3.1s-2.1 0-2.1 0v-2c0 0 1.8 0.2 1.8-1 0-0.9-0.2-0.9-0.4-2.9-0.1-0.9 0.5-1.6 1.1-2.1-0.6-0.5-1.2-1.1-1.1-2 0.2-2 0.4-2 0.4-2.9 0-1.2-1.8-1.1-1.8-1.1v-2c0 0 1 0 2.1 0s2.1 1 1.8 3.1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/drawsvg.svg b/Samples/CrowIDE/icons/drawsvg.svg
new file mode 100644 (file)
index 0000000..36ef290
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1120px" height="670px" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0  1120 670" preserveAspectRatio="xMidYMid meet" ><rect id="svgEditorBackground" x="0" y="0" width="1120" height="670" style="fill: none; stroke: none;"/><line id="e1_line" x1="432" y1="118" x2="291" y2="273" style="stroke:black;fill:none;stroke-width:1px;"/><line id="e2_line" x1="291" y1="270" x2="397" y2="402" style="stroke:black;fill:none;stroke-width:1px;"/><polyline style="stroke:black;fill:none;stroke-width:10px;stroke-linecap:round;stroke-linejoin:round;" id="e3_polyline" points="685,138 683,138 596,275 694,413"/></svg>
\ No newline at end of file
diff --git a/Samples/CrowIDE/icons/edit.svg b/Samples/CrowIDE/icons/edit.svg
new file mode 100644 (file)
index 0000000..73569d8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M16 4c0 0 0-1-1-2s-1.9-1-1.9-1l-1.1 1.1v-2.1h-12v16h12v-8l4-4zM6.3 11.4l-0.6-0.6 0.3-1.1 1.5 1.5-1.2 0.2zM7.2 9.5l-0.6-0.6 5.2-5.2c0.2 0.1 0.4 0.3 0.6 0.5zM14.1 2.5l-0.9 1c-0.2-0.2-0.4-0.3-0.6-0.5l0.9-0.9c0.1 0.1 0.3 0.2 0.6 0.4zM11 15h-10v-14h10v2.1l-5.9 5.9-1.1 4.1 4.1-1.1 2.9-3v6z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/eraser.svg b/Samples/CrowIDE/icons/eraser.svg
new file mode 100644 (file)
index 0000000..5dd73ba
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8.1 14l6.4-7.2c0.6-0.7 0.6-1.8-0.1-2.5l-2.7-2.7c-0.3-0.4-0.8-0.6-1.3-0.6h-1.8c-0.5 0-1 0.2-1.4 0.6l-6.7 7.6c-0.6 0.7-0.6 1.9 0.1 2.5l2.7 2.7c0.3 0.4 0.8 0.6 1.3 0.6h11.4v-1h-7.9zM6.8 13.9c0 0 0-0.1 0 0l-2.7-2.7c-0.4-0.4-0.4-0.9 0-1.3l3.4-3.9h-1l-3 3.3c-0.6 0.7-0.6 1.7 0.1 2.4l2.3 2.3h-1.3c-0.2 0-0.4-0.1-0.6-0.2l-2.8-2.8c-0.3-0.3-0.3-0.8 0-1.1l3.5-3.9h1.8l3.5-4h1l-3.5 4 3.1 3.7-3.5 4c-0.1 0.1-0.2 0.1-0.3 0.2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/expand-arrows-1.svg b/Samples/CrowIDE/icons/expand-arrows-1.svg
new file mode 100644 (file)
index 0000000..5a77b1d
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M5.3 6.7l1.4-1.4-3-3 1.3-1.3h-4v4l1.3-1.3z"></path>
+<path fill="#dddddd" d="M6.7 10.7l-1.4-1.4-3 3-1.3-1.3v4h4l-1.3-1.3z"></path>
+<path fill="#dddddd" d="M10.7 9.3l-1.4 1.4 3 3-1.3 1.3h4v-4l-1.3 1.3z"></path>
+<path fill="#dddddd" d="M11 1l1.3 1.3-3 3 1.4 1.4 3-3 1.3 1.3v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/file-code.svg b/Samples/CrowIDE/icons/file-code.svg
new file mode 100644 (file)
index 0000000..2dc00db
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path>
+<path fill="#FFFFFF" d="M6.2 13h-0.7l-2-2.5 2-2.5h0.7l-2 2.5z"></path>
+<path fill="#FFFFFF" d="M9.8 13h0.7l2-2.5-2-2.5h-0.7l2 2.5z"></path>
+<path fill="#FFFFFF" d="M6.7 14h0.6l2.1-7h-0.8z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/file.svg b/Samples/CrowIDE/icons/file.svg
new file mode 100644 (file)
index 0000000..9d06b00
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M9 5h5v11h-12v-16h7v5zM10 4v-4l4 4h-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/font-file.svg b/Samples/CrowIDE/icons/font-file.svg
new file mode 100644 (file)
index 0000000..20beac1
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path>
+<path fill="#FFFFFF" d="M5 7v2h2v5h2v-5h2v-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/light-bulb.svg b/Samples/CrowIDE/icons/light-bulb.svg
new file mode 100644 (file)
index 0000000..4193a75
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M11.7 1.9c-1-1.2-2.6-1.9-4.2-1.9s-3.2 0.7-4.2 1.9c-1 1.1-1.4 2.6-1.2 4 0.2 1.5 0.8 2.6 2.1 3.7 0.5 0.4 0.7 0.8 0.9 1.2 0 0.1 0.1 0.2 0.1 0.3-0.1 0.1-0.2 0.2-0.2 0.4 0 0.3 0.2 0.5 0.5 0.5-0.3 0-0.5 0.2-0.5 0.5s0.2 0.5 0.5 0.5c-0.3 0-0.5 0.2-0.5 0.5s0.2 0.5 0.5 0.5c-0.3 0-0.5 0.2-0.5 0.5s0.2 0.5 0.5 0.5h0.5c0 0.5 0.7 1 1.5 1s1.5-0.5 1.5-1h0.5c0.3 0 0.5-0.2 0.5-0.5s-0.2-0.5-0.5-0.5c0.3 0 0.5-0.2 0.5-0.5s-0.2-0.5-0.5-0.5c0.3 0 0.5-0.2 0.5-0.5s-0.2-0.5-0.5-0.5c0.3 0 0.5-0.2 0.5-0.5 0-0.2-0.1-0.3-0.2-0.4 0-0.1 0.1-0.1 0.1-0.2 0.2-0.4 0.4-0.8 0.9-1.2 1.3-1.1 1.9-2.2 2.1-3.8 0.2-1.4-0.2-2.8-1.2-4zM12 5.8c-0.2 1.3-0.7 2.2-1.8 3.2-0.6 0.5-0.9 1-1.2 1.4-0.2 0.5-0.3 0.6-0.5 0.6h-2c-0.2 0-0.3-0.1-0.5-0.6-0.2-0.4-0.5-1-1.1-1.6-1.3-1.1-1.6-2-1.8-3-0.2-1.1 0.2-2.3 0.9-3.2 0.9-1 2.2-1.6 3.5-1.6s2.6 0.6 3.5 1.6c0.7 0.9 1.1 2.1 1 3.2z"></path>
+<path fill="#FFFFFF" d="M11 5h-1c0-0.7-0.8-2-2-2v-1c1.8 0 3 1.8 3 3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/magic-wand.svg b/Samples/CrowIDE/icons/magic-wand.svg
new file mode 100644 (file)
index 0000000..8b40691
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 5h3v1h-3v-1z"></path>
+<path fill="#dddddd" d="M5 0h1v3h-1v-3z"></path>
+<path fill="#dddddd" d="M6 11h-1v-2.5l1 1z"></path>
+<path fill="#dddddd" d="M11 6h-1.5l-1-1h2.5z"></path>
+<path fill="#dddddd" d="M3.131 7.161l0.707 0.707-2.97 2.97-0.707-0.707 2.97-2.97z"></path>
+<path fill="#dddddd" d="M10.131 0.161l0.707 0.707-2.97 2.97-0.707-0.707 2.97-2.97z"></path>
+<path fill="#dddddd" d="M0.836 0.199l3.465 3.465-0.707 0.707-3.465-3.465 0.707-0.707z"></path>
+<path fill="#dddddd" d="M6.1 4.1l-2.1 2 9.8 9.9 2.2-2.1-9.9-9.8zM6.1 5.5l2.4 2.5-0.6 0.6-2.5-2.5 0.7-0.6z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/magnet.svg b/Samples/CrowIDE/icons/magnet.svg
new file mode 100644 (file)
index 0000000..10335f6
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M11 0h5v4h-5v-4z"></path>
+<path fill="#dddddd" d="M11 5v3c0 1.6-1.4 3-3 3s-3-1.4-3-3v-3h-5v3c0 4.4 3.6 8 8 8s8-3.6 8-8v-3h-5z"></path>
+<path fill="#dddddd" d="M0 0h5v4h-5v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/move-arrows.svg b/Samples/CrowIDE/icons/move-arrows.svg
new file mode 100644 (file)
index 0000000..ecbb2f9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 8l-3-3v2h-4v-4h2l-3-3-3 3h2v4h-4v-2l-3 3 3 3v-2h4v4h-2l3 3 3-3h-2v-4h4v2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/open-folder-1.svg b/Samples/CrowIDE/icons/open-folder-1.svg
new file mode 100644 (file)
index 0000000..9029469
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14 6v-2h-7l-1-2h-4l-1 2h-1v11h14l2-9h-2zM14.9 7l-1.6 7-11.9-0.1 2.3-6.9h11.2zM1 5h0.6l1-2h2.6l1.2 2h6.6v1h-10l-2 5.9v-6.9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/open.svg b/Samples/CrowIDE/icons/open.svg
new file mode 100644 (file)
index 0000000..bd8d7d9
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M6 5v6h4v-6h2l-4-5-4 5z"></path>
+<path fill="#FFFFFF" d="M13 2h-2l0.9 1h0.4l2.6 8h-3.9v2h-6v-2h-3.9l2.6-8h0.4l0.9-1h-2l-3 9v5h16v-5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/paint-brush.svg b/Samples/CrowIDE/icons/paint-brush.svg
new file mode 100644 (file)
index 0000000..2bdd5be
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M5.6 11.6l-1.2-1.2c-0.8-0.2-2-0.1-2.7 1-0.8 1.1-0.3 2.8-1.7 4.6 0 0 3.5 0 4.8-1.3 1.2-1.2 1.2-2.2 1-3l-0.2-0.1z"></path>
+<path fill="#dddddd" d="M5.8 8.1c-0.2 0.3-0.5 0.7-0.7 1 0 0.2-0.1 0.3-0.2 0.4l1.5 1.5c0.1-0.1 0.3-0.2 0.4-0.3 0.3-0.2 0.7-0.4 1-0.7 0.4 0 0.6-0.2 0.8-0.4l-2.2-2.2c-0.2 0.2-0.4 0.4-0.6 0.7z"></path>
+<path fill="#dddddd" d="M15.8 0.2c-0.3-0.3-0.7-0.3-1-0.1 0 0-3 2.5-5.9 5.1-0.4 0.4-0.7 0.7-1.1 1-0.2 0.2-0.4 0.4-0.6 0.5l2.1 2.1c0.2-0.2 0.4-0.4 0.5-0.7 0.3-0.4 0.6-0.7 0.9-1.1 2.5-3 5.1-5.9 5.1-5.9 0.3-0.2 0.3-0.6 0-0.9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/palette.svg b/Samples/CrowIDE/icons/palette.svg
new file mode 100644 (file)
index 0000000..8e425f7
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 7.1c0-2.7-1.3-7.1-7.3-7.1s-8.5 7.4-7.5 9.9c0.8 1.9 2.5 0.1 3.1 1 1.8 2.5-2 3.8 0.1 4.7 2.5 1.1 11.6 0.4 11.6-8.5zM4.5 9c-0.9 0-1.5-0.7-1.5-1.5s0.6-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5zM6 3.5c0-0.8 0.6-1.5 1.5-1.5s1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5-1.5-0.7-1.5-1.5zM8.5 14c-0.9 0-1.5-0.7-1.5-1.5s0.6-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5zM11 4.5c0-0.8 0.6-1.5 1.5-1.5s1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5-1.5-0.7-1.5-1.5zM12.5 11c-0.8 0-1.5-0.7-1.5-1.5s0.6-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/paragraph.svg b/Samples/CrowIDE/icons/paragraph.svg
new file mode 100644 (file)
index 0000000..826aa63
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M5.5 0c-2.5 0-4.5 2-4.5 4.5s2 4.5 4.5 4.5h2.5v7h2v-14h1v14h2v-14h2v-2h-9.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/paste-on-document.svg b/Samples/CrowIDE/icons/paste-on-document.svg
new file mode 100644 (file)
index 0000000..b0a705e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M13 4h-3v-4h-10v14h6v2h10v-9l-3-3zM3 1h4v1h-4v-1zM15 15h-8v-10h5v3h3v7zM13 7v-2l2 2h-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/pin.svg b/Samples/CrowIDE/icons/pin.svg
new file mode 100644 (file)
index 0000000..b36340b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M11 6.5v-5.5h1v-1h-8v1h1v5.5c0 0-2 1.5-2 3.5 0 0.5 1.9 0.7 4 0.7v2.2c0 0.7 0.2 1.4 0.5 2.1l0.5 1 0.5-1c0.3-0.6 0.5-1.3 0.5-2.1v-2.2c2.1 0 4-0.3 4-0.7 0-2-2-3.5-2-3.5zM7 6.6c0 0-0.5 0.3-1.6 1.4-1 1-1.5 1.9-1.5 1.9s0.1-1 0.8-1.9c0.9-1.1 1.3-1.4 1.3-1.4v-5.6h1v5.6z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/previous.svg b/Samples/CrowIDE/icons/previous.svg
new file mode 100644 (file)
index 0000000..566c8a3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M0 7.9l6-4.9v3c0 0 1.1 0 2 0 8 0 8 8 8 8s-1-4-7.8-4c-1.1 0-1.8 0-2.2 0v2.9l-6-5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/question.svg b/Samples/CrowIDE/icons/question.svg
new file mode 100644 (file)
index 0000000..fb8e3d3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M9 11h-3c0-3 1.6-4 2.7-4.6 0.4-0.2 0.7-0.4 0.9-0.6 0.5-0.5 0.3-1.2 0.2-1.4-0.3-0.7-1-1.4-2.3-1.4-2.1 0-2.5 1.9-2.5 2.3l-3-0.4c0.2-1.7 1.7-4.9 5.5-4.9 2.3 0 4.3 1.3 5.1 3.2 0.7 1.7 0.4 3.5-0.8 4.7-0.5 0.5-1.1 0.8-1.6 1.1-0.9 0.5-1.2 1-1.2 2z"></path>
+<path fill="#FFFFFF" d="M9.5 14c0 1.105-0.895 2-2 2s-2-0.895-2-2c0-1.105 0.895-2 2-2s2 0.895 2 2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/redo.svg b/Samples/CrowIDE/icons/redo.svg
new file mode 100644 (file)
index 0000000..59fcc90
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 7.9l-6-4.9v3c-0.5 0-1.1 0-2 0-8 0-8 8-8 8s1-4 7.8-4c1.1 0 1.8 0 2.2 0v2.9l6-5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/reply.svg b/Samples/CrowIDE/icons/reply.svg
new file mode 100644 (file)
index 0000000..d008cb3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M16 8c0-5-4.9-5-4.9-5h-5.1v-3l-6 6 6 6v-3h5.2c3.5 0 1.8 7 1.8 7s3-4.1 3-8z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/save.svg b/Samples/CrowIDE/icons/save.svg
new file mode 100644 (file)
index 0000000..6aa6714
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M10 6v-6h-4v6h-2l4 5 4-5z"></path>
+<path fill="#FFFFFF" d="M13 1h-2v1h1.3l2.6 8h-3.9v2h-6v-2h-3.9l2.6-8h1.3v-1h-2l-3 9v5h16v-5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/scissors.svg b/Samples/CrowIDE/icons/scissors.svg
new file mode 100644 (file)
index 0000000..4b5a225
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M16 3.1c0 0-2.1-1.1-3.5-1-0.3 0-0.5 0.1-0.7 0.2l-4.3 3.4-1.8-1.5c0.1-0.3 0.2-0.6 0.3-1 0.1-1.8-1.4-3.4-3.3-3.2-1.2 0.1-2.3 1-2.6 2.2-0.3 1.3 0.2 2.5 1.2 3.2l3.3 2.6-3.3 2.6c-1 0.7-1.5 1.9-1.2 3.2 0.3 1.2 1.4 2 2.6 2.2 1.9 0.2 3.4-1.4 3.2-3.2 0-0.3-0.1-0.7-0.3-1l1.8-1.5 4.3 3.4c0.2 0.1 0.4 0.2 0.7 0.2 1.4 0.1 3.5-1 3.5-1l-5.7-4.9 5.8-4.9zM2.8 4.6c-0.9-0.1-1.6-0.9-1.5-1.8s0.9-1.6 1.8-1.5c0.9 0.1 1.6 0.9 1.5 1.8 0 0.9-0.9 1.6-1.8 1.5zM3.1 14.7c-0.9 0.1-1.7-0.6-1.8-1.5s0.6-1.7 1.5-1.8c0.9-0.1 1.7 0.6 1.8 1.5s-0.6 1.7-1.5 1.8zM12.4 3.2c0 0 0.1 0 0.2 0 0.4 0 0.9 0.1 1.4 0.2l-6.8 5.7-0.9-1.1 6.1-4.8zM14 12.6c-0.5 0.2-1 0.3-1.4 0.2-0.1 0-0.2 0-0.2 0l-4-3.2 1-0.9 4.6 3.9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/search.svg b/Samples/CrowIDE/icons/search.svg
new file mode 100644 (file)
index 0000000..4a931b3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M15.7 14.3l-4.2-4.2c-0.2-0.2-0.5-0.3-0.8-0.3 0.8-1 1.3-2.4 1.3-3.8 0-3.3-2.7-6-6-6s-6 2.7-6 6 2.7 6 6 6c1.4 0 2.8-0.5 3.8-1.4 0 0.3 0 0.6 0.3 0.8l4.2 4.2c0.2 0.2 0.5 0.3 0.7 0.3s0.5-0.1 0.7-0.3c0.4-0.3 0.4-0.9 0-1.3zM6 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/share-arrow.svg b/Samples/CrowIDE/icons/share-arrow.svg
new file mode 100644 (file)
index 0000000..e0eb246
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M10 3h-5.1c0 0-4.9 0-4.9 5 0 3.9 3 8 3 8s-1.7-7 1.8-7h5.2v3l6-6-6-6v3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/sign-out.svg b/Samples/CrowIDE/icons/sign-out.svg
new file mode 100644 (file)
index 0000000..c5951fc
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M9 4v-3h-9v14h9v-3h-1v2h-7v-12h7v2z"></path>
+<path fill="#FFFFFF" d="M16 8l-5-4v2h-5v4h5v2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/text-file.svg b/Samples/CrowIDE/icons/text-file.svg
new file mode 100644 (file)
index 0000000..eafca90
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path>
+<path fill="#FFFFFF" d="M4 7h8v1h-8v-1z"></path>
+<path fill="#FFFFFF" d="M4 9h8v1h-8v-1z"></path>
+<path fill="#FFFFFF" d="M4 11h8v1h-8v-1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/text-label.svg b/Samples/CrowIDE/icons/text-label.svg
new file mode 100644 (file)
index 0000000..8fa9196
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M12.5 4.9c-1.4 0-2.5 0.8-2.6 0.9l1.2 1.6c0 0 0.7-0.5 1.4-0.5 1.4 0 1.5 1.2 1.5 1.6-0.4-0.1-1.1-0.3-2-0.1-1.4 0.3-2.8 2-2.1 3.9 0.7 1.8 3.1 2.1 4.1 0.6v1h2v-5.3c0-2.7-1.9-3.7-3.5-3.7zM11.5 11.4c-0.1-1.9 1.5-1.9 2.5-1.8v1c0 1.2-2.3 2.3-2.5 0.8z"></path>
+<path fill="#FFFFFF" d="M6.9 14h2.1l-3.2-12h-2.7l-3.1 12h2.1l1-4h2.7l1.1 4zM3.6 8l0.8-3.2 0.9 3.2h-1.7z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Border.svg b/Samples/CrowIDE/icons/toolbox/Crow.Border.svg
new file mode 100644 (file)
index 0000000..09eb7ac
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14 2v-2h-14v14h2v2h14v-14h-2zM13 13h-12v-12h12v12z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Button.svg b/Samples/CrowIDE/icons/toolbox/Crow.Button.svg
new file mode 100644 (file)
index 0000000..01f5c6c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15.7 5.3l-1-1c-0.2-0.2-0.4-0.3-0.7-0.3h-13c-0.6 0-1 0.4-1 1v5c0 0.3 0.1 0.6 0.3 0.7l1 1c0.2 0.2 0.4 0.3 0.7 0.3h13c0.6 0 1-0.4 1-1v-5c0-0.3-0.1-0.5-0.3-0.7zM14 10h-13v-5h13v5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.CheckBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.CheckBox.svg
new file mode 100644 (file)
index 0000000..2f0b083
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M13 0.9l-1 1.1h-12v14h14v-10.5l1.7-2-2.7-2.6zM6.5 11.7l-4.2-4.2 1.4-1.4 2.7 2.7 6.6-6.6 1.4 1.4-7.9 8.1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ColorPicker.svg b/Samples/CrowIDE/icons/toolbox/Crow.ColorPicker.svg
new file mode 100644 (file)
index 0000000..517a26a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15 1c-1.8-1.8-3.7-0.7-4.6 0.1-0.4 0.4-0.7 0.9-0.7 1.5v0c0 1.1-1.1 1.8-2.1 1.5l-0.1-0.1-0.7 0.8 0.7 0.7-6 6-0.8 2.3-0.7 0.7 1.5 1.5 0.8-0.8 2.3-0.8 6-6 0.7 0.7 0.7-0.6-0.1-0.2c-0.3-1 0.4-2.1 1.5-2.1v0c0.6 0 1.1-0.2 1.4-0.6 0.9-0.9 2-2.8 0.2-4.6zM3.9 13.6l-2 0.7-0.2 0.1 0.1-0.2 0.7-2 5.8-5.8 1.5 1.5-5.9 5.7z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ComboBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.ComboBox.svg
new file mode 100644 (file)
index 0000000..1cb88fa
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15 4h-14c-0.6 0-1 0.4-1 1v6c0 0.6 0.4 1 1 1h14c0.6 0 1-0.4 1-1v-6c0-0.6-0.4-1-1-1zM10 11h-9v-6h9v6zM13 8.4l-2-1.4h4l-2 1.4z"></path>
+<path fill="#dddddd" d="M2 6h1v4h-1v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Container.svg b/Samples/CrowIDE/icons/toolbox/Crow.Container.svg
new file mode 100644 (file)
index 0000000..d7d1dc8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15 1h-14v14h14v-14zM14 14h-12v-12h12v12z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.DirectoryView.svg b/Samples/CrowIDE/icons/toolbox/Crow.DirectoryView.svg
new file mode 100644 (file)
index 0000000..9029469
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14 6v-2h-7l-1-2h-4l-1 2h-1v11h14l2-9h-2zM14.9 7l-1.6 7-11.9-0.1 2.3-6.9h11.2zM1 5h0.6l1-2h2.6l1.2 2h6.6v1h-10l-2 5.9v-6.9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Docker.svg b/Samples/CrowIDE/icons/toolbox/Crow.Docker.svg
new file mode 100644 (file)
index 0000000..e38a283
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 2v13h15v-13h-15zM13 3h1v1h-1v-1zM7 14h-6v-9h6v9zM14 14h-6v-9h6v9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Expandable.svg b/Samples/CrowIDE/icons/toolbox/Crow.Expandable.svg
new file mode 100644 (file)
index 0000000..1c56d56
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15 4h-14c-0.6 0-1 0.4-1 1v6c0 0.6 0.4 1 1 1h14c0.6 0 1-0.4 1-1v-6c0-0.6-0.4-1-1-1zM12 9l-2-2h4l-2 2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.FileDialog.svg b/Samples/CrowIDE/icons/toolbox/Crow.FileDialog.svg
new file mode 100644 (file)
index 0000000..25142ea
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M11 2h-6v4h6v-4zM9 4h-2v-1h2v1z"></path>
+<path fill="#dddddd" d="M3 0v16h2v-1h6v1h2v-16h-10zM12 14h-8v-6h8v6zM12 7h-8v-6h8v6z"></path>
+<path fill="#dddddd" d="M11 9h-6v4h6v-4zM9 11h-2v-1h2v1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Grid.svg b/Samples/CrowIDE/icons/toolbox/Crow.Grid.svg
new file mode 100644 (file)
index 0000000..6151f97
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 0v16h16v-16h-16zM5 15h-4v-4h4v4zM5 10h-4v-4h4v4zM5 5h-4v-4h4v4zM10 15h-4v-4h4v4zM10 10h-4v-4h4v4zM10 5h-4v-4h4v4zM15 15h-4v-4h4v4zM15 10h-4v-4h4v4zM15 5h-4v-4h4v4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Group.svg b/Samples/CrowIDE/icons/toolbox/Crow.Group.svg
new file mode 100644 (file)
index 0000000..eae67f6
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 7h7v-7h-7v7zM1 1h5v5h-5v-5z"></path>
+<path fill="#dddddd" d="M9 0v7h7v-7h-7zM15 6h-5v-5h5v5z"></path>
+<path fill="#dddddd" d="M0 16h7v-7h-7v7zM1 10h5v5h-5v-5z"></path>
+<path fill="#dddddd" d="M9 16h7v-7h-7v7zM10 10h5v5h-5v-5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.GroupBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.GroupBox.svg
new file mode 100644 (file)
index 0000000..e469779
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M1 4h-1v-4h4v1h-3z"></path>
+<path fill="#dddddd" d="M12 1v-1h4v4h-1v-3z"></path>
+<path fill="#dddddd" d="M15 12h1v4h-4v-1h3z"></path>
+<path fill="#dddddd" d="M4 15v1h-4v-4h1v3z"></path>
+<path fill="#dddddd" d="M13 3v10h-10v-10h10zM14 2h-12v12h12v-12z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.HorizontalStack.svg b/Samples/CrowIDE/icons/toolbox/Crow.HorizontalStack.svg
new file mode 100644 (file)
index 0000000..f8e7025
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 0v16h16v-16h-16zM5 15h-4v-14h4v14zM10 15h-4v-14h4v14zM15 15h-4v-14h4v14z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.IMLContainer.svg b/Samples/CrowIDE/icons/toolbox/Crow.IMLContainer.svg
new file mode 100644 (file)
index 0000000..b5687ba
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M5.2 14l4.5-12h1.1l-4.5 12z"></path>
+<path fill="#dddddd" d="M11.1 13h1.2l3.7-5-3.7-5h-1.3l3.8 5z"></path>
+<path fill="#dddddd" d="M4.9 13h-1.2l-3.7-5 3.7-5h1.3l-3.8 5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Image.svg b/Samples/CrowIDE/icons/toolbox/Crow.Image.svg
new file mode 100644 (file)
index 0000000..11356c0
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 14h-16v-12h16v12zM1 13h14v-10h-14v10z"></path>
+<path fill="#dddddd" d="M2 10v2h12v-1c0 0 0.2-1.7-2-2-1.9-0.3-2.2 0.6-3.8 0.6-1.1 0-0.9-1.6-3.2-1.6-1.7 0-3 2-3 2z"></path>
+<path fill="#dddddd" d="M13 6c0 1.105-0.895 2-2 2s-2-0.895-2-2c0-1.105 0.895-2 2-2s2 0.895 2 2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Label.svg b/Samples/CrowIDE/icons/toolbox/Crow.Label.svg
new file mode 100644 (file)
index 0000000..65bb85b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M12.5 4.9c-1.4 0-2.5 0.8-2.6 0.9l1.2 1.6c0 0 0.7-0.5 1.4-0.5 1.4 0 1.5 1.2 1.5 1.6-0.4-0.1-1.1-0.3-2-0.1-1.4 0.3-2.8 2-2.1 3.9 0.7 1.8 3.1 2.1 4.1 0.6v1h2v-5.3c0-2.7-1.9-3.7-3.5-3.7zM11.5 11.4c-0.1-1.9 1.5-1.9 2.5-1.8v1c0 1.2-2.3 2.3-2.5 0.8z"></path>
+<path fill="#dddddd" d="M6.9 14h2.1l-3.2-12h-2.7l-3.1 12h2.1l1-4h2.7l1.1 4zM3.6 8l0.8-3.2 0.9 3.2h-1.7z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ListBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.ListBox.svg
new file mode 100644 (file)
index 0000000..40d1673
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 1h3v3h-3v-3z"></path>
+<path fill="#dddddd" d="M0 6h3v3h-3v-3z"></path>
+<path fill="#dddddd" d="M0 11h3v3h-3v-3z"></path>
+<path fill="#dddddd" d="M5 1h11v3h-11v-3z"></path>
+<path fill="#dddddd" d="M5 6h11v3h-11v-3z"></path>
+<path fill="#dddddd" d="M5 11h11v3h-11v-3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Menu.svg b/Samples/CrowIDE/icons/toolbox/Crow.Menu.svg
new file mode 100644 (file)
index 0000000..b6b2111
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15 2v2h-9v-2h9zM16 1h-11v4h11v-4z"></path>
+<path fill="#dddddd" d="M0 1h4v4h-4v-4z"></path>
+<path fill="#dddddd" d="M15 7v2h-9v-2h9zM16 6h-11v4h11v-4z"></path>
+<path fill="#dddddd" d="M0 6h4v4h-4v-4z"></path>
+<path fill="#dddddd" d="M15 12v2h-9v-2h9zM16 11h-11v4h11v-4z"></path>
+<path fill="#dddddd" d="M0 11h4v4h-4v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.MenuItem.svg b/Samples/CrowIDE/icons/toolbox/Crow.MenuItem.svg
new file mode 100644 (file)
index 0000000..c8bd847
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15 7v2h-9v-2h9zM16 6h-11v4h11v-4z"></path>
+<path fill="#dddddd" d="M0 6h4v4h-4v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.MessageBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.MessageBox.svg
new file mode 100644 (file)
index 0000000..16ebd72
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z"></path>
+<path fill="#dddddd" d="M7 6h2v7h-2v-7z"></path>
+<path fill="#dddddd" d="M7 3h2v2h-2v-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ProgressBar.svg b/Samples/CrowIDE/icons/toolbox/Crow.ProgressBar.svg
new file mode 100644 (file)
index 0000000..884f185
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 5v6h16v-6h-16zM15 10h-14v-4h14v4z"></path>
+<path fill="#dddddd" d="M2 7h7v2h-7v-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.RadioButton.svg b/Samples/CrowIDE/icons/toolbox/Crow.RadioButton.svg
new file mode 100644 (file)
index 0000000..6c33e84
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 4c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"></path>
+<path fill="#dddddd" d="M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ScrollBar.svg b/Samples/CrowIDE/icons/toolbox/Crow.ScrollBar.svg
new file mode 100644 (file)
index 0000000..91a1f84
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M2 2h1v4h-1v-4z"></path>
+<path fill="#dddddd" d="M1 0c-0.6 0-1 0.4-1 1v14c0 0.6 0.4 1 1 1h15v-16h-15zM13 15h-12v-14h12v14zM15 15v0h-1v-1h1v1zM15 13h-1v-10h1v10zM15 2h-1v-1h1v1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Scroller.svg b/Samples/CrowIDE/icons/toolbox/Crow.Scroller.svg
new file mode 100644 (file)
index 0000000..bbc9719
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 0v16h16v-16h-16zM15 15h-14v-6h3v1l3-2-3-2v1h-3v-6h6v3h-1l2 3 2-3h-1v-3h6v14z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Shape.svg b/Samples/CrowIDE/icons/toolbox/Crow.Shape.svg
new file mode 100644 (file)
index 0000000..de5dd37
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 0l-8 8 8 8 8-8-8-8zM2 8l6-6 6 6-6 6-6-6z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Slider.svg b/Samples/CrowIDE/icons/toolbox/Crow.Slider.svg
new file mode 100644 (file)
index 0000000..fe41c2b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 6h-3.6c-0.7-1.2-2-2-3.4-2s-2.8 0.8-3.4 2h-5.6v4h5.6c0.7 1.2 2 2 3.4 2s2.8-0.8 3.4-2h3.6v-4zM1 9v-2h4.1c0 0.3-0.1 0.7-0.1 1s0.1 0.7 0.1 1h-4.1zM9 11c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3c0 1.7-1.3 3-3 3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Spinner.svg b/Samples/CrowIDE/icons/toolbox/Crow.Spinner.svg
new file mode 100644 (file)
index 0000000..5fa848a
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M11 7h-6l3-4z"></path>
+<path fill="#dddddd" d="M5 9h6l-3 4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Splitter.svg b/Samples/CrowIDE/icons/toolbox/Crow.Splitter.svg
new file mode 100644 (file)
index 0000000..9fcd9dd
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M7 0h2v16h-2v-16z"></path>
+<path fill="#dddddd" d="M3 5l-3 3 3 3v-2h3v-2h-3z"></path>
+<path fill="#dddddd" d="M16 8l-3-3v2h-3v2h3v2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TabItem.svg b/Samples/CrowIDE/icons/toolbox/Crow.TabItem.svg
new file mode 100644 (file)
index 0000000..a9aaed3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M7 4l-1-2h-4l-1 2h-1v11h16v-11h-9zM15 14h-14v-9h0.6l1-2h2.6l1.2 2h8.6v9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TabView.svg b/Samples/CrowIDE/icons/toolbox/Crow.TabView.svg
new file mode 100644 (file)
index 0000000..942358b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14 4v-2h-14v13h16v-11h-2zM10 3h3v1h-3v-1zM6 3h3v1h-3v-1zM15 14h-14v-11h4v2h10v9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TemplatedContainer.svg b/Samples/CrowIDE/icons/toolbox/Crow.TemplatedContainer.svg
new file mode 100644 (file)
index 0000000..34a0aa2
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 0l-8 2v10l8 4 8-4v-10l-8-2zM14.4 2.6l-5.9 2.2-6.6-2.2 6.1-1.6 6.4 1.6zM1 11.4v-8.1l7 2.4v9.2l-7-3.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TemplatedGroup.svg b/Samples/CrowIDE/icons/toolbox/Crow.TemplatedGroup.svg
new file mode 100644 (file)
index 0000000..14ea6f3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M11 6.6v0-3.8l-4-1.8-4 1.8v4.2l-3 1.3v4.4l4 1.8 3.5-1.5 3.5 1.6 4-1.8v-4.5l-4-1.7zM7 2.1l2.8 1.2-2.7 1.1-2.6-1.2 2.5-1.1zM7 5v2.9l-3-1.3v-3l3 1.4zM4 13.5l-3-1.3v-3l3 1.4v2.9zM4 10l-2.6-1.2 2.6-1.1 2.8 1.2-2.8 1.1zM11 13.5l-3-1.3v-3l3 1.4v2.9zM11 10l-2.6-1.2 2.6-1.1 2.8 1.2-2.8 1.1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TextBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.TextBox.svg
new file mode 100644 (file)
index 0000000..c1fc2bb
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 5c0-0.6-0.4-1-1-1h-14c-0.6 0-1 0.4-1 1v6c0 0.6 0.4 1 1 1h14c0.6 0 1-0.4 1-1v-6zM15 11h-14v-6h14v6z"></path>
+<path fill="#dddddd" d="M2 6h1v4h-1v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TreeView.svg b/Samples/CrowIDE/icons/toolbox/Crow.TreeView.svg
new file mode 100644 (file)
index 0000000..b863291
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 10v-4h-11v1h-2v-3h9v-4h-12v4h2v10h3v2h11v-4h-11v1h-2v-5h2v2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.VerticalStack.svg b/Samples/CrowIDE/icons/toolbox/Crow.VerticalStack.svg
new file mode 100644 (file)
index 0000000..c3c3ec9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M16 0h-16v16h16v-16zM1 5v-4h14v4h-14zM1 10v-4h14v4h-14zM1 15v-4h14v4h-14z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Window.svg b/Samples/CrowIDE/icons/toolbox/Crow.Window.svg
new file mode 100644 (file)
index 0000000..74b0a24
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 4v11h16v-14h-16v3zM14 2h1v1h-1v-1zM1 4h14v10h-14v-10z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Wrapper.svg b/Samples/CrowIDE/icons/toolbox/Crow.Wrapper.svg
new file mode 100644 (file)
index 0000000..9e69e41
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 6h4v4h-4v-4z"></path>
+<path fill="#dddddd" d="M6 6h4v4h-4v-4z"></path>
+<path fill="#dddddd" d="M12 6h4v4h-4v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/bar-chart.svg b/Samples/CrowIDE/icons/toolbox/bar-chart.svg
new file mode 100644 (file)
index 0000000..ff86c96
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 15h15v1h-15v-1z"></path>
+<path fill="#dddddd" d="M0 11h3v3h-3v-3z"></path>
+<path fill="#dddddd" d="M4 9h3v5h-3v-5z"></path>
+<path fill="#dddddd" d="M8 5h3v9h-3v-9z"></path>
+<path fill="#dddddd" d="M12 0h3v14h-3v-14z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/bar-menu.svg b/Samples/CrowIDE/icons/toolbox/bar-menu.svg
new file mode 100644 (file)
index 0000000..87ec061
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 1h16v3h-16v-3z"></path>
+<path fill="#dddddd" d="M0 6h16v3h-16v-3z"></path>
+<path fill="#dddddd" d="M0 11h16v3h-16v-3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/bullets.svg b/Samples/CrowIDE/icons/toolbox/bullets.svg
new file mode 100644 (file)
index 0000000..81fb1f0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 2.5v0c0 0.8 0.7 1.5 1.5 1.5v0c0.8 0 1.5-0.7 1.5-1.5v0c0-0.8-0.7-1.5-1.5-1.5v0c-0.8 0-1.5 0.7-1.5 1.5z"></path>
+<path fill="#dddddd" d="M0 7.5v0c0 0.8 0.7 1.5 1.5 1.5v0c0.8 0 1.5-0.7 1.5-1.5v0c0-0.8-0.7-1.5-1.5-1.5v0c-0.8 0-1.5 0.7-1.5 1.5z"></path>
+<path fill="#dddddd" d="M0 12.5v0c0 0.8 0.7 1.5 1.5 1.5v0c0.8 0 1.5-0.7 1.5-1.5v0c0-0.8-0.7-1.5-1.5-1.5v0c-0.8 0-1.5 0.7-1.5 1.5z"></path>
+<path fill="#dddddd" d="M5 1h11v3h-11v-3z"></path>
+<path fill="#dddddd" d="M5 6h11v3h-11v-3z"></path>
+<path fill="#dddddd" d="M5 11h11v3h-11v-3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/calendar.svg b/Samples/CrowIDE/icons/toolbox/calendar.svg
new file mode 100644 (file)
index 0000000..9ceaa1e
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14 1v3h-3v-3h-6v3h-3v-3h-2v15h16v-15h-2zM3 15h-2v-2h2v2zM3 12h-2v-2h2v2zM3 9h-2v-2h2v2zM6 15h-2v-2h2v2zM6 12h-2v-2h2v2zM6 9h-2v-2h2v2zM9 15h-2v-2h2v2zM9 12h-2v-2h2v2zM9 9h-2v-2h2v2zM12 15h-2v-2h2v2zM12 12h-2v-2h2v2zM12 9h-2v-2h2v2zM15 15h-2v-2h2v2zM15 12h-2v-2h2v2zM15 9h-2v-2h2v2z"></path>
+<path fill="#dddddd" d="M3 0h1v3h-1v-3z"></path>
+<path fill="#dddddd" d="M12 0h1v3h-1v-3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/check-square-1.svg b/Samples/CrowIDE/icons/toolbox/check-square-1.svg
new file mode 100644 (file)
index 0000000..e198007
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14 6.2v7.8h-12v-12h10.5l1-1h-12.5v14h14v-9.8z"></path>
+<path fill="#dddddd" d="M7.9 10.9l-4.2-4.2 1.5-1.4 2.7 2.8 6.7-6.7 1.4 1.4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/database.svg b/Samples/CrowIDE/icons/toolbox/database.svg
new file mode 100644 (file)
index 0000000..65a8f06
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14 2.5c0 0.828-2.686 1.5-6 1.5s-6-0.672-6-1.5c0-0.828 2.686-1.5 6-1.5s6 0.672 6 1.5z"></path>
+<path fill="#dddddd" d="M8 5c-3.3 0-6-0.7-6-1.5v3c0 0.8 2.7 1.5 6 1.5s6-0.7 6-1.5v-3c0 0.8-2.7 1.5-6 1.5z"></path>
+<path fill="#dddddd" d="M8 9c-3.3 0-6-0.7-6-1.5v3c0 0.8 2.7 1.5 6 1.5s6-0.7 6-1.5v-3c0 0.8-2.7 1.5-6 1.5z"></path>
+<path fill="#dddddd" d="M8 13c-3.3 0-6-0.7-6-1.5v3c0 0.8 2.7 1.5 6 1.5s6-0.7 6-1.5v-3c0 0.8-2.7 1.5-6 1.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/ellipsis.svg b/Samples/CrowIDE/icons/toolbox/ellipsis.svg
new file mode 100644 (file)
index 0000000..cff94cc
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M6 0h4v4h-4v-4z"></path>
+<path fill="#dddddd" d="M6 6h4v4h-4v-4z"></path>
+<path fill="#dddddd" d="M6 12h4v4h-4v-4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/exclamation-circle-1.svg b/Samples/CrowIDE/icons/toolbox/exclamation-circle-1.svg
new file mode 100644 (file)
index 0000000..cc1b268
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z"></path>
+<path fill="#dddddd" d="M7 3h2v7h-2v-7z"></path>
+<path fill="#dddddd" d="M7 11h2v2h-2v-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/exclamation-circle.svg b/Samples/CrowIDE/icons/toolbox/exclamation-circle.svg
new file mode 100644 (file)
index 0000000..b140e7c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zM9 13h-2v-2h2v2zM9 10h-2v-7h2v7z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/file-code.svg b/Samples/CrowIDE/icons/toolbox/file-code.svg
new file mode 100644 (file)
index 0000000..a2fd2d1
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path>
+<path fill="#dddddd" d="M6.2 13h-0.7l-2-2.5 2-2.5h0.7l-2 2.5z"></path>
+<path fill="#dddddd" d="M9.8 13h0.7l2-2.5-2-2.5h-0.7l2 2.5z"></path>
+<path fill="#dddddd" d="M6.7 14h0.6l2.1-7h-0.8z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/grab.svg b/Samples/CrowIDE/icons/toolbox/grab.svg
new file mode 100644 (file)
index 0000000..25bc571
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M12.6 4c-0.2 0-0.4 0-0.6 0 0-0.2-0.2-0.6-0.4-0.8s-0.5-0.4-1.1-0.4c-0.2 0-0.4 0-0.6 0.1-0.1-0.2-0.2-0.3-0.3-0.5-0.2-0.2-0.5-0.4-1.1-0.4-0.8 0-1.2 0.5-1.4 1-0.1 0-0.3-0.1-0.5-0.1-0.5 0-0.8 0.2-1.1 0.4-0.5 0.6-0.5 1.4-0.5 1.5v0.4c-0.6 0-1.1 0.2-1.4 0.5-0.6 0.7-0.6 1.6-0.6 2.8 0 0.2 0 0.5 0 0.7 0 1.4 0.7 2.1 1.4 2.8l0.3 0.4c1.3 1.2 2.5 1.6 5.1 1.6 2.9 0 4.2-1.6 4.2-5.1v-2.5c0-0.7-0.2-2.1-1.4-2.4zM10.5 3.8c0.4 0 0.5 0.4 0.5 0.6v0.8c0 0.3 0.2 0.5 0.4 0.5 0.3 0 0.5-0.1 0.5-0.4 0 0 0-0.4 0.4-0.3 0.6 0.2 0.7 1.1 0.7 1.3 0 0 0 0 0 0v2.6c0 3.4-1.3 4.1-3.2 4.1-2.4 0-3.3-0.3-4.3-1.3-0.1-0.1-0.2-0.2-0.4-0.4-0.7-0.7-1.1-1.1-1.1-2.1 0-0.2 0-0.3 0-0.6 0-1 0-1.8 0.3-2.1 0.1-0.2 0.4-0.3 0.7-0.3v0.8l-0.3 1.2c0 0.1 0 0.1 0.1 0.1 0.1 0.1 0.2 0 0.2 0l1-1.2c0 0 0-0.1 0-0.1v-2c0-0.1 0-0.6 0.2-0.8 0.1-0.1 0.2-0.2 0.4-0.2 0.3 0 0.4 0.2 0.4 0.4v0.4c0 0.2 0.2 0.5 0.5 0.5s0.5-0.3 0.5-0.5v-1.3c0-0.1 0-0.5 0.5-0.5 0.3 0 0.5 0.2 0.5 0.5v1.2c0 0.3 0.2 0.6 0.5 0.6s0.5-0.3 0.5-0.5v-0.5c0-0.3 0.2-0.5 0.5-0.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/hard-drive-1.svg b/Samples/CrowIDE/icons/toolbox/hard-drive-1.svg
new file mode 100644 (file)
index 0000000..a71a524
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M13 1h-10l-2.7 8h15.4z"></path>
+<path fill="#dddddd" d="M0 10v5h16v-5h-16zM3 13h-1v-1h1v1zM7 13h-3v-1h3v1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/hash.svg b/Samples/CrowIDE/icons/toolbox/hash.svg
new file mode 100644 (file)
index 0000000..82196fb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M15 6v-2h-2.6l0.6-2.8-2-0.4-0.7 3.2h-3l0.7-2.8-2-0.4-0.7 3.2h-3.3v2h2.9l-0.9 4h-3v2h2.6l-0.6 2.8 2 0.4 0.7-3.2h3l-0.7 2.8 2 0.4 0.7-3.2h3.3v-2h-2.9l0.9-4h3zM9 10h-3l1-4h3l-1 4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/info.svg b/Samples/CrowIDE/icons/toolbox/info.svg
new file mode 100644 (file)
index 0000000..a8c90f4
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M7 5h3v11h-3v-11z"></path>
+<path fill="#dddddd" d="M10.5 2c0 1.105-0.895 2-2 2s-2-0.895-2-2c0-1.105 0.895-2 2-2s2 0.895 2 2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/layout.svg b/Samples/CrowIDE/icons/toolbox/layout.svg
new file mode 100644 (file)
index 0000000..3d59d76
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 0v16h16v-16h-16zM1 3h4v12h-4v-12zM15 15h-9v-12h9v12z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/line-list.svg b/Samples/CrowIDE/icons/toolbox/line-list.svg
new file mode 100644 (file)
index 0000000..ec15f7b
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 1h3v2h-3v-2z"></path>
+<path fill="#dddddd" d="M0 5h3v2h-3v-2z"></path>
+<path fill="#dddddd" d="M0 9h3v2h-3v-2z"></path>
+<path fill="#dddddd" d="M0 13h3v2h-3v-2z"></path>
+<path fill="#dddddd" d="M4 1h12v2h-12v-2z"></path>
+<path fill="#dddddd" d="M4 5h12v2h-12v-2z"></path>
+<path fill="#dddddd" d="M4 9h12v2h-12v-2z"></path>
+<path fill="#dddddd" d="M4 13h12v2h-12v-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/list.svg b/Samples/CrowIDE/icons/toolbox/list.svg
new file mode 100644 (file)
index 0000000..9aad88f
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M4 0h12v4h-12v-4z"></path>
+<path fill="#dddddd" d="M4 6h12v4h-12v-4z"></path>
+<path fill="#dddddd" d="M4 12h12v4h-12v-4z"></path>
+<path fill="#dddddd" d="M1 0l-0.9 0.5 0.2 0.7 0.7-0.3v3.1h1v-4z"></path>
+<path fill="#dddddd" d="M2.2 13.9c0.3-0.2 0.5-0.5 0.5-0.8 0-0.5-0.4-1-1.3-1-0.5 0-1 0.1-1.2 0.3h-0.1l0.2 0.8 0.1-0.1c0.1-0.1 0.4-0.2 0.7-0.2s0.4 0.1 0.4 0.3c0 0.4-0.5 0.4-0.6 0.4h-0.4v0.7h0.4c0.3 0 0.6 0.1 0.6 0.4 0 0.2-0.2 0.4-0.6 0.4s-0.7-0.2-0.8-0.2l-0.1-0.1v0.9h0.1c0.2 0.2 0.6 0.3 1.1 0.3 1 0 1.6-0.5 1.6-1.2 0-0.4-0.2-0.8-0.6-0.9z"></path>
+<path fill="#dddddd" d="M0.1 6.4l0.3 1c0 0 0.7-0.6 1.2-0.3 1.1 0.8-1.6 2.4-1.6 2.4v0.5h3v-1h-1.2c0.6-0.5 1.2-1.2 1-1.9-0.5-1.9-2.7-0.7-2.7-0.7z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/modal-list.svg b/Samples/CrowIDE/icons/toolbox/modal-list.svg
new file mode 100644 (file)
index 0000000..f1d8f70
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 4v11h16v-14h-16v3zM14 2h1v1h-1v-1zM1 4h14v10h-14v-10z"></path>
+<path fill="#dddddd" d="M3 6h2v1h-2v-1z"></path>
+<path fill="#dddddd" d="M6 6h7v1h-7v-1z"></path>
+<path fill="#dddddd" d="M3 8h2v1h-2v-1z"></path>
+<path fill="#dddddd" d="M6 8h7v1h-7v-1z"></path>
+<path fill="#dddddd" d="M3 10h2v1h-2v-1z"></path>
+<path fill="#dddddd" d="M6 10h7v1h-7v-1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/options.svg b/Samples/CrowIDE/icons/toolbox/options.svg
new file mode 100644 (file)
index 0000000..a56f6be
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M5 3.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path>
+<path fill="#dddddd" d="M3.5 0c-1.9 0-3.5 1.6-3.5 3.5s1.6 3.5 3.5 3.5 3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5zM3.5 6c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5c0 1.4-1.1 2.5-2.5 2.5z"></path>
+<path fill="#dddddd" d="M3.5 8c-1.9 0-3.5 1.6-3.5 3.5s1.6 3.5 3.5 3.5 3.5-1.6 3.5-3.5c0-1.9-1.6-3.5-3.5-3.5zM3.5 14c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5c0 1.4-1.1 2.5-2.5 2.5z"></path>
+<path fill="#dddddd" d="M8 2h8v3h-8v-3z"></path>
+<path fill="#dddddd" d="M8 10h8v3h-8v-3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/package.svg b/Samples/CrowIDE/icons/toolbox/package.svg
new file mode 100644 (file)
index 0000000..07f8b37
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 0l-8 2v10l8 4 8-4v-10l-8-2zM8 1l2.1 0.5-5.9 1.9-2.3-0.8 6.1-1.6zM8 14.9l-7-3.5v-8.1l3 1v3.4l1 0.3v-3.3l3 1v9.2zM8.5 4.8l-2.7-0.9 6.2-1.9 2.4 0.6-5.9 2.2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/padding.svg b/Samples/CrowIDE/icons/toolbox/padding.svg
new file mode 100644 (file)
index 0000000..d93b246
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 0v16h16v-16h-16zM15 3h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v1z"></path>
+<path fill="#dddddd" d="M3 2h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M4 3h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M6 3h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M5 2h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M7 2h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M9 2h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M8 3h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M10 3h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M12 3h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M11 2h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M13 2h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M12 5h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M13 4h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M12 7h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M13 6h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M12 9h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M13 8h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M12 11h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M13 10h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M12 13h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M13 12h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M2 3h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M3 4h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M2 5h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M3 6h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M2 7h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M3 8h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M2 9h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M3 10h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M2 11h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M2 13h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M3 12h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M4 11h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M4 13h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M5 12h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M6 13h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M7 12h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M9 12h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M8 13h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M11 12h1v1h-1v-1z"></path>
+<path fill="#dddddd" d="M10 13h1v1h-1v-1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/picture-file.svg b/Samples/CrowIDE/icons/toolbox/picture-file.svg
new file mode 100644 (file)
index 0000000..c45a6ad
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path>
+<path fill="#dddddd" d="M4 11.5v2.5h8v-1.7c0 0 0.1-1.3-1.3-1.5-1.3-0.2-1.5 0.4-2.5 0.5-0.8 0-0.6-1.3-2.2-1.3-1.2 0-2 1.5-2 1.5z"></path>
+<path fill="#dddddd" d="M12 8.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/pointer.svg b/Samples/CrowIDE/icons/toolbox/pointer.svg
new file mode 100644 (file)
index 0000000..605c0e2
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M11.6 5c-0.2 0-0.5 0-0.6 0 0-0.2-0.2-0.6-0.4-0.8s-0.6-0.4-1.1-0.4c-0.2 0-0.4 0-0.6 0.1-0.1-0.2-0.2-0.3-0.3-0.5-0.2-0.2-0.5-0.4-1.1-0.4-0.2 0-0.4 0-0.5 0.1v-1.7c0-0.6-0.4-1.4-1.4-1.4-0.4 0-0.8 0.2-1.1 0.4-0.5 0.6-0.5 1.4-0.5 1.4v4.3c-0.6 0.1-1.1 0.3-1.4 0.6-0.6 0.7-0.6 1.6-0.6 2.8 0 0.2 0 0.5 0 0.7 0 1.4 0.7 2.1 1.4 2.8l0.3 0.4c1.3 1.2 2.4 1.6 5.1 1.6 2.9 0 4.2-1.6 4.2-5.1v-2.5c0-0.7-0.2-2.1-1.4-2.4zM12 7.4v2.6c0 3.4-1.3 4.1-3.2 4.1-2.4 0-3.3-0.3-4.3-1.3-0.1-0.1-0.2-0.2-0.4-0.4-0.7-0.8-1.1-1.2-1.1-2.2 0-0.2 0-0.5 0-0.7 0-1 0-1.7 0.3-2.1 0.1-0.1 0.4-0.2 0.7-0.2v0.5l-0.3 1.5c0 0.1 0 0.1 0.1 0.2s0.2 0 0.2 0l1-1.2c0-0.1 0-0.2 0-0.2v-6.2c0-0.1 0-0.5 0.2-0.7 0.1 0 0.2-0.1 0.4-0.1 0.3 0 0.4 0.3 0.4 0.4v3.1c0 0 0 0 0 0v1.2c0 0.3 0.2 0.6 0.5 0.6s0.5-0.3 0.5-0.5v-1.3c0 0 0 0 0 0 0-0.1 0.1-0.5 0.5-0.5 0.3 0 0.5 0.1 0.5 0.4v1.3c0 0.3 0.2 0.6 0.5 0.6s0.5-0.3 0.5-0.5v-0.7c0-0.1 0.1-0.3 0.5-0.3 0.2 0 0.3 0.1 0.3 0.1 0.2 0.1 0.2 0.4 0.2 0.4v0.8c0 0.3 0.2 0.5 0.4 0.5 0.3 0 0.5-0.1 0.5-0.4 0-0.1 0.1-0.2 0.2-0.3 0 0 0.1 0 0.2 0 0.6 0.2 0.7 1.2 0.7 1.5 0-0.1 0-0.1 0 0z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/puzzle-piece.svg b/Samples/CrowIDE/icons/toolbox/puzzle-piece.svg
new file mode 100644 (file)
index 0000000..b09c47e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M14.9 0.9c-1.1-1-2.5-1.3-3.1-0.4-0.7 1.1 0.5 1.7-0.3 2.5-0.5 0.6-2-0.8-2-0.8l-0.8-0.8-1.4 1.4c-0.6 0.7-2.1 1.5-2.6 1.1-0.7-0.6 0.1-1.8-0.5-2.6-0.7-1-2.1-0.8-3 0.3-1 1.1-1.4 2.4-0.5 3 1.1 0.7 1.9-0.3 2.7 0.5 0.4 0.4-0.2 1.7-0.5 2.1l-2.3 2.3 6.5 6.5 1.7-1.7c0.7-0.7 1.5-2 1.1-2.4-0.6-0.7-1.7 0.1-2.5-0.4-1-0.7-0.8-2 0.3-3s2.5-1.3 3.1-0.4c0.7 1.1-0.4 1.8 0.4 2.6 0.4 0.4 1.6-0.2 2-0.6l2.1-2.1-1.1-1.1c-0.6-0.6-1.9-2-1.4-2.5 0.6-0.7 1.7 0.2 2.5-0.4 0.9-0.8 0.6-2.1-0.4-3.1z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/refresh-file.svg b/Samples/CrowIDE/icons/toolbox/refresh-file.svg
new file mode 100644 (file)
index 0000000..248e420
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M10 0h-8v16h12v-12l-4-4zM13 15h-10v-14h6v4h4v10zM10 4v-3l3 3h-3z"></path>
+<path fill="#dddddd" d="M4.7 7.7l-0.7-0.7v3h3l-1.2-1.2c0.4-0.8 1.3-1.3 2.2-1.3 1.4 0 2.5 1.1 2.5 2.5h1.5c0-2.2-1.8-4-4-4-1.3 0-2.5 0.7-3.3 1.7z"></path>
+<path fill="#dddddd" d="M9.8 11.8c-0.5 0.5-1.1 0.8-1.8 0.7-1 0-1.9-0.6-2.3-1.5h-1.6c0.4 1.7 2 3 3.8 3 1.1 0 2.1-0.5 2.8-1.2l1.3 1.2v-3h-3l0.8 0.8z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/sliders.svg b/Samples/CrowIDE/icons/toolbox/sliders.svg
new file mode 100644 (file)
index 0000000..81f72d1
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M7 0h2v3h-2v-3z"></path>
+<path fill="#dddddd" d="M6 4v3h1v9h2v-9h1v-3z"></path>
+<path fill="#dddddd" d="M2 0h2v8h-2v-8z"></path>
+<path fill="#dddddd" d="M1 9v3h1v4h2v-4h1v-3z"></path>
+<path fill="#dddddd" d="M12 0h2v10h-2v-10z"></path>
+<path fill="#dddddd" d="M11 11v3h1v2h2v-2h1v-3z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/split-browser-1.svg b/Samples/CrowIDE/icons/toolbox/split-browser-1.svg
new file mode 100644 (file)
index 0000000..4dfd93a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 15h15v-13h-15v13zM13 3h1v1h-1v-1zM14 14h-13v-4h13v4zM14 9h-13v-4h13v4z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/table.svg b/Samples/CrowIDE/icons/toolbox/table.svg
new file mode 100644 (file)
index 0000000..0b42122
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 1v15h16v-15h-16zM5 15h-4v-2h4v2zM5 12h-4v-2h4v2zM5 9h-4v-2h4v2zM5 6h-4v-2h4v2zM10 15h-4v-2h4v2zM10 12h-4v-2h4v2zM10 9h-4v-2h4v2zM10 6h-4v-2h4v2zM15 15h-4v-2h4v2zM15 12h-4v-2h4v2zM15 9h-4v-2h4v2zM15 6h-4v-2h4v2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/tasks.svg b/Samples/CrowIDE/icons/toolbox/tasks.svg
new file mode 100644 (file)
index 0000000..8793c88
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M6 0h10v4h-10v-4z"></path>
+<path fill="#dddddd" d="M6 6h10v4h-10v-4z"></path>
+<path fill="#dddddd" d="M6 12h10v4h-10v-4z"></path>
+<path fill="#dddddd" d="M3 1v2h-2v-2h2zM4 0h-4v4h4v-4z"></path>
+<path fill="#dddddd" d="M3 13v2h-2v-2h2zM4 12h-4v4h4v-4z"></path>
+<path fill="#dddddd" d="M5.3 5.9l-0.6-0.8-0.9 0.9h-3.8v4h4v-2.8l1.3-1.3zM2.7 7l-0.7 0.7-0.8-0.7h1.5zM1 8.2l0.9 0.8h-0.9v-0.8zM3 9h-0.9l0.9-0.9v0.9z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/toolbox/warning.svg b/Samples/CrowIDE/icons/toolbox/warning.svg
new file mode 100644 (file)
index 0000000..f5a2573
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M8 1l-8 14h16l-8-14zM8 13c-0.6 0-1-0.4-1-1s0.4-1 1-1 1 0.4 1 1c0 0.6-0.4 1-1 1zM7 10v-4h2v4h-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/tools.svg b/Samples/CrowIDE/icons/tools.svg
new file mode 100644 (file)
index 0000000..5326f19
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M10.3 8.2l-0.9 0.9 0.9 0.9-1.2 1.2 4.3 4.3c0.6 0.6 1.5 0.6 2.1 0s0.6-1.5 0-2.1l-5.2-5.2zM14.2 15c-0.4 0-0.8-0.3-0.8-0.8 0-0.4 0.3-0.8 0.8-0.8s0.8 0.3 0.8 0.8c0 0.5-0.3 0.8-0.8 0.8z"></path>
+<path fill="#FFFFFF" d="M3.6 8l0.9-0.6 1.5-1.7 0.9 0.9 0.9-0.9-0.1-0.1c0.2-0.5 0.3-1 0.3-1.6 0-2.2-1.8-4-4-4-0.6 0-1.1 0.1-1.6 0.3l2.9 2.9-2.1 2.1-2.9-2.9c-0.2 0.5-0.3 1-0.3 1.6 0 2.1 1.6 3.7 3.6 4z"></path>
+<path fill="#FFFFFF" d="M8 10.8l0.9-0.8-0.9-0.9 5.7-5.7 1.2-0.4 1.1-2.2-0.7-0.7-2.3 1-0.5 1.2-5.6 5.7-0.9-0.9-0.8 0.9c0 0 0.8 0.6-0.1 1.5-0.5 0.5-1.3-0.1-2.8 1.4-0.5 0.5-2.1 2.1-2.1 2.1s-0.6 1 0.6 2.2 2.2 0.6 2.2 0.6 1.6-1.6 2.1-2.1c1.4-1.4 0.9-2.3 1.3-2.7 0.9-0.9 1.6-0.2 1.6-0.2zM4.9 10.4l0.7 0.7-3.8 3.8-0.7-0.7z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/trash.svg b/Samples/CrowIDE/icons/trash.svg
new file mode 100644 (file)
index 0000000..e73a5e3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M2 5v1h1v9c0 0 1.1 1 4.5 1s4.5-1 4.5-1v-9h1v-1h-11zM6 14h-1v-7h1v7zM8 14h-1v-7h1v7zM10 14h-1v-7h1v7z"></path>
+<path fill="#dddddd" d="M12 3c0 0 0-0.5-2-0.8v-0.7c0-0.8-0.7-1.5-1.5-1.5h-2c-0.8 0-1.5 0.7-1.5 1.5v0.7c-1.6 0.3-2 0.8-2 0.8h-1v1h11v-1h-1zM6 1.5c0-0.3 0.2-0.5 0.5-0.5h2c0.2 0 0.5 0.2 0.5 0.5v0.6c0-0.1-0.9-0.1-1.5-0.1s-1.1 0-1.5 0.1v-0.6z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/undo.svg b/Samples/CrowIDE/icons/undo.svg
new file mode 100644 (file)
index 0000000..f78f134
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#dddddd" d="M0 7.9l6-4.9v3c0 0 1.1 0 2 0 8 0 8 8 8 8s-1-4-7.8-4c-1.1 0-1.8 0-2.2 0v2.9l-6-5z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/xml-file.svg b/Samples/CrowIDE/icons/xml-file.svg
new file mode 100644 (file)
index 0000000..0420435
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#ffffff" d="M 10,0 H 2 V 16 H 14 V 4 Z"/>
+<path fill="#444444" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"/>
+<text x="3" y="12" fill="darkorange" font-stretch="condensed" font-family="mono" font-size="6px" font-weight="bold">&lt;/&gt;</text>
+</svg>
\ No newline at end of file
diff --git a/Samples/CrowIDE/icons/zoom-in.svg b/Samples/CrowIDE/icons/zoom-in.svg
new file mode 100644 (file)
index 0000000..60c41d1
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M15.7 14.3l-4.2-4.2c-0.2-0.2-0.5-0.3-0.8-0.3 0.8-1 1.3-2.4 1.3-3.8 0-3.3-2.7-6-6-6s-6 2.7-6 6 2.7 6 6 6c1.4 0 2.8-0.5 3.8-1.4 0 0.3 0 0.6 0.3 0.8l4.2 4.2c0.2 0.2 0.5 0.3 0.7 0.3s0.5-0.1 0.7-0.3c0.4-0.3 0.4-0.9 0-1.3zM6 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path>
+<path fill="#FFFFFF" d="M7 3h-2v2h-2v2h2v2h2v-2h2v-2h-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/icons/zoom-out.svg b/Samples/CrowIDE/icons/zoom-out.svg
new file mode 100644 (file)
index 0000000..bd4eec3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+<path fill="#FFFFFF" d="M15.7 14.3l-4.2-4.2c-0.2-0.2-0.5-0.3-0.8-0.3 0.8-1 1.3-2.4 1.3-3.8 0-3.3-2.7-6-6-6s-6 2.7-6 6 2.7 6 6 6c1.4 0 2.8-0.5 3.8-1.4 0 0.3 0 0.6 0.3 0.8l4.2 4.2c0.2 0.2 0.5 0.3 0.7 0.3s0.5-0.1 0.7-0.3c0.4-0.3 0.4-0.9 0-1.3zM6 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path>
+<path fill="#FFFFFF" d="M3 5h6v2h-6v-2z"></path>
+</svg>
diff --git a/Samples/CrowIDE/images/save.svg b/Samples/CrowIDE/images/save.svg
new file mode 100644 (file)
index 0000000..7bdc551
--- /dev/null
@@ -0,0 +1,3421 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="128" height="128" id="svg2">
+  <defs id="defs5">
+    <linearGradient id="linearGradient28132">
+      <stop id="stop28134" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop28136" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient28077">
+      <stop id="stop28079" style="stop-color:#7a7a7a;stop-opacity:1" offset="0"/>
+      <stop id="stop28081" style="stop-color:#000000;stop-opacity:0.4909091" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient28069">
+      <stop id="stop28071" style="stop-color:#868385;stop-opacity:1" offset="0"/>
+      <stop id="stop28073" style="stop-color:#4a4949;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient28059">
+      <stop id="stop28061" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop28063" style="stop-color:#000000;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient28049">
+      <stop id="stop28051" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop28053" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient27983">
+      <stop id="stop27985" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop27987" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient27973">
+      <stop id="stop27975" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop27977" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient27933">
+      <stop id="stop27935" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop27937" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient17395">
+      <stop id="stop17397" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop17399" style="stop-color:#ffffff;stop-opacity:0.80000001" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient17383">
+      <stop id="stop17385" style="stop-color:#202020;stop-opacity:1" offset="0"/>
+      <stop id="stop17387" style="stop-color:#202020;stop-opacity:0.76363635" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3275">
+      <stop id="stop3277" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop3279" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3215">
+      <stop id="stop3217" style="stop-color:#8a8a8a;stop-opacity:1" offset="0"/>
+      <stop id="stop3219" style="stop-color:#c6c6c6;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3136">
+      <stop id="stop3138" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3140" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3088">
+      <stop id="stop3090" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3092" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3033">
+      <stop id="stop3035" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3037" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3706">
+      <stop id="stop3708" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop3710" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3577">
+      <stop id="stop3579" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop3581" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3468">
+      <stop id="stop3470" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3472" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3446">
+      <stop id="stop3448" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3451" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3111">
+      <stop id="stop3113" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3603" style="stop-color:#ffffff;stop-opacity:0.69818181" offset="0.5"/>
+      <stop id="stop3115" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3077">
+      <stop id="stop3079" style="stop-color:#d0ced9;stop-opacity:1" offset="0"/>
+      <stop id="stop3087" style="stop-color:#ecf1f9;stop-opacity:1" offset="0.25"/>
+      <stop id="stop3085" style="stop-color:#ffffff;stop-opacity:1" offset="0.5"/>
+      <stop id="stop3081" style="stop-color:#c6d5e3;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3317">
+      <stop id="stop3319" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop3321" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3174">
+      <stop id="stop3176" style="stop-color:#2e2a2b;stop-opacity:1" offset="0"/>
+      <stop id="stop3182" style="stop-color:#4c494a;stop-opacity:1" offset="0.33497536"/>
+      <stop id="stop3214" style="stop-color:#5b595a;stop-opacity:1" offset="0.66748768"/>
+      <stop id="stop3178" style="stop-color:#6b696a;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient x1="-97.742668" y1="1937.9885" x2="-97.742668" y2="1895.421" id="linearGradient3250" xlink:href="#linearGradient3174" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,317.24891,-4887.3657)"/>
+    <filter id="filter3444" height="2.5930088" y="-0.79650438" width="1.1419513" x="-0.070975639">
+      <feGaussianBlur id="feGaussianBlur3446" stdDeviation="2.9868914" inkscape:collect="always"/>
+    </filter>
+    <clipPath id="clipPath3008">
+      <rect width="78.12355" height="55.395592" rx="1.133948" ry="1.133948" x="24.680513" y="-68.245476" id="rect3010" style="opacity:0.265625;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.39999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    </clipPath>
+    <radialGradient cx="100.30548" cy="42.449028" r="38" fx="100.30548" fy="42.449028" id="radialGradient3083" xlink:href="#linearGradient3077" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.5705286,7.2649243e-7,-2.9846211e-7,1.8569392,-416.60853,-84.720552)"/>
+    <filter id="filter3105">
+      <feGaussianBlur id="feGaussianBlur3107" stdDeviation="0.66759571" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="64.801826" cy="63.781319" r="34.041004" fx="64.801826" fy="63.781319" id="radialGradient3117" xlink:href="#linearGradient3111" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1398365,0,0,1.0706638e-2,-9.061664,63.098436)"/>
+    <clipPath id="clipPath3215">
+      <path d="M 11.375,-167.68125 C 8.4215521,-167.68125 8,-167.31718 8,-164.3375 L 8,-163.55625 C 8,-166.53593 8.4215521,-166.86875 11.375,-166.86875 L 116.625,-166.86875 C 119.57845,-166.86875 120,-166.53593 120,-163.55625 L 120,-164.3375 C 120,-167.31718 119.57845,-167.68125 116.625,-167.68125 L 11.375,-167.68125 z" id="path3217" style="opacity:1;fill:url(#linearGradient3219);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
+    </clipPath>
+    <linearGradient x1="-98.926186" y1="1892.9656" x2="-98.926186" y2="1897.0332" id="linearGradient3219" xlink:href="#linearGradient3317" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,317.24891,-5063.043)"/>
+    <filter height="1.4537807" y="-0.22689034" width="1.0142819" x="-0.0071409685" id="filter3371">
+      <feGaussianBlur id="feGaussianBlur3373" stdDeviation="0.33324519" inkscape:collect="always"/>
+    </filter>
+    <filter id="filter3417">
+      <feGaussianBlur id="feGaussianBlur3419" stdDeviation="0.11145486" inkscape:collect="always"/>
+    </filter>
+    <linearGradient x1="69.913269" y1="-96.5" x2="70.020454" y2="-67.843079" id="linearGradient3453" xlink:href="#linearGradient3446" gradientUnits="userSpaceOnUse" gradientTransform="translate(5.89968e-2,131.40729)"/>
+    <linearGradient x1="107.06239" y1="-26.262714" x2="107.06239" y2="134.55173" id="linearGradient3474" xlink:href="#linearGradient3468" gradientUnits="userSpaceOnUse" gradientTransform="translate(9.4,0.6)"/>
+    <filter height="1.3748291" y="-0.1874145" width="1.0467155" x="-0.023357728" id="filter3565">
+      <feGaussianBlur id="feGaussianBlur3567" stdDeviation="1.0149838" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="28.481363" cy="164.13387" r="52.144646" fx="28.481363" fy="164.13387" id="radialGradient3583" xlink:href="#linearGradient3577" gradientUnits="userSpaceOnUse" gradientTransform="matrix(5.4915792,-0.1150427,2.6103208e-3,0.1246041,-128.35474,104.82482)"/>
+    <filter height="1.2405112" y="-0.12025558" width="1.1380129" x="-0.069006473" id="filter3659">
+      <feGaussianBlur id="feGaussianBlur3661" stdDeviation="1.9228365" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="64.801826" cy="63.781319" r="34.041004" fx="64.801826" fy="63.781319" id="radialGradient3692" xlink:href="#linearGradient3111" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0552043,0,0,2.2032141e-2,0.5328457,76.944704)"/>
+    <radialGradient cx="84" cy="91.983192" r="32" fx="84" fy="91.983192" id="radialGradient3704" xlink:href="#linearGradient3468" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.6210279,0,37.87587)"/>
+    <linearGradient x1="47.608696" y1="104.35009" x2="47.608696" y2="176.35008" id="linearGradient3712" xlink:href="#linearGradient3706" gradientUnits="userSpaceOnUse"/>
+    <filter height="2.2481999" y="-0.62409997" width="1.0121166" x="-0.0060582431" id="filter3726">
+      <feGaussianBlur id="feGaussianBlur3728" stdDeviation="0.18955201" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="118.16644" cy="9.119606" r="1.284445" fx="118.16644" fy="9.119606" id="radialGradient3039" xlink:href="#linearGradient3033" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.2088257,0.9583181,-1.4021168,1.7686352,-11.9962,-120.41039)"/>
+    <filter id="filter3077">
+      <feGaussianBlur id="feGaussianBlur3079" stdDeviation="0.10453397" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="118.16644" cy="9.119606" r="1.284445" fx="118.16644" fy="9.119606" id="radialGradient3084" xlink:href="#linearGradient3033" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.2088257,0.9583181,-1.4021168,1.7686352,-11.0962,-120.71039)"/>
+    <radialGradient cx="104.09375" cy="9" r="0.46875" fx="104.09375" fy="9" id="radialGradient3094" xlink:href="#linearGradient3088" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.8,-0.4640388,1.9104855)"/>
+    <filter id="filter3120">
+      <feGaussianBlur id="feGaussianBlur3122" stdDeviation="0.025961538" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="104.09375" cy="9" r="0.46875" fx="104.09375" fy="9" id="radialGradient3126" xlink:href="#linearGradient3088" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.8,-80.464039,1.9104855)"/>
+    <linearGradient x1="-37.195274" y1="42.336197" x2="-12.625" y2="106.7981" id="linearGradient3142" xlink:href="#linearGradient3136" gradientUnits="userSpaceOnUse" gradientTransform="translate(126.8,0)"/>
+    <filter id="filter3192">
+      <feGaussianBlur id="feGaussianBlur3194" stdDeviation="0.0231875" inkscape:collect="always"/>
+    </filter>
+    <clipPath id="clipPath3199">
+      <path d="M 18.189713,132.42089 C 16.770505,132.42089 15.627213,133.56419 15.627213,134.98339 L 15.627213,172.16667 L 87.627215,172.16667 L 87.627215,134.98339 C 87.627215,133.56419 86.483925,132.42089 85.064715,132.42089 L 18.189713,132.42089 z" id="path3201" style="fill:#000000;fill-opacity:0.12831858;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    </clipPath>
+    <linearGradient x1="64" y1="120.0697" x2="56" y2="96.315643" id="linearGradient3221" xlink:href="#linearGradient3215" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0103538,0,-1.3128784)"/>
+    <filter height="1.1857692" y="-0.092884615" width="1.2476923" x="-0.12384615" id="filter3271">
+      <feGaussianBlur id="feGaussianBlur3273" stdDeviation="1.2384615" inkscape:collect="always"/>
+    </filter>
+    <linearGradient x1="68" y1="120" x2="36" y2="84" id="linearGradient3281" xlink:href="#linearGradient3275" gradientUnits="userSpaceOnUse"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17389" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.04831,98.650809)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17391" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.86565,81.869097)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17393" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.65627,76.131701)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17401" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.35341,75.348463)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17403" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.98917,83.339266)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17405" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.98299,64.593236)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17927" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.06714,86.432831)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17929" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.83916,54.919294)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17931" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.88342,62.800233)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17933" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.71623,79.165529)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17935" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.84517,54.21146)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17937" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.53241,97.806917)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17939" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.24534,81.048567)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17941" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.70361,55.279303)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17943" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.6284,97.067631)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17945" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.34854,61.711899)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17947" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.66265,52.483914)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17949" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.59014,59.510188)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17951" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.46624,60.173404)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17953" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.87629,58.336657)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17955" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.58009,67.154481)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17957" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.73496,62.400106)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17959" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.35161,73.551175)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17961" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.89594,66.58864)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17963" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.13384,84.814934)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17965" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.91271,77.941165)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17967" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.20449,51.17675)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17969" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.06524,69.064619)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17971" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.52359,92.856996)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17973" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.43503,94.662593)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17975" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.85757,64.997276)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17977" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.75931,67.251671)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17979" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.65593,78.369252)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17981" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.62706,51.493137)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17983" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.93824,68.322369)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17985" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.53268,55.235233)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17987" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.21066,71.47352)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17989" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.5919,56.467526)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17991" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.71564,74.930868)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17993" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.4736,53.559868)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17995" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.55832,61.067038)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17997" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.31207,66.681291)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17999" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.10403,67.750684)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18001" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.33468,72.447586)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18003" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.26012,87.91266)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18005" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.40056,82.048109)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18007" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.0213,62.520599)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18009" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.36835,56.244802)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18011" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.08718,57.926553)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18013" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.79114,57.080862)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18015" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.03918,48.584498)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18017" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.6183,63.700535)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18019" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.93757,95.476082)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18021" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.02547,77.574321)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18023" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.21364,48.418007)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18025" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.70823,82.23261)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18027" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.15255,92.772183)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18029" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.65169,79.498937)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18031" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.49456,78.16038)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18033" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.67608,84.861682)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18035" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.26899,52.027937)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18037" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.45628,86.592803)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18039" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.00836,90.316584)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18041" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.89546,82.204785)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18043" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.56485,49.076767)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18045" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.43699,83.788635)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18047" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.40557,82.936981)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18049" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.93802,93.778176)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18051" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.19068,89.201266)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18053" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.13798,52.027419)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18055" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.45937,84.129612)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18057" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.56245,48.654412)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18059" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.63529,65.193646)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18061" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.98125,77.181558)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18063" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.69936,101.45983)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18065" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.28009,95.000749)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18067" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.7688,89.934128)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18069" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.73667,49.776232)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18071" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.71492,87.099601)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18073" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.40761,55.73509)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18075" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.59256,76.129457)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18077" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.50428,70.646216)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18079" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.1711,87.719524)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18081" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.57429,74.288249)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18083" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.27965,65.898402)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18085" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.29621,93.400413)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18087" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.27056,70.316108)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18089" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.20777,48.563152)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18091" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.39529,83.572253)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18093" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.81164,57.257035)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18095" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.89446,53.860035)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18097" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.88926,94.901194)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18099" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.34424,94.619712)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18101" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.08388,70.672254)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18103" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.9536,55.272771)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18105" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.64822,51.584368)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18107" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.34619,56.086318)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18109" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.27079,87.813541)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18111" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.02855,64.950753)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18113" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.72777,47.537589)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18115" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.50256,86.101458)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18117" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.31555,49.887473)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18119" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.22916,94.031526)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18121" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.47311,67.000704)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18123" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.55203,62.073911)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18125" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.18659,61.00993)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18127" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.54179,61.764079)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18129" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.42695,88.75579)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18131" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.73423,88.006441)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18133" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.64361,58.908237)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18135" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.96634,55.970755)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18137" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.50462,92.061954)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18139" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.43236,57.658044)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18141" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.54487,89.80346)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18143" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.63109,94.239208)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18145" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.39712,73.965174)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18147" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.64656,71.246105)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18149" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.26639,58.537091)"/>
+    <clipPath id="clipPath25065">
+      <path d="M -283.36245,66.003757 C -284.5397,66.003757 -285.48745,66.951507 -285.48745,68.128757 L -285.48745,105.94751 L -230.0812,105.94751 L -230.0812,68.128757 C -230.0812,66.951507 -231.02895,66.003757 -232.2062,66.003757 L -283.36245,66.003757 z M -277.1437,69.347507 L -263.0187,69.347507 C -262.49915,69.347507 -262.0812,69.765457 -262.0812,70.285007 L -262.0812,96.410007 C -262.0812,96.929557 -262.49915,97.347507 -263.0187,97.347507 L -277.1437,97.347507 C -277.66325,97.347507 -278.0812,96.929557 -278.0812,96.410007 L -278.0812,70.285007 C -278.0812,69.76546 -277.66325,69.347507 -277.1437,69.347507 z" id="path25067" style="opacity:1;fill:url(#linearGradient25069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    </clipPath>
+    <linearGradient x1="52" y1="112" x2="52" y2="80" id="linearGradient25069" xlink:href="#linearGradient3215" gradientUnits="userSpaceOnUse" gradientTransform="translate(-318.0812,-14.652496)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25071" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.38211,96.058611)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25073" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.17339,68.78127)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25075" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.16644,100.32021)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25077" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.0724,74.753533)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25079" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.8528,53.860792)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25081" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.06483,97.785398)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25083" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.80022,50.494008)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25085" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.04164,84.576711)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25087" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.52819,76.538651)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25089" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.65959,57.539347)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25091" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.86203,66.719957)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25093" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.8179,50.386062)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25095" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.05855,74.425415)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25097" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.12915,42.23811)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25099" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.66068,93.444381)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25101" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.70143,51.859788)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25103" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.98631,53.268073)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25105" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.37167,89.887836)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25107" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.74685,64.326802)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25109" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.8959,81.54662)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25111" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.29278,47.198913)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25113" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.711,91.667267)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25115" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.69501,98.782896)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25117" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.34776,95.10665)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25119" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.74429,53.915931)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25121" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.55698,53.16276)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25123" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.95662,47.486179)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25125" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.35779,58.642553)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25127" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.23431,45.441149)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25129" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.86474,74.954131)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25131" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.10867,97.34097)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25133" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.25958,46.78729)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25135" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.81379,94.9744)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25137" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.94383,78.792993)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25139" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.57868,84.007476)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25141" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.90486,92.071216)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25143" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.00999,71.757639)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25145" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.61023,87.451829)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25147" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.28284,81.593319)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25149" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.0861,90.515961)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25151" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.78528,75.738299)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25153" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.05801,67.184614)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25155" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.88883,54.629747)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25157" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.78443,79.523126)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25159" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.08719,80.115126)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25161" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.49501,50.253965)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25163" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.25412,62.696544)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25165" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.45523,79.406263)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25167" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.41942,54.610361)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25169" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.5503,80.159362)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25171" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.74779,82.303681)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25173" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.25995,94.08089)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25175" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.0894,95.830634)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25177" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.55239,43.484478)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25179" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.02703,76.389395)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25181" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.01949,89.014582)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25183" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.5417,72.608952)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25185" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.02746,79.641932)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25187" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.10405,89.937584)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25189" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.01422,68.861646)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25191" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.34232,64.508541)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25193" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.1797,58.959427)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25195" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.06036,98.049416)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25197" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.04789,60.240488)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25199" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.66368,52.21739)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25201" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.81342,73.677919)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25203" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.27374,88.937138)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25205" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.28503,78.626899)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25207" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.77725,94.296605)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25209" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.03812,59.050813)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25211" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.04593,71.103629)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25213" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.33961,87.338103)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25215" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.90676,91.613815)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25217" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.58716,82.306123)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25219" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.97587,82.888964)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25221" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.63853,48.592378)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25223" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.17805,82.032511)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25225" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.34891,75.185611)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25227" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.37818,58.417957)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25229" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.67765,55.742352)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25231" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.4097,62.833675)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25233" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.35607,79.408455)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25235" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.7447,68.787837)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25237" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.94661,55.287673)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25239" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.17737,55.539508)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25241" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.80814,74.829959)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25243" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.23561,52.533322)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25245" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.80864,97.942226)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25247" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.04119,65.636136)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25249" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.16068,85.874483)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25251" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.2966,78.103089)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25253" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.2253,63.940556)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25255" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.24862,54.096019)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25257" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.54865,65.626587)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25259" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.0947,48.525423)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25261" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.75331,51.284339)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25263" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.13564,72.571239)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25265" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.09768,73.231703)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25267" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.70515,102.75344)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25269" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.38314,101.07037)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25271" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.05661,63.96836)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25273" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.94209,72.979553)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25275" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.86084,73.351613)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25277" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.08696,78.669612)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25279" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.46218,61.658045)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25281" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.01556,70.609094)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25283" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.60137,85.269477)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25285" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.85815,87.158859)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25287" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.93834,73.09266)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25289" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.51219,76.968198)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25291" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.62389,53.714891)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25293" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.81095,65.65574)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25295" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.1174,79.920498)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25297" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.31182,94.22334)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25299" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.82608,79.603251)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25301" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.74465,86.802406)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25303" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.19678,55.049012)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25305" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.27319,62.663747)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25307" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.00246,99.797565)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25309" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.49681,62.469135)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25311" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.01015,67.065542)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25313" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.2218,88.255847)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25315" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.62659,100.49906)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25317" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.88673,89.25093)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25319" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.76579,78.929875)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25321" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.1367,69.744078)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25323" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.16539,96.80496)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25325" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.50604,95.25611)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25327" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.0547,101.92665)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25329" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.95849,84.566088)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25331" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.91109,56.112126)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25333" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.89562,74.202974)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25335" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.53845,92.086584)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25337" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.9649,56.388537)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25339" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.0286,75.756506)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25341" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.89374,87.521709)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25343" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.8761,68.273979)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25345" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.26228,47.180868)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25347" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.91805,83.030339)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25349" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.90486,89.074686)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25351" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.74266,61.23647)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25353" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.07618,77.989104)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25355" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.99922,82.379721)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25357" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.25102,78.974994)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25359" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.92593,66.582197)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25361" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.87488,90.973141)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25363" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.14427,53.878791)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25365" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.63365,51.02227)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25367" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.63774,97.263187)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25369" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.66009,78.261234)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25371" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.12648,63.541393)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25373" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.44656,90.883629)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25375" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.10606,66.63253)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25377" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.24541,89.879804)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25379" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.75451,73.741383)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25381" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.04198,85.944877)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25383" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.59922,93.062511)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25385" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.33442,48.916147)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25387" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.42778,87.747819)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25389" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.87795,46.102846)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25391" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.76042,57.778219)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25393" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.28711,55.089283)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25395" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.00493,80.55014)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25397" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.76301,84.467965)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25399" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.09758,65.661454)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25401" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.60272,91.234744)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25403" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.19726,69.665254)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25405" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.48891,52.819633)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25407" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.66919,94.582064)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25409" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.80325,85.619929)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25411" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.57968,57.069825)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25413" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.58682,65.503385)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25415" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.14174,48.577251)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25417" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.67014,82.861539)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25419" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.77739,87.621414)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25421" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.58356,90.808782)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25423" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.22748,49.22511)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25425" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.88045,89.331479)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25427" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.08206,73.679835)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25429" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.92333,98.779166)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25431" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.80519,81.754991)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25433" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.48779,69.946426)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25435" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.6343,67.002042)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25437" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.36223,86.555487)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25439" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.98491,53.461282)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25441" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.63347,60.740732)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25443" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.49112,93.886238)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25445" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.0295,46.463347)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25447" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.39578,80.802235)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25449" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.25661,74.119006)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25451" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.82125,56.065217)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25453" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.21644,57.806455)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25455" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.1716,43.752105)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25457" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.03293,67.790618)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25459" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.11879,70.91176)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25461" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.04165,79.077835)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25463" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.39124,76.195736)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25465" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.90693,79.587908)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25467" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.22061,47.99961)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25469" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.39882,62.582495)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25471" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.67782,102.12202)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25473" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.47238,73.923449)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25475" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.9026,64.745496)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25477" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.81868,77.281724)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25479" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.12565,63.352013)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25481" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.33163,97.086604)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25483" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.76353,85.066104)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25485" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.89508,54.203911)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25487" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.54305,67.199939)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25489" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.27681,72.403163)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25491" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.02385,88.069533)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25493" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.76838,88.78592)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25495" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.32961,56.208973)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25497" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.37873,88.863579)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25499" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.97817,91.731797)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25501" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.47633,50.134554)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25503" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.90923,69.227596)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25505" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.88412,67.106252)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25507" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.40947,74.939971)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25509" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.4478,57.634612)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25511" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.51182,92.809539)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25513" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.80362,50.410836)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25515" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.02572,65.891626)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25517" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.66411,84.453632)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25519" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.32685,59.734527)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25521" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.87078,59.219945)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25523" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.10721,59.642293)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25525" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.87107,95.50353)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25527" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.33115,96.648737)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25529" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.96561,51.859787)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25531" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.44773,78.310106)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25533" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.55415,72.470695)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25535" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.81771,87.843085)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25537" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.59479,45.717249)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25539" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.54047,71.618169)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25541" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.89265,55.938324)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25543" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.50631,73.919704)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25545" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.76911,49.792033)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25547" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.2194,64.311435)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25549" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.45637,61.709902)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25551" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.49561,43.100523)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25553" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.64006,66.916448)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25555" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.83152,80.672031)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25557" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.79432,71.297676)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25559" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.925,100.26332)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25561" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.38018,63.48345)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25563" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.42613,90.671813)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25565" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.09766,43.021663)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25567" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.71879,94.060061)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25569" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.43313,100.4486)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25571" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.93287,84.710556)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25573" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.02746,65.316537)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25575" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.81323,83.133066)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25577" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.82007,62.36345)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25579" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.39029,94.105045)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25581" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.13426,58.170705)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25583" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.18474,75.349434)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25585" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.20203,48.845529)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25587" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.03562,55.758101)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25589" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.29811,52.259728)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25591" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.6151,77.618141)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25593" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.05919,91.908055)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25595" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.60563,78.470723)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25597" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.903,89.769672)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25599" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.24145,45.861223)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25601" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.53475,43.795964)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25603" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.77556,48.95078)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25605" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.2318,87.681518)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25607" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.58276,55.747252)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25609" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.78469,79.944157)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25611" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.86844,50.278288)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25613" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.91709,47.248874)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25615" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.95266,76.765426)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25617" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.94025,78.21498)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25619" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.68773,56.303855)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25621" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.42025,72.239281)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25623" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.77142,70.608768)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25625" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.62663,85.751899)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25627" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.42123,91.671771)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25629" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.10816,83.461099)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25631" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.671,50.936341)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25633" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.8437,76.600442)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25635" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.54453,86.838596)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25637" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.60334,44.432277)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25639" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.19863,77.925457)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25641" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.81916,94.114099)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25643" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.90901,62.531869)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25645" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.70763,73.774118)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25647" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.46635,77.168898)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25649" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.52156,69.213722)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25651" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.16458,66.538678)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25653" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.12069,62.394789)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25655" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.52721,90.396189)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25657" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.04492,54.904169)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25659" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.45617,81.829262)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25661" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.64673,71.55417)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25663" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.44925,62.441034)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25665" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.12965,56.246736)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25667" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.92528,53.299937)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25669" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.2057,95.742977)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25671" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.29121,86.984918)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25673" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.07831,65.831275)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25675" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.34249,98.138056)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25677" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.4937,75.046925)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25679" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.1355,90.678068)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25681" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.25941,94.504639)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25683" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.67862,58.096074)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25685" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.17987,88.526706)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25687" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.87076,85.072027)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25689" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.44615,99.129507)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25691" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.03251,52.847877)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25693" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.31058,78.926478)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25695" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.38729,76.478332)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25697" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.77608,48.930248)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25699" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.78137,65.224321)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25701" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.75188,76.831363)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25703" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.11667,99.752269)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25705" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.04074,83.076253)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25707" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.40607,61.643761)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25709" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.68623,81.637039)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25711" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.6966,82.312204)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25713" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.87099,85.200996)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25715" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.14815,80.964882)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25717" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.25356,56.87887)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25719" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.98002,90.303091)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25721" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.64409,62.66442)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25723" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.07904,58.945199)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25725" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.74295,74.927436)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25727" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.72421,60.663158)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25729" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.21981,74.741939)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25731" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.31423,69.448412)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25733" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.84608,68.815406)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25735" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.18009,72.228015)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25737" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.34991,69.38326)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25739" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.3173,94.625498)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25741" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.62702,57.437192)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25743" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.44646,93.781072)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25745" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.76175,81.46759)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25747" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.78404,49.42172)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25749" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.81022,99.158159)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25751" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.52567,99.957901)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25753" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.57132,57.231352)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25755" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.75051,83.271844)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25757" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.11784,89.955784)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25759" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.2487,58.800202)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25761" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.694,60.709343)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25763" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.11199,96.768099)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25765" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.40943,62.401395)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25767" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.45206,78.631553)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25769" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.26711,66.539263)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25771" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.70911,70.352217)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25773" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.40295,95.35491)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25775" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.94716,50.093518)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25777" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.64272,72.150133)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25779" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.62647,81.143023)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25781" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.14228,54.86069)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25783" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.29509,58.719807)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25785" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.30549,66.017408)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25787" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.31534,83.536696)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25789" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.74634,54.54358)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25791" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.81598,71.036429)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25793" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.37822,50.882072)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25795" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.54397,95.704671)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25797" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.10988,80.137108)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25799" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.12294,94.958668)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25801" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.14566,48.90426)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25803" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.47119,69.295949)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25805" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.10648,68.840038)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25807" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.91314,91.117042)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25809" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.0356,46.698952)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25811" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.94624,73.379187)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25813" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.57653,93.149875)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25815" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.55881,53.111903)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25817" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.09461,51.13869)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25819" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.26013,97.389846)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25821" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.54159,74.940044)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25823" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.07562,92.952027)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25825" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.89693,60.272946)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25827" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.98046,78.793425)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25829" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.86916,51.559013)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25831" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.32905,85.452556)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25833" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.54228,90.635746)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25835" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.44461,57.766641)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25837" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.24108,68.261244)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25839" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.16236,61.104509)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25841" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.34105,58.960917)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25843" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.2905,83.175482)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25845" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.15465,75.135647)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25847" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.9938,55.97573)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25849" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.90553,96.057791)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25851" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.96328,66.21203)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25853" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.76821,93.599068)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25855" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.95708,55.921228)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25857" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.1816,60.903275)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25859" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.30553,80.478416)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25861" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.10752,50.516123)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25863" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.50403,78.72218)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25865" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.70184,79.141059)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25867" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.8086,77.286836)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25869" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.89896,54.508566)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25871" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.13152,96.866027)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25873" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.73149,77.585866)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25875" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.52509,44.701208)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25877" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.61234,70.479666)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25879" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.8115,63.378045)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25881" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.42213,58.729505)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25883" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.04973,100.68876)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25885" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.26572,51.814988)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25887" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.19359,93.559083)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25889" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.29907,41.550704)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25891" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.34885,49.193737)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25893" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.37881,67.984252)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25895" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.28267,59.49831)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25897" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.05311,53.805192)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25899" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.5602,81.313378)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25901" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.9489,83.375827)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25903" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.45863,89.337988)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25905" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.30777,89.488645)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25907" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.26991,68.026294)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25909" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.197,44.08644)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25911" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.57626,59.327194)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25913" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.05568,56.498296)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25915" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.83245,75.470348)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25917" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.85895,100.97328)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25919" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.25345,68.350558)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25921" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.79683,55.060749)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25923" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.63195,50.962423)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25925" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.29248,92.765928)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25927" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.70545,69.466989)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25929" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.15384,88.371961)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25931" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.74113,95.148243)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25933" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.89802,91.894132)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25935" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.17488,61.734911)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25937" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.98542,55.171014)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25939" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.40944,81.128571)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25941" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.77183,67.275714)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25943" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.54992,51.391434)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25945" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.84487,57.530592)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25947" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.32101,72.460262)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25949" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.13057,89.796131)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25951" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.63146,66.984367)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25953" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.47995,98.363352)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25955" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.85622,95.006691)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25957" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.62809,70.570403)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25959" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.29674,82.688109)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25961" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.9558,59.196439)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25963" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.90801,84.960554)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25965" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.0659,80.248099)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25967" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.02201,56.40529)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25969" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.47597,59.319721)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25971" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.91338,81.832351)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25973" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.67642,97.511173)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25975" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.77997,66.826761)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25977" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.21696,55.204814)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25979" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.28156,99.194668)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25981" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.16497,91.936968)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25983" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.96732,57.902306)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25985" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.66966,94.451773)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25987" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.86723,80.633635)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25989" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.87851,84.513313)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25991" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.09357,60.622522)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25993" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.42322,60.924173)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25995" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.51572,47.316547)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25997" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.41057,59.199964)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25999" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.64963,47.837809)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26001" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.77568,100.63515)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26003" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.58237,45.460225)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26005" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.36492,92.067389)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26007" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.75397,54.890055)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26009" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.15973,82.806109)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26011" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.91485,69.195625)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26013" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.89556,98.504519)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26015" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.19639,89.863388)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26017" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.32418,81.88167)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26019" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.20665,97.838212)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26021" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.94344,90.752694)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26023" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.16996,82.180245)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26025" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.31052,57.231976)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26027" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.94962,51.183241)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26029" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.42874,66.896446)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26031" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.65024,96.875921)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26033" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.308,55.386706)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26035" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-168.67373,60.753257)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26037" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.50822,51.075751)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26039" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.52894,58.762284)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26041" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.94959,91.684887)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26043" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.26789,84.877056)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26045" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.05805,94.476969)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26047" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.56355,86.41264)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26049" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.13517,77.175513)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26051" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.02597,58.035693)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26053" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.14971,93.175794)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26055" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.25824,88.410331)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26057" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.79815,59.03502)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26059" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.94424,100.56856)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26061" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.38437,47.090204)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26063" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.70144,67.344287)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26065" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.50104,73.092261)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26067" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.91998,71.783425)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26069" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.65277,74.03124)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26071" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.11602,99.243278)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26073" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.81905,83.115296)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26075" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.53041,58.04325)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26077" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.71379,53.569638)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26079" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.73995,56.014834)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26081" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.52662,45.024141)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26083" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.19677,82.692683)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26085" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.8594,73.102465)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26087" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.59595,65.436866)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26089" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.99607,60.382145)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26091" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.61424,94.167518)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26093" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.99055,58.222766)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26095" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.75284,57.913561)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26097" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.88775,81.060687)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26099" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.3816,64.33263)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26101" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.89851,53.909031)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26103" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.17448,62.102049)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26105" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.73853,57.030866)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26107" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.17331,73.768629)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26109" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.11883,81.414662)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26111" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.68982,64.458518)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26113" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.10479,96.180089)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26115" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.91423,82.147877)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26117" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.78875,74.985805)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26119" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.62906,96.421111)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26121" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.61017,90.04855)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26123" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.21485,44.978928)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26125" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.57813,77.832142)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26127" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.49023,74.683485)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26129" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.73713,47.320861)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26131" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.16616,84.789256)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26133" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.12103,100.13712)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26135" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.46258,85.337301)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26137" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.95687,96.57967)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26139" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.89762,43.598589)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26141" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.00975,52.562994)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26143" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.29583,89.579706)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26145" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.03831,46.741795)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26147" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.03618,89.022991)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26149" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.58455,96.869575)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26151" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.40275,53.81825)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26153" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.89983,65.779625)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26155" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.54855,79.720058)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26157" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.66431,70.024915)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26159" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.40935,72.453765)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26161" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.64538,74.917475)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26163" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.72972,48.706565)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26165" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.94438,74.846626)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26167" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.21313,101.54873)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26169" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.98842,76.692321)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26171" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.2709,100.69639)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26173" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.9594,72.450047)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26175" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.20383,59.035082)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26177" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.12744,53.794548)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26179" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.98869,53.142207)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26181" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.13628,98.100518)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26183" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.56781,94.919393)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26185" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.12461,95.97926)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26187" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.35399,55.220506)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26189" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.62563,82.907266)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26191" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.49627,98.714929)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26193" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.96478,58.525976)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26195" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.45519,97.424779)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26197" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.98701,92.818729)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26199" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.83196,91.179346)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26201" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.12249,56.157795)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26203" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.78724,61.715517)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26205" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.17592,66.548739)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26207" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.60827,71.560403)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26209" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.63961,99.402208)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26211" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.02711,87.232951)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26213" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.98141,75.110907)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26215" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.72915,90.927929)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26217" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.92879,97.252538)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26219" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.72492,56.317052)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26221" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.6908,88.473853)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26223" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.04456,69.276317)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26225" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.42003,78.754986)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26227" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.48178,71.059478)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26229" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.4398,89.404901)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26231" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.08727,100.23941)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26233" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.81385,88.623736)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26235" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.35265,81.097498)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26237" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.49542,80.736363)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26239" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.82391,102.62995)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26241" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.68584,69.035616)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26243" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.8909,91.25955)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26245" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.51204,43.292758)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26247" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.58826,92.533231)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26249" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.91765,93.825399)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26251" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.18391,67.189922)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26253" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.23566,61.001922)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26255" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.59135,67.428878)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26257" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.32576,85.901619)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26259" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.88665,79.910358)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26261" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.29826,52.507608)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26263" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.91739,98.245721)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26265" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.86528,73.586258)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26267" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.69827,64.588411)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26269" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.77836,48.821272)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26271" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.31001,52.850576)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26273" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.32314,53.194791)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26275" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.31448,58.892835)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26277" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.85686,93.462001)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26279" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.9758,86.814968)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26281" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.48695,94.50283)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26283" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.77448,73.905739)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26285" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.11146,91.445987)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26287" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.43543,88.270935)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26289" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.26511,63.034765)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26291" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.87736,49.880397)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26293" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.32143,91.272568)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26295" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.90065,86.616652)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26297" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.60436,53.461688)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26299" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.43582,70.048052)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26301" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.39886,49.361679)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26303" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.75499,81.637997)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26305" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.69395,77.737543)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26307" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.90078,68.517067)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26309" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.238,65.742941)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26311" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.82817,74.89994)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26313" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.96281,90.303768)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26315" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.94621,83.816846)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26317" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.09277,92.359799)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26319" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.04693,42.296234)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26321" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.81511,95.382853)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26323" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.35982,68.031212)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26325" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.57305,65.633167)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26327" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.72023,78.376137)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26329" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.71531,95.386817)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26331" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.76606,70.613992)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26333" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.92549,77.294246)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26335" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.3949,93.826772)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26337" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.56505,76.919073)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26339" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.36489,89.107953)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26341" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.96918,73.353203)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26343" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.50662,49.932981)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26345" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.85232,43.463212)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26347" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.80296,61.002647)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26349" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.45749,54.539732)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26351" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.19833,61.363868)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26353" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.89152,67.193431)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26355" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.23817,56.717644)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26357" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.69815,65.891141)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26359" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.42673,47.889739)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26361" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.37493,80.774838)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26363" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.5567,71.713477)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26365" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.46176,58.968814)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26367" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.09506,75.675963)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26369" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.77836,88.047292)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26371" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.58104,72.677987)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26373" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.40127,56.120337)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26375" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.88109,99.349973)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26377" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.90521,76.321763)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26379" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.77391,73.143969)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26381" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.45078,68.894473)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26383" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.34401,73.508028)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26385" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.01549,98.843449)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26387" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.45871,54.292015)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26389" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.02899,63.064932)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26391" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.96409,49.99785)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26393" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.13609,59.196361)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26395" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.09141,102.17008)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26397" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.26954,70.133057)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26399" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.73524,96.505891)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26401" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.41006,68.527705)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26403" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.60542,60.727199)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26405" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.43104,53.430483)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26407" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.32042,92.259938)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26409" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.6568,68.338744)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26411" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.66507,53.368637)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26413" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.15419,84.625236)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26415" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.35996,85.892578)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26417" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.95352,73.071673)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26419" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.59911,52.768718)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26421" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.04709,68.472085)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26423" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.73392,95.242565)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26425" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.91053,53.860252)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26427" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.961,94.592686)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26429" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.02644,95.825107)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26431" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.84879,59.021262)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26433" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.29974,64.380676)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26435" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.59404,97.507151)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26437" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.12866,71.287185)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26439" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.69166,91.939584)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26441" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.92339,44.953255)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26443" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.56343,52.22804)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26445" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.63368,48.017753)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26447" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.02668,62.411475)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26449" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.42675,58.566706)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26451" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.33318,46.059348)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26453" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.13567,58.757321)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26455" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.57474,100.96913)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26457" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.97263,46.082625)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26459" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.32669,67.279158)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26461" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.76226,59.46013)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26463" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.45756,71.652658)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26465" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.58738,67.526028)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26467" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.47772,96.355565)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26469" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.16172,62.355435)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26471" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.98759,49.311847)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26473" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.58199,67.883424)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26475" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.25718,51.466042)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26477" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.80047,42.984038)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26479" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.26636,52.927194)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26481" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.5903,87.902473)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26483" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.57186,74.960311)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26485" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.46051,84.348265)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26487" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.88495,91.390387)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26489" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.04437,49.478819)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26491" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.50689,56.699134)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26493" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.49716,54.758095)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26495" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.2186,63.383976)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26497" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.99597,64.615185)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26499" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.72593,54.306593)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26501" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.6354,82.192618)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26503" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.72677,55.965991)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26505" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.74684,93.348705)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26507" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.11095,98.355157)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26509" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.41642,58.129447)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26511" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.81562,60.402738)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26513" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.48888,67.582417)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26515" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.11081,52.39427)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26517" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.87595,73.453053)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26519" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.74565,94.623539)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26521" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.46457,73.105186)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26523" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.20061,75.219563)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26525" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.39882,83.93047)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26527" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.23296,85.458922)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26529" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.18903,54.684773)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26531" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.29115,65.385264)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26533" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.01924,57.108653)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26535" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.23811,93.415943)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26537" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.82636,92.995696)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26539" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.68705,51.525738)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26541" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.45861,61.014299)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26543" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.82901,51.479338)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26545" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.42642,61.330648)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26547" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.6842,73.453246)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26549" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.58525,66.465893)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26551" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.65937,68.581665)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26553" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.65553,87.989401)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26555" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.63622,51.559167)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26557" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.38301,92.658321)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26559" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.06131,89.702831)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26561" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.07053,52.322113)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26563" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.23187,71.007622)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26565" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.67469,80.249936)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26567" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.02737,96.164018)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26569" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.42304,93.151821)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26571" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.55154,48.490688)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26573" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.11645,54.391145)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26575" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.3394,80.019154)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26577" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.89769,96.314695)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26579" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.88531,49.529028)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26581" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.85806,86.512638)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26583" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.36352,70.500382)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26585" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.76024,70.321758)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26587" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.00964,53.501083)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26589" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.02392,69.637928)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26591" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.42011,62.360143)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26593" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.54394,65.259638)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26595" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.69392,86.017179)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26597" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.56186,64.985879)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26599" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.64496,56.82673)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26601" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.66833,86.746129)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26603" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.78226,85.95013)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26605" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.24824,72.365237)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26607" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.15693,63.896508)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26609" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.30288,80.624838)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26611" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.02397,72.263928)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26613" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.03842,70.252906)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26615" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.67534,93.586753)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26617" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.23822,59.113575)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26619" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.84416,89.554328)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26621" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.00951,84.592508)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26623" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.61788,91.38449)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26625" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.41408,97.937064)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26627" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.74698,97.735057)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26629" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.89324,94.469438)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26631" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.50418,58.701932)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26633" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.8596,44.794286)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26635" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.66711,51.755713)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26637" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.39911,73.751137)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26639" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.57062,50.664985)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26641" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.99916,69.832004)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26643" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.80681,94.021697)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26645" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.11165,94.957536)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26647" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.13101,67.590716)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26649" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.16655,58.136705)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26651" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.66747,82.325226)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26653" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.04692,48.675928)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26655" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.0267,46.756689)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26657" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.44269,56.526845)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26659" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.75759,93.703667)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26661" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.15057,64.973857)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26663" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.12993,47.849245)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26665" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.40412,74.531046)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26667" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.29494,77.499106)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26669" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.01155,79.499492)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26671" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.8569,48.353139)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26673" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.29418,60.754963)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26675" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.91676,52.290803)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26677" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.59185,67.100203)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26679" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.50241,48.87804)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26681" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.60132,60.533927)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26683" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.53892,94.433567)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26685" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.09794,48.828103)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26687" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.57013,82.682983)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26689" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.76597,83.949033)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26691" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.41993,88.546402)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26693" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.13572,41.787681)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26695" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.2046,93.907054)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26697" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.39272,97.495864)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26699" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.13122,82.505099)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26701" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.19993,78.552961)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26703" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.72661,92.537514)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26705" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.13729,85.11606)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26707" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.9277,84.964934)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26709" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.50066,62.492006)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26711" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.73891,99.746001)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26713" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.2192,85.015978)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26715" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.28973,54.49741)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26717" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.89829,91.53533)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26719" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.52714,88.219852)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26721" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.127,72.901326)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26723" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.7262,77.373646)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26725" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.36687,57.304014)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26727" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.3269,89.768624)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26729" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.96267,95.156223)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26731" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.8186,59.507254)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26733" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.42245,76.670179)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26735" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.3597,74.818794)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26737" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.16566,83.292056)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26739" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.41349,62.868961)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26741" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.53911,76.582523)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26743" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.07409,78.455391)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26745" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.44513,72.724965)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26747" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.32481,80.052048)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26749" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.17019,93.569393)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26751" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.13774,79.803506)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26753" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.25357,58.474889)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26755" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.63833,61.961568)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26757" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-260.13253,96.203313)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26759" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.19565,54.751181)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26761" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.63476,52.889621)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26763" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.37497,62.196116)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26765" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.98695,42.068143)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26767" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.13319,58.588144)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26769" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.82398,98.448223)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26771" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.34805,45.208615)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26773" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.40748,48.825207)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26775" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.32017,48.215713)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26777" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.64056,47.270949)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26779" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.57535,55.331806)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26781" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.82305,83.233524)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26783" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.73142,91.108762)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26785" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.90855,74.865231)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26787" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.05043,84.496449)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26789" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.58459,61.751464)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26791" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.14596,54.424693)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26793" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.72812,74.904465)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26795" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.33155,100.14082)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26797" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.97193,89.39845)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26799" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.54809,98.186606)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26801" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.13964,82.361444)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26803" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.26848,72.117728)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26805" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.62859,99.526146)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26807" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.59623,53.871792)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26809" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.80598,69.166711)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26811" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.62474,48.787047)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26813" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.75345,54.240746)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26815" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.98752,67.876902)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26817" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.87876,99.123473)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26819" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.61416,49.531959)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26821" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.16456,75.169359)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26823" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.23696,94.313255)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26825" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.84062,82.983714)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26827" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.01685,52.493784)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26829" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.27146,65.60472)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26831" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.88539,78.432125)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26833" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.0056,55.437687)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26835" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.09645,96.57678)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26837" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.28814,83.132852)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26839" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.92543,100.63432)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26841" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.75459,93.615295)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26843" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.81267,76.598283)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26845" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.97243,65.554836)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26847" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.11098,78.060595)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26849" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.16023,50.367691)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26851" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.09602,47.509494)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26853" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.83567,48.407023)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26855" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.9713,90.760856)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26857" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.79418,74.074289)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26859" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.43577,43.332912)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26861" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.81327,79.099323)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26863" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.00449,94.083539)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26865" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.72126,53.408845)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26867" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.91972,50.59402)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26869" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.55979,61.669974)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26871" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.4726,78.824903)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26873" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.59763,53.619283)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26875" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.49684,51.026235)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26877" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.85444,49.641287)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26879" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.88381,46.625689)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26881" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.59828,48.962924)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26883" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.23879,89.017315)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26885" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.23683,73.082304)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26887" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.78688,97.803018)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26889" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.30024,72.56641)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26891" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.45358,67.925848)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26893" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.11391,49.244629)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26895" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.59331,54.91602)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26897" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.98258,93.006514)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26899" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.0406,73.285834)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26901" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.68471,55.729024)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26903" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.25009,62.909781)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26905" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.96538,51.964452)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26907" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.40219,48.541983)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26909" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.79974,49.135089)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26911" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.42489,55.403287)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26913" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.85561,98.609587)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26915" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.64675,95.536323)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26917" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.88588,66.792578)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26919" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.20914,43.457729)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26921" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.7775,59.436448)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26923" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.42544,67.928941)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26925" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.39275,56.094044)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26927" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.32934,47.507026)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26929" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.96646,52.423282)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26931" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.21976,74.8022)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26933" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.88266,41.815936)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26935" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.24918,78.518997)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26937" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.39568,89.980882)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26939" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.42916,94.635184)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26941" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.71388,88.271429)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26943" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.32837,88.617969)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26945" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.36292,61.565947)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26947" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.03473,80.857534)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26949" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.02853,59.90518)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26951" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.85935,46.662372)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26953" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.90877,86.371204)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26955" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.34812,58.661015)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26957" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.15893,64.234779)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26959" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.59054,92.636764)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26961" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.40673,81.751939)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26963" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.53017,98.088555)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26965" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.48704,62.034599)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26967" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.83137,51.828938)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26969" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.006,73.061615)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26971" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.07541,75.576698)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26973" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.65465,58.645614)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26975" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.86415,95.785422)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26977" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.88074,52.043047)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26979" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.30588,68.913181)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26981" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.2829,73.774293)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26983" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.80454,68.145279)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26985" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.17494,67.113967)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26987" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.66985,54.392166)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26989" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.88847,93.637588)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26991" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.03066,73.675414)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26993" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.06557,55.925664)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26995" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.5447,83.559618)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26997" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.71731,50.554901)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26999" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.07803,65.559852)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27001" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.45447,90.161169)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27003" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.7531,48.033577)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27005" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.16031,47.967923)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27007" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.53537,53.997638)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27009" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.47562,89.229685)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27011" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.26156,83.952679)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27013" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.68998,56.521744)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27015" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.86286,69.171286)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27017" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.54466,89.382028)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27019" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.08195,46.87524)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27021" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.0621,87.935662)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27023" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.3626,52.442573)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27025" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.42473,76.507755)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27027" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.53228,72.686821)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27029" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.29684,96.025376)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27031" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-168.88852,72.260417)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27033" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.49294,81.663317)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27035" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.70952,82.014123)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27037" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.67126,94.803721)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27039" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.63545,67.542586)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27041" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.92638,95.414083)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27043" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.70623,91.7262)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27045" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.37697,79.695679)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27047" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.20392,93.233867)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27049" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.71903,60.287723)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27051" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.02161,76.867306)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27053" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.42568,55.353147)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27055" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.92188,63.576552)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27057" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.9187,92.942361)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27059" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.39752,51.243918)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27061" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.69192,59.804687)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27063" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.51508,65.169586)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27065" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.25668,71.859799)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27067" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.18018,47.753546)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27069" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.48528,86.274435)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27071" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.60975,90.283974)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27073" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.0405,47.926017)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27075" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.33325,65.496812)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27077" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.81389,56.478834)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27079" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.49509,92.598888)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27081" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.13202,75.764768)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27083" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.65004,53.119399)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27085" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-168.30515,71.365268)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27087" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.84295,96.176021)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27089" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.09341,43.681222)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27091" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.76605,102.45759)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27093" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.26758,59.881431)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27095" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.13229,99.369038)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27097" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.98228,83.05717)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27099" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.51677,73.080526)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27101" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.83872,53.045346)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27103" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.76763,93.592923)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27105" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.85753,47.641127)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27107" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.58626,50.668684)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27109" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.4069,81.262723)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27111" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.24921,79.5565)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27113" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.24494,71.067549)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27115" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.75189,50.231633)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27117" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.24434,67.14382)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27119" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.39405,69.786388)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27121" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.87732,88.400952)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27123" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.01247,45.337134)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27125" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.39061,93.604926)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27127" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.48454,50.217383)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27129" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.39395,51.765841)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27131" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.25533,56.205039)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27133" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.47816,62.048213)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27135" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.50064,52.310424)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27137" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.06861,81.446812)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27139" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.44734,90.179264)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27141" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.19114,56.493832)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27143" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.63145,73.571373)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27145" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.76286,73.427755)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27147" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.35129,69.495692)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27149" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.69785,71.126726)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27151" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.1162,78.513566)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27153" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.80517,67.452178)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27155" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.05264,98.221228)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27157" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.33798,52.073688)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27159" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.4885,49.09578)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27161" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.91622,66.613438)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27163" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.55953,62.212819)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27165" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.40228,58.703143)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27167" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.44557,61.922664)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27169" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.75543,55.062425)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27171" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.79794,56.817966)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27173" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.80249,46.383038)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27175" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.45649,79.39155)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27177" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.65817,98.525973)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27179" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.49252,86.65376)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27181" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.03005,63.616941)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27183" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.60675,86.836585)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27185" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.46391,61.275552)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27187" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.40339,103.07046)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27189" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.53363,47.761835)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27191" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.0782,91.999649)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27193" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.75617,57.089151)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27195" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.69444,79.661631)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27197" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.30338,49.239175)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27199" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.8518,65.758393)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27201" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.25918,65.382044)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27203" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.32333,56.70231)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27205" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.91028,75.726513)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27207" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.59383,70.351584)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27209" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.1034,54.435877)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27211" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.51601,95.192673)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27213" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.43965,80.028121)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27215" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.59322,76.343647)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27217" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.18344,47.610142)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27219" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.39095,43.639795)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27221" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.92671,68.771652)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27223" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.21166,92.648675)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27225" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.17735,71.794053)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27227" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.63236,47.52766)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27229" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.16081,44.41662)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27231" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.00261,90.128253)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27233" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.92227,43.55991)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27235" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.32533,49.972242)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27237" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.10997,89.14704)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27239" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.30227,60.285538)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27241" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.76842,77.390421)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27243" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.6665,62.558809)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27245" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.38184,82.872731)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27247" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.61765,96.52765)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27249" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.72541,51.47113)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27251" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.54138,53.545465)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27253" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.86173,52.774178)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27255" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.71077,43.880661)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27257" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.09393,89.496547)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27259" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.06203,66.59722)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27261" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.48757,91.970496)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27263" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.06744,64.277019)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27265" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.99988,52.392496)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27267" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.04893,50.604921)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27269" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.65616,73.939693)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27271" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.01359,69.767063)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27273" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.78541,97.601017)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27275" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.97623,59.497332)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27277" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.62014,72.269821)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27279" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.66247,76.179903)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27281" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.49072,44.982129)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27283" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.04212,91.48411)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27285" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.30554,82.579974)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27287" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.03744,54.986725)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27289" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.36851,70.543028)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27291" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.97446,50.204559)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27293" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.93491,65.972144)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27295" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.37111,77.804346)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27297" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.81671,69.086974)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27299" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.38225,78.498775)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27301" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.91362,60.616454)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27303" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.66797,46.953719)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27305" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.55395,70.518223)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27307" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.07622,83.963307)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27309" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.87336,58.408898)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27311" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.1624,69.371136)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27313" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.19766,61.537071)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27315" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.24193,92.054032)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27317" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.57792,85.804146)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27319" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.91185,72.680429)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27321" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.21114,54.390718)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27323" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.425,58.312746)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27325" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.75555,54.81788)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27327" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.02179,89.657359)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27329" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.34862,76.778873)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27331" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.69843,96.395674)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27333" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.41247,98.459073)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27335" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.64167,99.407929)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27337" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.55057,71.155806)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27339" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.99484,42.637907)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27341" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.28505,55.87091)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27343" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.59065,90.220947)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27345" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.80267,84.26335)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27347" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.0481,69.504368)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27349" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.70248,70.584924)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27351" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.60597,71.929613)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27353" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.26451,61.650553)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27355" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.07096,61.27863)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27357" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.51102,59.166309)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27359" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.7622,71.153328)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27361" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.03042,69.238498)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27363" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.0127,72.966632)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27365" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.16327,93.601756)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27367" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.65317,86.450568)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27369" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.63188,88.665087)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27371" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.79384,53.28071)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27373" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-172.74532,63.571401)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27375" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.36995,98.386192)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27377" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.87674,71.675146)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27379" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.63154,56.464275)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27381" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.30959,100.32155)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27383" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.89624,76.824878)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27385" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.89333,59.036414)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27387" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.15441,79.028562)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27389" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.17175,82.356747)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27391" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.40338,71.852443)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27393" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.32571,78.574712)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27395" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.27469,82.10326)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27397" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.74472,92.858382)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27399" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.39287,43.722363)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27401" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.91341,58.102918)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27403" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.0014,102.05417)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27405" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.70591,86.082562)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27407" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.67988,73.064213)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27409" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.69945,93.694066)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27411" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.81662,92.427571)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27413" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.6518,97.097598)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27415" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.17079,99.725263)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27417" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.32322,57.339996)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27419" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.08888,90.37825)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27421" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.81039,97.796346)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27423" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.75166,49.166841)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27425" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.59494,76.576066)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27427" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.15051,97.084599)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27429" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.48403,101.42318)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27431" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.43478,67.779459)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27433" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.22419,53.68767)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27435" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.39505,77.294326)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27437" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.41919,63.575869)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27439" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.78438,100.27467)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27441" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.61177,77.533893)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27443" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.64022,70.853269)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27445" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.55297,95.290354)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27447" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.07855,79.238468)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27449" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.65079,77.687797)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27451" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.02062,95.590901)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27453" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.96278,49.586168)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27455" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.76927,45.050973)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27457" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.51603,60.583904)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27459" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.6906,62.896975)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27461" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.38112,93.672405)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27463" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.79225,91.745447)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27465" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.44269,51.903418)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27467" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.81928,67.525668)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27469" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.72833,73.448474)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27471" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.40508,60.974073)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27473" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.05455,87.628991)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27475" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.93588,99.420661)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27477" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.88648,81.120501)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27479" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.86504,86.770173)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27481" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.13681,93.182029)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27483" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.73521,43.869682)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27485" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.0881,84.61171)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27487" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.46233,54.843602)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27489" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.6321,73.541725)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27491" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.32357,55.670436)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27493" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.91557,46.204655)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27495" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.9719,91.231164)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27497" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.69165,59.134301)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27499" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.46456,65.903504)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27501" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.46929,90.501004)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27503" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.24033,81.588013)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27505" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.82874,79.876219)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27507" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.42978,93.090415)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27509" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.61435,90.058372)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27511" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.98492,100.36541)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27513" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.9321,48.867215)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27515" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.90345,55.127806)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27517" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.50047,56.752685)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27519" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.57486,42.693569)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27521" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.24764,56.266412)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27523" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.66904,75.110959)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27525" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.52155,62.944166)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27527" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.6552,81.070833)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27529" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.68383,61.281742)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27531" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.22425,49.58798)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27533" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.5244,86.671087)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27535" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.15446,47.974507)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27537" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.76731,79.287042)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27539" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.15219,46.775348)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27541" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.08445,95.691504)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27543" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.70082,55.18296)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27545" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.3063,79.701222)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27547" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.49142,61.200645)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27549" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.76269,63.163291)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27551" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.04973,55.765566)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27553" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.38488,76.892807)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27555" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.26932,93.768386)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27557" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.22819,47.398248)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27559" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.57728,63.124516)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27561" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.63133,50.924622)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27563" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.13129,45.932102)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27565" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.04168,82.928417)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27567" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.8057,74.82315)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27569" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.39228,70.354617)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27571" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.13287,61.835684)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27573" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.60438,69.14573)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27575" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.81305,49.90574)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27577" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.21594,91.217105)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27579" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.19728,84.062432)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27581" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.9291,92.821144)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27583" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.03933,58.077371)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27585" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.60605,49.964956)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27587" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.38271,65.26114)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27589" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.78933,53.963431)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27591" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.30792,89.913488)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27593" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.44719,64.11581)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27595" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.51248,92.923726)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27597" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.3718,63.91343)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27599" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.42852,92.383231)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27601" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.76597,73.805175)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27603" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.96429,98.739247)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27605" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.5644,67.666933)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27607" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.17004,83.93924)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27609" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.16036,64.890456)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27611" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.18946,50.145956)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27613" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.60101,93.847542)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27615" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.13068,83.539022)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27617" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.16829,96.832506)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27619" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.0358,102.55861)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27621" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.50379,92.037363)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27623" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.71694,50.290692)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27625" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.47726,61.12236)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27627" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.67564,85.75803)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27629" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.99966,93.434097)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27631" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.09472,77.736566)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27633" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.51741,86.140447)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27635" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.83897,90.975822)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27637" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.21035,74.418667)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27639" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.86655,42.609709)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27641" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.6819,88.413202)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27643" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.87855,53.0696)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27645" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.77414,100.67582)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27647" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.3602,81.96574)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27649" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.09159,47.566903)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27651" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.68274,79.474551)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27653" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.48495,94.626364)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27655" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.37711,46.555566)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27657" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.8809,69.086841)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27659" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.6635,60.352803)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27661" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.95466,72.099926)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27663" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.21111,88.011876)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27665" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.83231,53.316376)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27667" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.84369,65.005735)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27669" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.9989,84.981571)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27671" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.58639,90.28221)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27673" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.47176,73.80615)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27675" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.75774,91.16306)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27677" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.16251,77.140677)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27679" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.52545,61.924834)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27681" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.0902,47.953693)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27683" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.93112,65.923658)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27685" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.70327,50.510667)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27687" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.52473,96.774009)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27689" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.08273,85.522736)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27691" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.53941,71.551229)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27693" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.45404,70.624355)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27695" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.9827,86.295303)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27697" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.54892,92.148972)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27699" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.9395,55.93824)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27701" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.46854,45.740705)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27703" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.59022,53.978766)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27705" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.99056,75.23682)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27707" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.6356,50.811083)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27709" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.03312,97.129739)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27711" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.53792,97.993185)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27713" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.83949,92.077517)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27715" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.1949,48.230903)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27717" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.80275,63.060718)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27719" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.97292,71.188488)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27721" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.14657,68.359108)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27723" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.42977,50.332265)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27725" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.24824,73.086246)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27727" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.76036,51.632528)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27729" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.27915,51.806225)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27731" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.78673,89.143551)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27733" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.85919,71.873986)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27735" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.70566,42.473075)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27737" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.34795,53.497344)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27739" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.79936,49.45235)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27741" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.00608,48.228358)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27743" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.05346,52.476784)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27745" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.12808,54.081591)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27747" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.12163,60.597171)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27749" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.42381,59.130803)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27751" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.10873,63.050103)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27753" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.32857,55.884135)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27755" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.70162,54.331071)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27757" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.56882,84.0983)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27759" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.36178,46.74517)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27761" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.78346,50.453108)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27763" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.92705,87.02696)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27765" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.25513,53.96114)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27767" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.08563,91.112785)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27769" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.58453,74.274969)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27771" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.62858,65.665589)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27773" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.65329,79.940039)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27775" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.76626,77.12677)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27777" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.29766,67.797527)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27779" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.80633,45.766603)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27781" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.01509,96.010002)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27783" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.83557,56.520808)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27785" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.34907,95.535144)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27787" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.79617,96.412337)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27789" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.46954,66.478543)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27791" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.44943,89.33075)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27793" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.67063,68.294369)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27795" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.01207,61.20943)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27797" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.73846,87.445554)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27799" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.91904,70.247864)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27801" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.48082,99.563156)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27803" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.4407,45.611464)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27805" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.85378,66.384985)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27807" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.52721,46.698474)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27809" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.80022,47.896807)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27811" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.80727,102.88663)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27813" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.76038,73.863831)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27815" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.93098,47.204356)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27817" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.6804,65.256119)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27819" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.22945,55.767241)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27821" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.54617,48.169583)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27823" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.51632,77.705709)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27825" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.52519,80.579242)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27827" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.0888,93.519977)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27829" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.76835,93.562585)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27831" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.36747,60.812258)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27833" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.29986,51.075908)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27835" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.85083,56.279579)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27837" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.33677,64.543745)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27839" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.11549,62.724424)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27841" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.11813,68.243802)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27843" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.9637,81.829271)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27845" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.71646,80.73381)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27847" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.97031,59.434907)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27849" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.03427,47.761811)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27851" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.2947,83.727191)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27853" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.08309,98.542115)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27855" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.91882,68.097545)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27857" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.72297,62.6757)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27859" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.77392,49.448992)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27861" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.44367,88.139277)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27863" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.07915,68.960728)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27865" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.11148,71.847331)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27867" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.72353,74.3722)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27869" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.20403,73.58001)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27871" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.05235,102.50404)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27873" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.43746,85.588314)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27875" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.6801,69.436624)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27877" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.46415,55.915574)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27879" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.24972,91.450947)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27881" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.67721,79.344433)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27883" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.30184,50.246818)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27885" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.80369,91.46636)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27887" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.87594,52.952389)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27889" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.79273,64.86767)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27891" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.33654,86.19453)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27893" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.07836,54.07525)"/>
+    <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27895" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.99045,71.632159)"/>
+    <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27897" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.6111,98.159425)"/>
+    <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27899" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.45905,77.759546)"/>
+    <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27901" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.7514,72.150342)"/>
+    <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27903" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.73003,67.384443)"/>
+    <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27905" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.42247,74.315027)"/>
+    <filter id="filter27927">
+      <feGaussianBlur id="feGaussianBlur27929" stdDeviation="0.071512502" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="59.983643" cy="120.82638" r="29.457615" fx="59.983643" fy="120.82638" id="radialGradient27939" xlink:href="#linearGradient27933" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.8793038,-5.0037745e-7,5.9254638e-8,0.2083586,-52.74385,95.651194)"/>
+    <filter height="2.1329556" y="-0.56647772" width="1.1115345" x="-0.055767238" id="filter27965">
+      <feGaussianBlur id="feGaussianBlur27967" stdDeviation="1.3689748" inkscape:collect="always"/>
+    </filter>
+    <linearGradient x1="-80.095642" y1="78.43882" x2="-89.987785" y2="115.78114" id="linearGradient27979" xlink:href="#linearGradient27973" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0103538,0,-1.3128784)"/>
+    <linearGradient x1="86.693916" y1="100.83184" x2="90.051781" y2="100.83184" id="linearGradient27989" xlink:href="#linearGradient27983" gradientUnits="userSpaceOnUse" gradientTransform="translate(1,0)"/>
+    <filter height="1.0452234" y="-0.022611663" width="1.5097902" x="-0.25489509" id="filter28003">
+      <feGaussianBlur id="feGaussianBlur28005" stdDeviation="0.35662617" inkscape:collect="always"/>
+    </filter>
+    <filter height="1.203077" y="-0.10153846" width="1.2933333" x="-0.14666668" id="filter28031">
+      <feGaussianBlur id="feGaussianBlur28033" stdDeviation="0.55" inkscape:collect="always"/>
+    </filter>
+    <clipPath id="clipPath28041">
+      <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" id="rect28043" style="opacity:0.18359375;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    </clipPath>
+    <clipPath id="clipPath28045">
+      <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" id="rect28047" style="opacity:0.18359375;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    </clipPath>
+    <filter id="filter28101">
+      <feGaussianBlur id="feGaussianBlur28103" stdDeviation="0.04177847" inkscape:collect="always"/>
+    </filter>
+    <radialGradient cx="16" cy="18" r="4" fx="16" fy="18" id="radialGradient28110" xlink:href="#linearGradient28077" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.5,0,-9)"/>
+    <linearGradient x1="16" y1="1.5952783" x2="16" y2="18.75548" id="linearGradient28112" xlink:href="#linearGradient28049" gradientUnits="userSpaceOnUse"/>
+    <radialGradient cx="14" cy="19.699831" r="2.1500001" fx="14" fy="18.836424" id="radialGradient28114" xlink:href="#linearGradient28069" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1062878,0,0,1.1062878,0.547091,-2.2994329)"/>
+    <linearGradient x1="11.917725" y1="17.560907" x2="11.917725" y2="20.038458" id="linearGradient28116" xlink:href="#linearGradient28059" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1062878,0,0,1.1062878,0.547091,-2.2994329)"/>
+    <linearGradient x1="60.25" y1="122.00736" x2="60.25" y2="118.5" id="linearGradient28138" xlink:href="#linearGradient28132" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0103538,0,-1.3128784)"/>
+    <linearGradient id="linearGradient3207">
+      <stop id="stop3209" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3211" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5433">
+      <stop id="stop5435" style="stop-color:#ea3838;stop-opacity:1" offset="0"/>
+      <stop id="stop5437" style="stop-color:#c40000;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2922">
+      <stop id="stop2924" style="stop-color:#000000;stop-opacity:1" offset="0"/>
+      <stop id="stop2926" style="stop-color:#515151;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3325">
+      <stop id="stop3327" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3329" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3623">
+      <stop id="stop3625" style="stop-color:#ffffff;stop-opacity:0.68345326" offset="0"/>
+      <stop id="stop3627" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5826">
+      <stop id="stop5828" style="stop-color:#980000;stop-opacity:1" offset="0"/>
+      <stop id="stop5830" style="stop-color:#db5c5c;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3058">
+      <stop id="stop3060" style="stop-color:#9a7600;stop-opacity:1" offset="0"/>
+      <stop id="stop3066" style="stop-color:#e3ad00;stop-opacity:1" offset="0.09292036"/>
+      <stop id="stop3070" style="stop-color:#ffcd2c;stop-opacity:1" offset="0.5043171"/>
+      <stop id="stop3068" style="stop-color:#e3ad00;stop-opacity:1" offset="0.91571385"/>
+      <stop id="stop3062" style="stop-color:#b98d00;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7364">
+      <stop id="stop7366" style="stop-color:#d4a100;stop-opacity:0.97647059" offset="0"/>
+      <stop id="stop7368" style="stop-color:#ffc712;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2598">
+      <stop id="stop2600" style="stop-color:#252525;stop-opacity:1" offset="0"/>
+      <stop id="stop2606" style="stop-color:#252525;stop-opacity:1" offset="0.29354507"/>
+      <stop id="stop2608" style="stop-color:#252525;stop-opacity:1" offset="0.45366704"/>
+      <stop id="stop2602" style="stop-color:#000000;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2257">
+      <stop id="stop2259" style="stop-color:#b4942a;stop-opacity:1" offset="0"/>
+      <stop id="stop2261" style="stop-color:#e4dcc9;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <radialGradient cx="305.02731" cy="-349" r="34.178398" id="path2489_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1658,0,0,-1,-353.77589,-376.98677)">
+      <stop id="stop44" style="stop-color:#4b73ad;stop-opacity:1" offset="0"/>
+      <stop id="stop46" style="stop-color:#80b3ff;stop-opacity:1" offset="1"/>
+    </radialGradient>
+    <radialGradient cx="354.85159" cy="-426" r="34.1791" id="path4248_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-1,-359.20739,-378.98677)">
+      <stop id="stop38" style="stop-color:#538bcf;stop-opacity:1" offset="0"/>
+      <stop id="stop40" style="stop-color:#80b3ff;stop-opacity:1" offset="1"/>
+    </radialGradient>
+    <radialGradient cx="354.85159" cy="-426" r="34.1791" id="path2471_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-1,-359.20739,-376.98677)">
+      <stop id="stop32" style="stop-color:#538bcf;stop-opacity:1" offset="0"/>
+      <stop id="stop34" style="stop-color:#80b3ff;stop-opacity:1" offset="1"/>
+    </radialGradient>
+    <linearGradient x1="354.68549" y1="-601.27588" x2="354.68549" y2="-503.146" id="front_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-0.6522,-359.42609,-340.63827)">
+      <stop id="stop20" style="stop-color:#b3d9ff;stop-opacity:1" offset="0"/>
+      <stop id="stop22" style="stop-color:#71a8f5;stop-opacity:1" offset="0.48629999"/>
+      <stop id="stop24" style="stop-color:#2c72c7;stop-opacity:1" offset="0.79879999"/>
+      <stop id="stop26" style="stop-color:#2c72c7;stop-opacity:1" offset="0.98000002"/>
+      <stop id="stop28" style="stop-color:#deebff;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient x1="63.4995" y1="-79.239304" x2="63.4995" y2="9.3268995" id="XMLID_1_" gradientUnits="userSpaceOnUse" gradientTransform="translate(-68.240592,44.013228)">
+      <stop id="stop6" style="stop-color:#73a3e7;stop-opacity:1" offset="0"/>
+      <stop id="stop8" style="stop-color:#83b1f5;stop-opacity:1" offset="0.13940001"/>
+      <stop id="stop10" style="stop-color:#bcd6fc;stop-opacity:1" offset="0.3689"/>
+      <stop id="stop12" style="stop-color:#659fee;stop-opacity:1" offset="0.5007"/>
+      <stop id="stop14" style="stop-color:#0066ff;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient x1="305.35327" y1="-33.695843" x2="273.56915" y2="122.91273" id="linearGradient3377" xlink:href="#linearGradient3303" gradientUnits="userSpaceOnUse"/>
+    <clipPath id="clipPath3367">
+      <path d="M 240.04888,9 C 237.09544,9 234.6888,11.347166 234.6888,14.32684 L 234.6888,111.25905 L 245.32884,121.91273 L 341.32804,121.91273 C 344.28149,121.91273 346.68786,119.56556 346.68786,116.58615 L 346.68786,14.32684 C 346.68786,11.347166 344.28149,9 341.32804,9 L 240.04888,9 z" id="path3369" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
+    </clipPath>
+    <linearGradient x1="-97.742668" y1="1937.9885" x2="-97.742668" y2="1895.421" id="linearGradient3359" xlink:href="#linearGradient3174" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,158.24797,-4821.2784)"/>
+    <linearGradient x1="-44.117901" y1="127.91319" x2="-43.770939" y2="119.03187" id="linearGradient3323" xlink:href="#linearGradient3317" gradientUnits="userSpaceOnUse"/>
+    <linearGradient x1="-44.802357" y1="71.894066" x2="-44.802357" y2="130.6806" id="linearGradient3309" xlink:href="#linearGradient3303" gradientUnits="userSpaceOnUse"/>
+    <linearGradient x1="92.574883" y1="122.13094" x2="53.747078" y2="76.315697" id="linearGradient3293" xlink:href="#linearGradient3270" gradientUnits="userSpaceOnUse" gradientTransform="translate(-106.875,0)"/>
+    <clipPath id="clipPath3289">
+      <path d="M -69.78125,80 C -70.381154,80 -70.875,80.470333 -70.875,81.0625 L -70.875,122.9375 C -70.875,123.52967 -70.381154,124 -69.78125,124 L -9.09375,124 C -8.493846,124 -8.000004,123.52967 -8,122.9375 L -8,81.0625 C -8,80.470333 -8.493846,80 -9.09375,80 L -69.78125,80 z" id="path3291" style="opacity:1;fill:url(#linearGradient3293);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
+    </clipPath>
+    <linearGradient x1="92.574883" y1="122.13094" x2="53.747078" y2="76.315697" id="linearGradient3285" xlink:href="#linearGradient3270" gradientUnits="userSpaceOnUse" gradientTransform="translate(-106.875,0)"/>
+    <linearGradient x1="92.574883" y1="122.13094" x2="53.747078" y2="76.315697" id="linearGradient3276" xlink:href="#linearGradient3270" gradientUnits="userSpaceOnUse"/>
+    <linearGradient x1="-97.742668" y1="1937.9885" x2="-97.742668" y2="1895.421" id="linearGradient5823" xlink:href="#linearGradient3174" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,325.24891,-4887.3657)"/>
+    <linearGradient id="linearGradient3163">
+      <stop id="stop3165" style="stop-color:#6b696a;stop-opacity:1" offset="0"/>
+      <stop id="stop3167" style="stop-color:#6b696a;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5810">
+      <stop id="stop5812" style="stop-color:#2e2a2b;stop-opacity:1" offset="0"/>
+      <stop id="stop5814" style="stop-color:#4c494a;stop-opacity:1" offset="0.33497536"/>
+      <stop id="stop5816" style="stop-color:#5b595a;stop-opacity:1" offset="0.66748768"/>
+      <stop id="stop5818" style="stop-color:#6b696a;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3206">
+      <stop id="stop3208" style="stop-color:#e3e2e6;stop-opacity:1" offset="0"/>
+      <stop id="stop3216" style="stop-color:#000000;stop-opacity:0.5411765" offset="0.5"/>
+      <stop id="stop3210" style="stop-color:#000000;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3270">
+      <stop id="stop3272" style="stop-color:#a0a1a5;stop-opacity:1" offset="0"/>
+      <stop id="stop3274" style="stop-color:#ffffff;stop-opacity:1" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3303">
+      <stop id="stop3305" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
+      <stop id="stop3307" style="stop-color:#ffffff;stop-opacity:0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient3448">
+      <stop id="stop3450" style="stop-color:#cac7dc;stop-opacity:1" offset="0"/>
+      <stop id="stop3452" style="stop-color:#cac7dc;stop-opacity:0" offset="1"/>
+    </linearGradient>
+  </defs>
+  <rect width="58.91523" height="5.7999449" rx="0.72191608" ry="0.28855881" x="30.526026" y="117.92641" transform="matrix(1,0,0,1.0103538,0,-1.3128784)" id="rect27931" style="opacity:1;fill:url(#radialGradient27939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter27965)"/>
+  <path d="M 16,121 L 30,121 L 30,120 L 88.2,120 L 88.2,121 L 116,121 L 116,117 L 12.710706,110.00228 L 16,121 z" id="path3507" style="fill:url(#radialGradient3583);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3565)"/>
+  <path d="M 16,121 L 30,121 L 30,120 L 90,120 L 90,121 L 119,121 L 119,117 L 12.710706,116.00228 L 16,121 z" id="path3390" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3444)"/>
+  <path d="M 11.361024,8 C 9.552302,8 8,9.625443 8.00094,11.32684 L 8.00094,110.25905 L 18.640979,120.91273 L 116.64018,120.91273 C 119.59363,120.91273 120,120.56556 120,117.58615 L 120,11.32684 C 120,9.513864 118.44194,8 116.64018,8 L 11.361024,8 z" id="rect2169" style="opacity:1;fill:url(#linearGradient3250);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
+  <path d="M 24.693828,-69.480939 L 24.693828,-12.824689 L 102.79383,-12.824689 L 102.79383,-69.480939 L 24.693828,-69.480939 z" transform="translate(0.3,76.483371)" clip-path="url(#clipPath3008)" id="rect2379" style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3105)"/>
+  <rect width="76" height="54" rx="1.2345035" ry="1.2345035" x="26" y="8" id="rect3325" style="opacity:1;fill:url(#radialGradient3083);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
+  <rect width="3.8491483" height="53.921757" rx="0.92457408" ry="0.92457408" x="26.150852" y="8" id="rect3490" style="opacity:0.61328125;fill:#cfdce7;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <rect width="3.7944784" height="53.467316" rx="0.89723921" ry="0.92457408" x="98" y="8.5" id="rect3488" style="opacity:0.546875;fill:#cfdce7;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <rect width="75.091873" height="0.7289294" x="26.018856" y="63.416855" id="rect3109" style="opacity:1;fill:url(#radialGradient3117);fill-opacity:1;stroke:none;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter3726)"/>
+  <path d="M 12.375,-168.28125 C 9.4215521,-168.28125 8,-167.91718 8,-164.9375 L 8,-164.15625 C 8,-167.13593 9.4215521,-167.46875 12.375,-167.46875 L 115.625,-167.46875 C 118.57845,-167.46875 120,-167.13593 120,-164.15625 L 120,-164.9375 C 120,-167.91718 118.57845,-168.28125 115.625,-168.28125 L 12.375,-168.28125 z" transform="translate(0,176.85148)" clip-path="url(#clipPath3215)" id="path3209" style="opacity:1;fill:#000000;fill-opacity:0.35840705;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3371)"/>
+  <path d="M 11.375,8.600468 C 9.318588,8.707659 8,9.305748 8,11.912968 L 8,12.506718 C 8,9.527038 9.421552,9.194218 12.375,9.194218 L 115.625,9.194218 C 118.57845,9.194218 120,9.527038 120,12.506718 L 120,11.912968 C 120,8.933288 118.57845,8.600468 115.625,8.600468 L 12.375,8.600468 C 12.005819,8.600468 11.668773,8.585159 11.375,8.600468 z" id="path3381" style="opacity:1;fill:#ffffff;fill-opacity:0.46902651;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3417)"/>
+  <path d="M 104.309,8.626039 C 104.20787,8.626039 104.12054,8.662959 104.02775,8.688539 C 103.92346,8.717289 103.83617,8.757269 103.7465,8.813539 C 103.66099,8.867209 103.59613,8.926839 103.52775,9.001039 C 103.49917,9.032049 103.45912,9.060729 103.434,9.094789 C 103.4003,9.135389 103.36852,9.175429 103.34025,9.219789 C 103.24682,9.388799 103.184,9.576909 103.184,9.782289 L 103.184,61.157289 L 103.59025,61.157289 L 103.59025,9.782289 C 103.59025,9.570869 103.67915,9.392209 103.77775,9.219789 L 115.68399,9.219789 C 118.63744,9.219789 120.05899,9.552609 120.05899,12.532289 L 120.05899,11.938539 C 120.05899,9.331319 118.74326,8.761729 116.68399,8.657289 L 104.559,8.657289 C 104.61259,8.649219 104.65932,8.626039 104.71525,8.626039 L 104.309,8.626039 z M 11.090247,8.657289 C 9.465055,8.810999 8.128281,9.431649 8.090247,11.532289 C 8.211314,9.472429 9.849731,9.219789 12.433997,9.219789 L 24.433997,9.219789 C 24.540585,9.397089 24.590247,9.593059 24.590247,9.813539 L 24.590247,61.188539 L 24.996497,61.188539 L 24.996497,9.813539 C 24.996497,9.593059 24.946836,9.397089 24.840247,9.219789 C 24.794983,9.144499 24.744424,9.063799 24.683997,9.001039 C 24.59027,8.895459 24.46525,8.810179 24.340247,8.751039 C 24.223908,8.695989 24.105809,8.657289 23.965247,8.657289 L 23.465247,8.657289 L 11.090247,8.657289 z M 8.090247,11.532289 C 8.087808,11.667029 8.058997,11.791209 8.058997,11.938539 L 8.058997,12.532289 C 8.058997,12.159829 8.072952,11.826559 8.090247,11.532289 z" id="path3423" style="opacity:0.26953125;fill:url(#linearGradient3453);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3417)"/>
+  <path d="M 115.43114,8.6 C 118.38459,8.6 119.20614,8.932826 119.20614,11.9125 L 119.20614,115.19375 C 119.20614,118.17316 116.38459,120.50625 113.43114,120.50625 L 114.14989,120.50625 C 117.10334,120.50625 119.49364,118.17316 119.49364,115.19375 L 119.49364,11.9125 C 119.49364,8.932826 119.10334,8.6 116.14989,8.6 L 115.43114,8.6 z" id="path3455" style="opacity:1;fill:url(#linearGradient3474);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
+  <path d="M 32,16.122507 L 32,20.076133 L 96,20.076133 L 96,16.122507 L 32,16.122507 z" id="path3476" style="opacity:0.56521738;fill:#b2c6d9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+  <path d="M 32.031703,32.228578 L 32.031703,36.118982 L 96.0317,36.118982 L 96.0317,32.228578 L 32.031703,32.228578 z" id="path3478" style="opacity:0.56521738;fill:#b2c6d9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+  <path d="M 32,48.202135 L 32,52.202135 L 96,52.202135 L 96,48.202135 L 32,48.202135 z" id="path3480" style="opacity:0.56521738;fill:#b2c6d9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+  <path d="M 101.42263,8 L 101.42263,61.80625 C 101.60563,61.704641 101.71697,61.555253 101.82888,61.40625 L 101.82888,8 L 101.42263,8 z" id="rect3492" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <path d="M 26.108963,8 L 26.12263,61.300619 C 26.225712,61.500509 26.375099,61.638659 26.52888,61.770949 L 26.515213,8 L 26.108963,8 z" id="path3497" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <path d="M 16.78125,130.4375 C 15.2983,130.4375 14.125,131.64205 14.125,133.125 L 14.125,175.15625 C 14.125,176.6392 15.298301,177.8125 16.78125,177.8125 L 16.9375,177.8125 C 16.529729,177.36613 16.25,176.78074 16.25,176.125 L 16.25,136.15625 C 16.25,134.76494 17.362011,133.625 18.75,133.625 L 84.34375,133.625 C 85.731742,133.625 86.84375,134.76494 86.84375,136.15625 L 86.84375,176.125 C 86.843752,176.78074 86.595271,177.36613 86.1875,177.8125 L 86.3125,177.8125 C 87.79545,177.8125 89.000002,176.6392 89,175.15625 L 89,133.125 C 89,131.64205 87.795451,130.4375 86.3125,130.4375 L 16.78125,130.4375 z" transform="translate(16.391305,-52.350088)" clip-path="url(#clipPath3199)" id="rect3626" style="fill:url(#linearGradient3712);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter3659)"/>
+  <path d="M 34.53781,80.00784 C 33.118602,80.00784 31.97531,81.15113 31.97531,82.57034 L 32,119.71658 L 104,119.71658 L 103.97531,82.57034 C 103.97531,81.15113 102.83202,80.00784 101.41281,80.00784 L 34.53781,80.00784 z" id="path3680" style="opacity:1;fill:#000000;fill-opacity:0.12831858;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <path d="M 34.581018,80.0708 C 33.16181,80.0708 32.018518,81.2141 32.018518,82.6333 L 32.018518,119.81658 L 104,119.7 L 104,82.51672 C 104,81.09752 102.85671,79.95422 101.4375,79.95422 L 34.581018,80.0708 z" id="path3694" style="opacity:0.07421875;fill:url(#radialGradient3704);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <path d="M 52.9375,84 C 52.41795,84 52,84.417953 52,84.9375 L 52,108 L 40.9375,108 C 40.41795,108 40,108.41795 40,108.9375 L 40,115.0625 C 40,115.58205 40.417949,116 40.9375,116 L 52.9375,116 L 63.0625,116 C 63.58205,116 64,115.58205 64,115.0625 L 64,108.9375 L 64,84.9375 C 64,84.41795 63.582051,84 63.0625,84 L 52.9375,84 z" transform="matrix(1,0,0,1.0103538,0,-1.3128784)" id="rect3226" style="opacity:1;fill:url(#linearGradient3281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter3271)"/>
+  <rect width="69.516342" height="1.4999924" x="33.008656" y="77.600006" id="rect3669" style="opacity:0.37771738;fill:url(#radialGradient3692);fill-opacity:1;stroke:none;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <path d="M 103.91096,8.735486 L 103.16096,9.422986 L 104.09846,9.485486 L 103.91096,8.735486 z" id="path3086" style="fill:url(#radialGradient3094);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3120)"/>
+  <path d="M 23.91096,8.7354857 L 23.16096,9.4229857 L 24.09846,9.4854857 L 23.91096,8.7354857 z" transform="matrix(-1,0,0,1,48.05942,0)" id="path3124" style="fill:url(#radialGradient3126);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3120)"/>
+  <path d="M 112.08125,97.375 L 112.08125,104.09375 L 110.8625,104.09375 L 109.83125,104.09375 L 114.175,111.625 L 118.51875,104.09375 L 117.4875,104.09375 L 116.26875,104.09375 L 116.26875,97.375 L 114.175,97.375 L 112.08125,97.375 z" transform="matrix(0.9875769,0,0,1,0.716891,0.2)" id="path3128" style="opacity:0.453125;fill:url(#linearGradient3142);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3192)"/>
+  <rect width="3.3578629" height="37.852272" x="87.693916" y="81.905701" transform="matrix(1,0,0,1.0103538,0,-1.3128784)" id="rect27981" style="opacity:0.296875;fill:url(#linearGradient27989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28003)"/>
+  <path d="M 34.541973,80.321631 C 33.364723,80.321631 32.416973,81.279193 32.416973,82.468632 L 32.59375,120.53579 L 88,120.53579 L 88,82.325479 C 88,81.136039 87.17725,80.321631 86,80.321631 L 34.541973,80.321631 z M 40.9375,88.353886 L 55.0625,88.353886 C 55.582051,88.353886 56,88.776164 56,89.301092 L 56,110.89955 C 56,111.42448 55.58205,111.84676 55.0625,111.84676 L 40.9375,111.84676 C 40.417949,111.84676 40,111.42448 40,110.89955 L 40,89.301092 C 40,88.776166 40.41795,88.353886 40.9375,88.353886 z" id="rect3196" style="opacity:1;fill:url(#linearGradient3221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <g transform="matrix(1,0,0,1.0103538,313.92339,17.714654)" clip-path="url(#clipPath25065)" id="g23527" style="opacity:0.18359375;filter:url(#filter27927)">
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.79343" y="84.707176" id="rect17371" style="opacity:0.1875;fill:url(#linearGradient17393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.9552" y="91.262184" id="rect17373" style="opacity:0.1875;fill:url(#linearGradient17391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.91937" y="109.06592" id="rect17375" style="opacity:0.1875;fill:url(#linearGradient17389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.12012" y="76.49028" id="rect17377" style="opacity:0.46875;fill:url(#linearGradient17405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.07872" y="96.053925" id="rect17379" style="opacity:0.46875;fill:url(#linearGradient17403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-269.22446" y="89.085144" id="rect17381" style="opacity:0.46875;fill:url(#linearGradient17401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.40353" y="67.112572" id="rect17407" style="opacity:0.1875;fill:url(#linearGradient18149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.73615" y="80.639206" id="rect17409" style="opacity:0.1875;fill:url(#linearGradient18147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.26816" y="84.380295" id="rect17411" style="opacity:0.1875;fill:url(#linearGradient18145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.76822" y="106.13625" id="rect17413" style="opacity:0.46875;fill:url(#linearGradient18143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.63443" y="102.51813" id="rect17415" style="opacity:0.46875;fill:url(#linearGradient18141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.30339" y="71.39473" id="rect17417" style="opacity:0.46875;fill:url(#linearGradient18139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.64175" y="100.63744" id="rect17419" style="opacity:0.1875;fill:url(#linearGradient18137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.05591" y="65.363846" id="rect17421" style="opacity:0.1875;fill:url(#linearGradient18135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.51465" y="69.323357" id="rect17423" style="opacity:0.1875;fill:url(#linearGradient18133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.87137" y="99.903488" id="rect17425" style="opacity:0.46875;fill:url(#linearGradient18131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.51654" y="101.47046" id="rect17427" style="opacity:0.46875;fill:url(#linearGradient18129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.41283" y="75.500755" id="rect17429" style="opacity:0.46875;fill:url(#linearGradient18127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.32373" y="69.585419" id="rect17431" style="opacity:0.1875;fill:url(#linearGradient18125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.6416" y="71.46701" id="rect17433" style="opacity:0.1875;fill:url(#linearGradient18123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-231.34415" y="77.415817" id="rect17435" style="opacity:0.1875;fill:url(#linearGradient18121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-307.36627" y="105.92856" id="rect17437" style="opacity:0.46875;fill:url(#linearGradient18119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.40512" y="62.602127" id="rect17439" style="opacity:0.46875;fill:url(#linearGradient18117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.37361" y="99.838142" id="rect17441" style="opacity:0.46875;fill:url(#linearGradient18115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.8649" y="56.113068" id="rect17443" style="opacity:0.1875;fill:url(#linearGradient18113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.1181" y="74.343849" id="rect17445" style="opacity:0.1875;fill:url(#linearGradient18111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.14183" y="98.228653" id="rect17447" style="opacity:0.1875;fill:url(#linearGradient18109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.48334" y="67.98336" id="rect17449" style="opacity:0.46875;fill:url(#linearGradient18107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.73779" y="64.299034" id="rect17451" style="opacity:0.46875;fill:url(#linearGradient18105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.82462" y="69.00946" id="rect17453" style="opacity:0.46875;fill:url(#linearGradient18103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.22101" y="79.247726" id="rect17455" style="opacity:0.1875;fill:url(#linearGradient18101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.43381" y="104.01281" id="rect17457" style="opacity:0.1875;fill:url(#linearGradient18099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.76028" y="105.31631" id="rect17459" style="opacity:0.1875;fill:url(#linearGradient18097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.03159" y="65.75708" id="rect17461" style="opacity:0.46875;fill:url(#linearGradient18095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.90118" y="69.971687" id="rect17463" style="opacity:0.46875;fill:url(#linearGradient18093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.26633" y="97.308929" id="rect17465" style="opacity:0.46875;fill:url(#linearGradient18091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.34489" y="57.138626" id="rect17467" style="opacity:0.1875;fill:url(#linearGradient18089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.36011" y="79.709198" id="rect17469" style="opacity:0.1875;fill:url(#linearGradient18087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-278.16724" y="103.81553" id="rect17471" style="opacity:0.1875;fill:url(#linearGradient18085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-254.41679" y="77.795441" id="rect17473" style="opacity:0.46875;fill:url(#linearGradient18083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.66385" y="87.002907" id="rect17475" style="opacity:0.46875;fill:url(#linearGradient18081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.04214" y="101.45621" id="rect17477" style="opacity:0.46875;fill:url(#linearGradient18079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.64142" y="79.221695" id="rect17479" style="opacity:0.1875;fill:url(#linearGradient18077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.68213" y="85.522552" id="rect17481" style="opacity:0.1875;fill:url(#linearGradient18075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.27867" y="66.150208" id="rect17483" style="opacity:0.1875;fill:url(#linearGradient18073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.85204" y="98.996635" id="rect17485" style="opacity:0.46875;fill:url(#linearGradient18071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.82623" y="62.490906" id="rect17487" style="opacity:0.46875;fill:url(#linearGradient18069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.63985" y="103.67081" id="rect17489" style="opacity:0.46875;fill:url(#linearGradient18067);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.41724" y="103.57622" id="rect17491" style="opacity:0.1875;fill:url(#linearGradient18065);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.78891" y="110.85292" id="rect17493" style="opacity:0.1875;fill:url(#linearGradient18063);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.85229" y="87.596672" id="rect17495" style="opacity:0.1875;fill:url(#linearGradient18061);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.77243" y="77.090691" id="rect17497" style="opacity:0.46875;fill:url(#linearGradient18059);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.65201" y="61.369072" id="rect17499" style="opacity:0.46875;fill:url(#linearGradient18057);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.33041" y="97.866295" id="rect17501" style="opacity:0.46875;fill:url(#linearGradient18055);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.27512" y="60.602905" id="rect17503" style="opacity:0.1875;fill:url(#linearGradient18053);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.28024" y="98.59436" id="rect17505" style="opacity:0.1875;fill:url(#linearGradient18051);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.80908" y="104.19329" id="rect17507" style="opacity:0.1875;fill:url(#linearGradient18049);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.54272" y="94.834015" id="rect17509" style="opacity:0.46875;fill:url(#linearGradient18047);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.52655" y="96.503296" id="rect17511" style="opacity:0.46875;fill:url(#linearGradient18045);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.43588" y="62.813446" id="rect17513" style="opacity:0.46875;fill:url(#linearGradient18043);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.03261" y="90.780258" id="rect17515" style="opacity:0.1875;fill:url(#linearGradient18041);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.0979" y="99.709679" id="rect17517" style="opacity:0.1875;fill:url(#linearGradient18039);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.3273" y="97.007927" id="rect17519" style="opacity:0.1875;fill:url(#linearGradient18037);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.40613" y="63.924969" id="rect17521" style="opacity:0.46875;fill:url(#linearGradient18035);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.76562" y="97.57634" id="rect17523" style="opacity:0.46875;fill:url(#linearGradient18033);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.3656" y="91.897057" id="rect17525" style="opacity:0.46875;fill:url(#linearGradient18031);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.78883" y="88.074402" id="rect17527" style="opacity:0.1875;fill:url(#linearGradient18029);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.24213" y="102.16527" id="rect17529" style="opacity:0.1875;fill:url(#linearGradient18027);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.57928" y="92.647728" id="rect17531" style="opacity:0.1875;fill:url(#linearGradient18025);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-254.35078" y="60.315037" id="rect17533" style="opacity:0.46875;fill:url(#linearGradient18023);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.11502" y="90.288979" id="rect17535" style="opacity:0.46875;fill:url(#linearGradient18021);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.80861" y="109.21276" id="rect17537" style="opacity:0.46875;fill:url(#linearGradient18019);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.75543" y="72.276009" id="rect17539" style="opacity:0.1875;fill:url(#linearGradient18017);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.12875" y="57.977592" id="rect17541" style="opacity:0.1875;fill:url(#linearGradient18015);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.66217" y="67.495979" id="rect17543" style="opacity:0.1875;fill:url(#linearGradient18013);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.2243" y="69.823593" id="rect17545" style="opacity:0.46875;fill:url(#linearGradient18011);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.45792" y="68.959457" id="rect17547" style="opacity:0.46875;fill:url(#linearGradient18009);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.89233" y="76.257271" id="rect17549" style="opacity:0.46875;fill:url(#linearGradient18007);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.53769" y="90.623589" id="rect17551" style="opacity:0.1875;fill:url(#linearGradient18005);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.34969" y="97.305748" id="rect17553" style="opacity:0.1875;fill:url(#linearGradient18003);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.20572" y="82.862694" id="rect17555" style="opacity:0.1875;fill:url(#linearGradient18001);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.24118" y="79.64772" id="rect17557" style="opacity:0.46875;fill:url(#linearGradient17999);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.40161" y="79.395935" id="rect17559" style="opacity:0.46875;fill:url(#linearGradient17997);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.42935" y="74.803711" id="rect17561" style="opacity:0.46875;fill:url(#linearGradient17995);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.61072" y="62.135342" id="rect17563" style="opacity:0.1875;fill:url(#linearGradient17993);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.80521" y="84.323967" id="rect17565" style="opacity:0.1875;fill:url(#linearGradient17991);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.46295" y="66.882637" id="rect17567" style="opacity:0.1875;fill:url(#linearGradient17989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.34781" y="83.370567" id="rect17569" style="opacity:0.46875;fill:url(#linearGradient17987);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.62222" y="67.94989" id="rect17571" style="opacity:0.46875;fill:url(#linearGradient17985);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.8093" y="82.059044" id="rect17573" style="opacity:0.46875;fill:url(#linearGradient17983);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.76419" y="60.068611" id="rect17575" style="opacity:0.1875;fill:url(#linearGradient17981);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.74551" y="87.762344" id="rect17577" style="opacity:0.1875;fill:url(#linearGradient17979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.63034" y="77.666779" id="rect17579" style="opacity:0.1875;fill:url(#linearGradient17977);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.99472" y="76.894325" id="rect17581" style="opacity:0.46875;fill:url(#linearGradient17975);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-272.5246" y="107.37724" id="rect17583" style="opacity:0.46875;fill:url(#linearGradient17973);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.39462" y="106.59368" id="rect17585" style="opacity:0.46875;fill:url(#linearGradient17971);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.20239" y="77.640099" id="rect17587" style="opacity:0.1875;fill:url(#linearGradient17969);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.29407" y="60.569847" id="rect17589" style="opacity:0.1875;fill:url(#linearGradient17967);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.78375" y="88.356277" id="rect17591" style="opacity:0.1875;fill:url(#linearGradient17965);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.27098" y="96.711983" id="rect17593" style="opacity:0.46875;fill:url(#linearGradient17963);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.9855" y="79.303299" id="rect17595" style="opacity:0.46875;fill:url(#linearGradient17961);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.22263" y="87.287857" id="rect17597" style="opacity:0.46875;fill:url(#linearGradient17959);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.8721" y="70.975586" id="rect17599" style="opacity:0.1875;fill:url(#linearGradient17957);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.66968" y="76.547577" id="rect17601" style="opacity:0.1875;fill:url(#linearGradient17955);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.74731" y="68.751762" id="rect17603" style="opacity:0.1875;fill:url(#linearGradient17953);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.60339" y="72.070457" id="rect17605" style="opacity:0.46875;fill:url(#linearGradient17951);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.67972" y="72.224846" id="rect17607" style="opacity:0.46875;fill:url(#linearGradient17949);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.53369" y="66.220589" id="rect17609" style="opacity:0.46875;fill:url(#linearGradient17947);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.48569" y="70.287376" id="rect17611" style="opacity:0.1875;fill:url(#linearGradient17945);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.71796" y="106.46072" id="rect17613" style="opacity:0.1875;fill:url(#linearGradient17943);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.57463" y="65.69442" id="rect17615" style="opacity:0.1875;fill:url(#linearGradient17941);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.38248" y="92.94561" id="rect17617" style="opacity:0.46875;fill:url(#linearGradient17939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.62196" y="110.52157" id="rect17619" style="opacity:0.46875;fill:url(#linearGradient17937);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.71622" y="67.948135" id="rect17621" style="opacity:0.46875;fill:url(#linearGradient17935);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-304.85336" y="87.741013" id="rect17623" style="opacity:0.1875;fill:url(#linearGradient17933);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.97302" y="72.193329" id="rect17625" style="opacity:0.1875;fill:url(#linearGradient17931);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.71017" y="65.334404" id="rect17627" style="opacity:0.1875;fill:url(#linearGradient17929);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.20427" y="98.32988" id="rect17629" style="opacity:0.46875;fill:url(#linearGradient17927);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.47168" y="108.77326" id="rect17631" style="opacity:0.46875;fill:url(#linearGradient25071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.04443" y="82.517944" id="rect17633" style="opacity:0.46875;fill:url(#linearGradient25073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.30357" y="108.89568" id="rect17635" style="opacity:0.1875;fill:url(#linearGradient25075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.16194" y="84.146629" id="rect17637" style="opacity:0.1875;fill:url(#linearGradient25077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.72382" y="64.275902" id="rect17639" style="opacity:0.1875;fill:url(#linearGradient25079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.20195" y="109.68244" id="rect17641" style="opacity:0.46875;fill:url(#linearGradient25081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.8898" y="63.208668" id="rect17643" style="opacity:0.46875;fill:url(#linearGradient25083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.91269" y="98.313393" id="rect17645" style="opacity:0.46875;fill:url(#linearGradient25085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.66534" y="85.114136" id="rect17647" style="opacity:0.1875;fill:url(#linearGradient25087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.74916" y="66.932426" id="rect17649" style="opacity:0.1875;fill:url(#linearGradient25089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.73309" y="77.135086" id="rect17651" style="opacity:0.1875;fill:url(#linearGradient25091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.95505" y="62.283104" id="rect17653" style="opacity:0.46875;fill:url(#linearGradient25093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.14812" y="87.140076" id="rect17655" style="opacity:0.46875;fill:url(#linearGradient25095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.00018" y="55.974785" id="rect17657" style="opacity:0.46875;fill:url(#linearGradient25097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.79782" y="102.01984" id="rect17659" style="opacity:0.1875;fill:url(#linearGradient25099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-248.791" y="61.252872" id="rect17661" style="opacity:0.1875;fill:url(#linearGradient25101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.85733" y="63.683193" id="rect17663" style="opacity:0.1875;fill:url(#linearGradient25103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.50882" y="101.78488" id="rect17665" style="opacity:0.46875;fill:url(#linearGradient25105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.83641" y="77.041458" id="rect17667" style="opacity:0.46875;fill:url(#linearGradient25107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.76694" y="95.283287" id="rect17669" style="opacity:0.46875;fill:url(#linearGradient25109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.42992" y="55.774399" id="rect17671" style="opacity:0.1875;fill:url(#linearGradient25111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.80057" y="101.06035" id="rect17673" style="opacity:0.1875;fill:url(#linearGradient25113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-298.56604" y="109.198" id="rect17675" style="opacity:0.1875;fill:url(#linearGradient25115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.48489" y="107.00368" id="rect17677" style="opacity:0.46875;fill:url(#linearGradient25117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.83386" y="66.630585" id="rect17679" style="opacity:0.46875;fill:url(#linearGradient25119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.42801" y="66.899437" id="rect17681" style="opacity:0.46875;fill:url(#linearGradient25121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.09375" y="56.061657" id="rect17683" style="opacity:0.1875;fill:url(#linearGradient25123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.44736" y="68.035645" id="rect17685" style="opacity:0.1875;fill:url(#linearGradient25125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.10535" y="55.856274" id="rect17687" style="opacity:0.1875;fill:url(#linearGradient25127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-278.00189" y="86.851196" id="rect17689" style="opacity:0.46875;fill:url(#linearGradient25129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.19824" y="110.05563" id="rect17691" style="opacity:0.46875;fill:url(#linearGradient25131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.13065" y="60.523964" id="rect17693" style="opacity:0.46875;fill:url(#linearGradient25133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-253.95091" y="103.54987" id="rect17695" style="opacity:0.1875;fill:url(#linearGradient25135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.0334" y="88.186096" id="rect17697" style="opacity:0.1875;fill:url(#linearGradient25137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-265.44974" y="94.422592" id="rect17699" style="opacity:0.1875;fill:url(#linearGradient25139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.04202" y="103.96825" id="rect17701" style="opacity:0.46875;fill:url(#linearGradient25141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.09955" y="84.472305" id="rect17703" style="opacity:0.46875;fill:url(#linearGradient25143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.48126" y="101.18851" id="rect17705" style="opacity:0.46875;fill:url(#linearGradient25145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.41995" y="90.168793" id="rect17707" style="opacity:0.1875;fill:url(#linearGradient25147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.17566" y="99.90905" id="rect17709" style="opacity:0.1875;fill:url(#linearGradient25149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.65631" y="86.153412" id="rect17711" style="opacity:0.1875;fill:url(#linearGradient25151);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.19516" y="79.081665" id="rect17713" style="opacity:0.46875;fill:url(#linearGradient25153);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.97839" y="67.344398" id="rect17715" style="opacity:0.46875;fill:url(#linearGradient25155);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.65546" y="93.259796" id="rect17717" style="opacity:0.46875;fill:url(#linearGradient25157);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-291.2243" y="88.690613" id="rect17719" style="opacity:0.1875;fill:url(#linearGradient25159);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.58456" y="59.647064" id="rect17721" style="opacity:0.1875;fill:url(#linearGradient25161);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.12515" y="73.111664" id="rect17723" style="opacity:0.1875;fill:url(#linearGradient25163);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.59235" y="91.303307" id="rect17725" style="opacity:0.46875;fill:url(#linearGradient25165);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.509" y="67.325012" id="rect17727" style="opacity:0.46875;fill:url(#linearGradient25167);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.42133" y="93.896034" id="rect17729" style="opacity:0.46875;fill:url(#linearGradient25169);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.88492" y="90.879166" id="rect17731" style="opacity:0.1875;fill:url(#linearGradient25171);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.34952" y="103.47399" id="rect17733" style="opacity:0.1875;fill:url(#linearGradient25173);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.96045" y="106.24575" id="rect17735" style="opacity:0.1875;fill:url(#linearGradient25175);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.68954" y="55.381527" id="rect17737" style="opacity:0.46875;fill:url(#linearGradient25177);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.11661" y="89.104057" id="rect17739" style="opacity:0.46875;fill:url(#linearGradient25179);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.8905" y="102.75126" id="rect17741" style="opacity:0.46875;fill:url(#linearGradient25181);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.67885" y="81.184441" id="rect17743" style="opacity:0.1875;fill:url(#linearGradient25183);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.11703" y="89.035004" id="rect17745" style="opacity:0.1875;fill:url(#linearGradient25185);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.9751" y="100.35271" id="rect17747" style="opacity:0.1875;fill:url(#linearGradient25187);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.15137" y="80.75869" id="rect17749" style="opacity:0.46875;fill:url(#linearGradient25189);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.43188" y="77.223198" id="rect17751" style="opacity:0.46875;fill:url(#linearGradient25191);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.05075" y="72.696106" id="rect17753" style="opacity:0.46875;fill:url(#linearGradient25193);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.19749" y="106.62489" id="rect17755" style="opacity:0.1875;fill:url(#linearGradient25195);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.13745" y="69.633575" id="rect17757" style="opacity:0.1875;fill:url(#linearGradient25197);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.53471" y="62.632496" id="rect17759" style="opacity:0.1875;fill:url(#linearGradient25199);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.95056" y="85.574959" id="rect17761" style="opacity:0.46875;fill:url(#linearGradient25201);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.36328" y="101.6518" id="rect17763" style="opacity:0.46875;fill:url(#linearGradient25203);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.15607" y="92.363571" id="rect17765" style="opacity:0.46875;fill:url(#linearGradient25205);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.91437" y="102.87209" id="rect17767" style="opacity:0.1875;fill:url(#linearGradient25207);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.12769" y="68.443901" id="rect17769" style="opacity:0.1875;fill:url(#linearGradient25209);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.91699" y="81.518745" id="rect17771" style="opacity:0.1875;fill:url(#linearGradient25211);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.47676" y="99.235146" id="rect17773" style="opacity:0.46875;fill:url(#linearGradient25213);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.99631" y="104.32848" id="rect17775" style="opacity:0.46875;fill:url(#linearGradient25215);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.45819" y="96.042809" id="rect17777" style="opacity:0.46875;fill:url(#linearGradient25217);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.11304" y="91.464439" id="rect18151" style="opacity:0.1875;fill:url(#linearGradient25219);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.72809" y="57.985466" id="rect18153" style="opacity:0.1875;fill:url(#linearGradient25221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.04907" y="92.447624" id="rect18155" style="opacity:0.1875;fill:url(#linearGradient25223);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.48605" y="87.082649" id="rect18157" style="opacity:0.46875;fill:url(#linearGradient25225);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.46774" y="71.132614" id="rect18159" style="opacity:0.46875;fill:url(#linearGradient25227);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.54868" y="69.479034" id="rect18161" style="opacity:0.46875;fill:url(#linearGradient25229);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.54684" y="71.409157" id="rect18163" style="opacity:0.1875;fill:url(#linearGradient25231);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.44562" y="88.801552" id="rect18165" style="opacity:0.1875;fill:url(#linearGradient25233);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.61575" y="79.20295" id="rect18167" style="opacity:0.1875;fill:url(#linearGradient25235);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.08376" y="67.184708" id="rect18169" style="opacity:0.46875;fill:url(#linearGradient25237);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.26695" y="68.254173" id="rect18171" style="opacity:0.46875;fill:url(#linearGradient25239);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.67917" y="88.566643" id="rect18173" style="opacity:0.46875;fill:url(#linearGradient25241);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.37273" y="61.108807" id="rect18175" style="opacity:0.1875;fill:url(#linearGradient25243);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-272.89822" y="107.33531" id="rect18177" style="opacity:0.1875;fill:url(#linearGradient25245);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.91226" y="76.051247" id="rect18179" style="opacity:0.1875;fill:url(#linearGradient25247);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-262.29782" y="97.771523" id="rect18181" style="opacity:0.46875;fill:url(#linearGradient25249);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.38615" y="90.817757" id="rect18183" style="opacity:0.46875;fill:url(#linearGradient25251);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.09634" y="77.677231" id="rect18185" style="opacity:0.46875;fill:url(#linearGradient25253);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.38574" y="62.671509" id="rect18187" style="opacity:0.1875;fill:url(#linearGradient25255);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.63821" y="75.019676" id="rect18189" style="opacity:0.1875;fill:url(#linearGradient25257);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.96573" y="58.94054" id="rect18191" style="opacity:0.1875;fill:url(#linearGradient25259);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.89044" y="63.18137" id="rect18193" style="opacity:0.46875;fill:url(#linearGradient25261);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.22519" y="85.285896" id="rect18195" style="opacity:0.46875;fill:url(#linearGradient25263);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.96872" y="86.968376" id="rect18197" style="opacity:0.46875;fill:url(#linearGradient25265);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.8423" y="111.32892" id="rect18199" style="opacity:0.1875;fill:url(#linearGradient25267);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.47272" y="110.46347" id="rect18201" style="opacity:0.1875;fill:url(#linearGradient25269);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.92764" y="74.383469" id="rect18203" style="opacity:0.1875;fill:url(#linearGradient25271);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.07919" y="84.876595" id="rect18205" style="opacity:0.46875;fill:url(#linearGradient25273);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.95041" y="86.066269" id="rect18207" style="opacity:0.46875;fill:url(#linearGradient25275);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.95801" y="92.406303" id="rect18209" style="opacity:0.46875;fill:url(#linearGradient25277);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.59933" y="70.233521" id="rect18211" style="opacity:0.1875;fill:url(#linearGradient25279);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.10513" y="80.002182" id="rect18213" style="opacity:0.1875;fill:url(#linearGradient25281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.47241" y="95.684586" id="rect18215" style="opacity:0.1875;fill:url(#linearGradient25283);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.99527" y="99.055901" id="rect18217" style="opacity:0.46875;fill:url(#linearGradient25285);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.02789" y="85.807312" id="rect18219" style="opacity:0.46875;fill:url(#linearGradient25287);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-298.38324" y="90.704887" id="rect18221" style="opacity:0.46875;fill:url(#linearGradient25289);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.76099" y="62.290359" id="rect18223" style="opacity:0.1875;fill:url(#linearGradient25291);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.90051" y="75.048828" id="rect18225" style="opacity:0.1875;fill:url(#linearGradient25293);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.98842" y="90.335617" id="rect18227" style="opacity:0.1875;fill:url(#linearGradient25295);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.44897" y="106.12038" id="rect18229" style="opacity:0.46875;fill:url(#linearGradient25297);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.91562" y="92.317909" id="rect18231" style="opacity:0.46875;fill:url(#linearGradient25299);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.61569" y="100.5391" id="rect18233" style="opacity:0.46875;fill:url(#linearGradient25301);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.33392" y="63.624489" id="rect18235" style="opacity:0.1875;fill:url(#linearGradient25303);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.36273" y="72.056847" id="rect18237" style="opacity:0.1875;fill:url(#linearGradient25305);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.8735" y="110.21268" id="rect18239" style="opacity:0.1875;fill:url(#linearGradient25307);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.63394" y="74.366173" id="rect18241" style="opacity:0.46875;fill:url(#linearGradient25309);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.0997" y="79.780212" id="rect18243" style="opacity:0.46875;fill:url(#linearGradient25311);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.09283" y="101.99254" id="rect18245" style="opacity:0.46875;fill:url(#linearGradient25313);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.76373" y="109.07452" id="rect18247" style="opacity:0.1875;fill:url(#linearGradient25315);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.97629" y="98.64402" id="rect18249" style="opacity:0.1875;fill:url(#linearGradient25317);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.63684" y="89.344994" id="rect18251" style="opacity:0.1875;fill:url(#linearGradient25319);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.27385" y="81.641121" id="rect18253" style="opacity:0.46875;fill:url(#linearGradient25321);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.25494" y="109.51963" id="rect18255" style="opacity:0.46875;fill:url(#linearGradient25323);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.37708" y="108.9928" id="rect18257" style="opacity:0.46875;fill:url(#linearGradient25325);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.19186" y="110.50214" id="rect18259" style="opacity:0.1875;fill:url(#linearGradient25327);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.0481" y="93.95919" id="rect18261" style="opacity:0.1875;fill:url(#linearGradient25329);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.78215" y="66.527237" id="rect18263" style="opacity:0.1875;fill:url(#linearGradient25331);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.03275" y="86.100006" id="rect18265" style="opacity:0.46875;fill:url(#linearGradient25333);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.62799" y="104.80125" id="rect18267" style="opacity:0.46875;fill:url(#linearGradient25335);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.83594" y="70.125221" id="rect18269" style="opacity:0.46875;fill:url(#linearGradient25337);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.16574" y="84.331985" id="rect18271" style="opacity:0.1875;fill:url(#linearGradient25339);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.98331" y="96.91481" id="rect18273" style="opacity:0.1875;fill:url(#linearGradient25341);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-231.74715" y="78.689095" id="rect18275" style="opacity:0.1875;fill:url(#linearGradient25343);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.39941" y="59.077904" id="rect18277" style="opacity:0.46875;fill:url(#linearGradient25345);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.0076" y="95.745003" id="rect18279" style="opacity:0.46875;fill:url(#linearGradient25347);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.77591" y="102.81136" id="rect18281" style="opacity:0.46875;fill:url(#linearGradient25349);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.87979" y="69.811943" id="rect18283" style="opacity:0.1875;fill:url(#linearGradient25351);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.16574" y="87.382187" id="rect18285" style="opacity:0.1875;fill:url(#linearGradient25353);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.87027" y="92.79483" id="rect18287" style="opacity:0.1875;fill:url(#linearGradient25355);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.38815" y="90.872025" id="rect18289" style="opacity:0.46875;fill:url(#linearGradient25357);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.0155" y="79.296844" id="rect18291" style="opacity:0.46875;fill:url(#linearGradient25359);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.74591" y="104.70981" id="rect18293" style="opacity:0.46875;fill:url(#linearGradient25361);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.28142" y="62.454266" id="rect18295" style="opacity:0.1875;fill:url(#linearGradient25363);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.72321" y="60.415363" id="rect18297" style="opacity:0.1875;fill:url(#linearGradient25365);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.50877" y="107.67831" id="rect18299" style="opacity:0.1875;fill:url(#linearGradient25367);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.79721" y="90.158287" id="rect18301" style="opacity:0.46875;fill:url(#linearGradient25369);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.21603" y="76.256042" id="rect18303" style="opacity:0.46875;fill:url(#linearGradient25371);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.3176" y="104.62031" id="rect18305" style="opacity:0.46875;fill:url(#linearGradient25373);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.24321" y="75.208" id="rect18307" style="opacity:0.1875;fill:url(#linearGradient25375);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-254.33498" y="99.272896" id="rect18309" style="opacity:0.1875;fill:url(#linearGradient25377);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.62555" y="84.156494" id="rect18311" style="opacity:0.1875;fill:url(#linearGradient25379);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.17912" y="97.841927" id="rect18313" style="opacity:0.46875;fill:url(#linearGradient25381);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.68881" y="105.77716" id="rect18315" style="opacity:0.46875;fill:url(#linearGradient25383);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.20544" y="62.652821" id="rect18317" style="opacity:0.46875;fill:url(#linearGradient25385);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.56491" y="96.323288" id="rect18319" style="opacity:0.1875;fill:url(#linearGradient25387);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.96753" y="55.495941" id="rect18321" style="opacity:0.1875;fill:url(#linearGradient25389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.63147" y="68.193329" id="rect18323" style="opacity:0.1875;fill:url(#linearGradient25391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.42424" y="66.986328" id="rect18325" style="opacity:0.46875;fill:url(#linearGradient25393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.0945" y="93.264801" id="rect18327" style="opacity:0.46875;fill:url(#linearGradient25395);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.63403" y="98.204636" id="rect18329" style="opacity:0.46875;fill:url(#linearGradient25397);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.23471" y="74.236923" id="rect18331" style="opacity:0.1875;fill:url(#linearGradient25399);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.69228" y="100.62784" id="rect18333" style="opacity:0.1875;fill:url(#linearGradient25401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.0683" y="80.08036" id="rect18335" style="opacity:0.1875;fill:url(#linearGradient25403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-291.62607" y="64.716675" id="rect18337" style="opacity:0.46875;fill:url(#linearGradient25405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.75874" y="107.29673" id="rect18339" style="opacity:0.46875;fill:url(#linearGradient25407);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.67427" y="99.356606" id="rect18341" style="opacity:0.46875;fill:url(#linearGradient25409);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.71683" y="65.645309" id="rect18343" style="opacity:0.1875;fill:url(#linearGradient25411);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-272.67639" y="74.896492" id="rect18345" style="opacity:0.1875;fill:url(#linearGradient25413);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.01279" y="58.992363" id="rect18347" style="opacity:0.1875;fill:url(#linearGradient25415);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.80728" y="94.758575" id="rect18349" style="opacity:0.46875;fill:url(#linearGradient25417);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.86696" y="100.33606" id="rect18351" style="opacity:0.46875;fill:url(#linearGradient25419);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.45459" y="104.54546" id="rect18353" style="opacity:0.46875;fill:url(#linearGradient25421);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.36459" y="57.800591" id="rect18355" style="opacity:0.1875;fill:url(#linearGradient25423);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.97002" y="98.724579" id="rect18357" style="opacity:0.1875;fill:url(#linearGradient25425);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.95309" y="84.094955" id="rect18359" style="opacity:0.1875;fill:url(#linearGradient25427);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.06047" y="110.67622" id="rect18361" style="opacity:0.46875;fill:url(#linearGradient25429);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.89478" y="94.46965" id="rect18363" style="opacity:0.46875;fill:url(#linearGradient25431);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.35883" y="83.683098" id="rect18365" style="opacity:0.46875;fill:url(#linearGradient25433);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.77145" y="75.577515" id="rect18367" style="opacity:0.1875;fill:url(#linearGradient25435);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.45178" y="95.948578" id="rect18369" style="opacity:0.1875;fill:url(#linearGradient25437);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.85594" y="63.876396" id="rect18371" style="opacity:0.1875;fill:url(#linearGradient25439);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.77063" y="72.637779" id="rect18373" style="opacity:0.46875;fill:url(#linearGradient25441);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.58069" y="106.60091" id="rect18375" style="opacity:0.46875;fill:url(#linearGradient25443);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.90054" y="60.200027" id="rect18377" style="opacity:0.46875;fill:url(#linearGradient25445);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.53291" y="89.377716" id="rect18379" style="opacity:0.1875;fill:url(#linearGradient25447);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.34618" y="83.512108" id="rect18381" style="opacity:0.1875;fill:url(#linearGradient25449);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.69232" y="66.480316" id="rect18383" style="opacity:0.1875;fill:url(#linearGradient25451);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.35358" y="69.703491" id="rect18385" style="opacity:0.46875;fill:url(#linearGradient25453);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.26117" y="56.466759" id="rect18387" style="opacity:0.46875;fill:url(#linearGradient25455);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.90395" y="81.527306" id="rect18389" style="opacity:0.46875;fill:url(#linearGradient25457);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.25595" y="79.487236" id="rect18391" style="opacity:0.1875;fill:url(#linearGradient25459);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.13121" y="88.470932" id="rect18393" style="opacity:0.1875;fill:url(#linearGradient25461);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.26227" y="86.610855" id="rect18395" style="opacity:0.1875;fill:url(#linearGradient25463);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.04407" y="91.484947" id="rect18397" style="opacity:0.46875;fill:url(#linearGradient25465);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.31018" y="60.714272" id="rect18399" style="opacity:0.46875;fill:url(#linearGradient25467);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.26987" y="76.319176" id="rect18401" style="opacity:0.46875;fill:url(#linearGradient25469);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.81497" y="110.69751" id="rect18403" style="opacity:0.1875;fill:url(#linearGradient25471);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.56194" y="83.316528" id="rect18405" style="opacity:0.1875;fill:url(#linearGradient25473);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.77362" y="75.160622" id="rect18407" style="opacity:0.1875;fill:url(#linearGradient25475);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.95584" y="89.178764" id="rect18409" style="opacity:0.46875;fill:url(#linearGradient25477);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.21521" y="76.066673" id="rect18411" style="opacity:0.46875;fill:url(#linearGradient25479);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.20267" y="110.82329" id="rect18413" style="opacity:0.46875;fill:url(#linearGradient25481);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.90068" y="93.641579" id="rect18415" style="opacity:0.1875;fill:url(#linearGradient25483);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.98462" y="63.597" id="rect18417" style="opacity:0.1875;fill:url(#linearGradient25485);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.41406" y="77.615059" id="rect18419" style="opacity:0.1875;fill:url(#linearGradient25487);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.41394" y="84.300209" id="rect18421" style="opacity:0.46875;fill:url(#linearGradient25489);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-248.11342" y="100.78419" id="rect18423" style="opacity:0.46875;fill:url(#linearGradient25491);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.6394" y="102.52259" id="rect18425" style="opacity:0.46875;fill:url(#linearGradient25493);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.46675" y="64.784454" id="rect18427" style="opacity:0.1875;fill:url(#linearGradient25495);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.46829" y="98.256683" id="rect18429" style="opacity:0.1875;fill:url(#linearGradient25497);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-249.84923" y="102.14691" id="rect18431" style="opacity:0.1875;fill:url(#linearGradient25499);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.61346" y="62.031593" id="rect18433" style="opacity:0.46875;fill:url(#linearGradient25501);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.99881" y="81.942253" id="rect18435" style="opacity:0.46875;fill:url(#linearGradient25503);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.75516" y="80.842926" id="rect18437" style="opacity:0.46875;fill:url(#linearGradient25505);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.5466" y="83.51545" id="rect18439" style="opacity:0.1875;fill:url(#linearGradient25507);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.53737" y="67.027702" id="rect18441" style="opacity:0.1875;fill:url(#linearGradient25509);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.38284" y="103.22467" id="rect18443" style="opacity:0.1875;fill:url(#linearGradient25511);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.94073" y="62.307873" id="rect18445" style="opacity:0.46875;fill:url(#linearGradient25513);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.1153" y="78.606285" id="rect18447" style="opacity:0.46875;fill:url(#linearGradient25515);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.53516" y="98.190308" id="rect18449" style="opacity:0.46875;fill:url(#linearGradient25517);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.46397" y="68.309998" id="rect18451" style="opacity:0.1875;fill:url(#linearGradient25519);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.96036" y="68.613037" id="rect18453" style="opacity:0.1875;fill:url(#linearGradient25521);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.97824" y="70.057411" id="rect18455" style="opacity:0.1875;fill:url(#linearGradient25523);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.00824" y="107.40057" id="rect18457" style="opacity:0.46875;fill:url(#linearGradient25525);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.42072" y="109.3634" id="rect18459" style="opacity:0.46875;fill:url(#linearGradient25527);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.83664" y="65.596466" id="rect18461" style="opacity:0.46875;fill:url(#linearGradient25529);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.58488" y="86.885582" id="rect18463" style="opacity:0.1875;fill:url(#linearGradient25531);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.64371" y="81.863777" id="rect18465" style="opacity:0.1875;fill:url(#linearGradient25533);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.68872" y="98.258194" id="rect18467" style="opacity:0.1875;fill:url(#linearGradient25535);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.73193" y="57.614296" id="rect18469" style="opacity:0.46875;fill:url(#linearGradient25537);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.63004" y="84.332832" id="rect18471" style="opacity:0.46875;fill:url(#linearGradient25539);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.7637" y="69.674995" id="rect18473" style="opacity:0.46875;fill:url(#linearGradient25541);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.64343" y="82.495186" id="rect18475" style="opacity:0.1875;fill:url(#linearGradient25543);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.85864" y="59.185127" id="rect18477" style="opacity:0.1875;fill:url(#linearGradient25545);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.09042" y="74.726555" id="rect18479" style="opacity:0.1875;fill:url(#linearGradient25547);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.59351" y="73.606941" id="rect18481" style="opacity:0.46875;fill:url(#linearGradient25549);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.58517" y="55.815166" id="rect18483" style="opacity:0.46875;fill:url(#linearGradient25551);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.51108" y="80.653122" id="rect18485" style="opacity:0.46875;fill:url(#linearGradient25553);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-263.96866" y="89.247513" id="rect18487" style="opacity:0.1875;fill:url(#linearGradient25555);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-266.88388" y="80.690773" id="rect18489" style="opacity:0.1875;fill:url(#linearGradient25557);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.79605" y="110.67844" id="rect18491" style="opacity:0.1875;fill:url(#linearGradient25559);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.51732" y="75.380501" id="rect18493" style="opacity:0.46875;fill:url(#linearGradient25561);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.51567" y="103.38647" id="rect18495" style="opacity:0.46875;fill:url(#linearGradient25563);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.96869" y="56.758343" id="rect18497" style="opacity:0.46875;fill:url(#linearGradient25565);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.85594" y="102.63554" id="rect18499" style="opacity:0.1875;fill:url(#linearGradient25567);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.52267" y="109.84169" id="rect18501" style="opacity:0.1875;fill:url(#linearGradient25569);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.80392" y="95.125671" id="rect18503" style="opacity:0.1875;fill:url(#linearGradient25571);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.16461" y="77.213577" id="rect18505" style="opacity:0.46875;fill:url(#linearGradient25573);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.90277" y="95.847725" id="rect18507" style="opacity:0.46875;fill:url(#linearGradient25575);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.6911" y="76.100128" id="rect18509" style="opacity:0.46875;fill:url(#linearGradient25577);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.52742" y="102.68053" id="rect18511" style="opacity:0.1875;fill:url(#linearGradient25579);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.22385" y="67.563797" id="rect18513" style="opacity:0.1875;fill:url(#linearGradient25581);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.05579" y="85.764542" id="rect18515" style="opacity:0.1875;fill:url(#linearGradient25583);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.3392" y="60.742577" id="rect18517" style="opacity:0.46875;fill:url(#linearGradient25585);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.12518" y="68.472763" id="rect18519" style="opacity:0.46875;fill:url(#linearGradient25587);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.16914" y="65.996407" id="rect18521" style="opacity:0.46875;fill:url(#linearGradient25589);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.75221" y="86.193619" id="rect18523" style="opacity:0.1875;fill:url(#linearGradient25591);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.14877" y="101.30114" id="rect18525" style="opacity:0.1875;fill:url(#linearGradient25593);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.47665" y="88.885841" id="rect18527" style="opacity:0.1875;fill:url(#linearGradient25595);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-241.04015" y="101.66671" id="rect18529" style="opacity:0.46875;fill:url(#linearGradient25597);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.33102" y="58.575886" id="rect18531" style="opacity:0.46875;fill:url(#linearGradient25599);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.40578" y="57.532642" id="rect18533" style="opacity:0.46875;fill:url(#linearGradient25601);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.9127" y="57.526257" id="rect18919" style="opacity:0.1875;fill:url(#linearGradient25603);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.32135" y="97.074615" id="rect18921" style="opacity:0.1875;fill:url(#linearGradient25605);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.4538" y="66.162369" id="rect18923" style="opacity:0.1875;fill:url(#linearGradient25607);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.92183" y="91.841202" id="rect18925" style="opacity:0.46875;fill:url(#linearGradient25609);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.95801" y="62.992939" id="rect18927" style="opacity:0.46875;fill:url(#linearGradient25611);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.78813" y="60.985554" id="rect18929" style="opacity:0.46875;fill:url(#linearGradient25613);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.08983" y="85.340904" id="rect18931" style="opacity:0.1875;fill:url(#linearGradient25615);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.02982" y="87.608078" id="rect18933" style="opacity:0.1875;fill:url(#linearGradient25617);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-254.55878" y="66.718971" id="rect18935" style="opacity:0.1875;fill:url(#linearGradient25619);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.55739" y="84.136307" id="rect18937" style="opacity:0.46875;fill:url(#linearGradient25621);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.86101" y="83.323425" id="rect18939" style="opacity:0.46875;fill:url(#linearGradient25623);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-278.49765" y="99.488594" id="rect18941" style="opacity:0.46875;fill:url(#linearGradient25625);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.55836" y="100.24726" id="rect18943" style="opacity:0.1875;fill:url(#linearGradient25627);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.19774" y="92.854179" id="rect18945" style="opacity:0.1875;fill:url(#linearGradient25629);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.54205" y="61.351452" id="rect18947" style="opacity:0.1875;fill:url(#linearGradient25631);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.98083" y="88.497482" id="rect18949" style="opacity:0.46875;fill:url(#linearGradient25633);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.63409" y="99.553261" id="rect18951" style="opacity:0.46875;fill:url(#linearGradient25635);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.47437" y="58.168949" id="rect18953" style="opacity:0.46875;fill:url(#linearGradient25637);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.33575" y="86.500946" id="rect18955" style="opacity:0.1875;fill:url(#linearGradient25639);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.90872" y="103.5072" id="rect18957" style="opacity:0.1875;fill:url(#linearGradient25641);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.78004" y="72.946983" id="rect18959" style="opacity:0.1875;fill:url(#linearGradient25643);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.84477" y="85.671165" id="rect18961" style="opacity:0.46875;fill:url(#linearGradient25645);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.55591" y="89.883553" id="rect18963" style="opacity:0.46875;fill:url(#linearGradient25647);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.39258" y="82.950401" id="rect18965" style="opacity:0.46875;fill:url(#linearGradient25649);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.30173" y="75.114151" id="rect18967" style="opacity:0.1875;fill:url(#linearGradient25651);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.21027" y="71.787895" id="rect18969" style="opacity:0.1875;fill:url(#linearGradient25653);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.39825" y="100.81129" id="rect18971" style="opacity:0.1875;fill:url(#linearGradient25655);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.18207" y="66.801216" id="rect18973" style="opacity:0.46875;fill:url(#linearGradient25657);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.54575" y="94.54393" id="rect18975" style="opacity:0.46875;fill:url(#linearGradient25659);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.51776" y="85.290855" id="rect18977" style="opacity:0.46875;fill:url(#linearGradient25661);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.5864" y="71.016502" id="rect18979" style="opacity:0.1875;fill:url(#linearGradient25663);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.21921" y="65.639832" id="rect18981" style="opacity:0.1875;fill:url(#linearGradient25665);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.79636" y="63.71505" id="rect18983" style="opacity:0.1875;fill:url(#linearGradient25667);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.34283" y="107.64001" id="rect18985" style="opacity:0.46875;fill:url(#linearGradient25669);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.38077" y="99.69957" id="rect18987" style="opacity:0.46875;fill:url(#linearGradient25671);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.94934" y="79.567955" id="rect18989" style="opacity:0.46875;fill:url(#linearGradient25673);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.47961" y="106.71353" id="rect18991" style="opacity:0.1875;fill:url(#linearGradient25675);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.58325" y="84.44001" id="rect18993" style="opacity:0.1875;fill:url(#linearGradient25677);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.00653" y="101.09319" id="rect18995" style="opacity:0.1875;fill:url(#linearGradient25679);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.39656" y="106.40167" id="rect18997" style="opacity:0.46875;fill:url(#linearGradient25681);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.76819" y="70.810738" id="rect18999" style="opacity:0.46875;fill:url(#linearGradient25683);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.0509" y="102.26338" id="rect19001" style="opacity:0.46875;fill:url(#linearGradient25685);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.00787" y="93.647499" id="rect19003" style="opacity:0.1875;fill:url(#linearGradient25687);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.53571" y="108.52261" id="rect19005" style="opacity:0.1875;fill:url(#linearGradient25689);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.90356" y="63.263" id="rect19007" style="opacity:0.1875;fill:url(#linearGradient25691);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-238.44772" y="90.823517" id="rect19009" style="opacity:0.46875;fill:url(#linearGradient25693);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.47687" y="89.193001" id="rect19011" style="opacity:0.46875;fill:url(#linearGradient25695);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.64713" y="62.666931" id="rect19013" style="opacity:0.46875;fill:url(#linearGradient25697);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.9185" y="73.799789" id="rect19015" style="opacity:0.1875;fill:url(#linearGradient25699);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.84146" y="86.224449" id="rect19017" style="opacity:0.1875;fill:url(#linearGradient25701);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.98773" y="110.16738" id="rect19019" style="opacity:0.1875;fill:url(#linearGradient25703);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.17789" y="94.973297" id="rect19021" style="opacity:0.46875;fill:url(#linearGradient25705);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.49565" y="74.358421" id="rect19023" style="opacity:0.46875;fill:url(#linearGradient25707);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.55728" y="95.373718" id="rect19025" style="opacity:0.46875;fill:url(#linearGradient25709);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.83374" y="90.887688" id="rect19027" style="opacity:0.1875;fill:url(#linearGradient25711);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.96057" y="94.594093" id="rect19029" style="opacity:0.1875;fill:url(#linearGradient25713);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.0192" y="91.37999" id="rect19031" style="opacity:0.1875;fill:url(#linearGradient25715);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.39069" y="68.775909" id="rect19033" style="opacity:0.46875;fill:url(#linearGradient25717);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.06958" y="103.01775" id="rect19035" style="opacity:0.46875;fill:url(#linearGradient25719);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.51514" y="76.4011" id="rect19037" style="opacity:0.46875;fill:url(#linearGradient25721);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.21619" y="67.520676" id="rect19039" style="opacity:0.1875;fill:url(#linearGradient25723);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-279.83255" y="84.320534" id="rect19041" style="opacity:0.1875;fill:url(#linearGradient25725);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.59525" y="71.078278" id="rect19043" style="opacity:0.1875;fill:url(#linearGradient25727);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.35696" y="86.638985" id="rect19045" style="opacity:0.46875;fill:url(#linearGradient25729);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.40378" y="82.163078" id="rect19047" style="opacity:0.46875;fill:url(#linearGradient25731);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.71713" y="82.552078" id="rect19049" style="opacity:0.46875;fill:url(#linearGradient25733);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.31723" y="80.803482" id="rect19051" style="opacity:0.1875;fill:url(#linearGradient25735);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.43948" y="78.776352" id="rect19053" style="opacity:0.1875;fill:url(#linearGradient25737);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.18832" y="105.04062" id="rect19055" style="opacity:0.1875;fill:url(#linearGradient25739);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.76416" y="69.334221" id="rect19057" style="opacity:0.46875;fill:url(#linearGradient25741);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.53604" y="106.49574" id="rect19059" style="opacity:0.46875;fill:url(#linearGradient25743);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.6328" y="95.204269" id="rect19061" style="opacity:0.46875;fill:url(#linearGradient25745);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.92119" y="57.997192" id="rect19063" style="opacity:0.1875;fill:url(#linearGradient25747);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.89978" y="108.55125" id="rect19065" style="opacity:0.1875;fill:url(#linearGradient25749);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-269.3967" y="110.37301" id="rect19067" style="opacity:0.1875;fill:url(#linearGradient25751);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.70844" y="69.12841" id="rect19069" style="opacity:0.46875;fill:url(#linearGradient25753);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.84006" y="95.986496" id="rect19071" style="opacity:0.46875;fill:url(#linearGradient25755);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.98888" y="103.69247" id="rect19073" style="opacity:0.46875;fill:url(#linearGradient25757);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.38586" y="67.375679" id="rect19075" style="opacity:0.1875;fill:url(#linearGradient25759);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.78357" y="70.102432" id="rect19077" style="opacity:0.1875;fill:url(#linearGradient25761);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.98303" y="107.18321" id="rect19079" style="opacity:0.1875;fill:url(#linearGradient25763);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.54657" y="74.298431" id="rect19081" style="opacity:0.46875;fill:url(#linearGradient25765);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.54166" y="91.346199" id="rect19083" style="opacity:0.46875;fill:url(#linearGradient25767);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.13815" y="80.275932" id="rect19085" style="opacity:0.46875;fill:url(#linearGradient25769);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.84622" y="78.927689" id="rect19087" style="opacity:0.1875;fill:url(#linearGradient25771);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.49251" y="104.74801" id="rect19089" style="opacity:0.1875;fill:url(#linearGradient25773);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.81819" y="60.508629" id="rect19091" style="opacity:0.1875;fill:url(#linearGradient25775);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.77986" y="84.047173" id="rect19093" style="opacity:0.46875;fill:url(#linearGradient25777);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.71603" y="93.857674" id="rect19095" style="opacity:0.46875;fill:url(#linearGradient25779);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.01331" y="68.597374" id="rect19097" style="opacity:0.46875;fill:url(#linearGradient25781);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.43222" y="67.29528" id="rect19099" style="opacity:0.1875;fill:url(#linearGradient25783);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.39505" y="75.4105" id="rect19101" style="opacity:0.1875;fill:url(#linearGradient25785);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.18639" y="93.951813" id="rect19103" style="opacity:0.1875;fill:url(#linearGradient25787);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.88348" y="66.440628" id="rect19105" style="opacity:0.46875;fill:url(#linearGradient25789);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.90556" y="83.751076" id="rect19107" style="opacity:0.46875;fill:url(#linearGradient25791);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.24927" y="64.618744" id="rect19109" style="opacity:0.46875;fill:url(#linearGradient25793);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.68109" y="104.28016" id="rect19111" style="opacity:0.1875;fill:url(#linearGradient25795);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.19943" y="89.530205" id="rect19113" style="opacity:0.1875;fill:url(#linearGradient25797);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.99399" y="105.37378" id="rect19115" style="opacity:0.1875;fill:url(#linearGradient25799);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.28281" y="60.801304" id="rect19117" style="opacity:0.46875;fill:url(#linearGradient25801);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.56076" y="82.010605" id="rect19119" style="opacity:0.46875;fill:url(#linearGradient25803);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.97751" y="82.576714" id="rect19121" style="opacity:0.46875;fill:url(#linearGradient25805);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.05029" y="99.69252" id="rect19123" style="opacity:0.1875;fill:url(#linearGradient25807);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.12518" y="56.092049" id="rect19125" style="opacity:0.1875;fill:url(#linearGradient25809);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.81729" y="83.794304" id="rect19127" style="opacity:0.1875;fill:url(#linearGradient25811);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.71368" y="105.04692" id="rect19129" style="opacity:0.46875;fill:url(#linearGradient25813);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.64838" y="65.826553" id="rect19131" style="opacity:0.46875;fill:url(#linearGradient25815);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.96567" y="64.875366" id="rect19133" style="opacity:0.46875;fill:url(#linearGradient25817);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.39728" y="105.96532" id="rect19135" style="opacity:0.1875;fill:url(#linearGradient25819);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.63116" y="84.33313" id="rect19137" style="opacity:0.1875;fill:url(#linearGradient25821);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.94666" y="103.36714" id="rect19139" style="opacity:0.1875;fill:url(#linearGradient25823);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.03406" y="72.169991" id="rect19141" style="opacity:0.46875;fill:url(#linearGradient25825);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.07004" y="91.508087" id="rect19143" style="opacity:0.46875;fill:url(#linearGradient25827);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.74023" y="65.295685" id="rect19145" style="opacity:0.46875;fill:url(#linearGradient25829);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.46622" y="94.028046" id="rect19147" style="opacity:0.1875;fill:url(#linearGradient25831);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.63184" y="100.02885" id="rect19149" style="opacity:0.1875;fill:url(#linearGradient25833);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.31564" y="68.181747" id="rect19151" style="opacity:0.1875;fill:url(#linearGradient25835);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.37823" y="80.158287" id="rect19153" style="opacity:0.46875;fill:url(#linearGradient25837);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.25195" y="73.81916" id="rect19155" style="opacity:0.46875;fill:url(#linearGradient25839);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.21211" y="72.697601" id="rect19157" style="opacity:0.46875;fill:url(#linearGradient25841);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.42764" y="91.750961" id="rect19159" style="opacity:0.1875;fill:url(#linearGradient25843);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.2442" y="84.52874" id="rect19161" style="opacity:0.1875;fill:url(#linearGradient25845);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.86484" y="66.390846" id="rect19163" style="opacity:0.1875;fill:url(#linearGradient25847);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.04269" y="107.95484" id="rect19165" style="opacity:0.46875;fill:url(#linearGradient25849);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.05286" y="78.926689" id="rect19167" style="opacity:0.46875;fill:url(#linearGradient25851);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.63925" y="107.33574" id="rect19169" style="opacity:0.46875;fill:url(#linearGradient25853);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.09424" y="64.496719" id="rect19171" style="opacity:0.1875;fill:url(#linearGradient25855);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.27118" y="70.296356" id="rect19173" style="opacity:0.1875;fill:url(#linearGradient25857);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.17659" y="90.893532" id="rect19175" style="opacity:0.1875;fill:url(#linearGradient25859);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.24466" y="62.413158" id="rect19177" style="opacity:0.46875;fill:url(#linearGradient25861);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.59363" y="91.436836" id="rect19179" style="opacity:0.46875;fill:url(#linearGradient25863);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.57291" y="92.877731" id="rect19181" style="opacity:0.46875;fill:url(#linearGradient25865);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.94574" y="85.862312" id="rect19183" style="opacity:0.1875;fill:url(#linearGradient25867);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.98853" y="63.901665" id="rect19185" style="opacity:0.1875;fill:url(#linearGradient25869);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.00256" y="107.28114" id="rect19187" style="opacity:0.1875;fill:url(#linearGradient25871);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.86865" y="89.48291" id="rect19189" style="opacity:0.46875;fill:url(#linearGradient25873);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.61465" y="57.415867" id="rect19191" style="opacity:0.46875;fill:url(#linearGradient25875);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-254.48337" y="84.216339" id="rect19193" style="opacity:0.46875;fill:url(#linearGradient25877);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.94864" y="71.953529" id="rect19195" style="opacity:0.1875;fill:url(#linearGradient25879);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.51169" y="68.122597" id="rect19197" style="opacity:0.1875;fill:url(#linearGradient25881);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.92078" y="111.10387" id="rect19199" style="opacity:0.1875;fill:url(#linearGradient25883);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.40286" y="63.712029" id="rect19201" style="opacity:0.46875;fill:url(#linearGradient25885);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.28314" y="106.27374" id="rect19203" style="opacity:0.46875;fill:url(#linearGradient25887);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.1701" y="55.287373" id="rect19205" style="opacity:0.46875;fill:url(#linearGradient25889);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.48601" y="57.769218" id="rect19207" style="opacity:0.1875;fill:url(#linearGradient25891);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.46838" y="77.377342" id="rect19209" style="opacity:0.1875;fill:url(#linearGradient25893);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.15372" y="69.913437" id="rect19211" style="opacity:0.1875;fill:url(#linearGradient25895);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.19022" y="65.70224" id="rect19213" style="opacity:0.46875;fill:url(#linearGradient25897);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.64978" y="94.028038" id="rect19215" style="opacity:0.46875;fill:url(#linearGradient25899);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.81993" y="97.112503" id="rect19217" style="opacity:0.46875;fill:url(#linearGradient25901);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.59576" y="97.91346" id="rect19219" style="opacity:0.1875;fill:url(#linearGradient25903);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.39734" y="98.881744" id="rect19221" style="opacity:0.1875;fill:url(#linearGradient25905);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.14093" y="78.441406" id="rect19223" style="opacity:0.1875;fill:url(#linearGradient25907);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-304.33417" y="55.983482" id="rect19225" style="opacity:0.46875;fill:url(#linearGradient25909);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.66583" y="72.041855" id="rect19227" style="opacity:0.46875;fill:url(#linearGradient25911);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.92673" y="70.234978" id="rect19229" style="opacity:0.46875;fill:url(#linearGradient25913);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.9696" y="84.045815" id="rect19231" style="opacity:0.1875;fill:url(#linearGradient25915);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.9485" y="110.36636" id="rect19233" style="opacity:0.1875;fill:url(#linearGradient25917);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.12448" y="78.765671" id="rect19235" style="opacity:0.1875;fill:url(#linearGradient25919);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-268.93396" y="66.957794" id="rect19237" style="opacity:0.46875;fill:url(#linearGradient25921);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.72153" y="63.677078" id="rect19239" style="opacity:0.46875;fill:url(#linearGradient25923);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.16353" y="106.5026" id="rect19241" style="opacity:0.46875;fill:url(#linearGradient25925);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-229.84259" y="78.04248" id="rect19243" style="opacity:0.1875;fill:url(#linearGradient25927);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.24341" y="97.765053" id="rect19245" style="opacity:0.1875;fill:url(#linearGradient25929);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.61215" y="105.56336" id="rect19247" style="opacity:0.1875;fill:url(#linearGradient25931);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.03516" y="103.79118" id="rect19249" style="opacity:0.46875;fill:url(#linearGradient25933);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.26445" y="74.449562" id="rect19251" style="opacity:0.46875;fill:url(#linearGradient25935);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.85646" y="68.907692" id="rect19253" style="opacity:0.46875;fill:url(#linearGradient25937);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.54657" y="89.704041" id="rect19255" style="opacity:0.1875;fill:url(#linearGradient25939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.86136" y="76.668816" id="rect19257" style="opacity:0.1875;fill:url(#linearGradient25941);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.42096" y="61.806561" id="rect19259" style="opacity:0.1875;fill:url(#linearGradient25943);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.98203" y="69.427635" id="rect19261" style="opacity:0.46875;fill:url(#linearGradient25945);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.41055" y="85.174919" id="rect19263" style="opacity:0.46875;fill:url(#linearGradient25947);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.0016" y="103.53281" id="rect19265" style="opacity:0.46875;fill:url(#linearGradient25949);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.7686" y="75.559853" id="rect19267" style="opacity:0.1875;fill:url(#linearGradient25951);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.5695" y="107.75644" id="rect19269" style="opacity:0.1875;fill:url(#linearGradient25953);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.72728" y="105.42181" id="rect19271" style="opacity:0.1875;fill:url(#linearGradient25955);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.7652" y="82.467445" id="rect19273" style="opacity:0.46875;fill:url(#linearGradient25957);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.38632" y="95.402771" id="rect19275" style="opacity:0.46875;fill:url(#linearGradient25959);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.82684" y="72.933113" id="rect19277" style="opacity:0.46875;fill:url(#linearGradient25961);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.04517" y="93.536026" id="rect19279" style="opacity:0.1875;fill:url(#linearGradient25963);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-270.15546" y="89.64119" id="rect19281" style="opacity:0.1875;fill:url(#linearGradient25965);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.89304" y="66.820396" id="rect19283" style="opacity:0.1875;fill:url(#linearGradient25967);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.6131" y="71.216759" id="rect19285" style="opacity:0.46875;fill:url(#linearGradient25969);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.00293" y="94.547012" id="rect19287" style="opacity:0.46875;fill:url(#linearGradient25971);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.54749" y="111.24785" id="rect19289" style="opacity:0.46875;fill:url(#linearGradient25973);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.9171" y="75.402245" id="rect19291" style="opacity:0.1875;fill:url(#linearGradient25975);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.30652" y="64.5979" id="rect19293" style="opacity:0.1875;fill:url(#linearGradient25977);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.15259" y="109.60979" id="rect19295" style="opacity:0.1875;fill:url(#linearGradient25979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.30212" y="103.83401" id="rect19297" style="opacity:0.46875;fill:url(#linearGradient25981);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.05688" y="70.616966" id="rect19299" style="opacity:0.46875;fill:url(#linearGradient25983);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.5407" y="108.18846" id="rect19301" style="opacity:0.46875;fill:url(#linearGradient25985);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.00439" y="89.209114" id="rect19687" style="opacity:0.1875;fill:url(#linearGradient25987);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.96806" y="93.906403" id="rect19689" style="opacity:0.1875;fill:url(#linearGradient25989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.9646" y="71.037643" id="rect19691" style="opacity:0.1875;fill:url(#linearGradient25991);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.56036" y="72.821198" id="rect19693" style="opacity:0.46875;fill:url(#linearGradient25993);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.60529" y="60.0312" id="rect19695" style="opacity:0.46875;fill:url(#linearGradient25995);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.2816" y="72.936653" id="rect19697" style="opacity:0.46875;fill:url(#linearGradient25997);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-285.78677" y="56.41328" id="rect19699" style="opacity:0.1875;fill:url(#linearGradient25999);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-279.86523" y="110.02824" id="rect19701" style="opacity:0.1875;fill:url(#linearGradient26001);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.45341" y="55.875343" id="rect19703" style="opacity:0.1875;fill:url(#linearGradient26003);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.50208" y="103.96443" id="rect19705" style="opacity:0.46875;fill:url(#linearGradient26005);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.84354" y="67.604721" id="rect19707" style="opacity:0.46875;fill:url(#linearGradient26007);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.03075" y="96.542793" id="rect19709" style="opacity:0.46875;fill:url(#linearGradient26009);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.05197" y="77.771103" id="rect19711" style="opacity:0.1875;fill:url(#linearGradient26011);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.98514" y="107.89761" id="rect19713" style="opacity:0.1875;fill:url(#linearGradient26013);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.06744" y="100.2785" id="rect19715" style="opacity:0.1875;fill:url(#linearGradient26015);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.4613" y="93.778717" id="rect19717" style="opacity:0.46875;fill:url(#linearGradient26017);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-274.2962" y="110.55288" id="rect19719" style="opacity:0.46875;fill:url(#linearGradient26019);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.81448" y="104.48936" id="rect19721" style="opacity:0.46875;fill:url(#linearGradient26021);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.3071" y="90.755722" id="rect19723" style="opacity:0.1875;fill:url(#linearGradient26023);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.40009" y="66.625076" id="rect19725" style="opacity:0.1875;fill:url(#linearGradient26025);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.82065" y="61.598354" id="rect19727" style="opacity:0.1875;fill:url(#linearGradient26027);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-241.56587" y="78.79348" id="rect19729" style="opacity:0.46875;fill:url(#linearGradient26029);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.73978" y="109.59057" id="rect19731" style="opacity:0.46875;fill:url(#linearGradient26031);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.17905" y="69.12339" id="rect19733" style="opacity:0.46875;fill:url(#linearGradient26033);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-216.81087" y="69.328728" id="rect19735" style="opacity:0.1875;fill:url(#linearGradient26035);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-245.59779" y="60.468842" id="rect19737" style="opacity:0.1875;fill:url(#linearGradient26037);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.39996" y="69.177399" id="rect19739" style="opacity:0.1875;fill:url(#linearGradient26039);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.0867" y="103.58194" id="rect19741" style="opacity:0.46875;fill:url(#linearGradient26041);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.35747" y="97.591721" id="rect19743" style="opacity:0.46875;fill:url(#linearGradient26043);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.92908" y="108.21365" id="rect19745" style="opacity:0.46875;fill:url(#linearGradient26045);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.70068" y="94.988106" id="rect19747" style="opacity:0.1875;fill:url(#linearGradient26047);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.22475" y="86.568611" id="rect19749" style="opacity:0.1875;fill:url(#linearGradient26049);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.897" y="68.450813" id="rect19751" style="opacity:0.1875;fill:url(#linearGradient26051);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.28683" y="105.07285" id="rect19753" style="opacity:0.46875;fill:url(#linearGradient26053);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.34781" y="101.12499" id="rect19755" style="opacity:0.46875;fill:url(#linearGradient26055);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.66919" y="72.771706" id="rect19757" style="opacity:0.46875;fill:url(#linearGradient26057);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.08136" y="109.14403" id="rect19759" style="opacity:0.1875;fill:url(#linearGradient26059);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-266.47391" y="56.483292" id="rect19761" style="opacity:0.1875;fill:url(#linearGradient26061);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.57245" y="77.759392" id="rect19763" style="opacity:0.1875;fill:url(#linearGradient26063);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.63818" y="84.989304" id="rect19765" style="opacity:0.46875;fill:url(#linearGradient26065);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.00952" y="84.498077" id="rect19767" style="opacity:0.46875;fill:url(#linearGradient26067);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.5238" y="87.767929" id="rect19769" style="opacity:0.46875;fill:url(#linearGradient26069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.25314" y="107.81876" id="rect19771" style="opacity:0.1875;fill:url(#linearGradient26071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.9086" y="92.5084" id="rect19773" style="opacity:0.1875;fill:url(#linearGradient26073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.40143" y="68.458366" id="rect19775" style="opacity:0.1875;fill:url(#linearGradient26075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.85092" y="65.466675" id="rect19777" style="opacity:0.46875;fill:url(#linearGradient26077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.8295" y="68.729492" id="rect19779" style="opacity:0.46875;fill:url(#linearGradient26079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.39764" y="58.76083" id="rect19781" style="opacity:0.46875;fill:url(#linearGradient26081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.33389" y="91.26815" id="rect19783" style="opacity:0.1875;fill:url(#linearGradient26083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.94896" y="82.49556" id="rect19785" style="opacity:0.1875;fill:url(#linearGradient26085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.46701" y="75.851974" id="rect19787" style="opacity:0.1875;fill:url(#linearGradient26087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-302.13321" y="72.279182" id="rect19789" style="opacity:0.46875;fill:url(#linearGradient26089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.7038" y="106.88218" id="rect19791" style="opacity:0.46875;fill:url(#linearGradient26091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.86159" y="71.95945" id="rect19793" style="opacity:0.46875;fill:url(#linearGradient26093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.88998" y="66.489037" id="rect19795" style="opacity:0.1875;fill:url(#linearGradient26095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.97731" y="90.453789" id="rect19797" style="opacity:0.1875;fill:url(#linearGradient26097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.25266" y="74.747742" id="rect19799" style="opacity:0.1875;fill:url(#linearGradient26099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.03563" y="65.806068" id="rect19801" style="opacity:0.46875;fill:url(#linearGradient26101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.26402" y="74.816711" id="rect19803" style="opacity:0.46875;fill:url(#linearGradient26103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.60954" y="70.76754" id="rect19805" style="opacity:0.46875;fill:url(#linearGradient26105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.31042" y="82.344101" id="rect19807" style="opacity:0.1875;fill:url(#linearGradient26107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-245.2084" y="90.807762" id="rect19809" style="opacity:0.1875;fill:url(#linearGradient26109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-239.56085" y="74.873642" id="rect19811" style="opacity:0.1875;fill:url(#linearGradient26111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.24194" y="108.07713" id="rect19813" style="opacity:0.46875;fill:url(#linearGradient26113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-254.00378" y="94.862534" id="rect19815" style="opacity:0.46875;fill:url(#linearGradient26115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.65979" y="88.722481" id="rect19817" style="opacity:0.46875;fill:url(#linearGradient26117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.76619" y="104.99657" id="rect19819" style="opacity:0.1875;fill:url(#linearGradient26119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.69971" y="99.441635" id="rect19821" style="opacity:0.1875;fill:url(#linearGradient26121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.08588" y="55.394043" id="rect19823" style="opacity:0.1875;fill:url(#linearGradient26123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.71527" y="89.729172" id="rect19825" style="opacity:0.46875;fill:url(#linearGradient26125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.57977" y="87.39814" id="rect19827" style="opacity:0.46875;fill:url(#linearGradient26127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.60815" y="61.057537" id="rect19829" style="opacity:0.46875;fill:url(#linearGradient26129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.3033" y="93.364738" id="rect19831" style="opacity:0.1875;fill:url(#linearGradient26131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.2106" y="109.53021" id="rect19833" style="opacity:0.1875;fill:url(#linearGradient26133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.3336" y="95.752419" id="rect19835" style="opacity:0.1875;fill:url(#linearGradient26135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.09399" y="108.47672" id="rect19837" style="opacity:0.46875;fill:url(#linearGradient26137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.98718" y="56.313244" id="rect19839" style="opacity:0.46875;fill:url(#linearGradient26139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.88078" y="66.299667" id="rect19841" style="opacity:0.46875;fill:url(#linearGradient26141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.43297" y="98.155182" id="rect19843" style="opacity:0.1875;fill:url(#linearGradient26143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-264.12787" y="56.134888" id="rect19845" style="opacity:0.1875;fill:url(#linearGradient26145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.90723" y="99.438095" id="rect19847" style="opacity:0.1875;fill:url(#linearGradient26147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.72171" y="108.76661" id="rect19849" style="opacity:0.46875;fill:url(#linearGradient26149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.49231" y="66.532898" id="rect19851" style="opacity:0.46875;fill:url(#linearGradient26151);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.77087" y="79.516312" id="rect19853" style="opacity:0.46875;fill:url(#linearGradient26153);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.68567" y="88.295525" id="rect19855" style="opacity:0.1875;fill:url(#linearGradient26155);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-264.75388" y="79.418007" id="rect19857" style="opacity:0.1875;fill:url(#linearGradient26157);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.2804" y="82.868881" id="rect19859" style="opacity:0.1875;fill:url(#linearGradient26159);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.78253" y="86.814514" id="rect19861" style="opacity:0.46875;fill:url(#linearGradient26161);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.81927" y="61.421219" id="rect19863" style="opacity:0.46875;fill:url(#linearGradient26163);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.81541" y="88.583298" id="rect19865" style="opacity:0.46875;fill:url(#linearGradient26165);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.35025" y="110.12419" id="rect19867" style="opacity:0.1875;fill:url(#linearGradient26167);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.07797" y="86.085411" id="rect19869" style="opacity:0.1875;fill:url(#linearGradient26169);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.14191" y="111.1115" id="rect19871" style="opacity:0.1875;fill:url(#linearGradient26171);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.09656" y="84.347092" id="rect19873" style="opacity:0.46875;fill:url(#linearGradient26173);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.2934" y="71.749733" id="rect19875" style="opacity:0.46875;fill:url(#linearGradient26175);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.99847" y="67.531227" id="rect19877" style="opacity:0.46875;fill:url(#linearGradient26177);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.12584" y="61.71769" id="rect19879" style="opacity:0.1875;fill:url(#linearGradient26179);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.22586" y="107.49362" id="rect19881" style="opacity:0.1875;fill:url(#linearGradient26181);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.43884" y="105.33451" id="rect19883" style="opacity:0.1875;fill:url(#linearGradient26183);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.26175" y="107.8763" id="rect19885" style="opacity:0.46875;fill:url(#linearGradient26185);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-264.44354" y="67.935165" id="rect19887" style="opacity:0.46875;fill:url(#linearGradient26187);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.49667" y="96.643944" id="rect19889" style="opacity:0.46875;fill:url(#linearGradient26189);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.63341" y="107.29041" id="rect19891" style="opacity:0.1875;fill:url(#linearGradient26191);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-228.05434" y="67.919067" id="rect19893" style="opacity:0.1875;fill:url(#linearGradient26193);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.32623" y="107.8399" id="rect19895" style="opacity:0.1875;fill:url(#linearGradient26195);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-289.12415" y="104.71578" id="rect19897" style="opacity:0.46875;fill:url(#linearGradient26197);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.92154" y="103.894" id="rect19899" style="opacity:0.46875;fill:url(#linearGradient26199);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.99353" y="69.89447" id="rect19901" style="opacity:0.46875;fill:url(#linearGradient26201);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.92441" y="70.290993" id="rect19903" style="opacity:0.1875;fill:url(#linearGradient26203);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.26547" y="75.941833" id="rect19905" style="opacity:0.1875;fill:url(#linearGradient26205);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.47929" y="81.975525" id="rect19907" style="opacity:0.1875;fill:url(#linearGradient26207);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.77673" y="111.29926" id="rect19909" style="opacity:0.46875;fill:url(#linearGradient26209);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.11667" y="99.947609" id="rect19911" style="opacity:0.46875;fill:url(#linearGradient26211);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.85245" y="88.847588" id="rect19913" style="opacity:0.46875;fill:url(#linearGradient26213);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.8663" y="99.503418" id="rect19915" style="opacity:0.1875;fill:url(#linearGradient26215);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.01836" y="106.64564" id="rect19917" style="opacity:0.1875;fill:url(#linearGradient26217);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.59598" y="66.732162" id="rect19919" style="opacity:0.1875;fill:url(#linearGradient26219);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.82793" y="100.37089" id="rect19921" style="opacity:0.46875;fill:url(#linearGradient26221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.13416" y="81.990974" id="rect19923" style="opacity:0.46875;fill:url(#linearGradient26223);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.29108" y="92.491669" id="rect19925" style="opacity:0.46875;fill:url(#linearGradient26225);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-291.61893" y="79.634949" id="rect19927" style="opacity:0.1875;fill:url(#linearGradient26227);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.52936" y="98.797989" id="rect19929" style="opacity:0.1875;fill:url(#linearGradient26229);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.95828" y="110.65452" id="rect19931" style="opacity:0.1875;fill:url(#linearGradient26231);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.95099" y="100.52077" id="rect19933" style="opacity:0.46875;fill:url(#linearGradient26233);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.4422" y="93.812157" id="rect19935" style="opacity:0.46875;fill:url(#linearGradient26235);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.36646" y="94.473045" id="rect19937" style="opacity:0.46875;fill:url(#linearGradient26237);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.96104" y="111.20544" id="rect19939" style="opacity:0.1875;fill:url(#linearGradient26239);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.77539" y="78.428696" id="rect19941" style="opacity:0.1875;fill:url(#linearGradient26241);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.76193" y="101.67466" id="rect19943" style="opacity:0.1875;fill:url(#linearGradient26243);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.64917" y="55.1898" id="rect19945" style="opacity:0.46875;fill:url(#linearGradient26245);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.67783" y="105.24789" id="rect19947" style="opacity:0.46875;fill:url(#linearGradient26247);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.7887" y="107.56207" id="rect19949" style="opacity:0.46875;fill:url(#linearGradient26249);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.32104" y="75.765396" id="rect19951" style="opacity:0.1875;fill:url(#linearGradient26251);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.3252" y="70.395012" id="rect19953" style="opacity:0.1875;fill:url(#linearGradient26253);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.4624" y="77.843994" id="rect19955" style="opacity:0.1875;fill:url(#linearGradient26255);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.46291" y="97.798653" id="rect19957" style="opacity:0.46875;fill:url(#linearGradient26257);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.97621" y="92.625015" id="rect19959" style="opacity:0.46875;fill:url(#linearGradient26259);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.16928" y="66.244278" id="rect19961" style="opacity:0.46875;fill:url(#linearGradient26261);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.05453" y="106.82121" id="rect19963" style="opacity:0.1875;fill:url(#linearGradient26263);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.95485" y="82.979355" id="rect19965" style="opacity:0.1875;fill:url(#linearGradient26265);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.56934" y="75.003525" id="rect19967" style="opacity:0.1875;fill:url(#linearGradient26267);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.9155" y="60.718307" id="rect19969" style="opacity:0.46875;fill:url(#linearGradient26269);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.39957" y="65.565224" id="rect19971" style="opacity:0.46875;fill:url(#linearGradient26271);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.19415" y="66.931465" id="rect19973" style="opacity:0.46875;fill:url(#linearGradient26273);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.45161" y="67.468315" id="rect19975" style="opacity:0.1875;fill:url(#linearGradient26275);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.94643" y="102.85509" id="rect19977" style="opacity:0.1875;fill:url(#linearGradient26277);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.84683" y="97.23008" id="rect19979" style="opacity:0.1875;fill:url(#linearGradient26279);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.62408" y="106.39987" id="rect19981" style="opacity:0.46875;fill:url(#linearGradient26281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.86404" y="86.620399" id="rect19983" style="opacity:0.46875;fill:url(#linearGradient26283);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.98251" y="105.18267" id="rect19985" style="opacity:0.46875;fill:url(#linearGradient26285);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.57259" y="96.846413" id="rect19987" style="opacity:0.1875;fill:url(#linearGradient26287);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.35466" y="72.427864" id="rect19989" style="opacity:0.1875;fill:url(#linearGradient26289);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.7484" y="60.295509" id="rect19991" style="opacity:0.1875;fill:url(#linearGradient26291);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.45859" y="103.16962" id="rect19993" style="opacity:0.46875;fill:url(#linearGradient26293);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.9902" y="99.331314" id="rect19995" style="opacity:0.46875;fill:url(#linearGradient26295);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.4754" y="67.198364" id="rect19997" style="opacity:0.46875;fill:url(#linearGradient26297);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.57295" y="78.623528" id="rect19999" style="opacity:0.1875;fill:url(#linearGradient26299);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.48843" y="58.754765" id="rect20001" style="opacity:0.1875;fill:url(#linearGradient26301);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.62601" y="92.053108" id="rect20003" style="opacity:0.1875;fill:url(#linearGradient26303);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-268.83109" y="89.63459" id="rect20005" style="opacity:0.46875;fill:url(#linearGradient26305);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.99036" y="81.23172" id="rect20007" style="opacity:0.46875;fill:url(#linearGradient26307);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.10904" y="79.479607" id="rect20009" style="opacity:0.46875;fill:url(#linearGradient26309);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.9653" y="83.475426" id="rect20011" style="opacity:0.1875;fill:url(#linearGradient26311);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.05237" y="99.696861" id="rect20013" style="opacity:0.1875;fill:url(#linearGradient26313);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.81726" y="94.231972" id="rect20015" style="opacity:0.1875;fill:url(#linearGradient26315);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.22989" y="104.25684" id="rect20017" style="opacity:0.46875;fill:url(#linearGradient26317);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.13651" y="55.010883" id="rect20019" style="opacity:0.46875;fill:url(#linearGradient26319);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-239.68616" y="109.11954" id="rect20021" style="opacity:0.46875;fill:url(#linearGradient26321);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.49696" y="76.606689" id="rect20023" style="opacity:0.1875;fill:url(#linearGradient26323);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.6626" y="75.026268" id="rect20025" style="opacity:0.1875;fill:url(#linearGradient26325);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.59128" y="88.79126" id="rect20027" style="opacity:0.1875;fill:url(#linearGradient26327);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.85246" y="107.28387" id="rect20029" style="opacity:0.46875;fill:url(#linearGradient26329);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.85561" y="83.328651" id="rect20031" style="opacity:0.46875;fill:url(#linearGradient26331);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.79652" y="91.03093" id="rect20033" style="opacity:0.46875;fill:url(#linearGradient26333);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.53204" y="102.40226" id="rect20035" style="opacity:0.1875;fill:url(#linearGradient26335);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.65462" y="86.312164" id="rect20037" style="opacity:0.1875;fill:url(#linearGradient26337);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.23593" y="99.523064" id="rect20039" style="opacity:0.1875;fill:url(#linearGradient26339);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.10629" y="85.250237" id="rect20041" style="opacity:0.46875;fill:url(#linearGradient26341);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.59616" y="62.64764" id="rect20043" style="opacity:0.46875;fill:url(#linearGradient26343);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.72336" y="57.199894" id="rect20045" style="opacity:0.46875;fill:url(#linearGradient26345);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.94009" y="69.578125" id="rect20047" style="opacity:0.1875;fill:url(#linearGradient26347);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.54706" y="63.932827" id="rect20049" style="opacity:0.1875;fill:url(#linearGradient26349);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.06938" y="71.778969" id="rect20051" style="opacity:0.1875;fill:url(#linearGradient26351);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.02867" y="79.090485" id="rect20053" style="opacity:0.46875;fill:url(#linearGradient26353);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.32771" y="69.432304" id="rect20055" style="opacity:0.46875;fill:url(#linearGradient26355);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.56918" y="79.627808" id="rect20057" style="opacity:0.46875;fill:url(#linearGradient26357);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.56387" y="56.465225" id="rect20059" style="opacity:0.1875;fill:url(#linearGradient26359);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.46451" y="90.167923" id="rect20061" style="opacity:0.1875;fill:url(#linearGradient26361);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.4277" y="82.128593" id="rect20063" style="opacity:0.1875;fill:url(#linearGradient26363);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.59889" y="70.86586" id="rect20065" style="opacity:0.46875;fill:url(#linearGradient26365);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-304.18463" y="88.390617" id="rect20067" style="opacity:0.46875;fill:url(#linearGradient26367);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.64938" y="101.78397" id="rect20069" style="opacity:0.46875;fill:url(#linearGradient26369);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.71817" y="81.253448" id="rect20455" style="opacity:0.1875;fill:url(#linearGradient26371);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.49081" y="65.51342" id="rect20457" style="opacity:0.1875;fill:url(#linearGradient26373);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.75214" y="109.76508" id="rect20459" style="opacity:0.1875;fill:url(#linearGradient26375);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.04233" y="88.218803" id="rect20461" style="opacity:0.46875;fill:url(#linearGradient26377);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.86346" y="85.858627" id="rect20463" style="opacity:0.46875;fill:url(#linearGradient26379);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.32182" y="82.631157" id="rect20465" style="opacity:0.46875;fill:url(#linearGradient26381);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.48117" y="82.083504" id="rect20467" style="opacity:0.1875;fill:url(#linearGradient26383);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.10507" y="108.23654" id="rect20469" style="opacity:0.1875;fill:url(#linearGradient26385);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.32974" y="64.70713" id="rect20471" style="opacity:0.1875;fill:url(#linearGradient26387);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.16614" y="74.961967" id="rect20473" style="opacity:0.46875;fill:url(#linearGradient26389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.05365" y="62.712513" id="rect20475" style="opacity:0.46875;fill:url(#linearGradient26391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.00711" y="72.933044" id="rect20477" style="opacity:0.46875;fill:url(#linearGradient26393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.22855" y="110.74557" id="rect20479" style="opacity:0.1875;fill:url(#linearGradient26395);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.3591" y="79.526146" id="rect20481" style="opacity:0.1875;fill:url(#linearGradient26397);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.60628" y="106.92101" id="rect20483" style="opacity:0.1875;fill:url(#linearGradient26399);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.54721" y="80.424744" id="rect20485" style="opacity:0.46875;fill:url(#linearGradient26401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.69498" y="73.441864" id="rect20487" style="opacity:0.46875;fill:url(#linearGradient26403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.30206" y="67.167152" id="rect20489" style="opacity:0.46875;fill:url(#linearGradient26405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.45755" y="100.83543" id="rect20491" style="opacity:0.1875;fill:url(#linearGradient26407);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.74637" y="77.731842" id="rect20493" style="opacity:0.1875;fill:url(#linearGradient26409);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.5361" y="63.783749" id="rect20495" style="opacity:0.1875;fill:url(#linearGradient26411);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.29132" y="96.522278" id="rect20497" style="opacity:0.46875;fill:url(#linearGradient26413);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.44952" y="98.607231" id="rect20499" style="opacity:0.46875;fill:url(#linearGradient26415);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.82455" y="86.80835" id="rect20501" style="opacity:0.46875;fill:url(#linearGradient26417);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.73625" y="61.344193" id="rect20503" style="opacity:0.1875;fill:url(#linearGradient26419);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.13663" y="77.865173" id="rect20505" style="opacity:0.1875;fill:url(#linearGradient26421);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.60495" y="105.65768" id="rect20507" style="opacity:0.1875;fill:url(#linearGradient26423);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.04767" y="65.757294" id="rect20509" style="opacity:0.46875;fill:url(#linearGradient26425);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.05054" y="107.30734" id="rect20511" style="opacity:0.46875;fill:url(#linearGradient26427);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-302.89746" y="109.56179" id="rect20513" style="opacity:0.46875;fill:url(#linearGradient26429);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.98593" y="67.596725" id="rect20515" style="opacity:0.1875;fill:url(#linearGradient26431);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.38931" y="73.773773" id="rect20517" style="opacity:0.1875;fill:url(#linearGradient26433);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.46507" y="107.92227" id="rect20519" style="opacity:0.1875;fill:url(#linearGradient26435);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.26581" y="83.184235" id="rect20521" style="opacity:0.46875;fill:url(#linearGradient26437);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.78122" y="104.65424" id="rect20523" style="opacity:0.46875;fill:url(#linearGradient26439);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.79443" y="58.689938" id="rect20525" style="opacity:0.46875;fill:url(#linearGradient26441);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.70056" y="60.803516" id="rect20527" style="opacity:0.1875;fill:url(#linearGradient26443);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.72324" y="57.410843" id="rect20529" style="opacity:0.1875;fill:url(#linearGradient26445);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.89771" y="72.826591" id="rect20531" style="opacity:0.1875;fill:url(#linearGradient26447);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.5639" y="70.463745" id="rect20533" style="opacity:0.46875;fill:url(#linearGradient26449);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.42273" y="58.774006" id="rect20535" style="opacity:0.46875;fill:url(#linearGradient26451);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.00671" y="72.494003" id="rect20537" style="opacity:0.46875;fill:url(#linearGradient26453);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-278.71185" y="109.54459" id="rect20539" style="opacity:0.1875;fill:url(#linearGradient26455);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-266.06219" y="55.475723" id="rect20541" style="opacity:0.1875;fill:url(#linearGradient26457);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.19772" y="77.694275" id="rect20543" style="opacity:0.1875;fill:url(#linearGradient26459);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.89938" y="71.35717" id="rect20545" style="opacity:0.46875;fill:url(#linearGradient26461);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.54712" y="84.367325" id="rect20547" style="opacity:0.46875;fill:url(#linearGradient26463);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.45844" y="81.262711" id="rect20549" style="opacity:0.46875;fill:url(#linearGradient26465);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.61487" y="104.93104" id="rect20551" style="opacity:0.1875;fill:url(#linearGradient26467);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.25128" y="71.748528" id="rect20553" style="opacity:0.1875;fill:url(#linearGradient26469);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.85863" y="59.726963" id="rect20555" style="opacity:0.1875;fill:url(#linearGradient26471);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.71912" y="79.780472" id="rect20557" style="opacity:0.46875;fill:url(#linearGradient26473);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.34674" y="64.180695" id="rect20559" style="opacity:0.46875;fill:url(#linearGradient26475);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.67152" y="56.720722" id="rect20561" style="opacity:0.46875;fill:url(#linearGradient26477);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-261.4035" y="61.502678" id="rect20563" style="opacity:0.1875;fill:url(#linearGradient26479);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.67986" y="97.29557" id="rect20565" style="opacity:0.1875;fill:url(#linearGradient26481);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.44293" y="85.375412" id="rect20567" style="opacity:0.1875;fill:url(#linearGradient26483);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.59766" y="96.2453" id="rect20569" style="opacity:0.46875;fill:url(#linearGradient26485);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-249.9745" y="104.10505" id="rect20571" style="opacity:0.46875;fill:url(#linearGradient26487);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.91541" y="63.215496" id="rect20573" style="opacity:0.46875;fill:url(#linearGradient26489);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.64404" y="65.274605" id="rect20575" style="opacity:0.1875;fill:url(#linearGradient26491);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.5867" y="64.151192" id="rect20577" style="opacity:0.1875;fill:url(#linearGradient26493);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.08963" y="73.799103" id="rect20579" style="opacity:0.1875;fill:url(#linearGradient26495);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.13312" y="76.512222" id="rect20581" style="opacity:0.46875;fill:url(#linearGradient26497);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.81549" y="67.021263" id="rect20583" style="opacity:0.46875;fill:url(#linearGradient26499);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.50644" y="95.929291" id="rect20585" style="opacity:0.46875;fill:url(#linearGradient26501);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.86389" y="64.541458" id="rect20587" style="opacity:0.1875;fill:url(#linearGradient26503);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.83641" y="102.7418" id="rect20589" style="opacity:0.1875;fill:url(#linearGradient26505);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.98199" y="108.77027" id="rect20591" style="opacity:0.1875;fill:url(#linearGradient26507);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.55357" y="70.026482" id="rect20593" style="opacity:0.46875;fill:url(#linearGradient26509);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.90517" y="73.117393" id="rect20595" style="opacity:0.46875;fill:url(#linearGradient26511);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.35992" y="81.319099" id="rect20597" style="opacity:0.46875;fill:url(#linearGradient26513);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.24792" y="60.969742" id="rect20599" style="opacity:0.1875;fill:url(#linearGradient26515);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.96555" y="82.846146" id="rect20601" style="opacity:0.1875;fill:url(#linearGradient26517);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.6167" y="105.03866" id="rect20603" style="opacity:0.1875;fill:url(#linearGradient26519);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.6017" y="85.002228" id="rect20605" style="opacity:0.46875;fill:url(#linearGradient26521);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.29018" y="87.934219" id="rect20607" style="opacity:0.46875;fill:url(#linearGradient26523);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.26987" y="97.667152" id="rect20609" style="opacity:0.46875;fill:url(#linearGradient26525);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.37012" y="94.034401" id="rect20611" style="opacity:0.1875;fill:url(#linearGradient26527);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.27859" y="64.077866" id="rect20613" style="opacity:0.1875;fill:url(#linearGradient26529);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.16219" y="75.800377" id="rect20615" style="opacity:0.1875;fill:url(#linearGradient26531);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.15637" y="69.005692" id="rect20617" style="opacity:0.46875;fill:url(#linearGradient26533);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.32767" y="106.1306" id="rect20619" style="opacity:0.46875;fill:url(#linearGradient26535);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.69739" y="106.73238" id="rect20621" style="opacity:0.46875;fill:url(#linearGradient26537);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.82419" y="60.101208" id="rect20623" style="opacity:0.1875;fill:url(#linearGradient26539);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.54817" y="70.407402" id="rect20625" style="opacity:0.1875;fill:url(#linearGradient26541);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.70004" y="61.894451" id="rect20627" style="opacity:0.1875;fill:url(#linearGradient26543);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.56357" y="73.227684" id="rect20629" style="opacity:0.46875;fill:url(#linearGradient26545);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-248.77377" y="86.167908" id="rect20631" style="opacity:0.46875;fill:url(#linearGradient26547);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.4563" y="80.202568" id="rect20633" style="opacity:0.46875;fill:url(#linearGradient26549);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.79651" y="77.157135" id="rect20635" style="opacity:0.1875;fill:url(#linearGradient26551);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.74509" y="97.382492" id="rect20637" style="opacity:0.1875;fill:url(#linearGradient26553);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.50726" y="61.974281" id="rect20639" style="opacity:0.1875;fill:url(#linearGradient26555);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.52014" y="104.55537" id="rect20641" style="opacity:0.46875;fill:url(#linearGradient26557);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.15088" y="102.41749" id="rect20643" style="opacity:0.46875;fill:url(#linearGradient26559);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.94156" y="66.058792" id="rect20645" style="opacity:0.46875;fill:url(#linearGradient26561);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.36902" y="79.583107" id="rect20647" style="opacity:0.1875;fill:url(#linearGradient26563);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.76428" y="89.643036" id="rect20649" style="opacity:0.1875;fill:url(#linearGradient26565);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.89841" y="106.57912" id="rect20651" style="opacity:0.1875;fill:url(#linearGradient26567);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.56018" y="105.04887" id="rect20653" style="opacity:0.46875;fill:url(#linearGradient26569);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.64111" y="61.205338" id="rect20655" style="opacity:0.46875;fill:url(#linearGradient26571);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.98749" y="68.127831" id="rect20657" style="opacity:0.46875;fill:url(#linearGradient26573);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.47653" y="88.594643" id="rect20659" style="opacity:0.1875;fill:url(#linearGradient26575);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.98727" y="105.70779" id="rect20661" style="opacity:0.1875;fill:url(#linearGradient26577);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.75633" y="59.944138" id="rect20663" style="opacity:0.1875;fill:url(#linearGradient26579);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.99521" y="98.409698" id="rect20665" style="opacity:0.46875;fill:url(#linearGradient26581);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.45309" y="83.215034" id="rect20667" style="opacity:0.46875;fill:url(#linearGradient26583);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.63129" y="84.058441" id="rect20669" style="opacity:0.46875;fill:url(#linearGradient26585);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.14677" y="62.076561" id="rect20671" style="opacity:0.1875;fill:url(#linearGradient26587);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.11346" y="79.031021" id="rect20673" style="opacity:0.1875;fill:url(#linearGradient26589);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.29114" y="72.775261" id="rect20675" style="opacity:0.1875;fill:url(#linearGradient26591);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.68109" y="77.156677" id="rect20677" style="opacity:0.46875;fill:url(#linearGradient26593);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.78348" y="98.731834" id="rect20679" style="opacity:0.46875;fill:url(#linearGradient26595);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.43291" y="78.722549" id="rect20681" style="opacity:0.46875;fill:url(#linearGradient26597);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.78207" y="65.402222" id="rect20683" style="opacity:0.1875;fill:url(#linearGradient26599);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.7579" y="96.139221" id="rect20685" style="opacity:0.1875;fill:url(#linearGradient26601);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.65329" y="96.36525" id="rect20687" style="opacity:0.1875;fill:url(#linearGradient26603);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.38538" y="84.262276" id="rect20689" style="opacity:0.46875;fill:url(#linearGradient26605);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.24651" y="76.61116" id="rect20691" style="opacity:0.46875;fill:url(#linearGradient26607);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-298.17392" y="94.361511" id="rect20693" style="opacity:0.46875;fill:url(#linearGradient26609);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-254.1611" y="80.839401" id="rect20695" style="opacity:0.1875;fill:url(#linearGradient26611);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.12796" y="79.646004" id="rect20697" style="opacity:0.1875;fill:url(#linearGradient26613);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.54639" y="104.00186" id="rect20699" style="opacity:0.1875;fill:url(#linearGradient26615);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.37537" y="71.01062" id="rect20701" style="opacity:0.46875;fill:url(#linearGradient26617);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.93375" y="102.269" id="rect20703" style="opacity:0.46875;fill:url(#linearGradient26619);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.88052" y="98.329185" id="rect20705" style="opacity:0.46875;fill:url(#linearGradient26621);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.75504" y="99.959984" id="rect20707" style="opacity:0.1875;fill:url(#linearGradient26623);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.50363" y="107.33015" id="rect20709" style="opacity:0.1875;fill:url(#linearGradient26625);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.61804" y="108.15018" id="rect20711" style="opacity:0.1875;fill:url(#linearGradient26627);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.03036" y="106.36648" id="rect20713" style="opacity:0.46875;fill:url(#linearGradient26629);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.59375" y="71.416595" id="rect20715" style="opacity:0.46875;fill:url(#linearGradient26631);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.73062" y="58.53096" id="rect20717" style="opacity:0.46875;fill:url(#linearGradient26633);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.80426" y="60.331181" id="rect20719" style="opacity:0.1875;fill:url(#linearGradient26635);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.48868" y="83.144234" id="rect20721" style="opacity:0.1875;fill:url(#linearGradient26637);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.44165" y="61.080101" id="rect20723" style="opacity:0.1875;fill:url(#linearGradient26639);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.13631" y="81.72905" id="rect20725" style="opacity:0.46875;fill:url(#linearGradient26641);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.89638" y="106.73634" id="rect20727" style="opacity:0.46875;fill:url(#linearGradient26643);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.9827" y="108.69421" id="rect20729" style="opacity:0.46875;fill:url(#linearGradient26645);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.26816" y="76.166199" id="rect20731" style="opacity:0.1875;fill:url(#linearGradient26647);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.2561" y="67.529793" id="rect20733" style="opacity:0.1875;fill:url(#linearGradient26649);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.53851" y="92.740334" id="rect20735" style="opacity:0.1875;fill:url(#linearGradient26651);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.18407" y="60.572968" id="rect20737" style="opacity:0.46875;fill:url(#linearGradient26653);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.11626" y="59.471355" id="rect20739" style="opacity:0.46875;fill:url(#linearGradient26655);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.31374" y="70.263519" id="rect20741" style="opacity:0.46875;fill:url(#linearGradient26657);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.89474" y="102.27914" id="rect20743" style="opacity:0.1875;fill:url(#linearGradient26659);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.24013" y="74.366951" id="rect20745" style="opacity:0.1875;fill:url(#linearGradient26661);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.00098" y="58.264374" id="rect20747" style="opacity:0.1875;fill:url(#linearGradient26663);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.54126" y="86.428101" id="rect20749" style="opacity:0.46875;fill:url(#linearGradient26665);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-304.38449" y="90.213768" id="rect20751" style="opacity:0.46875;fill:url(#linearGradient26667);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.8826" y="93.236168" id="rect20753" style="opacity:0.46875;fill:url(#linearGradient26669);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.99405" y="56.928612" id="rect20755" style="opacity:0.1875;fill:url(#linearGradient26671);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.38376" y="70.148064" id="rect20757" style="opacity:0.1875;fill:url(#linearGradient26673);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.78781" y="62.705917" id="rect20759" style="opacity:0.1875;fill:url(#linearGradient26675);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.72897" y="78.997246" id="rect20761" style="opacity:0.46875;fill:url(#linearGradient26677);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.59196" y="61.592701" id="rect20763" style="opacity:0.46875;fill:url(#linearGradient26679);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-257.47235" y="74.270607" id="rect20765" style="opacity:0.46875;fill:url(#linearGradient26681);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.67603" y="103.00905" id="rect20767" style="opacity:0.1875;fill:url(#linearGradient26683);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.1875" y="58.221188" id="rect20769" style="opacity:0.1875;fill:url(#linearGradient26685);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.44116" y="93.098091" id="rect20771" style="opacity:0.1875;fill:url(#linearGradient26687);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.90311" y="95.846085" id="rect20773" style="opacity:0.46875;fill:url(#linearGradient26689);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.50949" y="101.26105" id="rect20775" style="opacity:0.46875;fill:url(#linearGradient26691);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.00677" y="55.524345" id="rect20777" style="opacity:0.46875;fill:url(#linearGradient26693);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.34172" y="102.48254" id="rect20779" style="opacity:0.1875;fill:url(#linearGradient26695);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.48227" y="106.88896" id="rect20781" style="opacity:0.1875;fill:url(#linearGradient26697);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.00226" y="92.920219" id="rect20783" style="opacity:0.1875;fill:url(#linearGradient26699);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.33708" y="90.449989" id="rect20785" style="opacity:0.46875;fill:url(#linearGradient26701);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.81618" y="105.25217" id="rect20787" style="opacity:0.46875;fill:url(#linearGradient26703);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.00833" y="98.852737" id="rect20789" style="opacity:0.46875;fill:url(#linearGradient26705);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.06483" y="93.540413" id="rect20791" style="opacity:0.1875;fill:url(#linearGradient26707);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.59024" y="71.885101" id="rect20793" style="opacity:0.1875;fill:url(#linearGradient26709);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.60995" y="110.16111" id="rect20795" style="opacity:0.1875;fill:url(#linearGradient26711);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.35635" y="96.913025" id="rect20797" style="opacity:0.46875;fill:url(#linearGradient26713);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.3793" y="67.212074" id="rect20799" style="opacity:0.46875;fill:url(#linearGradient26715);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.76932" y="105.27201" id="rect20801" style="opacity:0.46875;fill:url(#linearGradient26717);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.66428" y="96.795341" id="rect20803" style="opacity:0.1875;fill:url(#linearGradient26719);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.21658" y="82.294411" id="rect20805" style="opacity:0.1875;fill:url(#linearGradient26721);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.59726" y="87.788773" id="rect20807" style="opacity:0.1875;fill:url(#linearGradient26723);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.504" y="69.20105" id="rect20809" style="opacity:0.46875;fill:url(#linearGradient26725);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.41647" y="102.48328" id="rect20811" style="opacity:0.46875;fill:url(#linearGradient26727);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.83372" y="108.8929" id="rect20813" style="opacity:0.46875;fill:url(#linearGradient26729);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.95575" y="68.082726" id="rect20815" style="opacity:0.1875;fill:url(#linearGradient26731);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.51202" y="86.063263" id="rect20817" style="opacity:0.1875;fill:url(#linearGradient26733);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.23071" y="85.233902" id="rect20819" style="opacity:0.1875;fill:url(#linearGradient26735);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.3028" y="95.189102" id="rect20821" style="opacity:0.46875;fill:url(#linearGradient26737);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.50308" y="75.583626" id="rect20823" style="opacity:0.46875;fill:url(#linearGradient26739);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.41016" y="90.319199" id="rect20825" style="opacity:0.46875;fill:url(#linearGradient26741);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.21121" y="87.030853" id="rect20827" style="opacity:0.1875;fill:url(#linearGradient26743);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.5347" y="82.118057" id="rect20829" style="opacity:0.1875;fill:url(#linearGradient26745);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.19586" y="90.467171" id="rect20831" style="opacity:0.1875;fill:url(#linearGradient26747);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.30733" y="105.46643" id="rect20833" style="opacity:0.46875;fill:url(#linearGradient26749);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.22729" y="92.518166" id="rect20835" style="opacity:0.46875;fill:url(#linearGradient26751);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.12463" y="72.211571" id="rect20837" style="opacity:0.46875;fill:url(#linearGradient26753);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.77547" y="70.537048" id="rect20839" style="opacity:0.1875;fill:url(#linearGradient26755);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-307.22208" y="105.5964" id="rect20841" style="opacity:0.1875;fill:url(#linearGradient26757);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.0667" y="65.166298" id="rect20843" style="opacity:0.1875;fill:url(#linearGradient26759);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.77191" y="64.786659" id="rect20845" style="opacity:0.46875;fill:url(#linearGradient26761);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.46454" y="74.910774" id="rect20847" style="opacity:0.46875;fill:url(#linearGradient26763);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.85799" y="55.804825" id="rect20849" style="opacity:0.46875;fill:url(#linearGradient26765);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.27036" y="67.163628" id="rect20851" style="opacity:0.1875;fill:url(#linearGradient26767);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.91354" y="107.84132" id="rect20853" style="opacity:0.1875;fill:url(#linearGradient26769);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.21909" y="55.62373" id="rect20855" style="opacity:0.1875;fill:url(#linearGradient26771);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-241.54463" y="60.722244" id="rect20857" style="opacity:0.46875;fill:url(#linearGradient26773);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.40973" y="60.930378" id="rect20859" style="opacity:0.46875;fill:url(#linearGradient26775);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.5116" y="61.007633" id="rect20861" style="opacity:0.46875;fill:url(#linearGradient26777);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.71246" y="63.907291" id="rect20863" style="opacity:0.1875;fill:url(#linearGradient26779);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.91263" y="92.62661" id="rect20865" style="opacity:0.1875;fill:url(#linearGradient26781);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.60248" y="101.52387" id="rect20867" style="opacity:0.1875;fill:url(#linearGradient26783);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.04568" y="86.762276" id="rect20869" style="opacity:0.46875;fill:url(#linearGradient26785);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.13998" y="97.211113" id="rect20871" style="opacity:0.46875;fill:url(#linearGradient26787);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.45563" y="75.488144" id="rect20873" style="opacity:0.46875;fill:url(#linearGradient26789);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.2831" y="63.000179" id="rect20875" style="opacity:0.1875;fill:url(#linearGradient26791);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.81769" y="84.297562" id="rect20877" style="opacity:0.1875;fill:url(#linearGradient26793);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.20258" y="110.55594" id="rect20879" style="opacity:0.1875;fill:url(#linearGradient26795);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.10905" y="101.29549" id="rect20881" style="opacity:0.46875;fill:url(#linearGradient26797);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.63766" y="110.90127" id="rect20883" style="opacity:0.46875;fill:url(#linearGradient26799);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.0107" y="96.098122" id="rect20885" style="opacity:0.46875;fill:url(#linearGradient26801);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.40564" y="80.693207" id="rect20887" style="opacity:0.1875;fill:url(#linearGradient26803);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.71815" y="108.91924" id="rect20889" style="opacity:0.1875;fill:url(#linearGradient26805);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.46727" y="64.286911" id="rect20891" style="opacity:0.1875;fill:url(#linearGradient26807);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.94312" y="81.063759" id="rect20893" style="opacity:0.46875;fill:url(#linearGradient26809);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.71429" y="61.501709" id="rect20895" style="opacity:0.46875;fill:url(#linearGradient26811);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.6245" y="67.977432" id="rect20897" style="opacity:0.46875;fill:url(#linearGradient26813);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.12466" y="76.452377" id="rect20899" style="opacity:0.1875;fill:url(#linearGradient26815);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.96835" y="108.51657" id="rect20901" style="opacity:0.1875;fill:url(#linearGradient26817);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.4852" y="59.947071" id="rect20903" style="opacity:0.1875;fill:url(#linearGradient26819);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.3017" y="87.066414" id="rect20905" style="opacity:0.46875;fill:url(#linearGradient26821);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.32651" y="107.02791" id="rect20907" style="opacity:0.46875;fill:url(#linearGradient26823);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.71164" y="96.72039" id="rect20909" style="opacity:0.46875;fill:url(#linearGradient26825);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.15398" y="61.069256" id="rect20911" style="opacity:0.1875;fill:url(#linearGradient26827);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.36102" y="74.99781" id="rect20913" style="opacity:0.1875;fill:url(#linearGradient26829);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.75641" y="88.847244" id="rect20915" style="opacity:0.1875;fill:url(#linearGradient26831);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.14275" y="67.334724" id="rect20917" style="opacity:0.46875;fill:url(#linearGradient26833);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.18599" y="109.29144" id="rect20919" style="opacity:0.46875;fill:url(#linearGradient26835);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.15916" y="96.86953" id="rect20921" style="opacity:0.46875;fill:url(#linearGradient26837);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.06256" y="109.20979" id="rect20923" style="opacity:0.1875;fill:url(#linearGradient26839);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.84415" y="103.0084" id="rect20925" style="opacity:0.1875;fill:url(#linearGradient26841);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.68372" y="87.013405" id="rect20927" style="opacity:0.1875;fill:url(#linearGradient26843);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.10957" y="77.451866" id="rect20929" style="opacity:0.46875;fill:url(#linearGradient26845);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.20053" y="90.775269" id="rect20931" style="opacity:0.46875;fill:url(#linearGradient26847);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.03128" y="64.104378" id="rect20933" style="opacity:0.46875;fill:url(#linearGradient26849);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.23318" y="56.084965" id="rect20935" style="opacity:0.1875;fill:url(#linearGradient26851);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.92523" y="57.800106" id="rect20937" style="opacity:0.1875;fill:url(#linearGradient26853);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.84235" y="101.17597" id="rect20939" style="opacity:0.1875;fill:url(#linearGradient26855);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.93134" y="85.971329" id="rect20941" style="opacity:0.46875;fill:url(#linearGradient26857);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.52533" y="56.047573" id="rect20943" style="opacity:0.46875;fill:url(#linearGradient26859);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.68431" y="92.835999" id="rect20945" style="opacity:0.46875;fill:url(#linearGradient26861);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.14163" y="102.65902" id="rect20947" style="opacity:0.1875;fill:url(#linearGradient26863);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.81085" y="62.801945" id="rect20949" style="opacity:0.1875;fill:url(#linearGradient26865);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.79077" y="61.009129" id="rect20951" style="opacity:0.1875;fill:url(#linearGradient26867);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.69693" y="73.567009" id="rect20953" style="opacity:0.46875;fill:url(#linearGradient26869);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.56216" y="91.539566" id="rect20955" style="opacity:0.46875;fill:url(#linearGradient26871);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.46866" y="67.355965" id="rect20957" style="opacity:0.46875;fill:url(#linearGradient26873);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.63399" y="59.601711" id="rect20959" style="opacity:0.1875;fill:url(#linearGradient26875);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.94403" y="59.034389" id="rect20961" style="opacity:0.1875;fill:url(#linearGradient26877);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.75485" y="57.040806" id="rect20963" style="opacity:0.1875;fill:url(#linearGradient26879);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.73541" y="60.859955" id="rect20965" style="opacity:0.46875;fill:url(#linearGradient26881);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.32837" y="101.73196" id="rect20967" style="opacity:0.46875;fill:url(#linearGradient26883);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.10788" y="86.818977" id="rect20969" style="opacity:0.46875;fill:url(#linearGradient26885);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.92403" y="106.37849" id="rect20971" style="opacity:0.1875;fill:url(#linearGradient26887);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.3898" y="81.959496" id="rect20973" style="opacity:0.1875;fill:url(#linearGradient26889);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.32462" y="78.340958" id="rect20975" style="opacity:0.1875;fill:url(#linearGradient26891);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.25104" y="61.141666" id="rect20977" style="opacity:0.46875;fill:url(#linearGradient26893);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.68286" y="67.630676" id="rect20979" style="opacity:0.46875;fill:url(#linearGradient26895);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.85361" y="106.74319" id="rect20981" style="opacity:0.46875;fill:url(#linearGradient26897);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.17776" y="81.861305" id="rect20983" style="opacity:0.1875;fill:url(#linearGradient26899);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.77428" y="65.122116" id="rect20985" style="opacity:0.1875;fill:url(#linearGradient26901);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.12112" y="73.324898" id="rect20987" style="opacity:0.1875;fill:url(#linearGradient26903);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.10251" y="63.861496" id="rect20989" style="opacity:0.46875;fill:url(#linearGradient26905);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.49176" y="61.256626" id="rect20991" style="opacity:0.46875;fill:url(#linearGradient26907);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.67081" y="62.871773" id="rect20993" style="opacity:0.46875;fill:url(#linearGradient26909);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.56204" y="63.978767" id="rect20995" style="opacity:0.1875;fill:url(#linearGradient26911);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.94516" y="108.00268" id="rect20997" style="opacity:0.1875;fill:url(#linearGradient26913);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.51779" y="105.95143" id="rect20999" style="opacity:0.1875;fill:url(#linearGradient26915);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.02303" y="78.689621" id="rect21001" style="opacity:0.46875;fill:url(#linearGradient26917);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.29872" y="56.172379" id="rect21003" style="opacity:0.46875;fill:url(#linearGradient26919);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.64853" y="73.173126" id="rect21005" style="opacity:0.46875;fill:url(#linearGradient26921);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.56259" y="76.504417" id="rect21007" style="opacity:0.1875;fill:url(#linearGradient26923);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.48233" y="65.487144" id="rect21009" style="opacity:0.1875;fill:url(#linearGradient26925);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.20041" y="57.922138" id="rect21011" style="opacity:0.1875;fill:url(#linearGradient26927);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.10361" y="64.32032" id="rect21013" style="opacity:0.46875;fill:url(#linearGradient26929);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.30933" y="87.516853" id="rect21015" style="opacity:0.46875;fill:url(#linearGradient26931);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.75369" y="55.552612" id="rect21017" style="opacity:0.46875;fill:url(#linearGradient26933);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.38631" y="87.094467" id="rect21019" style="opacity:0.1875;fill:url(#linearGradient26935);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.48524" y="99.373978" id="rect21021" style="opacity:0.1875;fill:url(#linearGradient26937);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.3002" y="105.05029" id="rect21023" style="opacity:0.1875;fill:url(#linearGradient26939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.85101" y="100.16848" id="rect21025" style="opacity:0.46875;fill:url(#linearGradient26941);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.41794" y="101.33263" id="rect21027" style="opacity:0.46875;fill:url(#linearGradient26943);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.23395" y="75.302628" id="rect21029" style="opacity:0.46875;fill:url(#linearGradient26945);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.17188" y="89.433014" id="rect21031" style="opacity:0.1875;fill:url(#linearGradient26947);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.1181" y="69.298286" id="rect21033" style="opacity:0.1875;fill:url(#linearGradient26949);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.73039" y="57.077488" id="rect21035" style="opacity:0.1875;fill:url(#linearGradient26951);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.0459" y="98.268242" id="rect21037" style="opacity:0.46875;fill:url(#linearGradient26953);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.43768" y="71.375671" id="rect21039" style="opacity:0.46875;fill:url(#linearGradient26955);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.02997" y="77.971458" id="rect21041" style="opacity:0.46875;fill:url(#linearGradient26957);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.72766" y="101.21225" id="rect21043" style="opacity:0.1875;fill:url(#linearGradient26959);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.49631" y="91.145035" id="rect21045" style="opacity:0.1875;fill:url(#linearGradient26961);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.40121" y="108.50367" id="rect21047" style="opacity:0.1875;fill:url(#linearGradient26963);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-268.62418" y="73.931641" id="rect21049" style="opacity:0.46875;fill:url(#linearGradient26965);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.92096" y="64.543587" id="rect21051" style="opacity:0.46875;fill:url(#linearGradient26967);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.87704" y="86.798286" id="rect21053" style="opacity:0.46875;fill:url(#linearGradient26969);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.21255" y="84.152184" id="rect21055" style="opacity:0.1875;fill:url(#linearGradient26971);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.7442" y="68.038704" id="rect21057" style="opacity:0.1875;fill:url(#linearGradient26973);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.7352" y="106.20054" id="rect21059" style="opacity:0.1875;fill:url(#linearGradient26975);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.01788" y="63.94009" id="rect21061" style="opacity:0.46875;fill:url(#linearGradient26977);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.39545" y="81.627846" id="rect21063" style="opacity:0.46875;fill:url(#linearGradient26979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.15396" y="87.510963" id="rect21065" style="opacity:0.46875;fill:url(#linearGradient26981);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.94168" y="76.720764" id="rect21067" style="opacity:0.1875;fill:url(#linearGradient26983);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.2645" y="76.507072" id="rect21069" style="opacity:0.1875;fill:url(#linearGradient26985);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.54091" y="64.807266" id="rect21071" style="opacity:0.1875;fill:url(#linearGradient26987);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.0256" y="105.53462" id="rect21073" style="opacity:0.46875;fill:url(#linearGradient26989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.12021" y="86.390068" id="rect21075" style="opacity:0.46875;fill:url(#linearGradient26991);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-257.93661" y="69.662346" id="rect21077" style="opacity:0.46875;fill:url(#linearGradient26993);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.68182" y="92.135094" id="rect21079" style="opacity:0.1875;fill:url(#linearGradient26995);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.80685" y="59.947994" id="rect21081" style="opacity:0.1875;fill:url(#linearGradient26997);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.94907" y="75.974976" id="rect21083" style="opacity:0.1875;fill:url(#linearGradient26999);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.59161" y="102.0582" id="rect21085" style="opacity:0.46875;fill:url(#linearGradient27001);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.84268" y="60.748241" id="rect21087" style="opacity:0.46875;fill:url(#linearGradient27003);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.03136" y="61.704609" id="rect21089" style="opacity:0.46875;fill:url(#linearGradient27005);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.67252" y="62.573116" id="rect21091" style="opacity:0.1875;fill:url(#linearGradient27007);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.56517" y="98.622765" id="rect21093" style="opacity:0.1875;fill:url(#linearGradient27009);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.1326" y="94.367805" id="rect21095" style="opacity:0.1875;fill:url(#linearGradient27011);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.82713" y="68.418785" id="rect21097" style="opacity:0.46875;fill:url(#linearGradient27013);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.95242" y="81.885948" id="rect21099" style="opacity:0.46875;fill:url(#linearGradient27015);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.41571" y="103.11871" id="rect21101" style="opacity:0.46875;fill:url(#linearGradient27017);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.21912" y="55.450714" id="rect21103" style="opacity:0.1875;fill:url(#linearGradient27019);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.15164" y="97.328751" id="rect21105" style="opacity:0.1875;fill:url(#linearGradient27021);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.23364" y="62.857697" id="rect21107" style="opacity:0.1875;fill:url(#linearGradient27023);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-262.56189" y="88.4048" id="rect21109" style="opacity:0.46875;fill:url(#linearGradient27025);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.62183" y="85.401474" id="rect21111" style="opacity:0.46875;fill:url(#linearGradient27027);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.16788" y="109.76205" id="rect21113" style="opacity:0.46875;fill:url(#linearGradient27029);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.02565" y="80.835899" id="rect21115" style="opacity:0.1875;fill:url(#linearGradient27031);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.5825" y="91.056412" id="rect21117" style="opacity:0.1875;fill:url(#linearGradient27033);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.58057" y="92.429237" id="rect21119" style="opacity:0.1875;fill:url(#linearGradient27035);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.8084" y="106.70076" id="rect21121" style="opacity:0.46875;fill:url(#linearGradient27037);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.72501" y="80.25724" id="rect21123" style="opacity:0.46875;fill:url(#linearGradient27039);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.79741" y="109.15076" id="rect21125" style="opacity:0.46875;fill:url(#linearGradient27041);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-262.84338" y="100.30168" id="rect21127" style="opacity:0.1875;fill:url(#linearGradient27043);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.46655" y="89.088768" id="rect21129" style="opacity:0.1875;fill:url(#linearGradient27045);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.07495" y="103.64899" id="rect21131" style="opacity:0.1875;fill:url(#linearGradient27047);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.85617" y="72.184769" id="rect21133" style="opacity:0.46875;fill:url(#linearGradient27049);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.11118" y="89.581963" id="rect21135" style="opacity:0.46875;fill:url(#linearGradient27051);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.29672" y="69.089821" id="rect21137" style="opacity:0.46875;fill:url(#linearGradient27053);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.05901" y="72.152023" id="rect21139" style="opacity:0.1875;fill:url(#linearGradient27055);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.00827" y="102.33545" id="rect21141" style="opacity:0.1875;fill:url(#linearGradient27057);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.26855" y="61.659031" id="rect21143" style="opacity:0.1875;fill:url(#linearGradient27059);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.82904" y="71.701729" id="rect21145" style="opacity:0.46875;fill:url(#linearGradient27061);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.60464" y="77.884239" id="rect21147" style="opacity:0.46875;fill:url(#linearGradient27063);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.12772" y="85.596474" id="rect21149" style="opacity:0.46875;fill:url(#linearGradient27065);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.31731" y="56.329018" id="rect21151" style="opacity:0.1875;fill:url(#linearGradient27067);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.57483" y="95.667526" id="rect21153" style="opacity:0.1875;fill:url(#linearGradient27069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-265.48077" y="100.69909" id="rect21155" style="opacity:0.1875;fill:url(#linearGradient27071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.17764" y="59.823067" id="rect21157" style="opacity:0.46875;fill:url(#linearGradient27073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.42281" y="78.211479" id="rect21159" style="opacity:0.46875;fill:url(#linearGradient27075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.68494" y="70.215508" id="rect21161" style="opacity:0.46875;fill:url(#linearGradient27077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.6322" y="101.17437" id="rect21163" style="opacity:0.1875;fill:url(#linearGradient27079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.22156" y="85.157867" id="rect21165" style="opacity:0.1875;fill:url(#linearGradient27081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.52106" y="63.534519" id="rect21167" style="opacity:0.1875;fill:url(#linearGradient27083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-216.44229" y="83.262306" id="rect21169" style="opacity:0.46875;fill:url(#linearGradient27085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.93253" y="108.89066" id="rect21171" style="opacity:0.46875;fill:url(#linearGradient27087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.96442" y="57.4179" id="rect21173" style="opacity:0.46875;fill:url(#linearGradient27089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.90317" y="111.03307" id="rect21175" style="opacity:0.1875;fill:url(#linearGradient27091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.35715" y="69.274529" id="rect21177" style="opacity:0.1875;fill:url(#linearGradient27093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.00333" y="109.78416" id="rect21179" style="opacity:0.1875;fill:url(#linearGradient27095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.11942" y="94.954216" id="rect21181" style="opacity:0.46875;fill:url(#linearGradient27097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.60632" y="85.795189" id="rect21183" style="opacity:0.46875;fill:url(#linearGradient27099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.70975" y="66.782021" id="rect21185" style="opacity:0.46875;fill:url(#linearGradient27101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.90479" y="102.16841" id="rect21187" style="opacity:0.1875;fill:url(#linearGradient27103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-228.94711" y="57.03421" id="rect21189" style="opacity:0.1875;fill:url(#linearGradient27105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.45731" y="61.083805" id="rect21191" style="opacity:0.1875;fill:url(#linearGradient27107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.54405" y="93.159767" id="rect21193" style="opacity:0.46875;fill:url(#linearGradient27109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.33878" y="92.271156" id="rect21195" style="opacity:0.46875;fill:url(#linearGradient27111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.116" y="84.80423" id="rect21197" style="opacity:0.46875;fill:url(#linearGradient27113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.88902" y="58.80711" id="rect21199" style="opacity:0.1875;fill:url(#linearGradient27115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.33392" y="76.536911" id="rect21201" style="opacity:0.1875;fill:url(#linearGradient27117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.26511" y="80.201492" id="rect21203" style="opacity:0.1875;fill:url(#linearGradient27119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.01447" y="100.298" id="rect21205" style="opacity:0.46875;fill:url(#linearGradient27121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.10202" y="58.051792" id="rect21207" style="opacity:0.46875;fill:url(#linearGradient27123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.26166" y="107.3416" id="rect21209" style="opacity:0.46875;fill:url(#linearGradient27125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.62167" y="58.792862" id="rect21211" style="opacity:0.1875;fill:url(#linearGradient27127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.48352" y="61.158932" id="rect21213" style="opacity:0.1875;fill:url(#linearGradient27129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.12637" y="66.620155" id="rect21215" style="opacity:0.1875;fill:url(#linearGradient27131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.6153" y="73.945251" id="rect21217" style="opacity:0.46875;fill:url(#linearGradient27133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.59021" y="65.025085" id="rect21219" style="opacity:0.46875;fill:url(#linearGradient27135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.93964" y="95.183495" id="rect21221" style="opacity:0.46875;fill:url(#linearGradient27137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.58449" y="98.754738" id="rect21223" style="opacity:0.1875;fill:url(#linearGradient27139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.2807" y="65.886925" id="rect21225" style="opacity:0.1875;fill:url(#linearGradient27141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.5025" y="83.986488" id="rect21227" style="opacity:0.1875;fill:url(#linearGradient27143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.90002" y="85.324791" id="rect21229" style="opacity:0.46875;fill:url(#linearGradient27145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.44086" y="82.210342" id="rect21231" style="opacity:0.46875;fill:url(#linearGradient27147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.56891" y="84.863411" id="rect21233" style="opacity:0.46875;fill:url(#linearGradient27149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.25336" y="87.089043" id="rect21235" style="opacity:0.1875;fill:url(#linearGradient27151);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.89474" y="76.845276" id="rect21237" style="opacity:0.1875;fill:url(#linearGradient27153);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.92368" y="108.63635" id="rect21239" style="opacity:0.1875;fill:url(#linearGradient27155);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.47511" y="63.970722" id="rect21241" style="opacity:0.46875;fill:url(#linearGradient27157);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.57806" y="61.810444" id="rect21243" style="opacity:0.46875;fill:url(#linearGradient27159);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.78726" y="80.350128" id="rect21245" style="opacity:0.46875;fill:url(#linearGradient27161);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.69666" y="70.788307" id="rect21247" style="opacity:0.1875;fill:url(#linearGradient27163);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.49185" y="68.09623" id="rect21249" style="opacity:0.1875;fill:url(#linearGradient27165);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.31662" y="72.337776" id="rect21251" style="opacity:0.1875;fill:url(#linearGradient27167);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.89255" y="66.959465" id="rect21253" style="opacity:0.46875;fill:url(#linearGradient27169);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.88751" y="69.532631" id="rect21255" style="opacity:0.46875;fill:url(#linearGradient27171);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.67349" y="60.119705" id="rect21257" style="opacity:0.46875;fill:url(#linearGradient27173);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.59361" y="87.967026" id="rect21259" style="opacity:0.1875;fill:url(#linearGradient27175);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.74771" y="107.91908" id="rect21261" style="opacity:0.1875;fill:url(#linearGradient27177);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-231.36357" y="97.068886" id="rect21263" style="opacity:0.1875;fill:url(#linearGradient27179);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-238.16719" y="75.513985" id="rect21265" style="opacity:0.46875;fill:url(#linearGradient27181);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.69632" y="99.551247" id="rect21267" style="opacity:0.46875;fill:url(#linearGradient27183);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.33495" y="75.012238" id="rect21269" style="opacity:0.46875;fill:url(#linearGradient27185);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.54056" y="111.64594" id="rect21271" style="opacity:0.1875;fill:url(#linearGradient27187);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.6232" y="57.15493" id="rect21273" style="opacity:0.1875;fill:url(#linearGradient27189);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.94926" y="102.41476" id="rect21275" style="opacity:0.1875;fill:url(#linearGradient27191);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.89328" y="68.986198" id="rect21277" style="opacity:0.46875;fill:url(#linearGradient27193);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.78401" y="92.376289" id="rect21279" style="opacity:0.46875;fill:url(#linearGradient27195);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.17442" y="62.975868" id="rect21281" style="opacity:0.46875;fill:url(#linearGradient27197);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.98894" y="74.333855" id="rect21283" style="opacity:0.1875;fill:url(#linearGradient27199);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.34875" y="74.775146" id="rect21285" style="opacity:0.1875;fill:url(#linearGradient27201);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.19437" y="67.117424" id="rect21287" style="opacity:0.1875;fill:url(#linearGradient27203);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.04742" y="87.623558" id="rect21289" style="opacity:0.46875;fill:url(#linearGradient27205);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.68338" y="83.066238" id="rect21291" style="opacity:0.46875;fill:url(#linearGradient27207);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.97443" y="68.172554" id="rect21293" style="opacity:0.46875;fill:url(#linearGradient27209);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.65314" y="103.76814" id="rect21295" style="opacity:0.1875;fill:url(#linearGradient27211);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.52921" y="89.421211" id="rect21297" style="opacity:0.1875;fill:url(#linearGradient27213);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.46428" y="86.758759" id="rect21299" style="opacity:0.1875;fill:url(#linearGradient27215);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-307.32059" y="59.507183" id="rect21301" style="opacity:0.46875;fill:url(#linearGradient27217);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.4805" y="56.354454" id="rect21303" style="opacity:0.46875;fill:url(#linearGradient27219);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.79776" y="82.508331" id="rect21305" style="opacity:0.46875;fill:url(#linearGradient27221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.34879" y="101.22415" id="rect21307" style="opacity:0.1875;fill:url(#linearGradient27223);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.26691" y="81.187157" id="rect21309" style="opacity:0.1875;fill:url(#linearGradient27225);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.5034" y="57.942776" id="rect21311" style="opacity:0.1875;fill:url(#linearGradient27227);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.29797" y="56.313656" id="rect21313" style="opacity:0.46875;fill:url(#linearGradient27229);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.09218" y="102.84291" id="rect21315" style="opacity:0.46875;fill:url(#linearGradient27231);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.79333" y="57.296597" id="rect21317" style="opacity:0.46875;fill:url(#linearGradient27233);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.46246" y="58.547722" id="rect21319" style="opacity:0.1875;fill:url(#linearGradient27235);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.19955" y="98.540131" id="rect21321" style="opacity:0.1875;fill:url(#linearGradient27237);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.17332" y="70.700653" id="rect21323" style="opacity:0.1875;fill:url(#linearGradient27239);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.90558" y="89.287468" id="rect21325" style="opacity:0.46875;fill:url(#linearGradient27241);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.75607" y="75.273468" id="rect21327" style="opacity:0.46875;fill:url(#linearGradient27243);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.25287" y="96.609406" id="rect21329" style="opacity:0.46875;fill:url(#linearGradient27245);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.75479" y="105.10313" id="rect21331" style="opacity:0.1875;fill:url(#linearGradient27247);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.81497" y="60.864231" id="rect21333" style="opacity:0.1875;fill:url(#linearGradient27249);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.41241" y="63.960575" id="rect21335" style="opacity:0.1875;fill:url(#linearGradient27251);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.99886" y="64.671219" id="rect21337" style="opacity:0.46875;fill:url(#linearGradient27253);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.80031" y="56.595322" id="rect21339" style="opacity:0.46875;fill:url(#linearGradient27255);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.96497" y="103.23323" id="rect21341" style="opacity:0.46875;fill:url(#linearGradient27257);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.19916" y="75.172691" id="rect21343" style="opacity:0.1875;fill:url(#linearGradient27259);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.57715" y="101.3636" id="rect21345" style="opacity:0.1875;fill:url(#linearGradient27261);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.93849" y="74.692139" id="rect21347" style="opacity:0.1875;fill:url(#linearGradient27263);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.13702" y="64.289536" id="rect21349" style="opacity:0.46875;fill:url(#linearGradient27265);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.13849" y="63.319588" id="rect21351" style="opacity:0.46875;fill:url(#linearGradient27267);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.52722" y="87.676361" id="rect21353" style="opacity:0.46875;fill:url(#linearGradient27269);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.15074" y="78.342529" id="rect21355" style="opacity:0.1875;fill:url(#linearGradient27271);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-304.875" y="106.99411" id="rect21357" style="opacity:0.1875;fill:url(#linearGradient27273);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.84726" y="69.912445" id="rect21359" style="opacity:0.1875;fill:url(#linearGradient27275);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.75728" y="84.166862" id="rect21361" style="opacity:0.46875;fill:url(#linearGradient27277);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.75204" y="88.894562" id="rect21363" style="opacity:0.46875;fill:url(#linearGradient27279);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.36176" y="58.718811" id="rect21365" style="opacity:0.46875;fill:url(#linearGradient27281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.17926" y="100.05959" id="rect21367" style="opacity:0.1875;fill:url(#linearGradient27283);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.39511" y="91.973068" id="rect21369" style="opacity:0.1875;fill:url(#linearGradient27285);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.90848" y="65.40184" id="rect21371" style="opacity:0.1875;fill:url(#linearGradient27287);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.50565" y="82.440086" id="rect21373" style="opacity:0.46875;fill:url(#linearGradient27289);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.06406" y="62.919212" id="rect21375" style="opacity:0.46875;fill:url(#linearGradient27291);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.80597" y="79.708824" id="rect21377" style="opacity:0.46875;fill:url(#linearGradient27293);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.50827" y="86.379814" id="rect21379" style="opacity:0.1875;fill:url(#linearGradient27295);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.90628" y="78.480072" id="rect21381" style="opacity:0.1875;fill:url(#linearGradient27297);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-239.25328" y="88.913887" id="rect21383" style="opacity:0.1875;fill:url(#linearGradient27299);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.05078" y="72.513489" id="rect21385" style="opacity:0.46875;fill:url(#linearGradient27301);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.75754" y="59.668365" id="rect21387" style="opacity:0.46875;fill:url(#linearGradient27303);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.42499" y="84.254898" id="rect21389" style="opacity:0.46875;fill:url(#linearGradient27305);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.21336" y="92.538765" id="rect21391" style="opacity:0.1875;fill:url(#linearGradient27307);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-274.96292" y="67.801994" id="rect21393" style="opacity:0.1875;fill:url(#linearGradient27309);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.03345" y="79.786247" id="rect21395" style="opacity:0.1875;fill:url(#linearGradient27311);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.33481" y="73.434113" id="rect21397" style="opacity:0.46875;fill:url(#linearGradient27313);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.33148" y="104.76869" id="rect21399" style="opacity:0.46875;fill:url(#linearGradient27315);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.44894" y="99.540825" id="rect21401" style="opacity:0.46875;fill:url(#linearGradient27317);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.04898" y="81.255905" id="rect21403" style="opacity:0.1875;fill:url(#linearGradient27319);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.30069" y="63.783806" id="rect21405" style="opacity:0.1875;fill:url(#linearGradient27321);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.29605" y="68.727859" id="rect21407" style="opacity:0.1875;fill:url(#linearGradient27323);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.89272" y="66.714928" id="rect21409" style="opacity:0.46875;fill:url(#linearGradient27325);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.11136" y="102.37201" id="rect21411" style="opacity:0.46875;fill:url(#linearGradient27327);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.21965" y="90.515549" id="rect21413" style="opacity:0.46875;fill:url(#linearGradient27329);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.83557" y="104.97116" id="rect21415" style="opacity:0.1875;fill:url(#linearGradient27331);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.50201" y="107.85217" id="rect21417" style="opacity:0.1875;fill:url(#linearGradient27333);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.51273" y="109.82304" id="rect21419" style="opacity:0.1875;fill:url(#linearGradient27335);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.68771" y="83.052849" id="rect21421" style="opacity:0.46875;fill:url(#linearGradient27337);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.08441" y="55.352558" id="rect21423" style="opacity:0.46875;fill:url(#linearGradient27339);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.1561" y="69.60759" id="rect21425" style="opacity:0.46875;fill:url(#linearGradient27341);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.7278" y="98.796432" id="rect21427" style="opacity:0.1875;fill:url(#linearGradient27343);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.89224" y="93.656448" id="rect21429" style="opacity:0.1875;fill:url(#linearGradient27345);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.91916" y="79.919479" id="rect21431" style="opacity:0.1875;fill:url(#linearGradient27347);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.83963" y="82.481972" id="rect21433" style="opacity:0.46875;fill:url(#linearGradient27349);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.69556" y="84.644272" id="rect21435" style="opacity:0.46875;fill:url(#linearGradient27351);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.13559" y="75.38723" id="rect21437" style="opacity:0.46875;fill:url(#linearGradient27353);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.20813" y="69.854103" id="rect21439" style="opacity:0.1875;fill:url(#linearGradient27355);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.60059" y="68.559395" id="rect21441" style="opacity:0.1875;fill:url(#linearGradient27357);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.63321" y="81.568436" id="rect21443" style="opacity:0.1875;fill:url(#linearGradient27359);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.16757" y="81.135536" id="rect21445" style="opacity:0.46875;fill:url(#linearGradient27361);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.10229" y="85.68129" id="rect21447" style="opacity:0.46875;fill:url(#linearGradient27363);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.03432" y="107.33843" id="rect21449" style="opacity:0.46875;fill:url(#linearGradient27365);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.79033" y="95.026062" id="rect21451" style="opacity:0.1875;fill:url(#linearGradient27367);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-247.72145" y="98.058182" id="rect21453" style="opacity:0.1875;fill:url(#linearGradient27369);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.6649" y="63.695808" id="rect21455" style="opacity:0.1875;fill:url(#linearGradient27371);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.88246" y="75.468437" id="rect21457" style="opacity:0.46875;fill:url(#linearGradient27373);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.45953" y="111.10085" id="rect21459" style="opacity:0.46875;fill:url(#linearGradient27375);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.74779" y="85.411835" id="rect21461" style="opacity:0.46875;fill:url(#linearGradient27377);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.76868" y="65.039749" id="rect21463" style="opacity:0.1875;fill:url(#linearGradient27379);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.39914" y="109.71464" id="rect21465" style="opacity:0.1875;fill:url(#linearGradient27381);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.76727" y="87.23999" id="rect21467" style="opacity:0.1875;fill:url(#linearGradient27383);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.03047" y="70.933456" id="rect21469" style="opacity:0.46875;fill:url(#linearGradient27385);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.24399" y="91.743217" id="rect21471" style="opacity:0.46875;fill:url(#linearGradient27387);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.04282" y="96.093422" id="rect21473" style="opacity:0.46875;fill:url(#linearGradient27389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.54053" y="80.427925" id="rect21475" style="opacity:0.1875;fill:url(#linearGradient27391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.41525" y="87.967781" id="rect21477" style="opacity:0.1875;fill:url(#linearGradient27393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.14575" y="92.518379" id="rect21479" style="opacity:0.1875;fill:url(#linearGradient27395);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.88187" y="104.75542" id="rect21481" style="opacity:0.46875;fill:url(#linearGradient27397);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.48245" y="56.437023" id="rect21483" style="opacity:0.46875;fill:url(#linearGradient27399);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.78445" y="71.8396" id="rect21485" style="opacity:0.46875;fill:url(#linearGradient27401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.13855" y="110.62964" id="rect21487" style="opacity:0.1875;fill:url(#linearGradient27403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.79547" y="95.475662" id="rect21489" style="opacity:0.1875;fill:url(#linearGradient27405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.55093" y="83.479332" id="rect21491" style="opacity:0.1875;fill:url(#linearGradient27407);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.83661" y="105.59111" id="rect21493" style="opacity:0.46875;fill:url(#linearGradient27409);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.90616" y="105.14223" id="rect21495" style="opacity:0.46875;fill:url(#linearGradient27411);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.52286" y="110.83428" id="rect21497" style="opacity:0.46875;fill:url(#linearGradient27413);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.30792" y="108.30075" id="rect21499" style="opacity:0.1875;fill:url(#linearGradient27415);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.4128" y="66.733093" id="rect21501" style="opacity:0.1875;fill:url(#linearGradient27417);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.95995" y="100.79337" id="rect21503" style="opacity:0.1875;fill:url(#linearGradient27419);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.94753" y="109.69339" id="rect21505" style="opacity:0.46875;fill:url(#linearGradient27421);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.84122" y="61.881496" id="rect21507" style="opacity:0.46875;fill:url(#linearGradient27423);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.46597" y="90.312744" id="rect21509" style="opacity:0.46875;fill:url(#linearGradient27425);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.28766" y="105.66008" id="rect21511" style="opacity:0.1875;fill:url(#linearGradient27427);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.57361" y="110.81626" id="rect21513" style="opacity:0.1875;fill:url(#linearGradient27429);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.30582" y="78.19458" id="rect21515" style="opacity:0.1875;fill:url(#linearGradient27431);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.36133" y="65.584717" id="rect21517" style="opacity:0.46875;fill:url(#linearGradient27433);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-247.48462" y="90.008995" id="rect21519" style="opacity:0.46875;fill:url(#linearGradient27435);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.29022" y="77.312546" id="rect21521" style="opacity:0.46875;fill:url(#linearGradient27437);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.92154" y="108.85014" id="rect21523" style="opacity:0.1875;fill:url(#linearGradient27439);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.70132" y="86.926987" id="rect21525" style="opacity:0.1875;fill:url(#linearGradient27441);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.51126" y="81.268387" id="rect21527" style="opacity:0.1875;fill:url(#linearGradient27443);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.69012" y="107.18739" id="rect21529" style="opacity:0.46875;fill:url(#linearGradient27445);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.16809" y="91.953133" id="rect21531" style="opacity:0.46875;fill:url(#linearGradient27447);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.52182" y="91.424484" id="rect21533" style="opacity:0.46875;fill:url(#linearGradient27449);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.15775" y="104.16637" id="rect21535" style="opacity:0.1875;fill:url(#linearGradient27451);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.05234" y="58.979252" id="rect21537" style="opacity:0.1875;fill:url(#linearGradient27453);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.64029" y="55.466087" id="rect21539" style="opacity:0.1875;fill:url(#linearGradient27455);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.65317" y="72.480949" id="rect21541" style="opacity:0.46875;fill:url(#linearGradient27457);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.7802" y="75.611626" id="rect21543" style="opacity:0.46875;fill:url(#linearGradient27459);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.25217" y="107.40909" id="rect21545" style="opacity:0.46875;fill:url(#linearGradient27461);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.92938" y="100.32093" id="rect21547" style="opacity:0.1875;fill:url(#linearGradient27463);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.53226" y="61.29652" id="rect21549" style="opacity:0.1875;fill:url(#linearGradient27465);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.69031" y="77.940781" id="rect21551" style="opacity:0.1875;fill:url(#linearGradient27467);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.86548" y="85.345512" id="rect21553" style="opacity:0.46875;fill:url(#linearGradient27469);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.49466" y="73.688721" id="rect21555" style="opacity:0.46875;fill:url(#linearGradient27471);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.92558" y="101.36566" id="rect21557" style="opacity:0.46875;fill:url(#linearGradient27473);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-263.073" y="107.99613" id="rect21559" style="opacity:0.1875;fill:url(#linearGradient27475);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.97604" y="90.513596" id="rect21561" style="opacity:0.1875;fill:url(#linearGradient27477);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.73608" y="97.185303" id="rect21563" style="opacity:0.1875;fill:url(#linearGradient27479);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.27396" y="105.07907" id="rect21565" style="opacity:0.46875;fill:url(#linearGradient27481);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.82477" y="56.584343" id="rect21567" style="opacity:0.46875;fill:url(#linearGradient27483);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.95914" y="98.348389" id="rect21569" style="opacity:0.46875;fill:url(#linearGradient27485);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.59947" y="63.419086" id="rect21571" style="opacity:0.1875;fill:url(#linearGradient27487);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.72168" y="82.934814" id="rect21573" style="opacity:0.1875;fill:url(#linearGradient27489);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.19464" y="66.085556" id="rect21575" style="opacity:0.1875;fill:url(#linearGradient27491);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.0527" y="58.101696" id="rect21577" style="opacity:0.46875;fill:url(#linearGradient27493);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.06149" y="103.94582" id="rect21579" style="opacity:0.46875;fill:url(#linearGradient27495);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.56268" y="72.870979" id="rect21581" style="opacity:0.46875;fill:url(#linearGradient27497);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.6017" y="74.478989" id="rect21583" style="opacity:0.1875;fill:url(#linearGradient27499);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.55887" y="99.894096" id="rect21585" style="opacity:0.1875;fill:url(#linearGradient27501);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.11136" y="92.003113" id="rect21587" style="opacity:0.1875;fill:url(#linearGradient27503);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.96588" y="91.77327" id="rect21589" style="opacity:0.46875;fill:url(#linearGradient27505);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.51933" y="105.80508" id="rect21591" style="opacity:0.46875;fill:url(#linearGradient27507);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.48543" y="103.79506" id="rect21593" style="opacity:0.46875;fill:url(#linearGradient27509);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.12206" y="108.9409" id="rect21595" style="opacity:0.1875;fill:url(#linearGradient27511);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.02167" y="58.260303" id="rect21597" style="opacity:0.1875;fill:url(#linearGradient27513);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.77448" y="65.542923" id="rect21599" style="opacity:0.1875;fill:url(#linearGradient27515);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.63763" y="68.649734" id="rect21601" style="opacity:0.46875;fill:url(#linearGradient27517);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.66443" y="55.40823" id="rect21603" style="opacity:0.46875;fill:url(#linearGradient27519);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.11868" y="70.003098" id="rect21605" style="opacity:0.46875;fill:url(#linearGradient27521);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.80618" y="83.68644" id="rect21607" style="opacity:0.1875;fill:url(#linearGradient27523);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.61108" y="72.337257" id="rect21609" style="opacity:0.1875;fill:url(#linearGradient27525);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.52625" y="91.485954" id="rect21611" style="opacity:0.1875;fill:url(#linearGradient27527);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-302.82098" y="73.17878" id="rect21613" style="opacity:0.46875;fill:url(#linearGradient27529);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.31381" y="62.302635" id="rect21615" style="opacity:0.46875;fill:url(#linearGradient27531);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.39542" y="100.40778" id="rect21617" style="opacity:0.46875;fill:url(#linearGradient27533);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.2916" y="56.54998" id="rect21619" style="opacity:0.1875;fill:url(#linearGradient27535);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.85687" y="88.680138" id="rect21621" style="opacity:0.1875;fill:url(#linearGradient27537);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.02325" y="57.190468" id="rect21623" style="opacity:0.1875;fill:url(#linearGradient27539);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.22159" y="107.58854" id="rect21625" style="opacity:0.46875;fill:url(#linearGradient27541);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.79041" y="67.897629" id="rect21627" style="opacity:0.46875;fill:url(#linearGradient27543);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.17734" y="93.437904" id="rect21629" style="opacity:0.46875;fill:url(#linearGradient27545);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.62856" y="69.776123" id="rect21631" style="opacity:0.1875;fill:url(#linearGradient27547);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.85226" y="72.556374" id="rect21633" style="opacity:0.1875;fill:url(#linearGradient27549);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.26521" y="65.97863" id="rect21829" style="opacity:0.46875;fill:url(#linearGradient27745);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.92079" y="66.180679" id="rect21635" style="opacity:0.1875;fill:url(#linearGradient27551);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.52203" y="88.789848" id="rect21637" style="opacity:0.46875;fill:url(#linearGradient27553);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.35887" y="106.48306" id="rect21639" style="opacity:0.46875;fill:url(#linearGradient27555);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-257.09924" y="61.134922" id="rect21641" style="opacity:0.46875;fill:url(#linearGradient27557);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.71439" y="71.699997" id="rect21643" style="opacity:0.1875;fill:url(#linearGradient27559);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.7209" y="60.317715" id="rect21645" style="opacity:0.1875;fill:url(#linearGradient27561);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.00232" y="56.347214" id="rect21647" style="opacity:0.1875;fill:url(#linearGradient27563);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.17883" y="94.825455" id="rect21649" style="opacity:0.46875;fill:url(#linearGradient27565);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.89526" y="87.537811" id="rect21651" style="opacity:0.46875;fill:url(#linearGradient27567);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.26334" y="84.091301" id="rect21653" style="opacity:0.46875;fill:url(#linearGradient27569);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.27002" y="70.411156" id="rect21655" style="opacity:0.1875;fill:url(#linearGradient27571);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.69394" y="78.538818" id="rect21657" style="opacity:0.1875;fill:url(#linearGradient27573);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.68408" y="60.320854" id="rect21659" style="opacity:0.1875;fill:url(#linearGradient27575);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.35306" y="103.11416" id="rect21661" style="opacity:0.46875;fill:url(#linearGradient27577);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.28685" y="96.777092" id="rect21663" style="opacity:0.46875;fill:url(#linearGradient27579);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.80014" y="106.55783" id="rect21665" style="opacity:0.46875;fill:url(#linearGradient27581);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.17648" y="66.65284" id="rect21667" style="opacity:0.1875;fill:url(#linearGradient27583);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.69562" y="59.358051" id="rect21669" style="opacity:0.1875;fill:url(#linearGradient27585);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.25375" y="75.676254" id="rect21671" style="opacity:0.1875;fill:url(#linearGradient27587);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-263.92645" y="65.860481" id="rect21673" style="opacity:0.46875;fill:url(#linearGradient27589);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.39749" y="102.62814" id="rect21675" style="opacity:0.46875;fill:url(#linearGradient27591);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.31821" y="77.852493" id="rect21677" style="opacity:0.46875;fill:url(#linearGradient27593);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.6496" y="101.4992" id="rect21679" style="opacity:0.1875;fill:url(#linearGradient27595);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.46136" y="73.306519" id="rect21681" style="opacity:0.1875;fill:url(#linearGradient27597);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.29956" y="102.79834" id="rect21683" style="opacity:0.1875;fill:url(#linearGradient27599);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.90312" y="85.702217" id="rect21685" style="opacity:0.46875;fill:url(#linearGradient27601);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.05383" y="111.4539" id="rect21687" style="opacity:0.46875;fill:url(#linearGradient27603);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.43542" y="81.403618" id="rect21689" style="opacity:0.46875;fill:url(#linearGradient27605);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.30719" y="92.514725" id="rect21691" style="opacity:0.1875;fill:url(#linearGradient27607);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.24991" y="74.283562" id="rect21693" style="opacity:0.1875;fill:url(#linearGradient27609);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.06049" y="60.561077" id="rect21695" style="opacity:0.1875;fill:url(#linearGradient27611);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.73814" y="105.74458" id="rect21697" style="opacity:0.46875;fill:url(#linearGradient27613);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.22021" y="96.253685" id="rect21699" style="opacity:0.46875;fill:url(#linearGradient27615);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.03934" y="110.5692" id="rect21701" style="opacity:0.46875;fill:url(#linearGradient27617);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.17294" y="111.13409" id="rect21703" style="opacity:0.1875;fill:url(#linearGradient27619);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.59334" y="101.43046" id="rect21705" style="opacity:0.1875;fill:url(#linearGradient27621);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.58798" y="60.705799" id="rect21707" style="opacity:0.1875;fill:url(#linearGradient27623);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.61441" y="73.019402" id="rect21709" style="opacity:0.46875;fill:url(#linearGradient27625);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.7652" y="98.472694" id="rect21711" style="opacity:0.46875;fill:url(#linearGradient27627);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.8707" y="107.17078" id="rect21713" style="opacity:0.46875;fill:url(#linearGradient27629);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-238.23187" y="86.312042" id="rect21715" style="opacity:0.1875;fill:url(#linearGradient27631);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.60698" y="95.533546" id="rect21717" style="opacity:0.1875;fill:url(#linearGradient27633);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.71002" y="101.39093" id="rect21719" style="opacity:0.1875;fill:url(#linearGradient27635);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.34747" y="86.315704" id="rect21721" style="opacity:0.46875;fill:url(#linearGradient27637);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.95612" y="55.324371" id="rect21723" style="opacity:0.46875;fill:url(#linearGradient27639);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.55295" y="102.14988" id="rect21725" style="opacity:0.46875;fill:url(#linearGradient27641);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.01569" y="61.645065" id="rect21727" style="opacity:0.1875;fill:url(#linearGradient27643);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.86374" y="110.06892" id="rect21729" style="opacity:0.1875;fill:url(#linearGradient27645);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.23123" y="92.380867" id="rect21731" style="opacity:0.1875;fill:url(#linearGradient27647);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.22873" y="59.463947" id="rect21733" style="opacity:0.46875;fill:url(#linearGradient27649);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.77228" y="92.189217" id="rect21735" style="opacity:0.46875;fill:url(#linearGradient27651);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.35599" y="108.36303" id="rect21737" style="opacity:0.46875;fill:url(#linearGradient27653);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-278.51425" y="55.131035" id="rect21739" style="opacity:0.1875;fill:url(#linearGradient27655);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-254.97046" y="78.479927" id="rect21741" style="opacity:0.1875;fill:url(#linearGradient27657);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.53455" y="70.767914" id="rect21743" style="opacity:0.1875;fill:url(#linearGradient27659);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.0918" y="83.996956" id="rect21745" style="opacity:0.46875;fill:url(#linearGradient27661);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.30066" y="100.72653" id="rect21747" style="opacity:0.46875;fill:url(#linearGradient27663);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.70331" y="67.053055" id="rect21749" style="opacity:0.46875;fill:url(#linearGradient27665);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.98083" y="73.581207" id="rect21751" style="opacity:0.1875;fill:url(#linearGradient27667);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.08847" y="94.374672" id="rect21753" style="opacity:0.1875;fill:url(#linearGradient27669);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-254.45741" y="100.69733" id="rect21755" style="opacity:0.1875;fill:url(#linearGradient27671);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.60889" y="85.703201" id="rect21757" style="opacity:0.46875;fill:url(#linearGradient27673);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-274.84732" y="103.87772" id="rect21759" style="opacity:0.46875;fill:url(#linearGradient27675);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.03357" y="90.877365" id="rect21761" style="opacity:0.46875;fill:url(#linearGradient27677);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.6626" y="70.500305" id="rect21763" style="opacity:0.1875;fill:url(#linearGradient27679);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.17976" y="57.346786" id="rect21765" style="opacity:0.1875;fill:url(#linearGradient27681);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.80215" y="76.338768" id="rect21767" style="opacity:0.1875;fill:url(#linearGradient27683);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.84044" y="62.407707" id="rect21769" style="opacity:0.46875;fill:url(#linearGradient27685);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.61429" y="109.48866" id="rect21771" style="opacity:0.46875;fill:url(#linearGradient27687);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.95377" y="99.259407" id="rect21773" style="opacity:0.46875;fill:url(#linearGradient27689);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-302.67654" y="80.126701" id="rect21775" style="opacity:0.1875;fill:url(#linearGradient27691);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.54361" y="80.017448" id="rect21777" style="opacity:0.1875;fill:url(#linearGradient27693);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.85376" y="96.710403" id="rect21779" style="opacity:0.1875;fill:url(#linearGradient27695);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.68607" y="104.046" id="rect21781" style="opacity:0.46875;fill:url(#linearGradient27697);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.02905" y="68.652893" id="rect21783" style="opacity:0.46875;fill:url(#linearGradient27699);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.33957" y="59.477379" id="rect21785" style="opacity:0.46875;fill:url(#linearGradient27701);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.72734" y="62.554237" id="rect21787" style="opacity:0.1875;fill:url(#linearGradient27703);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.08012" y="84.629906" id="rect21789" style="opacity:0.1875;fill:url(#linearGradient27705);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.50664" y="61.226196" id="rect21791" style="opacity:0.1875;fill:url(#linearGradient27707);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.17026" y="109.02679" id="rect21793" style="opacity:0.46875;fill:url(#linearGradient27709);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.62747" y="110.70783" id="rect21795" style="opacity:0.46875;fill:url(#linearGradient27711);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.71053" y="105.81419" id="rect21797" style="opacity:0.46875;fill:url(#linearGradient27713);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.33205" y="56.806377" id="rect21799" style="opacity:0.1875;fill:url(#linearGradient27715);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.8923" y="72.453812" id="rect21801" style="opacity:0.1875;fill:url(#linearGradient27717);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.84396" y="81.6036" id="rect21803" style="opacity:0.1875;fill:url(#linearGradient27719);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.28372" y="80.256149" id="rect21805" style="opacity:0.46875;fill:url(#linearGradient27721);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.51932" y="63.046921" id="rect21807" style="opacity:0.46875;fill:url(#linearGradient27723);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.11929" y="86.822929" id="rect21809" style="opacity:0.46875;fill:url(#linearGradient27725);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.89749" y="60.208015" id="rect21811" style="opacity:0.1875;fill:url(#linearGradient27727);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.36871" y="61.199322" id="rect21813" style="opacity:0.1875;fill:url(#linearGradient27729);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.65778" y="99.558662" id="rect21815" style="opacity:0.1875;fill:url(#linearGradient27731);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.99631" y="83.771034" id="rect21817" style="opacity:0.46875;fill:url(#linearGradient27733);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.79523" y="55.187725" id="rect21819" style="opacity:0.46875;fill:url(#linearGradient27735);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.21899" y="67.234024" id="rect21821" style="opacity:0.46875;fill:url(#linearGradient27737);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.93652" y="58.027828" id="rect21823" style="opacity:0.1875;fill:url(#linearGradient27739);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.09564" y="57.621449" id="rect21825" style="opacity:0.1875;fill:url(#linearGradient27741);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.92448" y="62.891903" id="rect21827" style="opacity:0.1875;fill:url(#linearGradient27743);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-245.2112" y="73.311836" id="rect21831" style="opacity:0.46875;fill:url(#linearGradient27747);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.29486" y="72.867485" id="rect21833" style="opacity:0.46875;fill:url(#linearGradient27749);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.24588" y="71.625595" id="rect21835" style="opacity:0.1875;fill:url(#linearGradient27751);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.41812" y="65.277237" id="rect21837" style="opacity:0.1875;fill:url(#linearGradient27753);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-278.57266" y="64.746178" id="rect21839" style="opacity:0.1875;fill:url(#linearGradient27755);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.70593" y="95.995338" id="rect21841" style="opacity:0.46875;fill:url(#linearGradient27757);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.45135" y="59.459827" id="rect21843" style="opacity:0.46875;fill:url(#linearGradient27759);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.65451" y="64.189789" id="rect21845" style="opacity:0.46875;fill:url(#linearGradient27761);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.06418" y="95.602432" id="rect21847" style="opacity:0.1875;fill:url(#linearGradient27763);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.3447" y="63.354229" id="rect21849" style="opacity:0.1875;fill:url(#linearGradient27765);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.95663" y="101.5279" id="rect21851" style="opacity:0.1875;fill:url(#linearGradient27767);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.72165" y="86.172012" id="rect21853" style="opacity:0.46875;fill:url(#linearGradient27769);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.71814" y="78.380249" id="rect21855" style="opacity:0.46875;fill:url(#linearGradient27771);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.52434" y="93.67672" id="rect21857" style="opacity:0.46875;fill:url(#linearGradient27773);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.90338" y="85.702248" id="rect21859" style="opacity:0.1875;fill:url(#linearGradient27775);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.38721" y="77.190605" id="rect21861" style="opacity:0.1875;fill:url(#linearGradient27777);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.67737" y="56.181717" id="rect21863" style="opacity:0.1875;fill:url(#linearGradient27779);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.15222" y="107.90704" id="rect21865" style="opacity:0.46875;fill:url(#linearGradient27781);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.92514" y="69.235466" id="rect21867" style="opacity:0.46875;fill:url(#linearGradient27783);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.22012" y="109.27183" id="rect21869" style="opacity:0.46875;fill:url(#linearGradient27785);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.93329" y="104.98781" id="rect21871" style="opacity:0.1875;fill:url(#linearGradient27787);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.55911" y="75.871635" id="rect21873" style="opacity:0.1875;fill:url(#linearGradient27789);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.32047" y="99.745865" id="rect21875" style="opacity:0.1875;fill:url(#linearGradient27791);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.80777" y="80.191414" id="rect21877" style="opacity:0.46875;fill:url(#linearGradient27793);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.10162" y="73.924088" id="rect21879" style="opacity:0.46875;fill:url(#linearGradient27795);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.60951" y="101.18223" id="rect21881" style="opacity:0.46875;fill:url(#linearGradient27797);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.05617" y="78.823349" id="rect21883" style="opacity:0.1875;fill:url(#linearGradient27799);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.5704" y="108.95625" id="rect21885" style="opacity:0.1875;fill:url(#linearGradient27801);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.31177" y="56.026588" id="rect21887" style="opacity:0.1875;fill:url(#linearGradient27803);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.99092" y="78.282021" id="rect21889" style="opacity:0.46875;fill:url(#linearGradient27805);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.61678" y="59.413132" id="rect21891" style="opacity:0.46875;fill:url(#linearGradient27807);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.67126" y="61.633476" id="rect21893" style="opacity:0.46875;fill:url(#linearGradient27809);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.9444" y="111.4621" id="rect21895" style="opacity:0.1875;fill:url(#linearGradient27811);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.84995" y="83.256912" id="rect21897" style="opacity:0.1875;fill:url(#linearGradient27813);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.802" y="57.619476" id="rect21899" style="opacity:0.1875;fill:url(#linearGradient27815);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.81755" y="77.153168" id="rect21901" style="opacity:0.46875;fill:url(#linearGradient27817);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-247.31902" y="68.481903" id="rect21903" style="opacity:0.46875;fill:url(#linearGradient27819);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.41722" y="61.906265" id="rect21905" style="opacity:0.46875;fill:url(#linearGradient27821);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.65349" y="86.281181" id="rect21907" style="opacity:0.1875;fill:url(#linearGradient27823);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.61473" y="89.972336" id="rect21909" style="opacity:0.1875;fill:url(#linearGradient27825);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.95982" y="103.9351" id="rect21911" style="opacity:0.1875;fill:url(#linearGradient27827);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.90552" y="105.45963" id="rect21913" style="opacity:0.46875;fill:url(#linearGradient27829);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.45705" y="73.526924" id="rect21915" style="opacity:0.46875;fill:url(#linearGradient27831);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.1709" y="64.812592" id="rect21917" style="opacity:0.46875;fill:url(#linearGradient27833);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.98798" y="64.855049" id="rect21919" style="opacity:0.1875;fill:url(#linearGradient27835);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.42635" y="73.936829" id="rect21921" style="opacity:0.1875;fill:url(#linearGradient27837);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.98654" y="73.139526" id="rect21923" style="opacity:0.1875;fill:url(#linearGradient27839);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.25526" y="80.140846" id="rect21925" style="opacity:0.46875;fill:url(#linearGradient27841);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.05325" y="94.54393" id="rect21927" style="opacity:0.46875;fill:url(#linearGradient27843);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.58752" y="94.470482" id="rect21929" style="opacity:0.46875;fill:url(#linearGradient27845);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.10745" y="68.010391" id="rect21931" style="opacity:0.1875;fill:url(#linearGradient27847);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.12384" y="57.154907" id="rect21933" style="opacity:0.1875;fill:url(#linearGradient27849);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.16574" y="94.142303" id="rect21935" style="opacity:0.1875;fill:url(#linearGradient27851);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.22025" y="110.43915" id="rect21937" style="opacity:0.46875;fill:url(#linearGradient27853);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.00839" y="80.812195" id="rect21939" style="opacity:0.46875;fill:url(#linearGradient27855);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.59402" y="76.412384" id="rect21941" style="opacity:0.46875;fill:url(#linearGradient27857);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.91107" y="58.024467" id="rect21943" style="opacity:0.1875;fill:url(#linearGradient27859);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-249.53322" y="97.532372" id="rect21945" style="opacity:0.1875;fill:url(#linearGradient27861);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.9502" y="79.375854" id="rect21947" style="opacity:0.1875;fill:url(#linearGradient27863);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.24863" y="83.744377" id="rect21949" style="opacity:0.46875;fill:url(#linearGradient27865);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.81308" y="87.086861" id="rect21951" style="opacity:0.46875;fill:url(#linearGradient27867);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.07507" y="87.316689" id="rect21953" style="opacity:0.46875;fill:url(#linearGradient27869);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-289.18948" y="111.07953" id="rect21955" style="opacity:0.1875;fill:url(#linearGradient27871);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.52704" y="94.9814" id="rect21957" style="opacity:0.1875;fill:url(#linearGradient27873);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.55115" y="79.851738" id="rect21959" style="opacity:0.1875;fill:url(#linearGradient27875);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.60129" y="67.812614" id="rect21961" style="opacity:0.46875;fill:url(#linearGradient27877);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.33926" y="104.16561" id="rect21963" style="opacity:0.46875;fill:url(#linearGradient27879);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.54825" y="93.081116" id="rect21965" style="opacity:0.46875;fill:url(#linearGradient27881);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.43896" y="58.822296" id="rect21967" style="opacity:0.1875;fill:url(#linearGradient27883);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.89325" y="100.85945" id="rect21969" style="opacity:0.1875;fill:url(#linearGradient27885);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.74698" y="63.367489" id="rect21971" style="opacity:0.1875;fill:url(#linearGradient27887);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.92989" y="76.764717" id="rect21973" style="opacity:0.46875;fill:url(#linearGradient27889);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.42609" y="98.909195" id="rect21975" style="opacity:0.46875;fill:url(#linearGradient27891);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.9494" y="67.81192" id="rect21977" style="opacity:0.46875;fill:url(#linearGradient27893);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.12759" y="80.207634" id="rect21979" style="opacity:0.1875;fill:url(#linearGradient27895);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.70068" y="107.55251" id="rect21981" style="opacity:0.1875;fill:url(#linearGradient27897);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.33008" y="88.17466" id="rect21983" style="opacity:0.1875;fill:url(#linearGradient27899);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.88853" y="84.047386" id="rect21985" style="opacity:0.46875;fill:url(#linearGradient27901);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.8196" y="80.099098" id="rect21987" style="opacity:0.46875;fill:url(#linearGradient27903);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+    <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.29352" y="88.051704" id="rect21989" style="opacity:0.46875;fill:url(#linearGradient27905);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  </g>
+  <path d="M 34.6875,80.38144 C 33.51024,80.38144 32.5625,81.339002 32.5625,82.528441 L 32.5625,82.717882 C 32.5625,81.528444 33.51024,80.570884 34.6875,80.57088 L 85.84375,80.57088 C 86.87384,80.57088 87.74,81.327313 87.9375,82.307427 C 87.82856,81.22269 86.94705,80.38144 85.84375,80.38144 L 34.6875,80.38144 z M 39.96875,111.10251 L 39.96875,111.29197 C 39.96875,111.81689 40.38669,112.23916 40.90625,112.23916 L 55.03125,112.23916 C 55.5508,112.23916 55.96874,111.81689 55.96875,111.29197 L 55.96875,111.10251 C 55.96874,111.62744 55.5508,112.04971 55.03125,112.04971 L 40.90625,112.04971 C 40.38669,112.04971 39.96875,111.62744 39.96875,111.10251 z" id="path3292" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <path d="M 34.6875,80.279513 C 33.51024,80.279513 32.5625,81.643 32.5625,82.832439 L 32.5625,83.021881 C 32.5625,81.832441 33.51024,81.474879 34.6875,81.474879 L 85.84375,81.474879 C 86.87384,81.474879 87.54,81.631311 87.7375,82.611424 C 87.62856,81.526688 86.94705,80.380993 85.84375,80.380993 L 34.6875,80.279513 z M 39.96875,111.40651 L 39.96875,111.59595 C 39.96875,112.12088 40.38669,112.54316 40.90625,112.54316 L 55.03125,112.54316 C 55.5508,112.54316 55.96874,112.12088 55.96875,111.59595 L 55.96875,111.40651 C 55.96874,111.93144 55.5508,112.35371 55.03125,112.35371 L 40.90625,112.35371 C 40.38669,112.35371 39.96875,111.93144 39.96875,111.40651 z" id="path3301" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <rect width="0.25288588" height="38.263451" rx="0" ry="0" x="-87.866302" y="81.923531" transform="scale(-1,1)" id="rect27971" style="opacity:1;fill:url(#linearGradient27979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <g transform="matrix(1.0884558,0,0,1.1036437,-2.1696646,-3.433884)" id="g28105" style="opacity:0.78515625">
+    <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" transform="matrix(0.6942102,0,0,0.6942102,4.8926363,5.5042159)" clip-path="url(#clipPath28045)" id="rect28009" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28031)"/>
+    <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" transform="matrix(0.6942102,0,0,0.6942102,4.8926363,5.5042159)" clip-path="url(#clipPath28041)" id="rect28039" style="opacity:1;fill:url(#radialGradient28110);fill-opacity:1;stroke:url(#linearGradient28112);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28031)"/>
+    <rect width="4.3502288" height="3.6759202" rx="0.45226815" ry="0.45226815" x="13.897468" y="18.030909" id="rect28057" style="opacity:1;fill:url(#radialGradient28114);fill-opacity:1;stroke:url(#linearGradient28116);stroke-width:0.33188635;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28101)"/>
+  </g>
+  <rect width="55.5" height="2.5258846" x="32.5" y="118.41405" id="rect28122" style="opacity:0.546875;fill:url(#linearGradient28138);fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/>
+  <path d="M 11.375,8.000469 C 9.318588,8.107658 8,9.705749 8,12.312968 L 8,12.906718 C 8,9.927039 9.421552,8.594219 12.375,8.594219 C 48.895822,8.020377 88.665734,8.321938 116.625,8.594219 C 118.52101,8.594219 120,9.722534 120,11.906718 L 120,11.312968 C 120,9.769599 118.4515,8.000469 116.625,8.000469 L 12.375,8.000469 C 12.005819,8.000469 11.668773,7.9851585 11.375,8.000469 z" id="path3391" style="opacity:1;fill:#343434;fill-opacity:0.82840235;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/>
+  <path d="M 118.02054,8.3884687 L 118.13103,9.4933229 L 119.58944,9.493323 C 119.49063,9.021128 119.39101,8.3122317 118.02054,8.3884687 z" transform="matrix(-1.3891392,0,0,1.3891392,175.666,-2.239338)" id="path3081" style="fill:url(#radialGradient3084);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3077)"/>
+  <path d="M 117.12054,8.6884687 L 117.23103,9.793323 L 118.68944,9.793323 C 118.59063,9.321128 118.49101,8.6122317 117.12054,8.6884687 z" transform="matrix(1.2828374,0,0,1.2828374,-33.432312,-2.365499)" id="path3031" style="opacity:0.86141304;fill:url(#radialGradient3039);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3077)"/>
+</svg>
\ No newline at end of file
diff --git a/Samples/CrowIDE/src/CrowIDE.cs b/Samples/CrowIDE/src/CrowIDE.cs
new file mode 100644 (file)
index 0000000..1b6ed15
--- /dev/null
@@ -0,0 +1,289 @@
+//
+//  HelloCube.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2016 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+using System;
+using System.IO;
+using Crow;
+
+namespace Crow.Coding
+{
+       class CrowIDE : CrowVkWin
+       {
+               static void Main (string [] args)
+               {
+                       using (CrowIDE app = new CrowIDE ()) {
+                               app.initIde ();
+                               app.reloadWinConfigs ();
+                               app.Run ();
+                               app.saveWinConfigs ();
+                       }
+               }
+
+               protected override void onLoad ()
+               {
+
+               }
+               public Command CMDNew, CMDOpen, CMDSave, CMDSaveAs, cmdCloseSolution, CMDQuit,
+               CMDUndo, CMDRedo, CMDCut, CMDCopy, CMDPaste, CMDHelp,
+               CMDAbout, CMDOptions,
+               CMDViewGTExp, CMDViewProps, CMDViewProj, CMDViewProjProps, CMDViewErrors, CMDViewSolution, CMDViewEditor, CMDViewProperties,
+               CMDViewToolbox, CMDViewSchema, CMDViewStyling,CMDViewDesign,
+               CMDCompile;
+
+               void initCommands () {
+                       CMDNew = new Command(new Action(() => newFile())) { Caption = "New", Icon = new SvgPicture("#CrowIDE.icons.blank-file.svg"), CanExecute = true};
+                       CMDOpen = new Command(new Action(() => openFileDialog())) { Caption = "Open...", Icon = new SvgPicture("#CrowIDE.icons.open.svg") };
+                       CMDSave = new Command(new Action(() => saveFileDialog())) { Caption = "Save", Icon = new SvgPicture("#CrowIDE.icons.save.svg"), CanExecute = false};
+                       CMDSaveAs = new Command(new Action(() => saveFileDialog())) { Caption = "Save As...", Icon = new SvgPicture("#CrowIDE.icons.save.svg"), CanExecute = false};
+                       //CMDQuit = new Command(new Action(() => running = false)) { Caption = "Quit", Icon = new SvgPicture("#CrowIDE.icons.sign-out.svg") };
+                       CMDUndo = new Command(new Action(() => undo())) { Caption = "Undo", Icon = new SvgPicture("#CrowIDE.icons.undo.svg"), CanExecute = false};
+                       CMDRedo = new Command(new Action(() => redo())) { Caption = "Redo", Icon = new SvgPicture("#CrowIDE.icons.redo.svg"), CanExecute = false};
+            //CMDCut = new Command(new Action(() => Quit (null, null))) { Caption = "Cut", Icon = new SvgPicture("#CrowIDE.icons.scissors.svg"), CanExecute = false};
+            //CMDCopy = new Command(new Action(() => Quit (null, null))) { Caption = "Copy", Icon = new SvgPicture("#CrowIDE.icons.copy-file.svg"), CanExecute = false};
+            //CMDPaste = new Command(new Action(() => Quit (null, null))) { Caption = "Paste", Icon = new SvgPicture("#CrowIDE.icons.paste-on-document.svg"), CanExecute = false};
+            CMDHelp = new Command(new Action(() => System.Diagnostics.Debug.WriteLine("help"))) { Caption = "Help", Icon = new SvgPicture("#CrowIDE.icons.question.svg") };
+                       CMDOptions = new Command(new Action(() => loadWindow("#CrowIDE.ui.Options.crow"))) { Caption = "Editor Options", Icon = new SvgPicture("#CrowIDE.icons.tools.svg") };
+
+                       cmdCloseSolution = new Command(new Action(() => closeSolution()))
+                       { Caption = "Close Solution", Icon = new SvgPicture("#CrowIDE.icons.paste-on-document.svg"), CanExecute = false};
+
+                       CMDViewErrors = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winErrors.crow",this)))
+                       { Caption = "Errors pane"};
+                       CMDViewSolution = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winSolution.crow",this)))
+                       { Caption = "Solution Tree", CanExecute = false};
+                       CMDViewEditor = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winEditor.crow",this)))
+                       { Caption = "Editor Pane"};
+                       CMDViewProperties = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winProperties.crow",this)))
+                       { Caption = "Properties"};
+                       CMDViewDesign = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winDesign.crow",this)))
+                       { Caption = "Quick Design", CanExecute = true};
+                       CMDViewToolbox = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winToolbox.crow",this)))
+                       { Caption = "Toolbox", CanExecute = false};
+                       CMDViewSchema = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winSchema.crow",this)))
+                       { Caption = "IML Shematic View", CanExecute = true};
+                       CMDViewStyling = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winStyleView.crow",this)))
+                       { Caption = "Styling Explorer", CanExecute = true};
+                               
+                       CMDViewGTExp = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winGTExplorer.crow",this)))
+                       { Caption = "Graphic Tree Explorer", CanExecute = true};
+                       CMDCompile = new Command(new Action(() => compileSolution()))
+                       { Caption = "Compile", CanExecute = false};
+                       CMDViewProjProps = new Command(new Action(loadProjProps))
+                       { Caption = "Project Properties", CanExecute = false};
+               }
+
+               void openFileDialog () {                        
+                       crow.AddWidget (instFileDlg.CreateInstance()).DataSource = this;
+               }
+               void openOptionsDialog(){}
+               void newFile() {                        
+                       currentSolution.OpenedItems.AddElement(new ProjectFile());
+               }
+               void saveFileDialog() {}
+               void undo() {}
+               void redo() {}
+               void closeSolution (){
+                       if (currentSolution != null)
+                               currentSolution.CloseSolution ();
+                       CurrentSolution = null;
+               }
+
+               public void saveWinConfigs() {
+                       Configuration.Global.Set ("WinConfigs", mainDock.ExportConfig ());
+                       Configuration.Global.Save ();
+               }
+               public void reloadWinConfigs() {
+                       string conf = Configuration.Global.Get<string>("WinConfigs");
+                       if (string.IsNullOrEmpty (conf))
+                               return;
+                       mainDock.ImportConfig (conf, this);
+               }
+
+
+               static void App_KeyboardKeyDown (object sender, KeyEventArgs e)
+               {
+                       Console.WriteLine((byte)e.Key);
+                       //#if DEBUG_LOG
+                       /*switch (e.Key) {
+                       case Key.F2:                            
+                               DebugLog.save (app);
+                               break;
+                       }*/
+                       //#endif
+               }
+
+
+
+               IML.Instantiator instFileDlg;
+               Solution currentSolution;
+               Project currentProject;
+               DockStack mainDock;
+
+               public static Interface MainIFace;
+               public static CrowIDE MainWin;
+
+               void initIde() {
+
+                       initCommands ();
+
+                       Widget go = crow.Load (@"#CrowIDE.ui.CrowIDE.crow");
+                       go.DataSource = this;
+
+                       mainDock = go.FindByName ("mainDock") as DockStack;
+                       ReopenLastSolution = false;
+                       if (ReopenLastSolution && !string.IsNullOrEmpty (LastOpenSolution)) {
+                               CurrentSolution = Solution.LoadSolution (LastOpenSolution);
+                               //lock(MainIFace.UpdateMutex)
+                               CurrentSolution.ReopenItemsSavedInUserConfig ();
+                       }
+
+                       instFileDlg = IML.Instantiator.CreateFromImlFragment
+                               (MainIFace, "<FileDialog Caption='Open File' CurrentDirectory='{²CurrentDirectory}' SearchPattern='*.sln' OkClicked='onFileOpen'/>");
+
+                       /*DockWindow dw = loadWindow ("#CrowIDE.ui.DockWindows.winEditor.crow", this) as DockWindow;
+                       dw.DockingPosition = Alignment.Center;
+                       dw.Dock (mainDock);
+                       dw = loadWindow ("#CrowIDE.ui.DockWindows.winSolution.crow", this) as DockWindow;
+                       dw.DockingPosition = Alignment.Right;
+                       dw.Dock (mainDock);
+                       dw = loadWindow ("#CrowIDE.ui.DockWindows.winToolbox.crow", this) as DockWindow;
+                       dw.DockingPosition = Alignment.Left;
+                       dw.Dock (mainDock);*/
+
+                       //Console.WriteLine ();
+               }
+
+               void loadProjProps () {
+                       loadWindow ("#CrowIDE.ui.ProjectProperties.crow");
+               }
+               void compileSolution () {
+                       //ProjectItem pi = CurrentSolution.SelectedItem;
+                       Project p = CurrentSolution?.Projects[1];
+                       if (p == null)
+                               return;
+                       p.Compile ();
+               }
+
+               public string CurrentDirectory {
+                       get { return Crow.Configuration.Global.Get<string>("CurrentDirectory");}
+                       set {
+                               Crow.Configuration.Global.Set ("CurrentDirectory", value);
+                       }
+               }
+               public Solution CurrentSolution {
+                       get { return currentSolution; }
+                       set {
+                               if (currentSolution == value)
+                                       return;
+                               
+                               currentSolution = value;
+
+                               CMDCompile.CanExecute = (currentSolution != null);
+                               cmdCloseSolution.CanExecute = (currentSolution != null);
+                               CMDViewSolution.CanExecute = (currentSolution != null);
+                               
+                               lock (MainIFace) {
+                                       NotifyValueChanged ("CurrentSolution", currentSolution);
+                               }
+                       }
+               }
+               public Project CurrentProject {
+                       get { return currentProject; }
+                       set {
+                               if (currentProject == value)
+                                       return;
+                               currentProject = value;
+
+                               CMDViewProjProps.CanExecute = (currentProject != null);
+                               
+                               lock (MainIFace) {
+                                       NotifyValueChanged ("CurrentProject", currentProject);
+                               }
+                       }
+               }
+
+               public string LastOpenSolution {
+                       get { return Crow.Configuration.Global.Get<string>("LastOpenSolution");}
+                       set {
+                               if (LastOpenSolution == value)
+                                       return;
+                               Crow.Configuration.Global.Set ("LastOpenSolution", value);
+                               NotifyValueChanged ("LastOpenSolution", value);
+                       }
+               }
+               public bool ReopenLastSolution {
+                       get { return Crow.Configuration.Global.Get<bool>("ReopenLastSolution");}
+                       set {
+                               if (ReopenLastSolution == value)
+                                       return;
+                               Crow.Configuration.Global.Set ("ReopenLastSolution", value);
+                               NotifyValueChanged ("ReopenLastSolution", value);
+                       }
+               }
+
+               public void onFileOpen (object sender, EventArgs e)
+               {
+                       FileDialog fd = sender as FileDialog;
+
+                       string filePath = fd.SelectedFileFullPath;
+
+                       try {
+                               string ext = Path.GetExtension (filePath);
+                               if (string.Equals (ext, ".sln", StringComparison.InvariantCultureIgnoreCase)) {                                 
+                                       CurrentSolution = Solution.LoadSolution (filePath);
+                                       LastOpenSolution = filePath;
+//                             }else if (string.Equals (ext, ".csproj", StringComparison.InvariantCultureIgnoreCase)) {
+//                                     currentProject = new Project (filePath);
+                               }
+                       } catch (Exception ex) {
+                               crow.LoadIMLFragment ("<MessageBox Message='"+ ex.Message + "\n" + "' MsgType='Error'/>");      
+                       }                               
+               }
+
+               Window loadWindow(string path, object dataSource = null){
+                       try {
+                               Widget g = MainIFace.FindByName (path);
+                               if (g != null)
+                                       return g as Window;
+                               g = MainIFace.Load (path);
+                               g.Name = path;
+                               g.DataSource = dataSource;
+                               return g as Window;
+                       } catch (Exception ex) {
+                               Console.WriteLine (ex.ToString ());
+                       }
+                       return null;
+               }
+               void closeWindow (string path){
+                       Widget g = MainIFace.FindByName (path);
+                       if (g != null)
+                               MainIFace.DeleteWidget (g);
+               }
+
+               protected void onCommandSave(object sender, MouseButtonEventArgs e){
+                       System.Diagnostics.Debug.WriteLine("save");
+               }
+
+               void actionOpenFile(){
+                       System.Diagnostics.Debug.WriteLine ("OpenFile action");
+               }
+       }
+}
\ No newline at end of file
diff --git a/Samples/CrowIDE/src/DesignInterface.cs b/Samples/CrowIDE/src/DesignInterface.cs
new file mode 100644 (file)
index 0000000..82c604c
--- /dev/null
@@ -0,0 +1,190 @@
+//
+// DesignInterface.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Threading;
+using System.Collections.Generic;
+using System.IO;
+
+
+namespace Crow.Coding
+{
+       public class DesignInterface : Interface, IValueChange
+       {
+               #region IValueChange implementation
+               /// <summary>
+               /// Raise to notify that the value of a property has changed, the binding system
+               /// rely mainly on this event. the member name may not be present in the class, this is 
+               /// used in **propertyless** bindings, this allow to raise custom named events without needing
+               /// to create an new one in the class or a new property.
+               /// </summary>
+               public event EventHandler<ValueChangeEventArgs> ValueChanged;
+               /// <summary>
+               /// Helper function to raise the value changed event
+               /// </summary>
+               public virtual void NotifyValueChanged(string MemberName, object _value)
+               {
+                       //Debug.WriteLine ("Value changed: {0}->{1} = {2}", this, MemberName, _value);
+                       ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value));
+               }
+               #endregion
+
+               public DesignInterface (vkvg.Device dev) : base(dev)
+               {
+               }
+
+               public ProjectFile ProjFile;
+
+
+
+               public override Widget CreateInstance (string path)
+               {
+                       ProjectFile pi;
+
+                       if (ProjFile.Project.solution.GetProjectFileFromPath (path, out pi))
+                               return CreateITorFromIMLFragment (pi.Source).CreateInstance();                                  
+               
+                       return null;
+               }
+               public override Stream GetStreamFromPath (string path)
+               {
+                       ProjectFile pi;
+                       if (ProjFile.Project.solution.GetProjectFileFromPath (path, out pi)) {
+                               return new FileStream (pi.AbsolutePath, FileMode.Open); 
+                       }
+                       throw new Exception ($"In Design File not found: {path}");
+               }
+
+
+               public override bool ProcessMouseMove (int x, int y)
+               {
+                       int deltaX = x - Mouse.X;
+                       int deltaY = y - Mouse.Y;
+                       Mouse.X = x;
+                       Mouse.Y = y;
+                       MouseMoveEventArgs e = new MouseMoveEventArgs (x, y, deltaX, deltaY);
+                       e.Mouse = Mouse;
+
+                       if (ActiveWidget != null) {
+                               //TODO, ensure object is still in the graphic tree
+                               //send move evt even if mouse move outside bounds
+                               ActiveWidget.onMouseMove (this, e);
+                               if (!ActiveWidget.IsDragged)//if active is dragged, process mouse move as it was not visible.
+                                       return true;
+                       }
+
+                       if (HoverWidget != null) {
+                               
+                               //check topmost graphicobject first
+                               Widget tmp = HoverWidget;
+                               Widget topc = null;
+                               while (tmp is Widget) {
+                                       topc = tmp;
+                                       tmp = tmp.LogicalParent as Widget;
+                               }
+                               int idxhw = GraphicTree.IndexOf (topc);
+                               if (idxhw != 0) {
+                                       int i = 0;
+                                       while (i < idxhw) {
+                                               if (GraphicTree [i].localLogicalParentIsNull) {
+                                                       if (GraphicTree [i].MouseIsIn (e.Position)) {
+                                                               while (HoverWidget != null) {
+                                                                       HoverWidget.onMouseLeave (HoverWidget, e);
+                                                                       HoverWidget = HoverWidget.LogicalParent as Widget;
+                                                               }
+
+                                                               GraphicTree [i].checkHoverWidget (e);
+                                                               return true;
+                                                       }
+                                               }
+                                               i++;
+                                       }
+                               }
+
+                               if (HoverWidget.MouseIsIn (e.Position)) {
+                                       if (!(HoverWidget is TemplatedControl))
+                                               HoverWidget.checkHoverWidget (e);
+                                       return true;
+                               } else {
+                                       HoverWidget.onMouseLeave (HoverWidget, e);
+                                       //seek upward from last focused graph obj's
+                                       while (HoverWidget.LogicalParent as Widget != null) {
+                                               HoverWidget = HoverWidget.LogicalParent as Widget;
+                                               if (HoverWidget.MouseIsIn (e.Position)) {
+                                                       HoverWidget.checkHoverWidget (e);
+                                                       return true;
+                                               } else
+                                                       HoverWidget.onMouseLeave (HoverWidget, e);
+                                       }
+                               }
+                       }
+
+                       //top level graphic obj's parsing
+                       lock (GraphicTree) {
+                               for (int i = 0; i < GraphicTree.Count; i++) {
+                                       Widget g = GraphicTree [i];
+                                       if (g.MouseIsIn (e.Position)) {
+                                               if (!(HoverWidget is TemplatedControl))
+                                                       g.checkHoverWidget (e);
+                                               if (g is Window)
+                                                       PutOnTop (g);
+                                               return true;
+                                       }
+                               }
+                       }
+                       HoverWidget = null;
+                       return false;           
+               }
+       
+               protected override void processLayouting ()
+               {
+                       #if MEASURE_TIME
+                       layoutingMeasure.StartCycle();
+                       #endif
+
+                       if (Monitor.TryEnter (LayoutMutex)) {
+                               DiscardQueue = new Queue<LayoutingQueueItem> ();
+                               LayoutingQueueItem lqi;
+                               while (LayoutingQueue.Count > 0) {
+                                       lqi = LayoutingQueue.Dequeue ();
+                                       //Console.WriteLine (lqi.ToString ());
+                                       #if DEBUG_LAYOUTING
+                                       currentLQI = lqi;
+                                       curLQIsTries.Add(currentLQI);
+                                       #endif
+                                       lqi.ProcessLayouting ();
+                               }
+                               LayoutingQueue = DiscardQueue;
+                               Monitor.Exit (LayoutMutex);
+                               DiscardQueue = null;
+                       }
+
+                       #if MEASURE_TIME
+                       layoutingMeasure.StopCycle();
+                       #endif
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBuffer.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBuffer.cs
new file mode 100644 (file)
index 0000000..7d5efec
--- /dev/null
@@ -0,0 +1,530 @@
+//
+//  CodeTextBuffer.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2017 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+using System.Diagnostics;
+using System.Threading;
+
+namespace Crow.Coding
+{
+       /// <summary>
+       /// Code buffer, lines are arranged in a List<string>, new line chars are removed during string.split on '\n...',
+       /// </summary>
+       public class CodeBuffer
+       {
+               public ReaderWriterLockSlim editMutex = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
+
+               //those events are handled in SourceEditor to help keeping sync between textbuffer,parser and editor.
+               //modified lines are marked for reparse
+               #region Events
+               public event EventHandler<CodeBufferEventArgs> LineUpadateEvent;
+               public event EventHandler<CodeBufferEventArgs> LineRemoveEvent;
+               public event EventHandler<CodeBufferEventArgs> LineAdditionEvent;
+               public event EventHandler<CodeBufferEventArgs> FoldingEvent;
+               public event EventHandler BufferCleared;
+               public event EventHandler SelectionChanged;
+               public event EventHandler PositionChanged;
+               #endregion
+
+               string lineBreak = Interface.LineBreak;
+               List<CodeLine> lines = new List<CodeLine>();
+               public int longestLineIdx = 0;
+               public int longestLineCharCount = 0;
+               /// <summary>
+               /// real position in char arrays, tab = 1 char
+               /// </summary>
+               int _currentLine = 0;
+               int _currentCol = 0;
+
+               public int LineCount { get { return lines.Count;}}
+               public int IndexOf (CodeLine cl) {
+                       return lines.IndexOf (cl);
+               }
+
+               public CodeLine this[int i]
+               {
+                       get { return i < LineCount ? lines[i] : null; }
+                       set {
+                               if (lines [i] == value)
+                                       return;
+                               editMutex.EnterWriteLock ();
+                               lines [i] = value;
+                               editMutex.ExitWriteLock ();
+                               LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i));
+                       }
+               }
+
+               public void RemoveAt(int i){
+                       editMutex.EnterWriteLock ();
+                       lines.RemoveAt (i);
+                       editMutex.ExitWriteLock ();
+                       LineRemoveEvent.Raise (this, new CodeBufferEventArgs (i));
+               }
+               public void Insert(int i, string item){
+                       editMutex.EnterWriteLock ();
+                       lines.Insert (i, item);
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, new CodeBufferEventArgs (i));
+               }
+               public void Add(CodeLine item){
+                       editMutex.EnterWriteLock ();
+                       lines.Add (item);
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, new CodeBufferEventArgs (lines.Count - 1));
+               }
+               public void AddRange (string[] items){
+                       int start = lines.Count;
+                       editMutex.EnterWriteLock ();
+                       for (int i = 0; i < items.Length; i++)
+                               lines.Add (items [i]);
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, new CodeBufferEventArgs (start, items.Length));
+               }
+               public void AddRange (CodeLine[] items){
+                       int start = lines.Count;
+                       editMutex.EnterWriteLock ();
+                       lines.AddRange (items);
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, new CodeBufferEventArgs (start, items.Length));
+               }
+               public void Clear () {
+                       editMutex.EnterWriteLock ();
+                       longestLineCharCount = 0;
+                       lines.Clear ();
+                       editMutex.ExitWriteLock ();
+                       BufferCleared.Raise (this, null);
+               }
+               public void UpdateLine(int i, string newContent){
+                       editMutex.EnterWriteLock ();
+                       this [i].Content = newContent;
+                       editMutex.ExitWriteLock ();
+                       LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i));
+               }
+               public void AppenedLine(int i, string newContent){
+                       editMutex.EnterWriteLock ();
+                       this [i].Content += newContent;
+                       editMutex.ExitWriteLock ();
+                       LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i));
+               }
+               public void RemoveLeadingTab (int l) {
+                       if (this [l] [0] == '\t') {
+                               UpdateLine (l, this [l].Content.Substring (1));
+                               return;
+                       }
+                       int i = 0;
+                       while (i < Interface.TabSize) {
+                               if (this [l] [i] != ' ')
+                                       break;
+                               i++;
+                       }
+                       if (i > 0)
+                               UpdateLine (l, this [l].Content.Substring (i));
+               }
+               public void ToogleFolding (int line) {
+                       if (!this [line].IsFoldable)
+                               return;
+                       editMutex.EnterWriteLock ();
+                       this [line].IsFolded = !this [line].IsFolded;
+                       editMutex.ExitWriteLock ();
+                       FoldingEvent.Raise (this, new CodeBufferEventArgs (line));
+               }
+               public void Load(string rawSource, string lineBrkRegex = @"\r\n|\r|\n|\\\n") {
+                       this.Clear();
+
+                       if (string.IsNullOrEmpty (rawSource))
+                               return;
+
+                       AddRange (Regex.Split (rawSource, lineBrkRegex));
+
+                       lineBreak = detectLineBreakKind (rawSource);
+               }
+
+               /// <summary>
+               /// Finds the longest visual line as printed on screen with tabulation replaced with n spaces
+               /// </summary>
+               public void FindLongestVisualLine(){
+                       longestLineCharCount = 0;
+                       editMutex.EnterReadLock ();
+                       for (int i = 0; i < this.LineCount; i++) {
+                               if (lines[i].PrintableLength > longestLineCharCount) {
+                                       longestLineCharCount = lines[i].PrintableLength;
+                                       longestLineIdx = i;
+                               }
+                       }
+                       editMutex.ExitReadLock ();
+                       //Debug.WriteLine ("Longest line: {0}->{1}", longestLineIdx, longestLineCharCount);
+               }
+               /// <summary> line break could be '\r' or '\n' or '\r\n' </summary>
+               static string detectLineBreakKind(string buffer){
+                       string strLB = "";
+
+                       if (string.IsNullOrEmpty(buffer))
+                               return Interface.LineBreak;
+                       int i = 0;
+                       while ( i < buffer.Length) {
+                               if (buffer [i] == '\r') {
+                                       strLB += '\r';
+                                       i++;
+                               }
+                               if (i < buffer.Length) {
+                                       if (buffer [i] == '\r')
+                                               return "\r";
+                                       if (buffer[i] == '\n')
+                                               strLB += '\n';
+                               }
+                               if (!string.IsNullOrEmpty (strLB))
+                                       return strLB;
+                               i++;
+                       }
+                       return Interface.LineBreak;
+               }
+               /// <summary>
+               /// return all lines with linebreaks
+               /// </summary>
+               public string FullText{
+                       get {
+                               if (lines.Count == 0)
+                                       return "";
+                               string tmp = "";
+                               editMutex.EnterReadLock ();
+                               for (int i = 0; i < lines.Count -1; i++)
+                                       tmp += lines [i].Content + this.lineBreak;
+                               tmp += lines [lines.Count - 1].Content;
+                               editMutex.ExitReadLock ();
+                               return tmp;
+                       }
+               }
+
+               /// <summary>
+               /// unfolded and not in folds line count
+               /// </summary>
+               public int UnfoldedLines {
+                       get {
+                               int i = 0, vl = 0;
+                               editMutex.EnterReadLock ();
+                               while (i < LineCount) {
+                                       if (this [i].IsFolded) {
+                                               i = GetEndNodeIndex (i);
+                                               if (i < 0) {
+                                                       Console.WriteLine ("error folding");
+                                                       break;
+                                               }
+                                       }
+                                       i++;
+                                       vl++;
+                               }
+                               editMutex.ExitReadLock ();
+                               //Debug.WriteLine ("unfolded lines: " + vl);
+                               return vl;
+                       }
+               }
+
+               /// <summary>
+               /// convert visual position to buffer position
+               /// </summary>
+               Point getBuffPos (Point visualPos) {
+                       int i = 0;
+                       int buffCol = 0;
+                       while (i < visualPos.X) {
+                               if (this [visualPos.Y] [buffCol] == '\t')
+                                       i += Interface.TabSize;
+                               else
+                                       i++;
+                               buffCol++;
+                       }
+                       return new Point (buffCol, visualPos.Y);
+               }
+
+               public int GetEndNodeIndex (int line) {
+                       return IndexOf (this [line].SyntacticNode.EndLine);
+               }
+
+               int ConverteTabulatedPosOfCurLine (int column) {
+                       int tmp = 0;
+                       int i = 0;
+                       while (i < lines [_currentLine].Content.Length){
+                               if (lines [_currentLine].Content [i] == '\t')
+                                       tmp += 4;
+                               else
+                                       tmp++;
+                               if (tmp > column)
+                                       break;
+                               i++;
+                       }
+                       return i;
+               }
+
+               public int CurrentTabulatedColumn {
+                       get {
+                               return lines [_currentLine].Content.Substring (0, _currentCol).
+                                       Replace ("\t", new String (' ', Interface.TabSize)).Length;
+                       }
+               }
+               /// <summary>
+               /// Gets visual position computed from actual buffer position
+               /// </summary>
+//             public Point TabulatedPosition {
+//                     get { return new Point (TabulatedColumn, _currentLine); }
+//             }
+               /// <summary>
+               /// set buffer current position from visual position
+               /// </summary>
+//             public void SetBufferPos(Point tabulatedPosition) {
+//                     CurrentPosition = getBuffPos(tabulatedPosition);
+//             }
+
+               #region Editing and moving cursor
+               Point selStartPos = -1; //selection start (row,column)
+               Point selEndPos = -1;   //selection end (row,column)
+
+               public bool SelectionInProgress { get { return selStartPos >= 0; }}
+               public void SetSelStartPos () {
+                       selStartPos = selEndPos = CurrentPosition;
+                       SelectionChanged.Raise (this, null);
+               }
+               public void SetSelEndPos () {
+                       selEndPos = CurrentPosition;
+                       SelectionChanged.Raise (this, null);
+               }
+               public void SetSelectionOnFullLines () {
+                       if (!SelectionInProgress)
+                               return;
+                       Point s = new Point (0, SelectionStart.Y);
+                       Point e = new Point (this [SelectionEnd.Y].Length, SelectionEnd.Y);
+                       selStartPos = s;
+                       selEndPos = e;
+                       SelectionChanged.Raise (this, null);
+               }
+               /// <summary>
+               /// Set selection in buffer to -1, empty selection
+               /// </summary>
+               public void ResetSelection () {
+                       selStartPos = selEndPos = -1;
+                       SelectionChanged.Raise (this, null);
+               }
+
+               public string SelectedText {
+                       get {
+                               if (SelectionIsEmpty)
+                                       return "";
+                               Point selStart = SelectionStart;
+                               Point selEnd = SelectionEnd;
+                               if (selStart.Y == selEnd.Y)
+                                       return this [selStart.Y].Content.Substring (selStart.X, selEnd.X - selStart.X);
+                               string tmp = "";
+                               tmp = this [selStart.Y].Content.Substring (selStart.X);
+                               for (int l = selStart.Y + 1; l < selEnd.Y; l++) {
+                                       tmp += Interface.LineBreak + this [l].Content;
+                               }
+                               tmp += Interface.LineBreak + this [selEnd.Y].Content.Substring (0, selEnd.X);
+                               return tmp;
+                       }
+               }
+               /// <summary>
+               /// ordered selection start and end positions in char units
+               /// </summary>
+               public Point SelectionStart     {
+                       get { return selEndPos < 0 || selStartPos.Y < selEndPos.Y ? selStartPos :
+                                       selStartPos.Y > selEndPos.Y ? selEndPos :
+                                       selStartPos.X < selEndPos.X ? selStartPos : selEndPos; }
+               }
+               public Point SelectionEnd {
+                       get { return selEndPos < 0 || selStartPos.Y > selEndPos.Y ? selStartPos :
+                                       selStartPos.Y < selEndPos.Y ? selEndPos :
+                                       selStartPos.X > selEndPos.X ? selStartPos : selEndPos; }
+               }
+               public bool SelectionIsEmpty
+               { get { return selEndPos == selStartPos; } }
+               int requestedColumn = -1;
+               /// <summary>
+               /// Current column in buffer coordinate, tabulation = 1 char
+               /// </summary>
+               public int CurrentColumn{
+                       get { return _currentCol; }
+                       set {
+                               if (value == _currentCol)
+                                       return;
+
+                               editMutex.EnterReadLock ();
+
+                               if (value < 0)
+                                       _currentCol = 0;
+                               else if (value > lines [_currentLine].Length)
+                                       _currentCol = lines [_currentLine].Length;
+                               else
+                                       _currentCol = value;
+
+                               requestedColumn = CurrentTabulatedColumn;
+
+                               editMutex.ExitReadLock ();
+
+                               PositionChanged.Raise (this, null);
+                       }
+               }
+               /// <summary>
+               /// Current row in buffer coordinate, tabulation = 1 char
+               /// </summary>
+               public int CurrentLine{
+                       get { return _currentLine; }
+                       set {
+                               if (value == _currentLine)
+                                       return;
+
+                               editMutex.EnterReadLock ();
+
+                               if (LineCount == 0)
+                                       _currentLine = 0;
+                               else if (value >= lines.Count)
+                                       _currentLine = lines.Count-1;
+                               else if (value < 0)
+                                       _currentLine = 0;
+                               else
+                                       _currentLine = value;
+//                             if (_currentCol < 0)
+//                                     requestedColumn = tabu _currentCol;
+                               int tabulatedRequestedCol = ConverteTabulatedPosOfCurLine(requestedColumn);
+                               if (requestedColumn > lines [_currentLine].PrintableLength)
+                                       _currentCol = lines [_currentLine].Length;
+                               else
+                                       //_currentCol = requestedColumn;
+                                       _currentCol = tabulatedRequestedCol;
+                               //Debug.WriteLine ("buff cur line: " + _currentLine);
+
+                               editMutex.ExitReadLock();
+
+                               PositionChanged.Raise (this, null);
+                       }
+               }
+               public CodeLine CurrentCodeLine {
+                       get { return this [_currentLine]; }
+               }
+               /// <summary>
+               /// Current position in buffer coordinate, tabulation = 1 char
+               /// </summary>
+               public Point CurrentPosition {
+                       get { return new Point(CurrentColumn, CurrentLine); }
+//                     set {
+//                             _currentCol = value.X;
+//                             _currentLine = value.Y;
+//                     }
+               }
+               /// <summary>
+               /// get char at current position in buffer
+               /// </summary>
+               protected Char CurrentChar { get { return lines [CurrentLine] [CurrentColumn]; } }
+
+               public void GotoWordStart(){
+                       if (this[CurrentLine].Length == 0)
+                               return;
+                       CurrentColumn--;
+                       //skip white spaces
+                       while (!char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn > 0)
+                               CurrentColumn--;
+                       while (char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn > 0)
+                               CurrentColumn--;
+                       if (!char.IsLetterOrDigit (this.CurrentChar))
+                               CurrentColumn++;
+               }
+               public void GotoWordEnd(){
+                       //skip white spaces
+                       if (CurrentColumn >= this [CurrentLine].Length - 1)
+                               return;
+                       while (!char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn < this [CurrentLine].Length-1)
+                               CurrentColumn++;
+                       while (char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn < this [CurrentLine].Length-1)
+                               CurrentColumn++;
+                       if (char.IsLetterOrDigit (this.CurrentChar))
+                               CurrentColumn++;
+               }
+               public void DeleteChar()
+               {
+                       editMutex.EnterWriteLock ();
+                       if (SelectionIsEmpty) {
+                               if (CurrentColumn == 0) {
+                                       if (CurrentLine == 0) {
+                                               editMutex.ExitWriteLock ();
+                                               return;
+                                       }
+                                       CurrentLine--;
+                                       CurrentColumn = this [CurrentLine].Length;
+                                       AppenedLine (CurrentLine, this [CurrentLine + 1].Content);
+                                       RemoveAt (CurrentLine + 1);
+                                       editMutex.ExitWriteLock ();
+                                       return;
+                               }
+                               CurrentColumn--;
+                               UpdateLine (CurrentLine, this [CurrentLine].Content.Remove (CurrentColumn, 1));
+                       } else {
+                               int linesToRemove = SelectionEnd.Y - SelectionStart.Y + 1;
+                               int l = SelectionStart.Y;
+
+                               if (linesToRemove > 0) {
+                                       UpdateLine (l, this [l].Content.Remove (SelectionStart.X, this [l].Length - SelectionStart.X) +
+                                       this [SelectionEnd.Y].Content.Substring (SelectionEnd.X, this [SelectionEnd.Y].Length - SelectionEnd.X));
+                                       l++;
+                                       for (int c = 0; c < linesToRemove - 1; c++)
+                                               RemoveAt (l);
+                                       CurrentLine = SelectionStart.Y;
+                                       CurrentColumn = SelectionStart.X;
+                               } else
+                                       UpdateLine (l, this [l].Content.Remove (SelectionStart.X, SelectionEnd.X - SelectionStart.X));
+                               CurrentColumn = SelectionStart.X;
+                               ResetSelection ();
+                       }
+                       editMutex.ExitWriteLock ();
+               }
+               /// <summary>
+               /// Insert new string at caret position, should be sure no line break is inside.
+               /// </summary>
+               /// <param name="str">String.</param>
+               public void Insert(string str)
+               {
+                       if (!SelectionIsEmpty)
+                               this.DeleteChar ();
+                       string[] strLines = Regex.Split (str, "\r\n|\r|\n|" + @"\\n").ToArray();
+                       UpdateLine (CurrentLine, this [CurrentLine].Content.Insert (CurrentColumn, strLines[0]));
+                       CurrentColumn += strLines[0].Length;
+                       for (int i = 1; i < strLines.Length; i++) {
+                               InsertLineBreak ();
+                               UpdateLine (CurrentLine, this [CurrentLine].Content.Insert (CurrentColumn, strLines[i]));
+                               CurrentColumn += strLines[i].Length;
+                       }
+               }
+               /// <summary>
+               /// Insert a line break.
+               /// </summary>
+               public void InsertLineBreak()
+               {
+                       if (CurrentColumn > 0) {
+                               Insert (CurrentLine + 1, this [CurrentLine].Content.Substring (CurrentColumn));
+                               UpdateLine (CurrentLine, this [CurrentLine].Content.Substring (0, CurrentColumn));
+                       } else
+                               Insert(CurrentLine, "");
+
+                       CurrentColumn = 0;
+                       CurrentLine++;
+               }
+               #endregion
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBufferEventArgs.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBufferEventArgs.cs
new file mode 100644 (file)
index 0000000..07dd25b
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+
+namespace Crow.Coding
+{
+       public class CodeBufferEventArgs : EventArgs {
+               public int LineStart;
+               public int LineCount;
+
+               public CodeBufferEventArgs(int lineNumber) {
+                       LineStart = lineNumber;
+                       LineCount = 1;
+               }
+               public CodeBufferEventArgs(int lineStart, int lineCount) {
+                       LineStart = lineStart;
+                       LineCount = lineCount;
+               }
+       }
+
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs
new file mode 100644 (file)
index 0000000..23f43fb
--- /dev/null
@@ -0,0 +1,82 @@
+using System;
+using System.Text;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Crow.Coding
+{
+       public class CodeLine
+       {
+               public string Content;
+               public List<Token> Tokens;
+               public int EndingState = 0;
+               public Node SyntacticNode;
+               public ParserException exception;
+
+               public CodeLine (string _content){
+                       Content = _content;
+                       Tokens = null;
+                       exception = null;
+               }
+
+               public char this[int i]
+               {
+                       get { return Content[i]; }
+                       set {
+                               if (Content [i] == value)
+                                       return;
+                               StringBuilder sb = new StringBuilder(Content);
+                               sb[i] = value;
+                               Content = sb.ToString();
+                               Tokens = null;
+                               //LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i));
+                       }
+               }
+               public bool IsFoldable { get { return SyntacticNode == null ? false :
+                               SyntacticNode.EndLine != SyntacticNode.StartLine && SyntacticNode.EndLine != null; } }
+               public int FoldingLevel { get { return IsFoldable ? SyntacticNode.Level : 0; } }
+               public bool IsFolded = false;
+               public bool IsParsed {
+                       get { return Tokens != null; }
+               }
+               public string PrintableContent {
+                       get {
+                               return string.IsNullOrEmpty (Content) ? "" : Content.Replace ("\t", new String (' ', Interface.TabSize));
+                       }
+               }
+               public int PrintableLength {
+                       get {
+                               return PrintableContent.Length;
+                       }
+               }
+               public int Length {
+                       get {
+                               return string.IsNullOrEmpty (Content) ? 0 : Content.Length;
+                       }
+               }
+               public int FirstNonBlankTokIndex {
+                       get { return Tokens == null ? -1 : Tokens.FindIndex (tk=>tk.Type != BufferParser.TokenType.WhiteSpace); }
+               }
+
+               public void SetLineInError (ParserException ex) {
+                       Tokens = null;
+                       exception = ex;
+               }
+
+//             public static implicit operator string(CodeLine sl) {
+//                     return sl == null ? "" : sl.Content;
+//             }
+               public static implicit operator CodeLine(string s) {
+                       return new CodeLine(s);
+               }
+               public static bool operator ==(string s1, CodeLine s2)
+               {
+                       return string.Equals (s1, s2.Content);
+               }
+               public static bool operator !=(string s1, CodeLine s2)
+               {
+                       return !string.Equals (s1, s2.Content);
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/Node.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/Node.cs
new file mode 100644 (file)
index 0000000..9db5542
--- /dev/null
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+
+namespace Crow.Coding
+{
+       public class Node
+       {
+               public Node Parent;
+               public string Name;
+               public string Type;
+               public CodeLine StartLine;
+               public CodeLine EndLine;
+               public Dictionary<string,string> Attributes = new Dictionary<string, string> ();
+
+               public List<Node> Children = new List<Node>();
+
+               public Node ()
+               {
+               }
+
+               public void AddChild (Node child) {
+                       child.Parent = this;
+                       Children.Add (child);
+               }
+
+               public int Level {
+                       get { return Parent == null ? 1 : Parent.Level + 1; } 
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("Name:{0}, Type:{1}\n\tparent:{2}", Name, Type, Parent);
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextBuffer.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextBuffer.cs
new file mode 100644 (file)
index 0000000..e8c8718
--- /dev/null
@@ -0,0 +1,527 @@
+//
+//  CodeTextBuffer.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2017 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+using System.Diagnostics;
+using System.Threading;
+using System.Text;
+
+namespace Crow.Text
+{
+       /// <summary>
+       /// Code buffer, lines are arranged in a List<string>, new line chars are removed during string.split on '\n...',
+       /// </summary>
+       public class TextBuffer
+       {
+               public ReaderWriterLockSlim editMutex = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
+               static Regex slb = new Regex ("\\n");//single char line break used internaly
+               Regex reghexLineBrk = new Regex(@"\r\n|\r|\n|\\\n");//original text line break regex
+
+               #region Events
+               public event EventHandler<TextBufferEventArgs> LineUpadateEvent;
+               public event EventHandler<TextBufferEventArgs> LineRemoveEvent;
+               public event EventHandler<TextBufferEventArgs> LineAdditionEvent;
+               public event EventHandler BufferCleared;
+               public event EventHandler SelectionChanged;
+               public event EventHandler PositionChanged;
+               #endregion
+
+               StringBuilder buffer = new StringBuilder();
+               string lineBreak = Interface.LineBreak;//detected linebreak kind in original source
+               List<int> lineLength = new List<int>();//line length table
+               /// <summary>
+               /// real position in char arrays, tab = 1 char
+               /// </summary>
+               int _currentLine = 0;
+               int _currentCol = 0;
+
+               /// <summary>
+               /// Gets the total line count.
+               /// </summary>
+               public int LineCount { get { return lineLength.Count;}}
+
+               /// <summary>
+               /// get a substring in the buffer
+               /// </summary>
+               /// <returns>a new string</returns>
+               /// <param name="idx">absolute index in the buffer</param>
+               /// <param name="length">length of the substring</param>
+               public string GetSubString (int idx, int length){
+                       return buffer.ToString (idx, length);
+               }
+               /// <summary>
+               /// Gets length of a line.
+               /// </summary>
+               /// <returns>length of line</returns>
+               /// <param name="lineIdx">line nuber</param>
+               public int GetLineLength (int lineIdx) {
+                       return lineLength [lineIdx];
+               }
+               /// <summary>
+               /// get a single charactere in the buffer
+               /// </summary>
+               /// <returns>a single char</returns>
+               /// <param name="idx">absolute index in the buffer</param>
+               public char GetCharAt (int idx){
+                       return buffer [idx];
+               }
+               /// <summary>
+               /// return full text with original line breaks
+               /// </summary>
+               /// <value>a string containing the full text</value>
+               public string FullText {
+                       get { return buffer.Replace("\n", lineBreak).ToString (); }
+                       set {
+                               Load (value);
+                       }
+               }
+               /// <summary>
+               /// Gets the buffer pointer of a line
+               /// </summary>
+               /// <returns>absolute index of the line in the buffer</returns>
+               /// <param name="i">line number</param>
+               public int GetBufferIndexOfLine (int i) {
+                       int ptr = 0;
+                       editMutex.EnterReadLock ();
+                       for (int j = 0; j < i; j++) {
+                               ptr += lineLength [j];
+                       }
+                       editMutex.ExitReadLock ();
+                       return ptr;
+               }
+               /// <summary>
+               /// Gets the buffer pointer for the current position 
+               /// </summary>
+               /// <value>absolute index in the buffer of current position</value>
+               public int BufferIndexOfCurrentPosition {
+                       get {return GetBufferIndexOfLine (_currentLine) + _currentCol;}
+               }
+               public int this[int i]
+               {
+                       get {                           
+                               int ptr = 0;
+                               editMutex.EnterReadLock ();
+                               for (int j = 0; j < i; j++) {
+                                       ptr += lineLength [j];
+                               }
+                               editMutex.ExitReadLock ();
+                               return ptr; 
+                       }
+               }
+               /// <summary>
+               /// remove line number i
+               /// </summary>
+               /// <param name="i">index of the line</param>
+               public void RemoveLine(int i){
+                       editMutex.EnterWriteLock ();
+                       buffer.Remove (GetBufferIndexOfLine (i), lineLength [i]);
+                       lineLength.RemoveAt (i);
+                       editMutex.ExitWriteLock ();
+                       LineRemoveEvent.Raise (this, new TextBufferEventArgs (i));
+               }
+               /// <summary>
+               /// insert string without linebreaks at position i in buff
+               /// </summary>
+               /// <param name="i">absolute index in the buffer</param>
+               /// <param name="str">linebreak free string</param>
+               public void InsertAt(int i, string str){
+                       editMutex.EnterWriteLock ();
+                       buffer.Insert (this [i], str);
+                       lineLength.Insert (i, str.Length);
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, new TextBufferEventArgs (i));
+               }
+               public void AddLine(string str){
+                       editMutex.EnterWriteLock ();
+                       if (lineLength.LastOrDefault() == 0) {
+                               buffer.Append (str);
+                               lineLength [lineLength.Count - 1] = str.Length;
+                               lineLength.Add (0);
+                       }
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, new TextBufferEventArgs (lineLength.Count - 1));
+               }
+               public void AddRange (string[] items){
+                       int start = lineLength.Count;
+                       editMutex.EnterWriteLock ();
+                       for (int i = 0; i < items.Length; i++)
+                               AddLine (items [i]);
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, new TextBufferEventArgs (start, items.Length));
+               }
+               public void Clear () {
+                       editMutex.EnterWriteLock ();
+                       lineLength.Clear ();
+                       buffer.Clear ();
+                       editMutex.ExitWriteLock ();
+                       BufferCleared.Raise (this, null);
+               }
+               public void UpdateLine(int i, string newContent){
+                       editMutex.EnterWriteLock ();
+                       int ptrL = this [i];
+                       buffer.Remove (ptrL, lineLength [i]);
+                       buffer.Insert (ptrL, newContent);
+                       lineLength [i] = newContent.Length;
+                       editMutex.ExitWriteLock ();
+                       LineUpadateEvent.Raise (this, new TextBufferEventArgs (i));
+               }
+               public void AppenedLine(int i, string newContent){
+                       editMutex.EnterWriteLock ();
+                       int ptr = this [i] + lineLength [i];
+                       if (i < LineCount - 1)
+                               ptr--;
+                       buffer.Insert(ptr, newContent);
+                       lineLength [i] += newContent.Length;
+                       editMutex.ExitWriteLock ();
+                       LineUpadateEvent.Raise (this, new TextBufferEventArgs (i));
+               }
+               /// <summary>
+               /// Insert new string at caret position, should be sure no line break is inside.
+               /// </summary>
+               /// <param name="str">String.</param>
+               public void InsertAt(string str)
+               {
+                       if (!SelectionIsEmpty)
+                               this.Delete ();
+
+                       editMutex.EnterWriteLock ();
+
+                       string tmp = reghexLineBrk.Replace (str, "\n");//use single char line break in buffer
+                       int buffPtr = this [CurrentLine] + CurrentColumn;
+                       buffer.Insert (buffPtr, tmp);
+
+                       int lPtr = CurrentLine, strPtr = 0;
+                       int remainingLength = lineLength [lPtr] - CurrentColumn;
+                       lineLength [lPtr] = CurrentColumn;
+                       foreach (Match match in slb.Matches(tmp))
+                       {
+                               lineLength [lPtr] += match.Index + 1 - strPtr;
+                               lPtr++;
+                               lineLength.Insert (lPtr, 0);
+                               strPtr = match.Index + 1;
+                               //CurrentLine++;
+                       }
+                       remainingLength += tmp.Length - strPtr; 
+                       lineLength [lPtr] += remainingLength;
+
+                       CurrentLine = lPtr;
+                       if (strPtr == 0)
+                               CurrentColumn += tmp.Length;
+                       else
+                               CurrentColumn = tmp.Length - strPtr;
+
+                       editMutex.ExitWriteLock ();
+                       if (strPtr>0)
+                               LineAdditionEvent.Raise (this, null);
+                       else
+                               LineUpadateEvent.Raise (this, null);
+               }
+               /// <summary>
+               /// Insert a line break.
+               /// </summary>
+               public void InsertLineBreak()
+               {
+                       editMutex.EnterWriteLock ();
+                       buffer.Insert (this [CurrentLine] + CurrentColumn, '\n');
+                       int lgdiff = lineLength [CurrentLine] - CurrentColumn;
+                       lineLength.Insert (CurrentLine + 1, lineLength [CurrentLine] - CurrentColumn);
+                       lineLength [CurrentLine] = CurrentColumn + 1;
+                       editMutex.ExitWriteLock ();
+                       LineAdditionEvent.Raise (this, null);
+                       CurrentColumn = 0;
+                       CurrentLine++;
+               }
+               public void Delete()
+               {
+                       editMutex.EnterWriteLock ();
+                       if (SelectionIsEmpty) {
+                               if (CurrentColumn == 0) {
+                                       if (CurrentLine == 0) {
+                                               editMutex.ExitWriteLock ();
+                                               return;
+                                       }
+
+                                       buffer.Remove (this [CurrentLine] - 1, 1);
+
+                                       int col = lineLength [CurrentLine - 1] - 1;
+                                       lineLength [CurrentLine - 1] += lineLength [CurrentLine] - 1;
+                                       lineLength.RemoveAt (CurrentLine);
+
+                                       CurrentLine--;
+                                       CurrentColumn = col;
+
+                                       editMutex.ExitWriteLock ();
+                                       LineRemoveEvent.Raise (this, null);
+                                       return;
+                               }
+                               CurrentColumn--;
+                               buffer.Remove (this [CurrentLine] + CurrentColumn, 1);
+                               lineLength [CurrentLine]--;
+                       } else {
+                               int linesToRemove = SelectionEnd.Y - SelectionStart.Y;
+                               int ptr = this [SelectionStart.Y] + SelectionStart.X;
+                               int length = lineLength [SelectionStart.Y] - SelectionStart.X;
+                               int l = 1;
+                               while (l <= linesToRemove ) {
+                                       length += lineLength [SelectionStart.Y + l];
+                                       l++;
+                               }
+                               length -= lineLength [SelectionEnd.Y] - SelectionEnd.X;
+                               buffer.Remove (ptr, length);
+                               lineLength [SelectionStart.Y] = SelectionStart.X + lineLength [SelectionEnd.Y] - SelectionEnd.X;
+                               lineLength.RemoveRange (SelectionStart.Y + 1, linesToRemove);
+
+                               CurrentLine = SelectionStart.Y;
+                               CurrentColumn = SelectionStart.X;
+                               ResetSelection ();
+
+                               if (linesToRemove > 0)
+                                       LineRemoveEvent.Raise (this, null);
+                               else
+                                       LineUpadateEvent.Raise (this, null);
+                       }
+                       editMutex.ExitWriteLock ();
+               }
+               public void Load(string rawSource) {
+                       this.Clear();
+
+                       if (string.IsNullOrEmpty (rawSource))
+                               return;
+
+                       lineBreak = reghexLineBrk.Match (rawSource).Value;//store original line break
+                       string tmp = reghexLineBrk.Replace (rawSource, "\n");//use single char line break in buffer
+                       int ptr = 0;
+                       foreach (Match match in slb.Matches(tmp))
+                       {
+                               int l = match.Index + 1;
+                               int lg = l - ptr;
+                               lineLength.Add (lg);
+                               ptr = l;
+                       }
+                       lineLength.Add (0);
+
+                       buffer = new StringBuilder (tmp);
+               }
+
+//             public int CurrentTabulatedColumn {
+//                     get {
+////                           return lines [_currentLine].Content.Substring (0, _currentCol).
+////                                   Replace ("\t", new String (' ', Interface.TabSize)).Length;
+//                     }
+//             }
+
+               #region moving cursor an selection
+               Point selStartPos = -1; //selection start (row,column)
+               Point selEndPos = -1;   //selection end (row,column)
+
+               public bool SelectionInProgress { get { return selStartPos >= 0; }}
+               public void SetSelStartPos () {
+                       selStartPos = selEndPos = CurrentPosition;
+                       SelectionChanged.Raise (this, null);
+               }
+               public void SetSelEndPos () {
+                       selEndPos = CurrentPosition;
+                       SelectionChanged.Raise (this, null);
+               }
+               /// <summary>
+               /// Set selection in buffer to -1, empty selection
+               /// </summary>
+               public void ResetSelection () {
+                       selStartPos = selEndPos = -1;
+                       SelectionChanged.Raise (this, null);
+               }
+               /// <summary>
+               /// ordered selection start and end positions in char units
+               /// </summary>
+               public Point SelectionStart     {
+                       get { return selEndPos < 0 || selStartPos.Y < selEndPos.Y ? selStartPos :
+                                       selStartPos.Y > selEndPos.Y ? selEndPos :
+                                       selStartPos.X < selEndPos.X ? selStartPos : selEndPos; }
+               }
+               public Point SelectionEnd {
+                       get { return selEndPos < 0 || selStartPos.Y > selEndPos.Y ? selStartPos :
+                                       selStartPos.Y < selEndPos.Y ? selEndPos :
+                                       selStartPos.X > selEndPos.X ? selStartPos : selEndPos; }
+               }
+               public bool SelectionIsEmpty
+               { get { return selEndPos == selStartPos; } }
+               /// <summary>
+               /// Current column in buffer coordinate, tabulation = 1 char
+               /// </summary>
+               public int CurrentColumn{
+                       get { return _currentCol; }
+                       set {
+                               if (value == _currentCol)
+                                       return;
+
+                               editMutex.EnterWriteLock ();
+
+                               if (value < 0)
+                                       _currentCol = 0;
+                               else if (value >= lineLength [_currentLine]) {
+                                       if (_currentLine < LineCount -1 && value > lineLength [_currentLine] - 1)
+                                               _currentCol = lineLength [_currentLine] - 1;
+                                       else
+                                               _currentCol = lineLength [_currentLine];
+                               }else
+                                       _currentCol = value;
+
+                               editMutex.ExitWriteLock ();
+
+                               PositionChanged.Raise (this, null);
+                       }
+               }
+               /// <summary>
+               /// Current row in buffer coordinate, tabulation = 1 char
+               /// </summary>
+               public int CurrentLine{
+                       get { return _currentLine; }
+                       set {
+                               if (value == _currentLine)
+                                       return;
+
+                               editMutex.EnterWriteLock ();
+
+                               if (value >= lineLength.Count)
+                                       _currentLine = lineLength.Count-1;
+                               else if (value < 0)
+                                       _currentLine = 0;
+                               else
+                                       _currentLine = value;
+
+                               int c = _currentCol;
+                               _currentCol = 0;
+                               CurrentColumn = c;
+
+                               editMutex.ExitWriteLock();
+
+                               PositionChanged.Raise (this, null);
+                       }
+               }
+               /// <summary>
+               /// Current position in buffer coordinate, tabulation = 1 char
+               /// </summary>
+               public Point CurrentPosition {
+                       get { return new Point(CurrentColumn, CurrentLine); }
+               }
+               /// <summary>
+               /// get char at current position in buffer
+               /// </summary>
+               protected Char CurrentChar { get { return buffer[this [CurrentLine]]; } }
+               public string SelectedText {
+                       get {
+                               if (SelectionIsEmpty)
+                                       return "";
+                               Point selStart = SelectionStart;
+                               Point selEnd = SelectionEnd;
+
+                               int ptr = this [selStart.Y] + selStart.X;
+                               int length = lineLength[selStart.Y] - selStart.X;
+                               for (int i = selStart.Y+1; i <= selEnd.Y; i++) 
+                                       length += lineLength [i];
+                               length -= lineLength[selEnd.Y] - selEnd.X;
+
+                               return buffer.ToString (ptr, length);
+                       }
+               }
+
+               public void GotoWordStart(){
+                       if (_currentCol == 0)
+                               MoveLeft ();
+                       if (_currentCol == 0)
+                               return;
+                       int ptrStart = BufferIndexOfCurrentPosition;
+                       int ptr = ptrStart;
+                       char c;
+                       //skip white spaces
+                       do {
+                               ptr--;
+                               c = this.GetCharAt (ptr);
+                       } while (!char.IsLetterOrDigit (c) && c != '\n' && ptr > 1);
+                               
+                       do {
+                               ptr--;
+                               c = this.GetCharAt (ptr);
+                       } while (char.IsLetterOrDigit (c) && c != '\n' && ptr > 1);
+
+                       if (ptr == 0)
+                               CurrentColumn = 0;
+                       else
+                               CurrentColumn -= ptrStart - ptr - 1;            
+               }
+               public void GotoWordEnd(){
+                       int limx = GetLineLength (_currentLine);
+                       if (_currentLine < lineLength.Count - 1)
+                               limx--;
+                       
+                       if (_currentCol == limx) {
+                               MoveRight ();
+                               limx = GetLineLength (_currentLine);
+                               if (_currentLine < lineLength.Count - 1)
+                                       limx--;                         
+                       }
+
+                       int ptrLine = GetBufferIndexOfLine(_currentLine);
+                       int ptrCol = _currentCol;
+
+                       char c;
+                       //skip white spaces
+                       do {                            
+                               c = GetCharAt (ptrLine+ptrCol);
+                               ptrCol++;
+                       } while (!char.IsLetterOrDigit (c) && ptrCol < limx);
+
+                       do {
+                               c = GetCharAt (ptrLine + ptrCol);
+                               ptrCol++;
+                       } while (char.IsLetterOrDigit (c) && ptrCol < limx);
+                       CurrentColumn = ptrCol - 1;
+               }
+               /// <summary>
+               /// Moves cursor one char to the left, move up if cursor reaches start of line
+               /// </summary>
+               public void MoveLeft(){
+                       if (CurrentColumn == 0) {
+                               CurrentLine--;
+                               CurrentColumn = int.MaxValue;
+                       } else
+                               CurrentColumn--;                        
+               }
+               /// <summary>
+               /// Moves cursor one char to the right, move down if cursor reaches end of line
+               /// </summary>
+               public void MoveRight(){
+                       if (_currentLine < LineCount -1){
+                               if (CurrentColumn >= lineLength [CurrentLine] - 1) {
+                                       CurrentColumn = 0;
+                                       CurrentLine++;
+                                       return;
+                               }
+                       }
+                       CurrentColumn++;
+               }
+
+               #endregion
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextBufferEventArgs.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextBufferEventArgs.cs
new file mode 100644 (file)
index 0000000..3b67bb1
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+
+namespace Crow.Text
+{
+       public class TextBufferEventArgs : EventArgs {
+               public int LineStart;
+               public int LineCount;
+
+               public TextBufferEventArgs(int lineNumber) {
+                       LineStart = lineNumber;
+                       LineCount = 1;
+               }
+               public TextBufferEventArgs(int lineStart, int lineCount) {
+                       LineStart = lineStart;
+                       LineCount = lineCount;
+               }
+       }
+
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextEditor.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextEditor.cs
new file mode 100644 (file)
index 0000000..8b16b9a
--- /dev/null
@@ -0,0 +1,699 @@
+//
+// ScrollingTextBox.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+
+using System;
+using System.ComponentModel;
+using vkvg;
+
+namespace Crow.Text
+{
+       /// <summary>
+       /// Scrolling text box optimized for monospace fonts, for coding
+       /// </summary>
+       public class TextEditor : Crow.Coding.Editor
+       {               
+               #region CTOR
+               public TextEditor (): base()
+               {                       
+                       buffer = new TextBuffer ();
+                       buffer.LineUpadateEvent += Buffer_LineUpadateEvent;
+                       buffer.LineAdditionEvent += Buffer_LineAdditionEvent;;
+                       buffer.LineRemoveEvent += Buffer_LineRemoveEvent;
+                       buffer.BufferCleared += Buffer_BufferCleared;
+                       buffer.SelectionChanged += Buffer_SelectionChanged;
+                       buffer.PositionChanged += Buffer_PositionChanged;
+                       //buffer.Add ("");
+               }
+               #endregion
+
+               string oldSource = "";
+               volatile bool isDirty = false;
+
+               #region private and protected fields
+               int visibleLines = 1;
+               int visibleColumns = 1;
+
+               TextBuffer buffer;
+
+               Color selBackground;
+               Color selForeground;
+               int selStartCol;
+               int selEndCol;
+
+               protected Rectangle rText;
+               protected FontExtents fe;
+               protected TextExtents te;
+
+               Point mouseLocalPos;
+               bool doubleClicked = false;
+               #endregion
+
+               /// <summary>
+               /// Updates visible line in widget, adapt max scroll y and updatePrintedLines
+               /// </summary>
+               void updateVisibleLines(){
+                       visibleLines = (int)Math.Floor ((double)ClientRectangle.Height / (fe.Ascent+fe.Descent));
+                       NotifyValueChanged ("VisibleLines", visibleLines);
+                       updateMaxScrollY ();
+                       RegisterForGraphicUpdate ();
+//                     System.Diagnostics.Debug.WriteLine ("update visible lines: " + visibleLines);
+//                     System.Diagnostics.Debug.WriteLine ("update MaxScrollY: " + MaxScrollY);
+               }
+               void updateVisibleColumns(){
+                       visibleColumns = (int)Math.Floor ((double)(ClientRectangle.Width)/ fe.MaxXAdvance);
+                       NotifyValueChanged ("VisibleColumns", visibleColumns);
+                       RegisterForGraphicUpdate ();
+//                     System.Diagnostics.Debug.WriteLine ("update visible columns: {0} leftMargin:{1}",visibleColumns, leftMargin);
+//                     System.Diagnostics.Debug.WriteLine ("update MaxScrollX: " + MaxScrollX);
+               }
+               void updateMaxScrollX (int longestTabulatedLineLength) {                        
+                       MaxScrollX = Math.Max (0, longestTabulatedLineLength - visibleColumns);
+                       if (longestTabulatedLineLength > 0)
+                               NotifyValueChanged ("ChildWidthRatio", Slot.Width * visibleColumns / longestTabulatedLineLength);
+               }
+               void updateMaxScrollY () {                      
+                       int lc = buffer.LineCount;
+                       MaxScrollY = Math.Max (0, lc - visibleLines);
+                       if (lc > 0)
+                               NotifyValueChanged ("ChildHeightRatio", Slot.Height * visibleLines / lc);
+                       
+               }                       
+
+
+
+               #region Editor overrides
+               protected override void updateEditorFromProjFile ()
+               {
+                       buffer.editMutex.EnterWriteLock ();
+                       loadSource ();
+                       buffer.editMutex.ExitWriteLock ();
+
+                       isDirty = false;
+                       oldSource = projFile.Source;
+                       projFile.RegisteredEditors [this] = true;
+               }
+               protected override void updateProjFileFromEditor ()
+               {
+                       buffer.editMutex.EnterWriteLock ();
+                       string newsrc = buffer.FullText;
+                       buffer.editMutex.ExitWriteLock ();
+                       projFile.UpdateSource (this, newsrc);
+               }
+               protected override bool EditorIsDirty {
+                       get { return isDirty; }
+                       set { isDirty = value; }
+               }
+               protected override bool IsReady {
+                       get { return projFile != null && buffer != null; }
+               }
+               #endregion
+
+               #region Buffer events handlers
+               void Buffer_BufferCleared (object sender, EventArgs e)
+               {
+                       editorMutex.EnterWriteLock ();
+
+                       MaxScrollX = MaxScrollY = 0;
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+                       isDirty = true;
+
+                       editorMutex.ExitWriteLock ();
+               }
+               void Buffer_LineAdditionEvent (object sender, TextBufferEventArgs e)
+               {
+                       updateMaxScrollY ();
+                       RegisterForGraphicUpdate ();
+                       isDirty = true;
+               }
+               void Buffer_LineRemoveEvent (object sender, TextBufferEventArgs e)
+               {
+                       updateMaxScrollY ();
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+                       isDirty = true;
+               }
+               void Buffer_LineUpadateEvent (object sender, TextBufferEventArgs e)
+               {
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+                       isDirty = true;
+               }
+               void Buffer_PositionChanged (object sender, EventArgs e)
+               {                       
+                       int cc = getTabulatedColumn (buffer.CurrentPosition);
+
+                       if (cc > visibleColumns + ScrollX) {
+                               ScrollX = cc - visibleColumns;
+                       } else if (cc < ScrollX)
+                               ScrollX = cc;
+
+                       if (buffer.CurrentLine >= visibleLines + ScrollY - 1)
+                               ScrollY = buffer.CurrentLine - visibleLines + 1;
+                       else if (buffer.CurrentLine < ScrollY)
+                               ScrollY = buffer.CurrentLine;
+                       
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+               }
+
+               void Buffer_SelectionChanged (object sender, EventArgs e)
+               {
+                       RegisterForGraphicUpdate ();
+               }
+               #endregion
+
+               void notifyPositionChanged (){
+                       try {                           
+                               NotifyValueChanged ("CurrentLine", buffer.CurrentLine+1);
+                               NotifyValueChanged ("CurrentColumn", buffer.CurrentColumn+1);
+                       } catch (Exception ex) {
+                               Console.WriteLine (ex.ToString ());
+                       }
+               }
+                       
+               #region Public Crow Properties
+               public int CurrentLine{
+                       get { return buffer == null ? 0 : buffer.CurrentLine+1; }
+                       set {
+                               try {
+                                       int l = value - 1;
+                                       if (l == buffer.CurrentLine)
+                                               return;
+                                       buffer.CurrentLine = l;                                                                 
+                               } catch (Exception ex) {                                        
+                                       Console.WriteLine ("Error cur column: " + ex.ToString ());
+                               }
+                       }
+               }
+               public int CurrentColumn{
+                       get { return buffer == null ? 0 : buffer.CurrentColumn+1; }
+                       set {
+                               try {                                   
+                                       if (value - 1 == buffer.CurrentColumn)
+                                               return;
+                                       buffer.CurrentColumn = value - 1;
+                               } catch (Exception ex) {                                        
+                                       Console.WriteLine ("Error cur column: " + ex.ToString ());
+                               }
+                       }
+               }
+               [DefaultValue("Blue")]
+               public virtual Color SelectionBackground {
+                       get { return selBackground; }
+                       set {
+                               if (value == selBackground)
+                                       return;
+                               selBackground = value;
+                               NotifyValueChanged ("SelectionBackground", selBackground);
+                               RegisterForRedraw ();
+                       }
+               }
+               [DefaultValue("White")]
+               public virtual Color SelectionForeground {
+                       get { return selForeground; }
+                       set {
+                               if (value == selForeground)
+                                       return;
+                               selForeground = value;
+                               NotifyValueChanged ("SelectionForeground", selForeground);
+                               RegisterForRedraw ();
+                       }
+               }
+               public override int ScrollY {
+                       get {
+                               return base.ScrollY;
+                       }
+                       set {
+                               if (value == base.ScrollY)
+                                       return;
+                               editorMutex.EnterWriteLock ();
+                               base.ScrollY = value;
+                               editorMutex.ExitWriteLock ();
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               #endregion
+
+
+               void loadSource () {
+                       buffer.Load (projFile.Source);
+                       projFile.RegisteredEditors [this] = true;
+                       updateMaxScrollY ();
+                       RegisterForGraphicUpdate ();
+               }
+
+               int getTabulatedColumn (int col, int line) {
+                       return buffer.GetSubString (buffer [line],
+                               buffer.GetLineLength (line)).Substring(0,col).Replace ("\t", new String (' ', Interface.TabSize)).Length;
+               }
+               int getTabulatedColumn (Point pos) {
+                       return getTabulatedColumn (pos.X,pos.Y);
+               }
+
+               #region Drawing
+               void drawLines(Context gr, Rectangle cb) {
+                       int longestTabulatedLine = 0;
+                       for (int i = 0; i < visibleLines; i++) {
+                               int lineIndex = i + ScrollY;
+                               if (lineIndex >= buffer.LineCount)//TODO:need optimize
+                                       break;                                                  
+
+                               double y = cb.Y + (fe.Ascent+fe.Descent) * i, x = cb.X;
+
+                               int lineLength = buffer.GetLineLength (lineIndex);
+                               if (lineIndex < buffer.LineCount - 1)//dont print line break
+                                       lineLength--;
+                               string lstr = buffer.GetSubString (buffer [lineIndex],
+                                       lineLength).Replace ("\t", new String (' ', Interface.TabSize));
+
+                               int lstrLength = lstr.Length;
+                               if (lstrLength > longestTabulatedLine)
+                                       longestTabulatedLine = lstrLength;
+                               
+                               if (ScrollX < lstrLength)
+                                       lstr = lstr.Substring (ScrollX);
+                               else
+                                       lstr = "";
+
+                               gr.MoveTo (x, y + fe.Ascent);
+                               gr.ShowText (lstr);
+                               gr.Fill ();
+
+                               if (!buffer.SelectionIsEmpty && lineIndex >= buffer.SelectionStart.Y && lineIndex <= buffer.SelectionEnd.Y) {
+                                       double rLineX = x,
+                                       rLineY = y,
+                                       rLineW = lstr.Length * fe.MaxXAdvance;
+
+                                       if (lineIndex == buffer.SelectionStart.Y) {
+                                               rLineX += (selStartCol - ScrollX) * fe.MaxXAdvance;
+                                               rLineW -= (selStartCol - ScrollX) * fe.MaxXAdvance;
+                                       }
+                                       if (lineIndex == buffer.SelectionEnd.Y)
+                                               rLineW -= (lstr.Length - selEndCol + ScrollX) * fe.MaxXAdvance;
+
+                                       gr.Save ();
+                                       gr.Operator = Operator.Source;
+                                       gr.Rectangle (rLineX, rLineY, rLineW, (fe.Ascent+fe.Descent));
+                                       gr.SetSourceColor (SelectionBackground);
+                                       gr.FillPreserve ();
+                                       gr.Clip ();
+                                       gr.Operator = Operator.Over;
+                                       gr.SetSourceColor (SelectionForeground);
+                                       gr.MoveTo (x, y + fe.Ascent);
+                                       gr.ShowText (lstr);
+                                       gr.Fill ();
+                                       gr.Restore ();
+                               }       
+                       
+                       
+                       }               
+               
+                       updateMaxScrollX(longestTabulatedLine);
+               }
+               #endregion
+
+               #region GraphicObject overrides
+               public override Font Font {
+                       get { return base.Font; }
+                       set {
+                               base.Font = value;
+
+                               using (Surface img = new Surface (IFace.dev, 1, 1)) {
+                                       using (Context gr = new Context (img)) {
+                                               gr.FontFace = Font.Name;
+                                               gr.FontSize = (uint)Font.Size;
+
+                                               fe = gr.FontExtents;
+                                       }
+                               }
+                               MaxScrollY = 0;
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               protected override int measureRawSize(LayoutingType lt)
+               {
+                       if (lt == LayoutingType.Height)
+                               return (int)Math.Ceiling((fe.Ascent+fe.Descent) * buffer.LineCount) + Margin * 2;
+
+                       return 0;// (int)(fe.MaxXAdvance * buffer.GetLineLength(buffer.longestLineIdx)) + Margin * 2;
+               }
+               public override void OnLayoutChanges (LayoutingType layoutType)
+               {
+                       base.OnLayoutChanges (layoutType);
+
+                       if (layoutType == LayoutingType.Height)
+                               updateVisibleLines ();
+                       else if (layoutType == LayoutingType.Width)
+                               updateVisibleColumns ();
+               }
+
+               protected override void onDraw (Context gr)
+               {
+                       base.onDraw (gr);
+
+                       gr.FontFace = Font.Name;
+                       gr.FontSize = (uint)Font.Size;
+                       //gr.FontOptions = Interface.FontRenderingOptions;
+                       //gr.Antialias = Interface.Antialias;
+
+                       Rectangle cb = ClientRectangle;
+
+                       Foreground.SetAsSource (gr);
+
+                       buffer.editMutex.EnterReadLock ();
+                       editorMutex.EnterReadLock ();
+
+                       #region draw text cursor
+                       if (buffer.SelectionInProgress){
+                               selStartCol = getTabulatedColumn (buffer.SelectionStart);
+                               selEndCol = getTabulatedColumn (buffer.SelectionEnd);
+                       }else if (HasFocus && CurrentLine >= 0){
+                               gr.LineWidth = 1.0;
+                               double cursorX = cb.X + (getTabulatedColumn(buffer.CurrentPosition) - ScrollX) * fe.MaxXAdvance ;
+                               double cursorY = cb.Y + (buffer.CurrentLine - ScrollY) * (fe.Ascent+fe.Descent);
+                               gr.MoveTo (0.5 + cursorX, cursorY);
+                               gr.LineTo (0.5 + cursorX, cursorY + fe.Ascent+fe.Descent);
+                               gr.Stroke();
+                       }
+                       #endregion
+
+                       drawLines (gr, cb);
+
+                       editorMutex.ExitReadLock ();
+
+                       buffer.editMutex.ExitReadLock ();
+
+               }
+               #endregion
+
+               int getBufferColFromVisualCol (int line, int column) {
+                       int i = 0;
+                       int buffCol = 0;
+                       int buffPtr = buffer [line];
+                       while (i < column && buffCol < buffer.GetLineLength(line)) {
+                               if (buffer.GetCharAt(buffPtr + buffCol) == '\t')
+                                       i += Interface.TabSize;
+                               else
+                                       i++;
+                               buffCol++;
+                       }
+                       return buffCol;
+               }
+
+
+               #region Mouse handling
+
+               int hoverLine = -1;
+               public int HoverLine {
+                       get { return hoverLine; }
+                       set { 
+                               if (hoverLine == value)
+                                       return;
+                               hoverLine = value;
+                               NotifyValueChanged ("HoverLine", hoverLine);                            
+                       }
+               }
+               void updateHoverLine () {
+//                     int hvl = (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent)));
+//                     hvl = Math.Min (PrintedLines.Count, hvl);
+//                     HoverLine = buffer.IndexOf (PrintedLines[hvl]);
+               }
+               void updateCurrentPosFromMouseLocalPos(){                       
+                       
+                       buffer.CurrentLine = ScrollY + (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent)));
+                       int curVisualCol = ScrollX +  (int)Math.Round ((mouseLocalPos.X) / fe.MaxXAdvance);
+                       buffer.CurrentColumn = getBufferColFromVisualCol (buffer.CurrentLine, curVisualCol);
+               }
+
+               public override void onMouseEnter (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseEnter (sender, e);
+                       IFace.MouseCursor = MouseCursor.IBeam;
+               }
+               public override void onMouseLeave (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseLeave (sender, e);
+                       IFace.MouseCursor = MouseCursor.Arrow;
+               }
+               public override void onMouseMove (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseMove (sender, e);
+
+                       mouseLocalPos = e.Position - ScreenCoordinates(Slot).TopLeft - ClientRectangle.TopLeft;
+
+                       updateHoverLine ();
+
+                       if (e.Mouse.LeftButton == ButtonState.Released || !buffer.SelectionInProgress)
+                               return;
+
+                       //mouse is down
+                       updateCurrentPosFromMouseLocalPos();
+                       buffer.SetSelEndPos ();
+               }
+               public override void onMouseDown (object sender, MouseButtonEventArgs e)
+               {
+                       if (!Focusable)
+                               return;
+
+                       base.onMouseDown (sender, e);
+
+                       if (doubleClicked) {
+                               doubleClicked = false;
+                               return;
+                       }
+
+                       updateCurrentPosFromMouseLocalPos ();
+                       buffer.SetSelStartPos ();
+               }
+               public override void onMouseUp (object sender, MouseButtonEventArgs e)
+               {
+                       base.onMouseUp (sender, e);
+
+                       if (buffer.SelectionIsEmpty)
+                               buffer.ResetSelection ();
+               }
+
+               public override void onMouseDoubleClick (object sender, MouseButtonEventArgs e)
+               {
+                       //doubleClicked = true;
+                       base.onMouseDoubleClick (sender, e);
+
+                       buffer.GotoWordStart ();
+                       buffer.SetSelStartPos ();
+                       buffer.GotoWordEnd ();
+                       buffer.SetSelEndPos ();
+               }
+
+               public override void onMouseWheel (object sender, MouseWheelEventArgs e)
+               {
+                       base.onMouseWheel (sender, e);
+               }
+               #endregion
+
+               #region Keyboard handling
+               public override void onKeyDown (object sender, KeyEventArgs e)
+               {
+                       //base.onKeyDown (sender, e);
+
+                       Key key = e.Key;
+
+                       if (IFace.Ctrl) {
+                               switch (key) {
+                               case Key.S:
+                                       projFile.Save ();
+                                       break;
+                               case Key.W:
+                                       editorMutex.EnterWriteLock ();
+                                       if (IFace.Shift)
+                                               projFile.Redo (null);
+                                       else
+                                               projFile.Undo (null);
+                                       editorMutex.ExitWriteLock ();
+                                       break;
+                               default:
+                                       Console.WriteLine ("");
+                                       break;
+                               }
+                       }
+
+                       switch (key)
+                       {
+                       case Key.Backspace:
+                               buffer.Delete ();
+                               break;
+                       case Key.Delete:
+                               if (buffer.SelectionIsEmpty)
+                                       buffer.MoveRight ();
+//                             else if (e.Shift)
+//                                     IFace.Clipboard = buffer.SelectedText;
+                               buffer.Delete ();
+                               break;
+                       case Key.Enter:
+                       case Key.KeypadEnter:
+                               if (!buffer.SelectionIsEmpty)
+                                       buffer.Delete ();
+                               buffer.InsertLineBreak ();
+                               break;
+                       case Key.Escape:
+                               buffer.ResetSelection ();
+                               break;
+                       case Key.Home:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.CurrentLine = 0;
+                                       buffer.CurrentColumn = 0;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.CurrentLine = 0;
+                               buffer.CurrentColumn = 0;
+                               break;
+                       case Key.End:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.CurrentLine = int.MaxValue;
+                                       buffer.CurrentColumn = int.MaxValue;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.CurrentLine = int.MaxValue;
+                               buffer.CurrentColumn = int.MaxValue;
+                               break;
+                       case Key.Insert:
+                               if (IFace.Shift)
+                                       buffer.InsertAt (IFace.Clipboard);
+                               else if (IFace.Ctrl && !buffer.SelectionIsEmpty)
+                                       IFace.Clipboard = buffer.SelectedText;
+                               break;
+                       case Key.Left:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.GotoWordStart ();
+                                       else
+                                               buffer.MoveLeft ();
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.GotoWordStart ();
+                               else
+                                       buffer.MoveLeft();
+                               break;
+                       case Key.Right:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.GotoWordEnd ();
+                                       else
+                                               buffer.MoveRight ();
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.GotoWordEnd ();
+                               else
+                                       buffer.MoveRight ();
+                               break;
+                       case Key.Up:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       CurrentLine--;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               CurrentLine--;
+                               break;
+                       case Key.Down:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       CurrentLine++;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               CurrentLine++;
+                               break;
+                       case Key.Menu:
+                               break;
+                       case Key.NumLock:
+                               break;
+                       case Key.PageDown:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       CurrentLine += visibleLines;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               CurrentLine += visibleLines;
+                               break;
+                       case Key.PageUp:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       CurrentLine -= visibleLines;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               CurrentLine -= visibleLines;
+                               break;
+                       case Key.Tab:
+                               buffer.InsertAt ("\t");
+                               break;
+                       default:
+                               break;
+                       }
+                       RegisterForGraphicUpdate();
+               }
+               public override void onKeyPress (object sender, KeyPressEventArgs e)
+               {
+                       base.onKeyPress (sender, e);
+
+                       buffer.InsertAt (e.KeyChar.ToString());
+                       buffer.ResetSelection ();
+               }
+               #endregion
+       }
+}
\ No newline at end of file
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextFormatting.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextFormatting.cs
new file mode 100644 (file)
index 0000000..f7b2e51
--- /dev/null
@@ -0,0 +1,19 @@
+using System;
+
+namespace Crow.Coding
+{
+       public struct TextFormatting {
+               public Color Foreground;
+               public Color Background;
+               public bool Bold;
+               public bool Italic;
+
+               public TextFormatting(Color fg, Color bg, bool bold = false, bool italic = false){
+                       Foreground = fg;
+                       Background = bg;
+                       Bold = bold;
+                       Italic = italic;
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/Token.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/Token.cs
new file mode 100644 (file)
index 0000000..8b4df5e
--- /dev/null
@@ -0,0 +1,71 @@
+//
+//  Token.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2017 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+
+namespace Crow.Coding
+{
+       public struct Token
+       {
+               public BufferParser.TokenType Type;
+               public string Content;
+               public Point Start;
+               public Point End;
+
+               public string PrintableContent {
+                       get { return string.IsNullOrEmpty(Content) ? "" : Content.Replace("\t", new String(' ', Interface.TabSize)); }
+               }
+
+//             public Token (TokenType tokType, string content = ""){
+//                     Type = tokType;
+//                     Content = content;
+//             }
+
+               public bool IsNull { get { return IsEmpty && Type == BufferParser.TokenType.Unknown; }}
+               public bool IsEmpty { get { return string.IsNullOrEmpty(Content); }}
+
+               public static bool operator == (Token t, System.Enum tt){
+                       return Convert.ToInt32(t.Type) == Convert.ToInt32(tt);
+               }
+               public static bool operator != (Token t, System.Enum tt){
+                       return Convert.ToInt32(t.Type) != Convert.ToInt32(tt);
+               }
+               public static bool operator == (System.Enum tt, Token t){
+                       return Convert.ToInt32(t.Type) == Convert.ToInt32(tt);
+               }
+               public static bool operator != (System.Enum tt, Token t){
+                       return Convert.ToInt32(t.Type) != Convert.ToInt32(tt);
+               }
+
+               public static Token operator +(Token t, char c){
+                       t.Content += c;
+                       return t;
+               }
+               public static Token operator +(Token t, string s){
+                       t.Content += s;
+                       return t;
+               }
+               public override string ToString ()
+               {
+                       return string.Format ("[Tok{2}->{3}:{0}: {1}]", Type,Content,Start,End);
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/EditPane.cs b/Samples/CrowIDE/src/Editors/EditPane.cs
new file mode 100644 (file)
index 0000000..a75522f
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// EditPane.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using Crow;
+using System.Linq;
+
+namespace Crow.Coding
+{
+       public class EditPane : TemplatedGroup
+       {
+               public EditPane () {}
+
+               object selectedItemElement = null;
+
+               public override int SelectedIndex {
+                       get {
+                               return base.SelectedIndex;
+                       }
+                       set {
+                               base.SelectedIndex = value;
+                       }
+               }
+               public object SelectedItemElement {
+                       get { return selectedItemElement; }
+                       set {
+                               if (selectedItemElement == value)
+                                       return;
+                               selectedItemElement = value;
+                               NotifyValueChanged ("SelectedItemElement", selectedItemElement);
+                       }
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/Editor.cs b/Samples/CrowIDE/src/Editors/Editor.cs
new file mode 100644 (file)
index 0000000..102debb
--- /dev/null
@@ -0,0 +1,105 @@
+//
+// Editor.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Threading;
+using System.Xml.Serialization;
+
+namespace Crow.Coding
+{
+       public abstract class Editor : ScrollingObject
+       {
+               #region CTOR
+               protected Editor ():base(){
+                       Thread t = new Thread (backgroundThreadFunc);
+                       t.IsBackground = true;
+                       t.Start ();
+               }
+               #endregion
+
+               protected ReaderWriterLockSlim editorMutex = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
+               protected ProjectFile projFile = null;
+               Exception error = null;
+
+               public virtual ProjectFile ProjectNode
+               {
+                       get { return projFile; }
+                       set
+                       {
+                               if (projFile == value)
+                                       return;
+
+                               if (projFile != null)
+                                       projFile.UnregisterEditor (this);
+
+                               projFile = value;
+
+                               if (projFile != null)                                   
+                                       projFile.RegisterEditor (this);
+
+                               NotifyValueChanged ("ProjectNode", projFile);
+                       }
+               }
+               [XmlIgnore]public Exception Error {
+                       get { return error; }
+                       set {
+                               if (error == value)
+                                       return;
+                               error = value;
+                               NotifyValueChanged ("Error", error);
+                               NotifyValueChanged ("HasError", HasError);
+                       }
+               }
+               [XmlIgnore]public bool HasError {
+                       get { return error != null; }
+               }
+
+               protected abstract void updateEditorFromProjFile ();
+               protected abstract void updateProjFileFromEditor ();
+               protected abstract bool EditorIsDirty { get; set; }
+               protected virtual bool IsReady { get { return true; }}
+               protected virtual void updateCheckPostProcess () {}
+
+               protected void backgroundThreadFunc () {
+                       while (true) {
+                               if (IsReady) {
+                                       if (Monitor.TryEnter (IFace.UpdateMutex)) {
+                                               if (!projFile.RegisteredEditors [this]) {
+                                                       projFile.RegisteredEditors [this] = true;
+                                                       updateEditorFromProjFile ();
+                                               } else if (EditorIsDirty) {
+                                                       EditorIsDirty = false;
+                                                       updateProjFileFromEditor ();
+                                               }
+                                               updateCheckPostProcess ();
+                                               Monitor.Exit (IFace.UpdateMutex);
+                                       }
+                               }
+                               Thread.Sleep (100);
+                       }       
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/ImlSchematicEditor.cs b/Samples/CrowIDE/src/Editors/ImlSchematicEditor.cs
new file mode 100644 (file)
index 0000000..64541c9
--- /dev/null
@@ -0,0 +1,132 @@
+//
+//  ImlVisualEditor.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2016 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+using Crow;
+using System.Threading;
+using System.Xml.Serialization;
+using System.ComponentModel;
+using System.IO;
+using System.Collections.Generic;
+using Crow.IML;
+using System.Text;
+using System.Xml;
+
+namespace Crow.Coding
+{
+       public class ImlSchematicEditor : TemplatedGroup
+       {
+               #region CTOR
+               public ImlSchematicEditor ()
+               {                       
+               }
+               #endregion
+
+               ProjectFile projNode;
+               Widget selectedItem;
+               ImlProjectItem imlProjFile;
+               Exception imlError = null;
+
+               bool drawGrid, snapToGrid;
+               int gridSpacing;
+
+               [DefaultValue(true)]
+               public bool DrawGrid {
+                       get { return drawGrid; }
+                       set {
+                               if (drawGrid == value)
+                                       return;
+                               drawGrid = value;
+                               NotifyValueChanged ("DrawGrid", drawGrid);
+                               RegisterForRedraw ();
+                       }
+               }
+               [DefaultValue(true)]
+               public bool SnapToGrid {
+                       get { return snapToGrid; }
+                       set {
+                               if (snapToGrid == value)
+                                       return;
+                               snapToGrid = value;
+                               NotifyValueChanged ("SnapToGrid", snapToGrid);
+                       }
+               }
+               [DefaultValue(10)]
+               public int GridSpacing {
+                       get { return gridSpacing; }
+                       set {
+                               if (gridSpacing == value)
+                                       return;
+                               gridSpacing = value;
+                               NotifyValueChanged ("GridSpacing", gridSpacing);
+                               RegisterForRedraw ();
+                       }
+               }
+               public Widget SelectedItem {
+                       get { return selectedItem; }
+                       set {
+                               if (selectedItem == value)
+                                       return;
+                               selectedItem = value;
+                               NotifyValueChanged ("SelectedItem", selectedItem);
+                               RegisterForRedraw ();
+                       }
+               }
+//             public override ProjectFile ProjectNode {
+//                     get {
+//                             return projNode;
+//                     }
+//                     set {
+//                             if (projNode == value)
+//                                     return;                         
+//                             projNode = value;
+//                             NotifyValueChanged ("ProjectNode", projNode);
+//
+//                             if (projNode is ImlProjectItem)
+//                                     imlProjFile = projNode as ImlProjectItem;
+//                             else
+//                                     imlProjFile = null;
+//                     }
+//             }
+
+
+//             protected override bool EditorIsDirty {
+//                     get {
+//                             throw new NotImplementedException ();
+//                     }
+//                     set {
+//                             throw new NotImplementedException ();
+//                     }
+//             }
+//             protected override void updateProjFileFromEditor ()
+//             {
+//
+//             }
+//             protected override void updateEditorFromProjFile () {
+//                     
+//             }                       
+//             protected override void updateCheckPostProcess ()
+//             {
+//
+//             }
+
+
+       }
+}
diff --git a/Samples/CrowIDE/src/Editors/ImlVisualEditor.cs b/Samples/CrowIDE/src/Editors/ImlVisualEditor.cs
new file mode 100644 (file)
index 0000000..75d8206
--- /dev/null
@@ -0,0 +1,908 @@
+//
+//  ImlVisualEditor.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2016 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+using Crow;
+using System.Threading;
+using System.Xml.Serialization;
+using System.ComponentModel;
+using System.IO;
+using System.Collections.Generic;
+using Crow.IML;
+using System.Text;
+using System.Xml;
+using System.Diagnostics;
+using vkvg;
+
+namespace Crow.Coding
+{
+       public class ImlVisualEditor : Editor
+       {
+               #region CTOR
+               public ImlVisualEditor () : base()
+               {
+                       //imlVE = new DesignInterface (Interface.de);
+                       initCommands ();
+               }
+               #endregion
+
+               protected override void onInitialized (object sender, EventArgs e)
+               {
+                       initIcons ();
+                       base.onInitialized (sender, e);
+               }
+               DesignInterface imlVE;
+               Widget selectedItem;
+               ImlProjectItem imlProjFile;
+
+               bool editorIsDirty = false;//needed when tree is empty
+               bool drawGrid, snapToGrid;
+               int gridSpacing, zoom = 100;
+               Measure designWidth, designHeight;
+               bool updateEnabled;
+
+               Picture icoMove, icoStyle;
+               Rectangle rIcons = default(Rectangle);
+               Size iconSize = new Size(11,11);
+
+               public List<Crow.Command> Commands;
+               Crow.Command cmdDelete;
+
+               void initCommands () {
+                       cmdDelete = new Crow.Command (new Action (() => deleteObject (SelectedItem)))
+                               { Caption = "Delete", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = true };
+                       Commands = new List<Crow.Command> (new Crow.Command[] { cmdDelete });
+               }
+
+               void initIcons () {
+                       icoMove = new SvgPicture ("#CrowIDE.icons.move-arrows.svg");
+
+            //                 icoStyle = new SvgPicture ();
+            //                 icoStyle.Load (IFace, "#CrowIDE.icons.palette.svg");
+        }
+
+        [DefaultValue(true)]
+               public bool DrawGrid {
+                       get { return drawGrid; }
+                       set {
+                               if (drawGrid == value)
+                                       return;
+                               drawGrid = value;
+                               NotifyValueChanged ("DrawGrid", drawGrid);
+                               RegisterForRedraw ();
+                       }
+               }
+               [DefaultValue(true)]
+               public bool SnapToGrid {
+                       get { return snapToGrid; }
+                       set {
+                               if (snapToGrid == value)
+                                       return;
+                               snapToGrid = value;
+                               NotifyValueChanged ("SnapToGrid", snapToGrid);
+                       }
+               }
+               [DefaultValue(10)]
+               public int GridSpacing {
+                       get { return gridSpacing; }
+                       set {
+                               if (gridSpacing == value)
+                                       return;
+                               gridSpacing = value;
+                               NotifyValueChanged ("GridSpacing", gridSpacing);
+                               RegisterForRedraw ();
+                       }
+               }
+               [DefaultValue(100)]
+               public int Zoom {
+                       get { return zoom; }
+                       set {
+                               if (zoom == value)
+                                       return;
+                               
+                               zoom = value;
+                               NotifyValueChanged ("Zoom", zoom);
+                               Width = (int)(designWidth * zoom / 100.0);
+                               Height = (int)(designHeight * zoom / 100.0);
+                       }
+               }
+               [DefaultValue("512")]
+               public Measure DesignWidth {
+                       get { return designWidth; }
+                       set { 
+                               if (designWidth == value)
+                                       return;
+                               designWidth = value;
+                               NotifyValueChanged ("DesignWidth", designWidth);
+                               Width = (int)(designWidth * zoom / 100.0);
+                       }
+               }
+               [DefaultValue("400")]
+               public Measure DesignHeight {
+                       get { return designHeight; }
+                       set {
+                               if (designHeight == value)
+                                       return;
+                               designHeight = value;
+                               NotifyValueChanged ("DesignHeight", designHeight);
+                               Height = (int)(designHeight * zoom / 100.0);
+                       }
+               }
+
+               public Widget SelectedItem {
+                       get { return selectedItem; }
+                       set {
+                               if (selectedItem == value)
+                                       return;
+                               selectedItem = value;
+
+                               if (selectedItem == null)
+                                       cmdDelete.CanExecute = false;
+                               else
+                                       cmdDelete.CanExecute = true;
+                               
+                               NotifyValueChanged ("SelectedItem", selectedItem);
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               /// <summary>PoinprojFilever the widget</summary>
+               public virtual Widget HoverWidget
+               {
+                       get { return imlVE.HoverWidget; }
+                       set {
+                               if (HoverWidget == value)
+                                       return;
+
+                               imlVE.HoverWidget = value;
+
+                               NotifyValueChanged ("HoverWidget", HoverWidget);
+                       }
+               }
+               /// <summary>
+               /// use to disable update if tab is not the visible one
+               /// </summary>
+               public bool UpdateEnabled {
+                       get { return updateEnabled; }
+                       set { 
+                               if (value == updateEnabled)
+                                       return;
+                               updateEnabled = value;
+                               NotifyValueChanged ("UpdateEnabled", updateEnabled);
+                       }
+               }
+
+               public List<Widget> GraphicTree {
+                       get { return imlVE.GraphicTree; }
+               }
+
+               [XmlIgnore]public List<LQIList> LQIs {
+                       get { return imlVE.LQIs; }
+               }
+
+               #region editor overrides
+               public override ProjectFile ProjectNode {
+                       get {
+                               return base.ProjectNode;
+                       }
+                       set {
+                               base.ProjectNode = value;
+                               imlProjFile = projFile as ImlProjectItem;
+                               imlVE.ProjFile = imlProjFile;
+                       }
+               }
+
+               protected override bool EditorIsDirty {
+                       get { return imlProjFile == null ? false :
+                               imlProjFile.Instance == null ? editorIsDirty :
+                               imlProjFile.Instance.design_HasChanged | editorIsDirty; }
+                       set {
+                               editorIsDirty = value;
+                               if (GraphicTree.Count == 0)
+                                       return;
+                               if (GraphicTree [0] != null)
+                                       GraphicTree [0].design_HasChanged = value;                      
+                       }
+               }
+               protected override bool IsReady {
+                       get { return updateEnabled && imlVE != null && imlProjFile != null; }
+               }
+
+               protected override void updateProjFileFromEditor ()
+               {
+                       Debug.WriteLine("\t\tImlEditor updateProjFileFromEditor");
+                       try {
+                               if (imlProjFile.Instance == null)
+                                       projFile.UpdateSource(this, @"<?xml version=""1.0""?>");
+                               else
+                                       projFile.UpdateSource(this, imlProjFile.Instance.GetIML());
+                       } catch (Exception ex) {
+                               Error = ex.InnerException;
+                               if (Monitor.IsEntered(imlVE.UpdateMutex))
+                                       Monitor.Exit (imlVE.UpdateMutex);
+                       }
+               }
+               protected override void updateEditorFromProjFile () {
+                       Debug.WriteLine("\t\tImlEditor updateEditorFromProjFile");
+                       try {
+                               string selItemDesignID = null;
+                               if (SelectedItem!=null)
+                                       selItemDesignID = SelectedItem.design_id;
+                               imlVE.ClearInterface();
+                               Instantiator.NextInstantiatorID = 0;
+                               imlVE.Styling = projFile.Project.solution.Styling;
+                               imlVE.DefaultValuesLoader.Clear();
+                               //imlVE.DefaultTemplates = projFile.Project.solution.DefaultTemplates;
+                               imlVE.Instantiators = new Dictionary<string, Instantiator>();
+
+                               //prevent error on empty file
+                               bool emptyFile = true;
+                               string src = projFile.Source;
+                               using (Stream s = new MemoryStream (Encoding.UTF8.GetBytes (src))) {
+                                       using (XmlReader itr = XmlReader.Create (s)) {
+                                               while(itr.Read()){
+                                                       if (itr.NodeType == XmlNodeType.Element){
+                                                               emptyFile = false;
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+                               Widget go = null;
+                               Error = null;
+
+                               if (emptyFile){
+                                       imlProjFile.Instance = null;
+                               }else{
+                                       imlVE.LoadIMLFragment(src);
+                                       imlProjFile.Instance = imlVE.GraphicTree[0];
+                                       if (selItemDesignID!=null)
+                                               imlProjFile.Instance.FindByDesignID(selItemDesignID,out go);                                            
+
+                               }
+                               SelectedItem = go;
+                       } catch (Exception ex) {
+                               Error = ex;
+                       }
+               }
+               protected override void updateCheckPostProcess ()
+               {
+                       if (Error != null) {
+                               RegisterForRedraw ();
+                               return;
+                       }
+                       imlVE.Update ();
+                       bool isDirty = false;
+
+                       lock (imlVE.RenderMutex)
+                               isDirty = imlVE.IsDirty;
+
+                       if (isDirty) {                          
+                               lock (IFace.UpdateMutex)
+                                       RegisterForRedraw ();                           
+                       }
+               }
+               #endregion
+
+               #region GraphicObject overrides
+               public override void OnLayoutChanges (LayoutingType layoutType)
+               {
+                       base.OnLayoutChanges (layoutType);
+                       switch (layoutType) {
+                       case LayoutingType.Width:
+                               DesignWidth = Slot.Width * 100 / zoom;
+                               imlVE.ProcessResize (new Size(designWidth,designHeight));
+                               break;
+                       case LayoutingType.Height:
+                               DesignHeight = Slot.Height * 100 / zoom;
+                               imlVE.ProcessResize (new Size(designWidth,designHeight));
+                               break;
+                       }
+               }
+
+               public override void onMouseMove (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseMove (sender, e);
+
+                       Widget oldHW = HoverWidget;
+                       Rectangle scr = this.ScreenCoordinates (this.getSlot ());
+                       ProcessMouseMove (e.X - scr.X, e.Y - scr.Y);
+
+                       Widget newHW = HoverWidget;
+                       if (newHW == null)
+                               return;
+
+                       if (draggedObj != null) {
+                               if (draggedObj.Parent == null) {
+                                       if (tryAddObjectTo (newHW, draggedObj)) {
+                                               RegisterForRedraw ();
+                                               return;
+                                       }
+                               } else if (newHW != draggedObj) {
+                                       //lock (imlVE.UpdateMutex) {
+                                       ILayoutable possibleParent = getPossibleParent (newHW, draggedObj);
+                                       if (possibleParent == null) {
+                                               Group g = newHW.Parent as Group;
+                                               if (g != null && g != draggedObj) {
+                                                       removeObject (draggedObj);
+                                                       g.InsertChild (g.Children.IndexOf (newHW), draggedObj);
+                                                       RegisterForRedraw ();
+                                                       return;
+                                               }
+                                       } else if (possibleParent != draggedObj.Parent) {
+                                               removeObject (draggedObj);
+                                               if (tryAddObjectTo (possibleParent, draggedObj)) {
+                                                       RegisterForRedraw ();
+                                                       return;
+                                               }
+                                       }
+                                       //}
+                               }
+                       }                       
+
+                       if (oldHW == newHW)
+                               return;
+                       //RegisterForRedraw ();
+
+               }
+               public override void onMouseEnter (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseEnter (sender, e);
+                       if (IFace.DragAndDropOperation != null && draggedObj == null)
+                               return;
+                       IFace.FocusedWidget = this;
+               }
+               public override void onMouseLeave (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseLeave (sender, e);
+//                     IFace.FocusedWidget = null;
+               }
+               public override void onMouseDown (object sender, MouseButtonEventArgs e)
+               {
+                       if (e.Mouse.RightButton == ButtonState.Pressed) {
+                               base.onMouseDown (sender, e);
+                               return;
+                       }
+                       SelectedItem = HoverWidget;
+
+//                     if (SelectedItem != null && projFile != null) {
+//                             projFile.CurrentLine = SelectedItem.design_line;
+//                             projFile.CurrentColumn = SelectedItem.design_column;
+//                     }
+
+               }
+
+               protected override void onDraw (Context gr)
+               {
+                       base.onDraw (gr);
+
+                       Rectangle cb = new Rectangle (0, 0, designWidth, designHeight);
+
+                       gr.Save ();
+
+                       double z = zoom / 100.0;
+
+                       gr.Scale (z, z);
+
+                       if (drawGrid) {
+                               double gridLineWidth = 0.2 / z;
+                               double glhw = gridLineWidth / 2.0;
+                               int nbLines = cb.Width / gridSpacing;
+                               double d = cb.Left + gridSpacing;
+                               for (int i = 0; i < nbLines; i++) {
+                                       gr.MoveTo (d - glhw, cb.Y);
+                                       gr.LineTo (d - glhw, cb.Bottom);
+                                       d += gridSpacing;
+                               }
+                               nbLines = cb.Height / gridSpacing;
+                               d = cb.Top + gridSpacing;
+                               for (int i = 0; i < nbLines; i++) {
+                                       gr.MoveTo (cb.X, d - glhw);
+                                       gr.LineTo (cb.Right, d - glhw);
+                                       d += gridSpacing;
+                               }
+                               gr.LineWidth = gridLineWidth;
+                               Foreground.SetAsSource (gr, cb);
+                               gr.Stroke ();
+                       }
+
+                       lock (imlVE.RenderMutex) {
+                               gr.SetSourceSurface (imlVE.surf, cb.Left, cb.Top);
+                               gr.Paint ();
+                               imlVE.IsDirty = false;
+                       }
+                       /*if (Error == null) {
+                               gr.SetSourceColor (Color.Black);
+                               gr.Rectangle (cb, 1.0 / z);
+                       } else {
+                               gr.SetSourceColor (Color.LavenderBlush);
+                               gr.Rectangle (cb, 2.0 / z);
+                               string[] lerrs = Error.ToString ().Split ('\n');
+                               Point p = cb.Center;
+                               p.Y -= lerrs.Length * 20;
+                               foreach (string le in lerrs) {
+                                       drawCenteredTextLine(gr, p, le);
+                                       p.Y += 20;
+
+                               }
+                       }
+                       gr.Stroke ();*/
+
+                       Rectangle hr;
+
+                       /*
+                       if (SelectedItem?.Parent != null) {
+
+                               gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
+                               gr.SetFontSize (Font.Size);
+                               gr.FontOptions = Interface.FontRenderingOptions;
+                               gr.Antialias = Interface.Antialias;
+
+                               Widget g = SelectedItem;
+                               hr = g.ScreenCoordinates (g.getSlot ());
+
+//                             Rectangle rIcons = new Rectangle (iconSize);
+//                             rIcons.Width *= 4; 
+//                             rIcons.Top = hr.Bottom;
+//                             rIcons.Left = hr.Right - rIcons.Width + iconSize.Width;
+                               Rectangle rIcoMove = new Rectangle (hr.BottomRight, iconSize);
+//                             Rectangle rIcoStyle = rIcoMove;
+//                             rIcoStyle.Left += iconSize.Width + 4;
+
+                               using (Surface mask = new ImageSurface (Format.Argb32, cb.Width, cb.Height)) {
+                                       using (Context ctx = new Context (mask)) {
+                                               ctx.Save();
+                                               ctx.SetSourceRGBA(1.0,1.0,1.0,0.4);
+                                               ctx.Paint ();
+                                               ctx.Rectangle (hr);
+                                               ctx.Operator = Operator.Clear;
+                                               ctx.Fill ();
+                                       }
+
+                                       gr.SetSourceSurface (mask, 0, 0);
+                                       gr.Paint ();
+
+                                       using (Surface ol = new ImageSurface (Format.Argb32, cb.Width, cb.Height)) {
+                                               using (Context ctx = new Context (ol)) {
+                                                       ctx.SetSourceColor (Color.Black);
+                                                       drawDesignOverlay (ctx, g, cb, hr, 0.4 / z, 6.5);
+                                               }
+                                                       
+                                               gr.SetSourceSurface (ol, 0, 0);
+                                               gr.Paint ();
+                                       }
+
+                                       drawIcon (gr, icoMove, rIcoMove);
+                                       //drawIcon (gr, icoStyle, rIcoStyle);
+
+                               }                                               
+                       }*/
+                       if (HoverWidget != null) {
+                               hr = HoverWidget.ScreenCoordinates (HoverWidget.getSlot ());
+                               gr.SetSourceColor (Color.SkyBlue);
+                               //gr.SetDash (new double[]{ 5.0, 3.0 }, 0.0);
+                               gr.Rectangle (hr, 0.4 / z);
+                       }
+                       gr.Restore ();
+               }
+
+               void drawIcon (Context gr, Picture pic, Rectangle r) {/*
+//                     gr.SetSourceColor (Color.Black);
+//                     CairoHelpers.CairoRectangle (gr, r.Inflated (1), 2, 1.0);
+                       gr.SetSourceColor (Color.White);
+                       CairoHelpers.CairoRectangle (gr, r.Inflated (1), 2);
+                       gr.Fill ();
+                       gr.Operator = Operator.Clear;
+                       pic.Paint (gr, r);
+                       gr.Operator = Operator.Over;*/
+               }
+               void drawDesignOverlay (Context gr, Widget g, Rectangle cb, Rectangle hr, double coteStroke, double space = 6.5){
+                       /*
+                       double z = zoom / 100.0;
+                       double coteW = 3, coteL = 5;
+                       bool fill = true;
+                       Crow.Cairo.PointD p1 = new Crow.Cairo.PointD (hr.X + 0.5, hr.Y - space);
+                       Crow.Cairo.PointD p2 = new Crow.Cairo.PointD (hr.Right - 0.5, hr.Y - space);
+
+                       if (p1.Y < cb.Top) {
+                               if (hr.Bottom > cb.Bottom - space)
+                                       p1.Y = p2.Y = hr.Bottom - space;
+                               else
+                                       p1.Y = p2.Y = hr.Bottom + space;
+                       }
+
+                       if (g.Width.IsFit)
+                               gr.DrawCoteInverse (p1, p2, coteStroke, fill, coteW, coteL);
+                       else if (g.Width.IsRelativeToParent) {
+                               gr.DrawCote (p1, p2, coteStroke, fill, coteW, coteL);
+                               if (g.Width.Value < 100)
+                                       drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Width.ToString());
+                       }else if (g.Width.IsFixed) {
+                               gr.DrawCoteFixed (p1, p2, coteStroke * 2.0, coteW);
+                               drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Width.Value.ToString());
+                       }
+
+                       p1 = new Crow.Cairo.PointD (hr.X - space, hr.Top + 0.5);
+                       p2 = new Crow.Cairo.PointD (hr.X - space, hr.Bottom - 0.5);
+
+                       if (p1.X < cb.Left) {
+                               if (hr.Right > cb.Right - space)
+                                       p1.X = p2.X = hr.Right - space;
+                               else
+                                       p1.X = p2.X = hr.Right + space;
+                       } 
+                       if (g.Height.IsFit)
+                               gr.DrawCoteInverse (p1, p2, coteStroke, fill, coteW, coteL);
+                       else if (g.Height.IsRelativeToParent){
+                               gr.DrawCote (p1, p2, coteStroke, fill, coteW, coteL);
+                               if (g.Height.Value < 100)
+                                       drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Height.ToString());
+                       }else if (g.Width.IsFixed) {
+                               gr.DrawCoteFixed (p1, p2, coteStroke * 2.0, coteW);
+                               drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Height.Value.ToString());
+                       }
+
+                       //                              hr.Inflate (2);
+                       //gr.SetDash (new double[]{ 1.0, 4.0 }, 0.0);
+                       //gr.SetSourceColor (Color.Grey);
+//                     gr.Rectangle (hr,coteStroke);
+//                     gr.Stroke ();
+                       gr.Operator = Operator.Over;
+                       */
+               }
+
+               void drawCenteredTextLine (Context gr, Point center, string txt){
+                       drawCenteredTextLine (gr, new PointD(center.X,center.Y), txt);
+               }
+               void drawCenteredTextLine (Context gr, PointD center, string txt){
+                       if (string.IsNullOrEmpty(txt))
+                               return;
+                       FontExtents fe = gr.FontExtents;
+                       TextExtents te = gr.TextExtents (txt);
+
+                       Rectangle rText = new Rectangle(
+                               (int)(center.X - te.Width / 2), (int)(center.Y - (fe.Ascent + fe.Descent) / 2),
+                               (int)te.Width, (int)(fe.Ascent + fe.Descent));
+
+                       gr.Operator = Operator.Clear;
+                       Rectangle r = rText;
+                       r.Inflate (2);
+                       gr.Rectangle (r);
+                       gr.Fill ();
+                       gr.Operator = Operator.Over;
+
+                       gr.MoveTo (rText.X, rText.Y + fe.Ascent);
+                       gr.ShowText (txt);
+                       gr.Fill ();
+
+               }
+               protected override void onDragEnter (object sender, DragDropEventArgs e)
+               {
+                       base.onDragEnter (sender, e);
+                       GraphicObjectDesignContainer godc = e.DragSource.DataSource as GraphicObjectDesignContainer;
+                       if (godc == null)
+                               return;
+                       createDraggedObj (godc.CrowType);
+               }
+               protected override void onDragLeave (object sender, DragDropEventArgs e)
+               {
+                       base.onDragLeave (sender, e);
+                       GraphicObjectDesignContainer godc = e.DragSource.DataSource as GraphicObjectDesignContainer;
+                       if (godc == null)
+                               return;
+                       ClearDraggedObj ();
+               }
+
+               protected override void onStartDrag (object sender, DragDropEventArgs e)
+               {
+                       base.onStartDrag (sender, e);
+                       if (SelectedItem == null)
+                               return;
+                       
+                       Widget dumy = new Widget (IFace);
+                       dumy.EndDrag += dumyOnEndDrag;
+                       dumy.Drop += dumyOnDrop;
+                       dumy.IsDragged = true;
+                       IFace.ActiveWidget = dumy;
+                       e.DragSource.IsDragged = false;
+                       IFace.DragAndDropOperation.DragSource = dumy;
+                       draggedObj = SelectedItem;
+                       int dragIconSize = 48;
+                       lock (IFace.UpdateMutex) {
+                               IFace.DragImageHeight = dragIconSize;
+                               IFace.DragImageWidth = dragIconSize;
+                               IFace.DragImage = draggedObj.CreateIcon(dragIconSize);
+                       }                                       
+                       removeObject (draggedObj);
+                       SelectedItem = null;
+                       HoverWidget = null;
+               }
+               void dumyOnEndDrag (object sender, DragDropEventArgs e)
+               {                       
+                       IFace.ClearDragImage ();
+               }
+               void dumyOnDrop (object sender, DragDropEventArgs e)
+               {
+                       ClearDraggedObj (false);
+                       IFace.ClearDragImage ();
+               }
+               #endregion
+
+
+               #region draggedObj handling
+
+               public Widget draggedObj = null;
+
+               void createDraggedObj (Type crowType) {
+                       lock (imlVE.UpdateMutex) {
+                               draggedObj = imlVE.CreateITorFromIMLFragment ("<" + crowType.Name + "/>").CreateInstance ();
+                       }
+               }
+
+               public void ClearDraggedObj (bool removeFromTree = true) {
+                       if (removeFromTree)
+                               deleteObject (draggedObj);                      
+                       draggedObj = null;
+               }
+               #endregion
+
+               void removeObject (Widget go) {
+                       if (go == null)
+                               return;
+                       if (go.Parent == null)
+                               return;         
+//                     lock (imlVE.UpdateMutex) {
+                               Interface i = go.Parent as Interface;
+                               if (i != null) {
+                                       i.RemoveWidget (go);
+                                       imlProjFile.Instance = null;
+                               } else {
+                                       Container c = go.Parent as Container;
+                                       if (c != null) 
+                                               c.SetChild (null);
+                                       else {
+                                               TemplatedContainer tc = go.Parent as TemplatedContainer;
+                                               if (tc != null)
+                                                       tc.Content = null;
+                                               else {
+                                                       Group g = go.Parent as Group;
+                                                       if (g != null)
+                                                               g.RemoveChild (go);
+                                               }
+                                       }
+                               }                                       
+                               EditorIsDirty = true;
+                       //}
+               }
+               void deleteObject (Widget go) {
+                       if (go == null)
+                               return;
+                       //lock (imlVE.UpdateMutex) {
+                               removeObject (go);
+                               go.Dispose ();
+                       //}
+               }
+
+               ILayoutable getPossibleParent (ILayoutable parent, Widget go) {
+                       if (go == null)
+                               return null;
+//                     lock (imlVE.UpdateMutex) {
+                               
+                               Interface i = null;
+                               if (parent == null)
+                                       i = imlVE;
+                               else
+                                       i = parent as Interface;
+                               if (i != null)
+                                       return i.GraphicTree.Count > 0 ? null : i;
+                               
+                               Container c = parent as Container;
+                               if (c != null)
+                                       return c.Child == null || c.Child == go ? c : null;                                             
+                               
+                               TemplatedContainer tc = parent as TemplatedContainer;
+                               if (tc != null)
+                                       return tc.Content == null || tc.Content == go? tc : null;
+                               
+                               return parent as Group;
+//                     }
+               }
+               bool tryAddObjectTo (ILayoutable parent, Widget go) {
+                       if (go == null)
+                               return false;
+//                     lock (imlVE.UpdateMutex) {
+                       Interface i = null;
+                       if (parent == null)
+                               i = imlVE;
+                       else
+                               i = parent as Interface;
+                       if (i != null) {
+                               if (i.GraphicTree.Count > 0)
+                                       return false;
+                               i.AddWidget (go);
+                               imlProjFile.Instance = go;
+                               EditorIsDirty = true;
+                               return true;
+                       }
+                       Container c = parent as Container;
+                       if (c != null) {
+                               if (c.Child != null)
+                                       return false;
+                                       //return tryAddObjectTo (c.Parent, go);
+                               c.SetChild (go);
+                               EditorIsDirty = true;
+                               return true;
+                       }
+                       TemplatedContainer tc = parent as TemplatedContainer;
+                       if (tc != null) {
+                               if (tc.Content != null)
+                                       return false;
+                               //return tryAddObjectTo (c.Parent, go);
+                               tc.Content = (go);
+                               EditorIsDirty = true;
+                               return true;
+                       }
+                       Group g = parent as Group;
+                       if (g != null) {
+                               g.AddChild (go);
+                               EditorIsDirty = true;
+                               return true;
+                       }
+                       return false;//tryAddObjectTo (parent.Parent, go);
+//                     }
+               }
+
+
+
+               void WidgetCheckOver (Widget go, MouseMoveEventArgs e){
+                       Type tGo = go.GetType();
+                       if (typeof(TemplatedGroup).IsAssignableFrom (tGo)) {
+                               
+                       } else if (typeof(TemplatedContainer).IsAssignableFrom (tGo)) {
+                               TemplatedContainer c = go as TemplatedContainer;
+                               if (c.Content?.MouseIsIn (e.Position) == true) {                                        
+                                       WidgetCheckOver (c.Content, e);
+                                       return;
+                               }
+                       } else if (typeof(TemplatedControl).IsAssignableFrom (tGo)) {
+                       } else if (typeof(Group).IsAssignableFrom (tGo)) {
+                               Group c = go as Group;
+                               for (int i = c.Children.Count -1; i >= 0; i--) {
+                                       if (c.Children[i].MouseIsIn (e.Position)) {                                     
+                                               WidgetCheckOver (c.Children[i], e);
+                                               return;
+                                       }
+                               }
+                       } else if (typeof(Crow.Container).IsAssignableFrom (tGo)) {
+                               Crow.Container c = go as Crow.Container;
+                               if (c.Child?.MouseIsIn (e.Position)==true) {                                    
+                                       WidgetCheckOver (c.Child, e);
+                                       return;
+                               }
+                       }
+                       HoverWidget = go;
+                       WidgetMouseEnter (go, e);
+               }
+               void WidgetMouseLeave (Widget go, MouseMoveEventArgs e){
+
+               }
+               void WidgetMouseEnter (Widget go, MouseMoveEventArgs e){
+
+               }
+               void WidgetMouseMove (Widget go, MouseMoveEventArgs e){}
+
+               public bool ProcessMouseMove(int x, int y)
+               {
+                       int deltaX = x - imlVE.Mouse.X;
+                       int deltaY = y - imlVE.Mouse.Y;
+                       imlVE.Mouse.X = x;
+                       imlVE.Mouse.Y = y;
+                       MouseMoveEventArgs e = new MouseMoveEventArgs (x, y, deltaX, deltaY);
+                       e.Mouse = imlVE.Mouse;
+
+                       if (imlVE.ActiveWidget != null) {
+                               //TODO, ensure object is still in the graphic tree
+                               //send move evt even if mouse move outside bounds
+                               WidgetMouseMove (imlVE.ActiveWidget, e);
+                               return true;
+                       }
+
+                       if (HoverWidget != null) {
+                               //TODO, ensure object is still in the graphic tree
+                               //check topmost graphicobject first
+                               Widget tmp = HoverWidget;
+                               Widget topc = null;
+                               while (tmp is Widget) {
+                                       topc = tmp;
+                                       tmp = tmp.LogicalParent as Widget;
+                               }
+                               int idxhw = imlVE.GraphicTree.IndexOf (topc);
+                               if (idxhw != 0) {
+                                       int i = 0;
+                                       while (i < idxhw) {
+                                               if (imlVE.GraphicTree [i].LogicalParent == imlVE.GraphicTree [i].Parent) {
+                                                       if (imlVE.GraphicTree [i].MouseIsIn (e.Position)) {
+                                                               while (imlVE.HoverWidget != null) {
+                                                                       WidgetMouseLeave (imlVE.HoverWidget, e);
+                                                                       imlVE.HoverWidget = imlVE.HoverWidget.LogicalParent as Widget;
+                                                               }
+
+                                                               WidgetCheckOver (GraphicTree [i], e);
+                                                               return true;
+                                                       }
+                                               }
+                                               i++;
+                                       }
+                               }
+
+
+                               if (imlVE.HoverWidget.MouseIsIn (e.Position)) {
+                                       WidgetCheckOver (imlVE.HoverWidget, (e));
+                                       return true;
+                               } else {
+                                       WidgetMouseLeave (imlVE.HoverWidget, e);
+                                       //seek upward from last focused graph obj's
+                                       while (imlVE.HoverWidget.LogicalParent as Widget != null) {
+                                               imlVE.HoverWidget = imlVE.HoverWidget.LogicalParent as Widget;
+                                               if (imlVE.HoverWidget.MouseIsIn (e.Position)) {
+                                                       WidgetCheckOver (imlVE.HoverWidget, e);
+                                                       return true;
+                                               } else
+                                                       WidgetMouseLeave (imlVE.HoverWidget, e);
+                                       }
+                               }
+                       }
+
+                       //top level graphic obj's parsing
+                       lock (imlVE.GraphicTree) {
+                               for (int i = 0; i < imlVE.GraphicTree.Count; i++) {
+                                       Widget g = imlVE.GraphicTree [i];
+                                       if (g.MouseIsIn (e.Position)) {
+                                               WidgetCheckOver (g, e);
+                                               return true;
+                                       }
+                               }
+                       }
+                       imlVE.HoverWidget = null;
+                       return false;
+
+               }
+
+               void GTView_SelectedItemChanged (object sender, SelectionChangeEventArgs e)
+               {
+                       SelectedItem = e.NewValue as Widget;
+               }
+
+
+               public override void onKeyDown (object sender, KeyEventArgs e)
+               {
+               
+                       switch (e.Key) {
+                       case Key.Delete:
+                               if (selectedItem == null)
+                                       return;
+                               deleteObject (selectedItem);
+                               break;
+                       case Key.Escape:
+                               SelectedItem = null;
+                               break;
+                       }
+               }
+       }
+}
diff --git a/Samples/CrowIDE/src/Editors/Parsers/BufferParser.cs b/Samples/CrowIDE/src/Editors/Parsers/BufferParser.cs
new file mode 100644 (file)
index 0000000..c193c7d
--- /dev/null
@@ -0,0 +1,380 @@
+using System;
+using System.IO;
+using Crow;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+
+namespace Crow.Coding
+{
+       /// <summary>
+       /// base class for tokenizing sources
+       /// </summary>
+       public abstract class BufferParser
+       {
+               /// <summary>
+               /// Default tokens, this enum may be overriden in derived parser with the new keyword,
+               /// see XMLParser for example.
+               /// </summary>
+               public enum TokenType {
+                       Unknown = 0,
+                       WhiteSpace = 1,
+                       NewLine = 2,
+                       LineComment = 3,
+                       BlockCommentStart = 4,
+                       BlockComment = 5,
+                       BlockCommentEnd = 6,
+                       Preprocessor = 7,
+                       Identifier = 8,
+                       Keyword = 9,
+                       OpenBlock = 10,
+                       CloseBlock = 11,
+                       StatementEnding = 12,
+                       OperatorOrPunctuation = 13,
+                       IntegerLitteral = 14,
+                       RealLitteral = 15,
+                       StringLitteralOpening = 16,
+                       StringLitteralClosing = 17,
+                       StringLitteral = 18,
+                       CharLitteralOpening = 19,
+                       CharLitteralClosing = 20,
+                       CharLitteral = 21,
+                       BoolLitteral = 22,
+                       NullLitteral = 23,                       
+                       Type = 24,
+               }
+
+               #region CTOR
+               public BufferParser (CodeBuffer _buffer)
+               {
+                       buffer = _buffer;
+
+                       buffer.LineUpadateEvent += Buffer_LineUpadateEvent;
+                       //buffer.LineAdditionEvent += Buffer_LineAdditionEvent;;
+                       buffer.LineRemoveEvent += Buffer_LineRemoveEvent;
+                       buffer.BufferCleared += Buffer_BufferCleared;
+               }
+
+               #endregion
+
+               #region Buffer events handlers
+               void Buffer_BufferCleared (object sender, EventArgs e)
+               {
+
+               }
+               void Buffer_LineAdditionEvent (object sender, CodeBufferEventArgs e)
+               {
+
+               }
+               void Buffer_LineRemoveEvent (object sender, CodeBufferEventArgs e)
+               {
+                       reparseSource ();
+               }
+               void Buffer_LineUpadateEvent (object sender, CodeBufferEventArgs e)
+               {
+                       for (int i = 0; i < e.LineCount; i++)
+                               TryParseBufferLine (e.LineStart + i);
+                       reparseSource ();
+               }
+               #endregion
+
+               internal int currentLine = 0;
+               internal int currentColumn = 0;
+
+               int syntTreeDepth = 0;
+               public int SyntacticTreeDepth {
+                       get { return syntTreeDepth;}
+                       set {
+                               syntTreeDepth = value;
+                               if (syntTreeDepth > SyntacticTreeMaxDepth)
+                                       SyntacticTreeMaxDepth = syntTreeDepth;
+                       }
+               }
+               public int SyntacticTreeMaxDepth = 0;
+
+               protected CodeBuffer buffer;
+               protected Token currentTok;
+               protected bool eol = true;
+               protected Point CurrentPosition {
+                       get { return new Point (currentLine, currentColumn); }
+                       set {
+                               currentLine = value.Y;
+                               currentColumn = value.X;
+                       }
+               }
+
+               public Node RootNode;
+
+               public abstract void ParseCurrentLine();
+               public abstract void SyntaxAnalysis ();
+               public void reparseSource () {
+                       for (int i = 0; i < buffer.LineCount; i++) {
+                               if (!buffer[i].IsParsed)
+                                       TryParseBufferLine (i);
+                       }
+                       try {
+                               SyntaxAnalysis ();
+                       } catch (Exception ex) {
+                               Debug.WriteLine ("Syntax Error: " + ex.ToString ());
+                               if (ex is ParserException)
+                                       SetLineInError (ex as ParserException);
+                       }
+               }
+               public void TryParseBufferLine(int lPtr) {
+                       buffer [lPtr].exception = null;
+                       currentLine = lPtr;
+                       currentColumn = 0;
+                       eol = false;
+
+                       try {
+                               ParseCurrentLine ();
+                       } catch (Exception ex) {
+                               Debug.WriteLine (ex.ToString ());
+                               if (ex is ParserException)
+                                       SetLineInError (ex as ParserException);
+                       }
+
+               }
+
+               public virtual void SetLineInError(ParserException ex) {
+                       currentTok = default(Token);
+                       if (ex.Line >= buffer.LineCount)
+                               ex.Line = buffer.LineCount - 1;
+                       if (buffer [ex.Line].IsFolded)
+                               buffer.ToogleFolding (ex.Line);
+                       buffer [ex.Line].SetLineInError (ex);
+               }
+               public virtual string LineBrkRegex {
+                       get { return @"\r\n|\r|\n|\\\\n"; }
+               }
+               void updateFolding () {
+                       //                      Stack<TokenList> foldings = new Stack<TokenList>();
+                       //                      bool inStartTag = false;
+                       //
+                       //                      for (int i = 0; i < parser.Tokens.Count; i++) {
+                       //                              TokenList tl = parser.Tokens [i];
+                       //                              tl.foldingTo = null;
+                       //                              int fstTK = tl.FirstNonBlankTokenIndex;
+                       //                              if (fstTK > 0 && fstTK < tl.Count - 1) {
+                       //                                      if (tl [fstTK + 1] != XMLParser.TokenType.ElementName)
+                       //                                              continue;
+                       //                                      if (tl [fstTK] == XMLParser.TokenType.ElementStart) {
+                       //                                              //search closing tag
+                       //                                              int tkPtr = fstTK+2;
+                       //                                              while (tkPtr < tl.Count) {
+                       //                                                      if (tl [tkPtr] == XMLParser.TokenType.ElementClosing)
+                       //
+                       //                                                      tkPtr++;
+                       //                                              }
+                       //                                              if (tl.EndingState == (int)XMLParser.States.Content)
+                       //                                                      foldings.Push (tl);
+                       //                                              else if (tl.EndingState == (int)XMLParser.States.StartTag)
+                       //                                                      inStartTag = true;
+                       //                                              continue;
+                       //                                      }
+                       //                                      if (tl [fstTK] == XMLParser.TokenType.ElementEnd) {
+                       //                                              TokenList tls = foldings.Pop ();
+                       //                                              int fstTKs = tls.FirstNonBlankTokenIndex;
+                       //                                              if (tls [fstTK + 1].Content == tl [fstTK + 1].Content) {
+                       //                                                      tl.foldingTo = tls;
+                       //                                                      continue;
+                       //                                              }
+                       //                                              parser.CurrentPosition = tls [fstTK + 1].Start;
+                       //                                              parser.SetLineInError(new ParserException(parser, "closing tag not corresponding"));
+                       //                                      }
+                       //
+                       //                              }
+                       //                      }
+               }
+
+               #region low level parsing
+               protected void addCharToCurTok(char c, Point position){
+                       currentTok.Start = position;
+                       currentTok += c;
+               }
+               /// <summary>
+               /// Read one char from current position in buffer and store it into the current token
+               /// </summary>
+               /// <param name="startOfTok">if true, set the Start position of the current token to the current position</param>
+               protected void readToCurrTok(bool startOfTok = false){
+                       if (startOfTok)
+                               currentTok.Start = CurrentPosition;
+                       currentTok += Read();
+               }
+               /// <summary>
+               /// read n char from the buffer and store it into the current token
+               /// </summary>
+               protected void readToCurrTok(int length) {
+                       for (int i = 0; i < length; i++)
+                               currentTok += Read ();
+               }
+               /// <summary>
+               /// Save current token into current TokensLine and raz current token
+               /// </summary>
+               protected void saveAndResetCurrentTok() {
+                       currentTok.End = CurrentPosition;
+                       buffer[currentLine].Tokens.Add (currentTok);
+                       currentTok = default(Token);
+               }
+               /// <summary>
+               /// read one char and add current token to current TokensLine, current token is reset
+               /// </summary>
+               /// <param name="type">Type of the token</param>
+               /// <param name="startToc">set start of token to current position</param>
+               protected void readAndResetCurrentTok(System.Enum type, bool startToc = false) {
+                       readToCurrTok ();
+                       saveAndResetCurrentTok (type);
+               }
+               /// <summary>
+               /// Save current tok
+               /// </summary>
+               /// <param name="type">set the type of the tok</param>
+               protected void saveAndResetCurrentTok(System.Enum type) {
+                       currentTok.Type = (TokenType)type;
+                       saveAndResetCurrentTok ();
+               }
+               protected void setPreviousTokOfTypeTo (TokenType inType, TokenType newType) {
+                       for (int i = currentLine; i >= 0; i--) {
+                               int j = buffer [i].Tokens.Count - 1;
+                               while (j >= 0) {
+                                       if (buffer [i].Tokens [j].Type == inType) {
+                                               Token t = buffer [i].Tokens [j];
+                                               t.Type = newType;
+                                               buffer [i].Tokens [j] = t;
+                                               return;
+                                       }
+                                       j--;
+                               }                               
+                       }
+               }
+               /// <summary>
+               /// Peek next char, emit '\n' if current column > buffer's line length
+               /// Throw error if eof is true
+               /// </summary>
+               protected virtual char Peek() {
+                       if (eol)
+                               throw new ParserException (currentLine, currentColumn, "Unexpected End of line");
+                       return currentColumn < buffer [currentLine].Length ?
+                               buffer [currentLine] [currentColumn] : '\n';
+               }
+               /// <summary>
+               /// Peek n char from buffer or less if remaining char in buffer's line is less than requested
+               /// if end of line is reached, no '\n' will be emitted, instead, empty string is returned. '\n' should be checked only
+               /// with single char Peek().
+               /// Throw error is eof is true
+               /// </summary>
+               /// <param name="length">Length.</param>
+               protected virtual string Peek(int length) {
+                       if (eol)
+                               return "";//throw new ParserException (currentLine, currentColumn, "Unexpected End of Line");
+                       int lg = Math.Min(length, Math.Max (buffer [currentLine].Length - currentColumn, buffer [currentLine].Length - currentColumn - length));
+                       if (lg == 0)
+                               return "";
+                       return buffer [currentLine].Content.Substring (currentColumn, lg);
+               }
+               /// <summary>
+               /// read one char from buffer at current position, if '\n' is read, current line is incremented
+               /// and column is reset to 0
+               /// </summary>
+               protected virtual char Read() {
+                       char c = Peek ();
+                       if (c == '\n')
+                               eol = true;
+                       currentColumn++;
+                       return c;
+               }
+               protected virtual string Read(int charCount){
+                       string tmp = "";
+                       for (int i = 0; i < charCount; i++) {
+                               if (eol)
+                                       break;
+                               tmp += Read ();
+                       }
+                       return tmp;
+               }
+               /// <summary>
+               /// read until end of line is reached
+               /// </summary>
+               /// <returns>string read</returns>
+               protected virtual string ReadLine () {
+                       StringBuilder tmp = new StringBuilder();
+                       char c = Read ();
+                       while (!eol) {
+                               tmp.Append (c);
+                               c = Read ();
+                       }
+                       return tmp.ToString();
+               }
+               /// <summary>
+               /// read until end expression is reached or end of line.
+               /// </summary>
+               /// <returns>string read minus the ending expression that has to be read after</returns>
+               /// <param name="endExp">Expression to search for</param>
+               protected virtual string ReadLineUntil (string endExp){
+                       string tmp = "";
+
+                       while (!eol) {
+                               if (buffer [currentLine].Length - currentColumn - endExp.Length < 0) {
+                                       tmp += ReadLine();
+                                       break;
+                               }
+                               if (string.Equals (Peek (endExp.Length), endExp))
+                                       return tmp;
+                               tmp += Read();
+                       }
+                       return tmp;
+               }
+               /// <summary>
+               /// skip white spaces, but not line break. Save spaces in a WhiteSpace token.
+               /// </summary>
+               protected void SkipWhiteSpaces () {
+                       if (currentTok.Type != TokenType.Unknown)
+                               throw new ParserException (currentLine, currentColumn, "current token should be reset to unknown (0) before skiping white spaces");
+                       while (!eol) {
+                               if (!char.IsWhiteSpace (Peek ())||Peek()=='\n')
+                                       break;
+                               readToCurrTok (currentTok.Type == TokenType.Unknown);
+                               currentTok.Type = TokenType.WhiteSpace;
+                       }
+                       if (currentTok.Type != TokenType.Unknown)
+                               saveAndResetCurrentTok ();
+               }
+               #endregion
+
+               protected Node addChildNode (Node curNode, CodeLine cl, int tokPtr, string type = "") {
+                       Node n = new Node () { Name = cl.Tokens [tokPtr].Content, StartLine = cl, Type = type };
+                       curNode.AddChild (n);
+                       if (cl.SyntacticNode == null)
+                               cl.SyntacticNode = n;
+                       SyntacticTreeDepth++;
+                       return n;
+               }
+               protected void closeNodeAndGoUp (ref Node n, CodeLine cl, string type = ""){
+                       while (n != null) {
+                               if (n.Type == type) {
+                                       n.EndLine = cl;
+                                       n = n.Parent;
+                                       SyntacticTreeDepth--;
+                                       break;
+                               }
+                               n = n.Parent;
+                               SyntacticTreeDepth--;
+                       }
+               }
+               protected void closeNodeAndGoUp (ref Node n, CodeLine cl){
+                       SyntacticTreeDepth--;
+                       n.EndLine = cl;
+                       n = n.Parent;
+               }
+
+               protected void initSyntaxAnalysis () {
+                       RootNode = new Node () { Name = "RootNode", Type="Root" };
+                       SyntacticTreeDepth = SyntacticTreeMaxDepth = 0;
+               }
+
+
+               protected void throwParserException(string msg){
+                       throw new ParserException (currentLine, currentColumn, msg);
+               }
+       }
+}
\ No newline at end of file
diff --git a/Samples/CrowIDE/src/Editors/Parsers/CSharpParser.cs b/Samples/CrowIDE/src/Editors/Parsers/CSharpParser.cs
new file mode 100644 (file)
index 0000000..23655aa
--- /dev/null
@@ -0,0 +1,386 @@
+using System;
+using Crow;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
+using System.Linq;
+
+namespace Crow.Coding
+{
+       public class CSharpParser : BufferParser
+       {
+               #region keywords
+               string[] keywords = new string[] {
+                       "abstract",
+                       "as",
+                       "ascending",
+                       "async",
+                       "await",
+                       "base",
+                       "bool",
+                       "break",
+                       "byte",
+                       "case",
+                       "catch",
+                       "char",
+                       "checked",
+                       "class",
+                       "const",
+                       "continue",
+                       "decimal",
+                       "default",
+                       "delegate",
+                       "descending",
+                       "do",
+                       "double",
+                       "dynamic",
+                       "else",
+                       "enum",
+                       "equals",
+                       "event",
+                       "explicit",
+                       "extern",
+                       "false",
+                       "finally",
+                       "fixed",
+                       "float",
+                       "for",
+                       "foreach",
+                       "from",
+                       "get",
+                       "goto",
+                       "group",
+                       "if",
+                       "implicit",
+                       "in",
+                       "int",
+                       "interface",
+                       "internal",
+                       "is",
+                       "join",
+                       "let",
+                       "lock",
+                       "long",
+                       "nameof",
+                       "namespace",
+                       "new",
+                       "null",
+                       "object",
+                       "operator",
+                       "orderby",
+                       "out",
+                       "override",
+                       "params",
+                       "partial",
+                       "private",
+                       "protected",
+                       "public",
+                       "readonly",
+                       "ref",
+                       "return",
+                       "sbyte",
+                       "sealed",
+                       "select",
+                       "set",
+                       "short",
+                       "sizeof",
+                       "stackalloc",
+                       "static",
+                       "string",
+                       "struct",
+                       "switch",
+                       "this",
+                       "throw",
+                       "true",
+                       "try",
+                       "typeof",
+                       "uint",
+                       "ulong",
+                       "unchecked",
+                       "unsafe",
+                       "ushort",
+                       "using",
+                       "value",
+                       "var",
+                       "virtual",
+                       "void",
+                       "volatile",
+                       "when",
+                       "where",
+                       "while",
+                       "yield "                        
+               };
+               #endregion
+
+               public enum States
+               {
+                       init,       
+                       BlockComment,
+                       InNameSpace,
+                       InClass,
+                       InMember,
+                       Unknown,
+               }
+
+               public CSharpParser (CodeBuffer _buffer) : base(_buffer)
+               {
+               }
+
+               #region Regular Expression for validity checks
+               static Regex rxValidChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}");
+               static Regex rxNameStartChar = new Regex(@"_|\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}");
+               static Regex rxNameChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}");
+               static Regex rxNewLineChar = new Regex(@"\u000D|\u000A|\u0085|\u2028|\u2029");
+               static Regex rxWhiteSpaceChar = new Regex(@"\p{Zs}|\u0009|\u000B|\u000C");
+               static Regex rxDecimal = new Regex(@"[0-9]+");
+               static Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+");
+
+               public static bool CharIsValidCharStartName (char c) {
+                       return rxNameStartChar.IsMatch(new string(new char[]{c}));
+               }
+               public static bool CharIsValidCharName (char c) {
+                       return rxNameChar.IsMatch(new string(new char[]{c}));
+               }
+
+               public bool nextCharIsValidCharStartName
+               {
+                       get { return CharIsValidCharStartName(Peek()); }
+               }
+               public bool nextCharIsValidCharName
+               {
+                       get { return CharIsValidCharName(Peek()); }
+               }
+               #endregion
+
+               States curState = States.init;
+               States savedState = States.init;
+
+               public override void ParseCurrentLine ()
+               {
+                       //Debug.WriteLine (string.Format("parsing line:{0}", currentLine));
+                       CodeLine cl = buffer [currentLine];
+                       cl.Tokens = new List<Token> ();
+
+
+                       //retrieve current parser state from previous line
+                       if (currentLine > 0)
+                               curState = (States)buffer[currentLine - 1].EndingState;
+                       else
+                               curState = States.init;
+
+                       States previousEndingState = (States)cl.EndingState;
+
+                       while (! eol) {
+                               if (currentTok.IsNull)
+                                       SkipWhiteSpaces ();
+
+                               if (curState == States.BlockComment) {
+                                       currentTok.Start = CurrentPosition;
+                                       currentTok.Type = (BufferParser.TokenType)TokenType.BlockComment;
+                                       currentTok += ReadLineUntil ("*/");
+                                       if (Peek (2) == "*/") {
+                                               readToCurrTok (2);
+                                               curState = savedState;
+                                       }
+                                       saveAndResetCurrentTok ();
+                                       continue;
+                               }
+
+                               switch (Peek()) {
+                               case '\n':
+                                       eol = true;
+                                       if (!currentTok.IsNull)
+                                               saveAndResetCurrentTok ();
+                                       break;
+                               case '#':
+                                       readToCurrTok (true);
+                                       currentTok += ReadLine ();
+                                       saveAndResetCurrentTok (TokenType.Preprocessor);
+                                       break;
+                               case '/':
+                                       readToCurrTok (true);
+                                       switch (Peek ()) {
+                                       case '*':
+                                               readToCurrTok ();
+                                               currentTok += ReadLine ();
+                                               //currentTok.Type = (Parser.TokenType)TokenType.BlockComment;
+                                               savedState = curState;
+                                               curState = States.BlockComment;
+                                               saveAndResetCurrentTok (TokenType.BlockComment);
+                                               break;
+                                       case '/':
+                                               //readToCurrTok ();
+                                               currentTok += ReadLine ();
+                                               saveAndResetCurrentTok (TokenType.LineComment);
+                                               //currentTok.Type = (Parser.TokenType)TokenType.LineComment;
+                                               break;
+                                       default:
+                                               currentTok += ReadLine ();
+                                               saveAndResetCurrentTok (TokenType.Unknown);
+                                               break;
+                                       }
+                                       break;
+                               case '{':
+                                       if (currentTok.IsNull)
+                                               readAndResetCurrentTok (TokenType.OpenBlock, true);
+                                       else
+                                               readToCurrTok ();
+                                       break;
+                               case '}':
+                                       if (currentTok.IsNull)
+                                               readAndResetCurrentTok (TokenType.CloseBlock, true);
+                                       else
+                                               readToCurrTok ();                                       
+                                       break;
+                               case '\\'://unicode escape sequence
+                                       if (!(currentTok.Type == TokenType.Identifier ||
+                                           currentTok.IsEmpty || currentTok.Type == TokenType.StringLitteral || currentTok.Type == TokenType.CharLitteral)) {
+                                               saveAndResetCurrentTok ();
+                                       }
+                                       Point pos = CurrentPosition;
+                                       Read ();
+                                       char escChar = Read ();
+
+                                       if (escChar == 'u') {
+                                               char c = char.ConvertFromUtf32 (int.Parse (Read (4), System.Globalization.NumberStyles.HexNumber))[0];
+                                               if (currentTok.IsEmpty) {
+                                                       if (!CharIsValidCharStartName (c))
+                                                               throwParserException ("expecting identifier start");                                                    
+                                                       currentTok.Start = pos;
+                                                       currentTok.Type = TokenType.Identifier;
+                                               } else if (currentTok.Type == TokenType.Identifier) {
+                                                       if (!CharIsValidCharName (c))
+                                                               throwParserException ("expecting identifier valid char");                                               
+                                               }
+                                               currentTok += c;
+                                               break;
+                                       }
+                                       currentTok += new String (new char[] { '\\', escChar });
+                                       break;
+                               case '\'':
+                                       if (currentTok.IsNull) {
+                                               readAndResetCurrentTok (TokenType.CharLitteralOpening, true);
+                                               currentTok.Type = TokenType.CharLitteral;
+                                       } else if (currentTok.Type == TokenType.CharLitteral) {
+                                               saveAndResetCurrentTok ();
+                                               readAndResetCurrentTok (TokenType.CharLitteralClosing, true);
+                                       } else if (currentTok.Type == TokenType.StringLitteral){
+                                               readToCurrTok ();
+                                       } else
+                                               throwParserException ("unexpected character: (\')");                                            
+                                       break;
+                               case '"':
+                                       if (currentTok.IsNull) {
+                                               readAndResetCurrentTok (TokenType.StringLitteralOpening, true);
+                                               currentTok.Type = TokenType.StringLitteral;
+                                       } else if (currentTok.Type == TokenType.StringLitteral) {
+                                               saveAndResetCurrentTok ();
+                                               readAndResetCurrentTok (TokenType.StringLitteralClosing, true);
+                                       } else
+                                               throwParserException ("unexpected character: (\")");
+                                       break;
+                               default:
+                                       if (currentTok.Type == TokenType.StringLitteral || currentTok.Type == TokenType.CharLitteral) {
+                                               readToCurrTok (currentTok.IsEmpty);
+                                       } else if (currentTok.IsNull) {
+                                               if (nextCharIsValidCharStartName) {                                             
+                                                       readToCurrTok (true);
+                                                       while (nextCharIsValidCharName)
+                                                               readToCurrTok ();
+
+                                                       if (keywords.Contains (currentTok.Content))
+                                                               saveAndResetCurrentTok (TokenType.Keyword);
+                                                       else
+                                                               saveAndResetCurrentTok (TokenType.Identifier);
+                                                       continue;
+                                               } else
+                                                       readAndResetCurrentTok(TokenType.Unknown, true);
+                                       } else
+                                               readAndResetCurrentTok(TokenType.Unknown, true);                                        
+                                       break;
+                               }
+                       }
+
+                       if (cl.EndingState != (int)curState && currentLine < buffer.LineCount - 1)
+                               buffer [currentLine + 1].Tokens = null;
+
+                       cl.EndingState = (int)curState;
+               }
+               
+               public override void SyntaxAnalysis ()
+               {
+                       initSyntaxAnalysis ();
+                       Node currentNode = RootNode;
+
+                       int ptrLine = 0;
+                       while (ptrLine < buffer.LineCount) {
+                               CodeLine cl = buffer [ptrLine];
+                               if (cl.Tokens == null){
+                                       ptrLine++;
+                                       continue;
+                               }
+                               cl.SyntacticNode = null;
+
+                               int tokPtr = 0;
+                               bool onlyWhiteSpace = true;
+                               while (tokPtr < cl.Tokens.Count) {
+                                       if (cl.Tokens [tokPtr].Type == TokenType.WhiteSpace) {
+                                               tokPtr++;
+                                               continue;
+                                       }
+
+                                       if (cl.Tokens [tokPtr].Type == TokenType.LineComment && onlyWhiteSpace) {
+                                               int startLine = ptrLine;
+                                               ptrLine++;
+                                               while (ptrLine < buffer.LineCount) {
+                                                       int idx = buffer [ptrLine].FirstNonBlankTokIndex;
+                                                       if (idx < 0) 
+                                                               break;
+                                                       if (buffer [ptrLine].Tokens [idx].Type != TokenType.LineComment)
+                                                               break;
+                                                       ptrLine++;
+                                               }
+                                               ptrLine--;
+                                               if (ptrLine - startLine > 0) {
+                                                       currentNode = addChildNode (currentNode, cl, tokPtr, "comment");
+                                                       closeNodeAndGoUp (ref currentNode, buffer [ptrLine], "comment");
+                                               }
+                                               break;
+                                       }
+
+                                       switch (cl.Tokens [tokPtr].Type) {
+                                       case TokenType.BlockCommentStart:
+                                       case TokenType.OpenBlock:
+                                               currentNode = addChildNode (currentNode, cl, tokPtr);
+                                               break;
+                                       case TokenType.CloseBlock:
+                                       case TokenType.BlockCommentEnd:
+                                               closeNodeAndGoUp (ref currentNode, cl);
+                                               break;
+                                       case TokenType.Preprocessor:
+                                               if (cl.Tokens [tokPtr].Content.StartsWith ("#region", StringComparison.Ordinal)) {
+                                                       currentNode = addChildNode (currentNode, cl, tokPtr, "region");
+                                               } else if (cl.Tokens [tokPtr].Content.StartsWith ("#endregion", StringComparison.Ordinal)) {
+                                                       
+                                                       closeNodeAndGoUp (ref currentNode, cl,"region");
+                                               }
+                                               break;
+                                       }
+                                       onlyWhiteSpace = false;
+                                       tokPtr++;
+                               }
+                               ptrLine++;
+                       }
+                       /*ptrLine = 0;
+                       while (ptrLine < buffer.LineCount) {
+                               CodeLine cl = buffer [ptrLine];
+                               if (cl.IsFoldable) {
+                                       if (cl.SyntacticNode.Type == "comment" || cl.SyntacticNode.Type == "region")
+                                               cl.IsFolded = true;
+                               }
+                               ptrLine++;
+                       }*/
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/Parsers/StyleParser.cs b/Samples/CrowIDE/src/Editors/Parsers/StyleParser.cs
new file mode 100644 (file)
index 0000000..9a1e74c
--- /dev/null
@@ -0,0 +1,179 @@
+using System;
+using Crow;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
+using System.Linq;
+
+namespace Crow.Coding
+{
+       public class StyleParser : BufferParser
+       {
+               enum States { init, classNames, members, value, endOfStatement }
+
+               public StyleParser (CodeBuffer _buffer) : base(_buffer)
+               {
+               }
+
+               #region Character ValidityCheck
+               static Regex rxValidChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}");
+               static Regex rxNameStartChar = new Regex(@"_|\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}");                                                                                                                      
+               static Regex rxNameChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}");
+               static Regex rxDecimal = new Regex(@"[0-9]+");
+               static Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+");
+
+               public bool nextCharIsValidCharStartName
+               {
+                       get { return rxNameStartChar.IsMatch(new string(new char[]{Peek()})); }
+               }
+               public bool nextCharIsValidCharName
+               {
+                       get { return rxNameChar.IsMatch(new string(new char[]{Peek()})); }
+               }
+               #endregion
+
+               States curState = States.classNames;
+
+               public override void ParseCurrentLine ()
+               {
+                       //Debug.WriteLine (string.Format("parsing line:{0}", currentLine));
+                       CodeLine cl = buffer [currentLine];
+                       cl.Tokens = new List<Token> ();
+
+                       //retrieve current parser state from previous line
+                       if (currentLine > 0)
+                               curState = (States)buffer[currentLine - 1].EndingState;
+                       else
+                               curState = States.init;
+
+                       States previousEndingState = (States)cl.EndingState;
+
+                       while (! eol) {
+                               SkipWhiteSpaces ();
+
+                               if (eol)
+                                       break;
+
+                               if (Peek () == '\n') {
+                                       if (currentTok != TokenType.Unknown)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected end of line");
+                                       Read ();
+                                       eol = true;
+                                       continue;
+                               }
+
+                               switch (Peek()) {
+                               case '/':
+                                       readToCurrTok (true);
+                                       switch (Peek ()) {
+                                       case '/':
+                                               currentTok += ReadLine ();
+                                               saveAndResetCurrentTok (TokenType.LineComment);
+                                               break;
+                                       default:
+                                               currentTok += ReadLine ();
+                                               saveAndResetCurrentTok (TokenType.Unknown);
+                                               break;
+                                       }
+                                       break;
+                               case ',':
+                                       if (curState != States.init && curState != States.classNames )
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected char ','");
+                                       readAndResetCurrentTok (TokenType.OperatorOrPunctuation, true);
+                                       curState = States.classNames;
+                                       break;
+                               case '{':
+                                       if (!(curState == States.init || curState == States.classNames))
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected char '{'");
+                                       readAndResetCurrentTok (TokenType.OpenBlock, true);
+                                       curState = States.members;
+                                       break;
+                               case '}':
+                                       if (curState != States.members)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected char '}'");
+                                       readAndResetCurrentTok (TokenType.CloseBlock, true);
+                                       curState = States.classNames;
+                                       break;
+                               case '=':
+                                       if (curState == States.classNames)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected char '='");
+                                       setPreviousTokOfTypeTo (TokenType.Type, TokenType.Identifier);
+                                       readAndResetCurrentTok (TokenType.OperatorOrPunctuation, true);
+                                       curState = States.value;
+                                       break;
+                               case '"':
+                                       if (curState != States.value)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected char '\"'");                                 
+                                       readAndResetCurrentTok (TokenType.StringLitteralOpening, true);
+
+                                       while (!eol) {
+                                               currentTok += ReadLineUntil ("\"");
+                                               if (currentTok.Content [currentTok.Content.Length - 1] == '\\')
+                                                       readToCurrTok ();
+                                               else
+                                                       break;
+                                       }
+                                       if (eol)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected end of line");
+                                       saveAndResetCurrentTok (TokenType.StringLitteral);
+
+                                       readAndResetCurrentTok (TokenType.StringLitteralClosing, true);
+                                       curState = States.endOfStatement;
+                                       break;
+                               case ';':
+                                       if (curState != States.endOfStatement)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected end of statement");                                  
+                                       readAndResetCurrentTok (TokenType.StatementEnding, true);
+                                       curState = States.members;
+                                       break;
+                               default:
+                                       if (currentTok.Type != TokenType.Unknown)
+                                               throw new ParserException (currentLine, currentColumn, "error curtok not null");
+                                       if (curState == States.value)
+                                               throw new ParserException (currentLine, currentColumn, "expecting value enclosed in '\"'");
+                                       if (curState == States.endOfStatement)
+                                               throw new ParserException (currentLine, currentColumn, "expecting end of statement");                                   
+                                       
+                                       if (nextCharIsValidCharStartName) {                                             
+                                               readToCurrTok (true);
+                                               while (nextCharIsValidCharName)
+                                                       readToCurrTok ();
+                                       }
+                                       saveAndResetCurrentTok (TokenType.Type);
+                                       break;
+                               }
+                       }
+
+                       if (cl.EndingState != (int)curState && currentLine < buffer.LineCount - 1)
+                               buffer [currentLine + 1].Tokens = null;
+
+                       cl.EndingState = (int)curState;
+               }
+               public override void SyntaxAnalysis ()
+               {
+                       initSyntaxAnalysis ();
+                       Node currentNode = RootNode;
+
+                       for (int i = 0; i < buffer.LineCount; i++) {
+                               CodeLine cl = buffer[i];
+                               if (cl.Tokens == null)
+                                       continue;
+                               cl.SyntacticNode = null;
+
+                               int tokPtr = 0;
+                               while (tokPtr < cl.Tokens.Count) {
+                                       switch (cl.Tokens [tokPtr].Type) {
+                                       case TokenType.OpenBlock:                                               
+                                               currentNode = addChildNode (currentNode, cl, tokPtr, "style");
+                                               break;
+                                       case TokenType.CloseBlock:                                              
+                                               closeNodeAndGoUp (ref currentNode, cl, "style");
+                                               break;
+                                       }
+                                       tokPtr++;
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/Parsers/XMLParser.cs b/Samples/CrowIDE/src/Editors/Parsers/XMLParser.cs
new file mode 100644 (file)
index 0000000..8e95408
--- /dev/null
@@ -0,0 +1,307 @@
+using System;
+using Crow;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+using System.Diagnostics;
+using System.Linq;
+
+namespace Crow.Coding
+{
+       public class XMLParser : BufferParser
+       {
+               public new enum TokenType {
+                       Unknown = BufferParser.TokenType.Unknown,
+                       WhiteSpace = BufferParser.TokenType.WhiteSpace,
+                       NewLine = BufferParser.TokenType.NewLine,
+                       LineComment = BufferParser.TokenType.LineComment,
+                       BlockCommentStart = BufferParser.TokenType.BlockCommentStart,
+                       BlockComment = BufferParser.TokenType.BlockComment,
+                       BlockCommentEnd = BufferParser.TokenType.BlockCommentEnd,
+                       ElementName = BufferParser.TokenType.Type,
+                       AttributeName = BufferParser.TokenType.Identifier,
+                       ElementClosing = BufferParser.TokenType.StatementEnding,
+                       Affectation = BufferParser.TokenType.OperatorOrPunctuation,
+                       AttributeValueOpening = BufferParser.TokenType.StringLitteralOpening,
+                       AttributeValueClosing = BufferParser.TokenType.StringLitteralClosing,
+                       AttributeValue = BufferParser.TokenType.StringLitteral,
+                       XMLDecl = BufferParser.TokenType.Preprocessor,
+                       Doctype = BufferParser.TokenType.Keyword,
+                       ElementStart = 50,
+                       ElementEnd = 51,
+               }
+
+               public enum States
+               {
+                       init,       //first statement of prolog, xmldecl should only apear in this state
+                       prolog,     //misc before doctypedecl
+                       InternalSubset,    //doctype declaration subset
+                       ExternalSubsetInit,
+                       ExternalSubset,
+                       BlockComment,
+                       DTDEnd,//doctype finished
+                       XML,//normal xml
+                       StartTag,//inside start tag
+                       Content,//after start tag with no closing slash
+                       EndTag
+               }
+
+               #region CTOR
+               public XMLParser (CodeBuffer _buffer) : base(_buffer) {}
+               #endregion
+
+               enum Keywords
+               {
+                       DOCTYPE,
+                       ELEMENT,
+                       ATTLIST,
+                       ENTITY,
+                       NOTATION
+               }
+
+               States curState = States.init;
+
+               #region Regular Expression for validity checks
+               //private static Regex rxValidChar = new Regex("[\u0020-\uD7FF]");
+               private static Regex rxValidChar = new Regex(@"\u0009|\u000A|\u000D|[\u0020-\uD7FF]|[\uE000-\uFFFD]");   //| [\u10000-\u10FFFF] unable to set those plans
+               private static Regex rxNameStartChar = new Regex(@":|[A-Z]|_|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]"); // | [\u10000-\uEFFFF]
+               private static Regex rxNameChar = new Regex(@":|[A-Z]|_|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|-|\.|[0-9]|\u00B7|[\u0300-\u036F]|[\u203F-\u2040]");//[\u10000-\uEFFFF]|
+               private static Regex rxDecimal = new Regex(@"[0-9]+");
+               private static Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+");
+               private static Regex rxAttributeValue = new Regex(@"[^<]");
+               private static Regex rxEntityValue = new Regex(@"[^<]");
+               private static Regex rxPubidChar = new Regex(@"\u0020|\u000D|\u000A|[a-zA-Z0-9]|[-\(\)\+\,\./:=\?;!\*#@\$_%]");
+               #endregion
+
+               #region Character ValidityCheck
+               public bool nextCharIsValidCharStartName
+               {
+                       get { return rxNameStartChar.IsMatch(new string(new char[]{Peek()})); }
+               }
+               public bool nextCharIsValidCharName
+               {
+                       get { return rxNameChar.IsMatch(new string(new char[]{Peek()})); }
+               }
+               #endregion
+
+               public override void SetLineInError (ParserException ex)
+               {
+                       base.SetLineInError (ex);
+                       //buffer[ex.Line].Tokens.EndingState = (int)States.init;
+               }
+
+               public override void ParseCurrentLine ()
+               {
+                       //Debug.WriteLine (string.Format("parsing line:{0}", currentLine));
+                       CodeLine cl = buffer [currentLine];
+                       cl.Tokens = new List<Token> ();
+
+                       //retrieve current parser state from previous line
+                       if (currentLine > 0)
+                               curState = (States)buffer[currentLine - 1].EndingState;
+                       else
+                               curState = States.init;
+
+                       States previousEndingState = (States)cl.EndingState;
+
+
+                       while (! eol) {
+                               SkipWhiteSpaces ();
+
+                               if (eol)
+                                       break;
+
+                               if (Peek () == '\n') {
+                                       if (currentTok != TokenType.Unknown)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected end of line");
+                                       Read ();
+                                       eol = true;
+                                       continue;
+                               }
+
+                               if (curState == States.BlockComment) {
+                                       if (currentTok != TokenType.Unknown)
+                                               Debugger.Break ();
+
+                                       currentTok.Start = CurrentPosition;
+                                       currentTok.Type = (BufferParser.TokenType)TokenType.BlockComment;
+                                       currentTok += ReadLineUntil ("-->");
+                                       if (Peek (3) == "-->") {
+                                               readToCurrTok (3);
+                                               curState = States.XML;
+                                       }
+                                       saveAndResetCurrentTok ();
+                                       continue;
+                               }
+
+                               switch (Peek()) {
+                               case '<':
+                                       readToCurrTok (true);
+                                       switch (Peek()) {
+                                       case '?':
+                                               if (curState != States.init)
+                                                       throw new ParserException (currentLine, currentColumn, "xml decl may appear only on first line");
+                                               readToCurrTok ();
+                                               currentTok += ReadLineUntil ("?>");
+                                               if (Peek (2) != "?>")
+                                                       throw new ParserException (currentLine, currentColumn, "expecting '?>'");
+                                               readToCurrTok (2);
+                                               saveAndResetCurrentTok (TokenType.XMLDecl);
+                                               curState = States.prolog;
+                                               break;
+                                       case '!':
+                                               readToCurrTok ();
+                                               switch (Peek()) {
+                                               case '-':
+                                                       readToCurrTok ();
+                                                       if (Peek () != '-')
+                                                               throw new ParserException (currentLine, currentColumn, "Expecting comment start tag");
+                                                       readToCurrTok ();
+                                                       currentTok += ReadLineUntil ("--");
+                                                       if (Peek (3) == "-->") {
+                                                               readToCurrTok (3);
+                                                       }else
+                                                               curState = States.BlockComment;
+                                                       saveAndResetCurrentTok (TokenType.BlockComment);
+                                                       break;
+                                               case 'D':
+                                               case 'd':
+                                                       string tmp = Read (7);
+                                                       currentTok += tmp;
+                                                       if (!string.Equals (tmp, "DOCTYPE", StringComparison.OrdinalIgnoreCase))
+                                                               throw new ParserException (currentLine, currentColumn, "Expecting 'doctype'");
+                                                       saveAndResetCurrentTok (TokenType.Doctype);
+                                                       break;
+                                               default:                                                        
+                                                       throw new ParserException (currentLine, currentColumn, "error");
+                                               }
+                                               break;
+                                       default:
+                                               if (!(curState == States.Content || curState == States.XML || curState == States.init || curState == States.prolog))
+                                                       throw new ParserException (currentLine, currentColumn, "Unexpected char: '<'");
+                                               if (Peek () == '/') {
+                                                       curState = States.EndTag;
+                                                       readToCurrTok ();
+                                                       saveAndResetCurrentTok (TokenType.ElementEnd);
+                                               } else {
+                                                       curState = States.StartTag;
+                                                       saveAndResetCurrentTok (TokenType.ElementStart);
+                                               }
+
+                                               if (!nextCharIsValidCharStartName)
+                                                       throw new ParserException (currentLine, currentColumn, "Expected element name");
+
+                                               readToCurrTok (true);
+                                               while (nextCharIsValidCharName)
+                                                       readToCurrTok ();
+
+                                               saveAndResetCurrentTok (TokenType.ElementName);
+                                               break;
+                                       }
+                                       break;
+                               case '/':
+                                       if (curState != States.StartTag)
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected char: '/'");
+                                       readToCurrTok (true);
+                                       if (Peek () != '>')
+                                               throw new ParserException (currentLine, currentColumn, "Expecting '>'");
+                                       readAndResetCurrentTok (TokenType.ElementEnd);
+
+                                       curState = States.XML;
+                                       break;
+                               case '>':
+                                       readAndResetCurrentTok (TokenType.ElementClosing, true);
+                                       switch (curState) {
+                                       case States.EndTag:
+                                               curState = States.XML;
+                                               break;
+                                       case States.StartTag:
+                                               curState = States.Content;
+                                               break;
+                                       default:
+                                               throw new ParserException (currentLine, currentColumn, "Unexpected char: '>'");
+                                       }
+                                       break;
+                               default:
+                                       switch (curState) {
+                                       case States.StartTag:
+                                               if (!nextCharIsValidCharStartName)
+                                                       throw new ParserException (currentLine, currentColumn, "Expected attribute name");
+                                               readToCurrTok (true);
+                                               while (nextCharIsValidCharName)
+                                                       readToCurrTok ();
+                                               saveAndResetCurrentTok (TokenType.AttributeName);
+
+                                               SkipWhiteSpaces ();
+
+                                               if (Peek () != '=')
+                                                       throw new ParserException (currentLine, currentColumn, "Expecting: '='");
+                                               readAndResetCurrentTok (TokenType.Affectation, true);
+
+                                               SkipWhiteSpaces ();
+
+                                               char openAttVal = Peek ();
+                                               if (openAttVal != '"' && openAttVal != '\'')
+                                                       throw new ParserException (currentLine, currentColumn, "Expecting attribute value enclosed either in '\"' or in \"'\"");
+                                               readAndResetCurrentTok (TokenType.AttributeValueOpening, true);
+
+                                               currentTok.Start = CurrentPosition;
+                                               currentTok.Content = ReadLineUntil (new string (new char[]{ openAttVal }));
+                                               saveAndResetCurrentTok (TokenType.AttributeValue);
+
+                                               if (Peek () != openAttVal)
+                                                       throw new ParserException (currentLine, currentColumn, string.Format ("Expecting {0}", openAttVal));
+                                               readAndResetCurrentTok (TokenType.AttributeValueClosing, true);
+                                               break;
+                                       default:
+                                               throw new ParserException (currentLine, currentColumn, "unexpected char: " + Peek ());
+                                       }
+                                       break;
+                               }
+                       }
+
+                       if (cl.EndingState != (int)curState && currentLine < buffer.LineCount - 1)
+                               buffer [currentLine + 1].Tokens = null;
+
+                       cl.EndingState = (int)curState;
+               }
+
+               public override void SyntaxAnalysis ()
+               {
+                       initSyntaxAnalysis ();
+                       Node currentNode = RootNode;
+
+                       for (int i = 0; i < buffer.LineCount; i++) {
+                               CodeLine cl = buffer[i];
+                               if (cl.Tokens == null)
+                                       continue;
+                               cl.SyntacticNode = null;
+
+                               int tokPtr = 0;
+                               while (tokPtr < cl.Tokens.Count) {
+                                       switch ((XMLParser.TokenType)cl.Tokens [tokPtr].Type) {
+                                       case TokenType.ElementStart:
+                                               tokPtr++;
+                                               currentNode = addChildNode (currentNode, cl, tokPtr, "Element");
+                                               break;
+                                       case TokenType.ElementEnd:
+                                               tokPtr++;
+                                               if (tokPtr < cl.Tokens.Count) {
+                                                       if ((XMLParser.TokenType)cl.Tokens [tokPtr].Type == TokenType.ElementName &&
+                                                           cl.Tokens [tokPtr].Content != currentNode.Name)
+                                                               throw new ParserException (currentLine, currentColumn, "Closing tag mismatch");
+                                               }
+                                               closeNodeAndGoUp (ref currentNode, cl, "Element");
+                                               break;
+                                       case TokenType.ElementClosing:
+                                               //currentNode = currentNode.Parent;
+                                               break;
+                                       default:
+                                               break;
+                                       }
+                                       tokPtr++;
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/Parsers2/Tokenizer.cs b/Samples/CrowIDE/src/Editors/Parsers2/Tokenizer.cs
new file mode 100644 (file)
index 0000000..bcda1ec
--- /dev/null
@@ -0,0 +1,67 @@
+//
+// Tokenizer.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using Crow.Text;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+
+namespace Crow.Coding2
+{
+       public static class TokenType {
+               public const int Undefine = 0;
+               public const int WhiteSpace = 0;
+       }
+       public class Token {
+               public int ptr;
+               public int length;
+       }
+
+       public class Tokenizer
+       {
+               #region Regular Expression for validity checks
+               public Regex rxValidChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}");
+               public Regex rxNameStartChar = new Regex(@"_|\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}");
+               public Regex rxNameChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}");
+               public Regex rxNewLineChar = new Regex(@"\u000D|\u000A|\u0085|\u2028|\u2029");
+               public Regex rxWhiteSpaceChar = new Regex(@"\p{Zs}|\u0009|\u000B|\u000C");
+               public Regex rxDecimal = new Regex(@"[0-9]+");
+               public Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+");
+               #endregion
+
+               public List<Token> Tokens;
+
+               public Tokenizer (TextBuffer buffer)
+               {
+               }
+
+
+               public void Tokenize () {
+                       
+               }
+
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Editors/SourceEditor.cs b/Samples/CrowIDE/src/Editors/SourceEditor.cs
new file mode 100644 (file)
index 0000000..ca55ee0
--- /dev/null
@@ -0,0 +1,1209 @@
+//
+// ScrollingTextBox.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+
+using System;
+using System.ComponentModel;
+using System.Collections.Generic;
+using System.Diagnostics;
+using vkvg;
+
+namespace Crow.Coding
+{
+       /// <summary>
+       /// Scrolling text box optimized for monospace fonts, for coding
+       /// </summary>
+       public class SourceEditor : Editor
+       {               
+               #region CTOR
+               public SourceEditor (): base()
+               {
+                       formatting.Add ((int)XMLParser.TokenType.AttributeName, new TextFormatting (Color.DarkSlateGrey, Color.Transparent));
+                       formatting.Add ((int)XMLParser.TokenType.ElementName, new TextFormatting (Color.DarkBlue, Color.Transparent));
+                       formatting.Add ((int)XMLParser.TokenType.ElementStart, new TextFormatting (Color.Black, Color.Transparent));
+                       formatting.Add ((int)XMLParser.TokenType.ElementEnd, new TextFormatting (Color.Black, Color.Transparent));
+                       formatting.Add ((int)XMLParser.TokenType.ElementClosing, new TextFormatting (Color.Black, Color.Transparent));
+
+                       formatting.Add ((int)XMLParser.TokenType.AttributeValueOpening, new TextFormatting (Color.Crimson, Color.Transparent));
+                       formatting.Add ((int)XMLParser.TokenType.AttributeValueClosing, new TextFormatting (Color.Crimson, Color.Transparent));
+                       formatting.Add ((int)XMLParser.TokenType.AttributeValue, new TextFormatting (Color.FireBrick, Color.Transparent, false, true));
+                       formatting.Add ((int)XMLParser.TokenType.XMLDecl, new TextFormatting (Color.ForestGreen, Color.Transparent));
+
+                       formatting.Add ((int)BufferParser.TokenType.BlockComment, new TextFormatting (Color.Grey, Color.Transparent, false, true));
+                       formatting.Add ((int)BufferParser.TokenType.LineComment, new TextFormatting (Color.Grey, Color.Transparent, false, true));
+                       formatting.Add ((int)BufferParser.TokenType.OperatorOrPunctuation, new TextFormatting (Color.Black, Color.Transparent));
+                       formatting.Add ((int)BufferParser.TokenType.Keyword, new TextFormatting (Color.Teal, Color.Transparent));
+                       //formatting.Add ((int)BufferParser.TokenType.Keyword, new TextFormatting (Color.DarkCyan, Color.Transparent));
+
+                       parsing.Add (".crow", "Crow.Coding.XMLParser");
+                       parsing.Add (".svg", "Crow.Coding.XMLParser");
+                       parsing.Add (".template", "Crow.Coding.XMLParser");
+                       parsing.Add (".cs", "Crow.Coding.CSharpParser");
+                       parsing.Add (".style", "Crow.Coding.StyleParser");
+
+                       buffer = new CodeBuffer ();
+                       buffer.LineUpadateEvent += Buffer_LineUpadateEvent;
+                       buffer.LineAdditionEvent += Buffer_LineAdditionEvent;;
+                       buffer.LineRemoveEvent += Buffer_LineRemoveEvent;
+                       buffer.BufferCleared += Buffer_BufferCleared;
+                       buffer.SelectionChanged += Buffer_SelectionChanged;
+                       buffer.PositionChanged += Buffer_PositionChanged;
+                       buffer.FoldingEvent += Buffer_FoldingEvent;
+                       buffer.Add (new CodeLine(""));
+               }
+               #endregion
+
+               string oldSource = "";
+               //save requested position on error, and try it on next move
+               int requestedLine = 0, requestedCol = 0;
+               volatile bool isDirty = false;
+
+               const int leftMarginGap = 10;//gap between items in margin and text
+               const int foldSize = 9;//folding rectangles size
+               const int foldHSpace = 4;//folding level tabulation x
+               int foldMargin { get { return parser == null ? 0 : parser.SyntacticTreeMaxDepth * foldHSpace; }}//folding margin size
+
+               #region private and protected fields
+               bool foldingEnabled = true;
+               int leftMargin = 0;     //margin used to display line numbers, folding errors,etc...
+               int visibleLines = 1;
+               int visibleColumns = 1;
+               int firstPrintedLine = -1;
+               int printedCurrentLine = 0;//Index of the currentline in the PrintedLines array
+
+               CodeBuffer buffer;
+               BufferParser parser;
+               List<CodeLine> PrintedLines;//list of lines visible in the Editor depending on scrolling and folding
+
+               Dictionary<int, TextFormatting> formatting = new Dictionary<int, TextFormatting>();
+               Dictionary<string, string> parsing = new Dictionary<string, string>();
+
+               Color selBackground;
+               Color selForeground;
+               int selStartCol;
+               int selEndCol;
+
+               protected Rectangle rText;
+               protected FontExtents fe;
+               protected TextExtents te;
+
+               Point mouseLocalPos;
+               bool doubleClicked = false;
+               #endregion
+
+               void measureLeftMargin () {
+                       leftMargin = 0;
+                       if (PrintLineNumbers)
+                               leftMargin += (int)Math.Ceiling((double)buffer.LineCount.ToString().Length * fe.MaxXAdvance) +6;
+                       if (foldingEnabled)
+                               leftMargin += foldMargin;
+                       if (leftMargin > 0)
+                               leftMargin += leftMarginGap;                    
+                       updateVisibleColumns ();
+               }
+               void findLongestLineAndUpdateMaxScrollX() {
+                       buffer.FindLongestVisualLine ();
+                       updateMaxScrollX ();
+//                     Debug.WriteLine ("SourceEditor: Find Longest line and update maxscrollx: {0} visible cols:{1}", MaxScrollX, visibleColumns);
+               }
+               /// <summary>
+               /// Updates visible line in widget, adapt max scroll y and updatePrintedLines
+               /// </summary>
+               void updateVisibleLines(){
+                       visibleLines = (int)Math.Floor ((double)ClientRectangle.Height / (fe.Ascent+fe.Descent));
+                       NotifyValueChanged ("VisibleLines", visibleLines);
+                       updateMaxScrollY ();
+                       updatePrintedLines ();
+                       RegisterForGraphicUpdate ();
+//                     System.Diagnostics.Debug.WriteLine ("update visible lines: " + visibleLines);
+//                     System.Diagnostics.Debug.WriteLine ("update MaxScrollY: " + MaxScrollY);
+               }
+               void updateVisibleColumns(){
+                       visibleColumns = (int)Math.Floor ((double)(ClientRectangle.Width - leftMargin)/ fe.MaxXAdvance);
+                       NotifyValueChanged ("VisibleColumns", visibleColumns);
+                       updateMaxScrollX ();
+//                     System.Diagnostics.Debug.WriteLine ("update visible columns: {0} leftMargin:{1}",visibleColumns, leftMargin);
+//                     System.Diagnostics.Debug.WriteLine ("update MaxScrollX: " + MaxScrollX);
+               }
+               void updateMaxScrollX () {
+                       MaxScrollX = Math.Max (0, buffer.longestLineCharCount - visibleColumns);
+                       if (buffer.longestLineCharCount > 0)
+                               NotifyValueChanged ("ChildWidthRatio", Slot.Width * visibleColumns / buffer.longestLineCharCount);                      
+               }
+               void updateMaxScrollY () {
+                       if (parser == null || !foldingEnabled) {
+                               MaxScrollY = Math.Max (0, buffer.LineCount - visibleLines);
+                               if (buffer.UnfoldedLines > 0)
+                                       NotifyValueChanged ("ChildHeightRatio", Slot.Height * visibleLines / buffer.UnfoldedLines);                                                     
+                       } else {
+                               MaxScrollY = Math.Max (0, buffer.UnfoldedLines - visibleLines);
+                               if (buffer.UnfoldedLines > 0)
+                                       NotifyValueChanged ("ChildHeightRatio", Slot.Height * visibleLines / buffer.UnfoldedLines);                                                     
+                       }
+               }                       
+               void updatePrintedLines () {
+                       buffer.editMutex.EnterReadLock ();
+                       editorMutex.EnterWriteLock ();
+
+                       PrintedLines = new List<CodeLine> ();
+                       int curL = 0;
+                       int i = 0;
+
+                       while (curL < buffer.LineCount && i < ScrollY) {
+                               if (buffer [curL].IsFolded)
+                                       curL = buffer.GetEndNodeIndex (curL);
+                               curL++;
+                               i++;
+                       }
+
+                       firstPrintedLine = curL;
+                       i = 0;
+                       while (i < visibleLines && curL < buffer.LineCount) {
+                               PrintedLines.Add (buffer [curL]);
+
+                               if (buffer [curL].IsFolded)
+                                       curL = buffer.GetEndNodeIndex (curL);
+
+                               curL++;
+                               i++;
+                       }
+
+                       buffer.editMutex.ExitReadLock ();
+                       editorMutex.ExitWriteLock ();
+               }
+               void updateOnScreenCurLineFromBuffCurLine(){
+                       printedCurrentLine = PrintedLines.IndexOf (buffer.CurrentCodeLine);
+               }
+               void toogleFolding (int line) {
+                       if (parser == null || !foldingEnabled)
+                               return;
+                       buffer.ToogleFolding (line);
+               }
+
+               #region Editor overrides
+               protected override void updateEditorFromProjFile ()
+               {
+                       Debug.WriteLine("\t\tSourceEditor updateEditorFromProjFile");
+
+                       //buffer.editMutex.EnterWriteLock ();
+                       loadSource ();
+                       //buffer.editMutex.ExitWriteLock ();
+
+                       isDirty = false;
+                       oldSource = projFile.Source;
+                       CurrentLine = requestedLine;
+                       CurrentColumn = requestedCol;
+                       projFile.RegisteredEditors [this] = true;
+               }
+               protected override void updateProjFileFromEditor ()
+               {
+                       Debug.WriteLine("\t\tSourceEditor updateProjFileFromEditor");
+
+                       buffer.editMutex.EnterWriteLock ();
+                       string newsrc = buffer.FullText;
+                       buffer.editMutex.ExitWriteLock ();
+                       projFile.UpdateSource (this, newsrc);
+               }
+               protected override bool EditorIsDirty {
+                       get { return isDirty; }
+                       set { isDirty = value; }
+               }
+               protected override bool IsReady {
+                       get { return projFile != null && buffer != null; }
+               }
+               #endregion
+
+               #region Buffer events handlers
+               void Buffer_BufferCleared (object sender, EventArgs e)
+               {
+                       editorMutex.EnterWriteLock ();
+
+                       buffer.longestLineCharCount = 0;
+                       buffer.longestLineIdx = 0;
+                       measureLeftMargin ();
+                       MaxScrollX = MaxScrollY = 0;
+                       PrintedLines = null;
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+                       isDirty = true;
+
+                       editorMutex.ExitWriteLock ();
+               }
+               void Buffer_LineAdditionEvent (object sender, CodeBufferEventArgs e)
+               {
+                       for (int i = 0; i < e.LineCount; i++) {
+                               int lptr = e.LineStart + i;
+                               int charCount = buffer[lptr].PrintableLength;
+                               if (charCount > buffer.longestLineCharCount) {
+                                       buffer.longestLineIdx = lptr;
+                                       buffer.longestLineCharCount = charCount;
+                               }else if (lptr <= buffer.longestLineIdx)
+                                       buffer.longestLineIdx++;
+                               if (parser == null)
+                                       continue;
+                               parser.TryParseBufferLine (e.LineStart + i);
+                       }
+
+                       if (parser != null)
+                               parser.reparseSource ();
+
+                       measureLeftMargin ();
+
+                       updatePrintedLines ();
+                       updateMaxScrollY ();
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+                       isDirty = true;
+               }
+               void Buffer_LineRemoveEvent (object sender, CodeBufferEventArgs e)
+               {
+                       bool trigFindLongestLine = false;
+                       for (int i = 0; i < e.LineCount; i++) {
+                               int lptr = e.LineStart + i;
+                               if (lptr <= buffer.longestLineIdx)
+                                       trigFindLongestLine = true;
+                       }
+                       if (trigFindLongestLine)
+                               findLongestLineAndUpdateMaxScrollX ();
+
+                       measureLeftMargin ();
+                       updatePrintedLines ();
+                       updateMaxScrollY ();
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+                       isDirty = true;
+               }
+               void Buffer_LineUpadateEvent (object sender, CodeBufferEventArgs e)
+               {
+                       bool trigFindLongestLine = false;
+                       for (int i = 0; i < e.LineCount; i++) {
+
+                               int lptr = e.LineStart + i;
+                               if (lptr == buffer.longestLineIdx)
+                                       trigFindLongestLine = true;
+                               else if (buffer[lptr].PrintableLength > buffer.longestLineCharCount) {
+                                       buffer.longestLineCharCount = buffer[lptr].PrintableLength;
+                                       buffer.longestLineIdx = lptr;
+                               }
+                       }
+                       if (trigFindLongestLine)
+                               findLongestLineAndUpdateMaxScrollX ();
+                       
+                       RegisterForGraphicUpdate ();
+                       notifyPositionChanged ();
+                       isDirty = true;
+               }
+               void Buffer_PositionChanged (object sender, EventArgs e)
+               {
+                       //Console.WriteLine ("Position changes: ({0},{1})", buffer.CurrentLine, buffer.CurrentColumn);
+                       int cc = buffer.CurrentTabulatedColumn;
+
+                       if (cc > visibleColumns + ScrollX) {
+                               ScrollX = cc - visibleColumns;
+                       } else if (cc < ScrollX)
+                               ScrollX = cc;
+                       
+                       RegisterForGraphicUpdate ();
+                       updateOnScreenCurLineFromBuffCurLine ();
+                       notifyPositionChanged ();
+               }
+
+               void Buffer_SelectionChanged (object sender, EventArgs e)
+               {
+                       RegisterForGraphicUpdate ();
+               }
+               void Buffer_FoldingEvent (object sender, CodeBufferEventArgs e)
+               {
+                       updatePrintedLines ();
+                       updateOnScreenCurLineFromBuffCurLine ();
+                       updateMaxScrollY ();
+                       RegisterForGraphicUpdate ();
+               }
+               #endregion
+
+               void notifyPositionChanged (){
+                       try {                           
+                               NotifyValueChanged ("CurrentLine", buffer.CurrentLine+1);
+                               NotifyValueChanged ("CurrentColumn", buffer.CurrentColumn+1);
+                               NotifyValueChanged ("CurrentLineHasError", CurrentLineHasError);
+                               NotifyValueChanged ("CurrentLineError", CurrentLineError);
+                       } catch (Exception ex) {
+                               Console.WriteLine (ex.ToString ());
+                       }
+               }
+                       
+               #region Public Crow Properties
+               public int CurrentLine{
+                       get { return buffer == null ? 0 : buffer.CurrentLine+1; }
+                       set {
+                               try {
+                                       int l = value - 1;
+                                       if (l == buffer.CurrentLine)
+                                               return;
+                                       buffer.CurrentLine = l;
+                                       l = buffer.CurrentLine; //reaffect from buffer where bound check is made
+                                       if ((bool)buffer [l]?.IsFolded)
+                                               buffer.ToogleFolding (l);                                       
+                               } catch (Exception ex) {
+                                       requestedLine = value - 1;
+                                       Console.WriteLine ("Error cur column: " + ex);
+                               }
+                       }
+               }
+               public int CurrentColumn{
+                       get { return buffer == null ? 0 : buffer.CurrentColumn+1; }
+                       set {
+                               try {                                   
+                                       if (value - 1 == buffer.CurrentColumn)
+                                               return;
+                                       buffer.CurrentColumn = value - 1;
+                               } catch (Exception ex) {
+                                       requestedCol = value - 1;
+                                       Console.WriteLine ("Error cur column: " + ex.ToString ());
+                               }
+                       }
+               }
+               public bool PrintLineNumbers
+               {
+                       get { return Configuration.Global.Get<bool> ("PrintLineNumbers"); }
+                       set     {
+                               if (PrintLineNumbers == value)
+                                       return;
+                               Configuration.Global.Set ("PrintLineNumbers", value);
+                               NotifyValueChanged ("PrintLineNumbers", PrintLineNumbers);
+                               measureLeftMargin ();
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               [DefaultValue("SteelBlue")]
+               public virtual Color SelectionBackground {
+                       get { return selBackground; }
+                       set {
+                               if (value == selBackground)
+                                       return;
+                               selBackground = value;
+                               NotifyValueChanged ("SelectionBackground", selBackground);
+                               RegisterForRedraw ();
+                       }
+               }
+               [DefaultValue("White")]
+               public virtual Color SelectionForeground {
+                       get { return selForeground; }
+                       set {
+                               if (value == selForeground)
+                                       return;
+                               selForeground = value;
+                               NotifyValueChanged ("SelectionForeground", selForeground);
+                               RegisterForRedraw ();
+                       }
+               }
+               public override int ScrollY {
+                       get {
+                               return base.ScrollY;
+                       }
+                       set {
+                               if (value == base.ScrollY)
+                                       return;
+                               base.ScrollY = value;
+                               updatePrintedLines ();
+                               updateOnScreenCurLineFromBuffCurLine ();
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               public ParserException CurrentLineError {
+                       get { return buffer?.CurrentCodeLine?.exception; }
+               }
+               public bool CurrentLineHasError {
+                       get { return buffer == null ? false : buffer.CurrentCodeLine == null ? false :
+                               buffer.CurrentCodeLine.exception != null; }
+               }
+               public override ProjectFile ProjectNode {
+                       get {
+                               return base.ProjectNode;
+                       }
+                       set {
+                               base.ProjectNode = value;
+                               if (projFile != null)
+                                       parser = getParserFromExt (System.IO.Path.GetExtension (projFile.Extension));
+                       }
+               }
+               #endregion
+
+               BufferParser getParserFromExt (string extension) {
+                       if (string.IsNullOrEmpty(extension))
+                               return null;
+                       if (!parsing.ContainsKey(extension))
+                               return null;
+                       Type parserType = Type.GetType (parsing [extension]);
+                       if (parserType == null)
+                               return null;
+                       return (BufferParser)Activator.CreateInstance (parserType, buffer );
+               }
+               void loadSource () {
+
+                       try {
+
+                               if (parser == null)
+                                       buffer.Load (projFile.Source);
+                               else//parser may have special linebrk rules
+                                       buffer.Load (projFile.Source, parser.LineBrkRegex);
+
+                       } catch (Exception ex) {
+                               Debug.WriteLine (ex.ToString ());
+                       }
+
+                       projFile.RegisteredEditors [this] = true;
+
+                       updateMaxScrollY ();
+                       MaxScrollX = Math.Max (0, buffer.longestLineCharCount - visibleColumns);
+                       updatePrintedLines ();
+
+                       RegisterForGraphicUpdate ();
+               }
+
+               /// <summary>
+               /// Current editor line, when set, update buffer.CurrentLine
+               /// </summary>
+               int PrintedCurrentLine {
+                       get { return printedCurrentLine;}
+                       set {
+                               if (value < 0) {
+                                       ScrollY += value;
+                                       printedCurrentLine = 0;
+                               } else if (PrintedLines.Count < visibleLines && value >= PrintedLines.Count) {
+                                       printedCurrentLine = PrintedLines.Count - 1;
+                               }else if (value >= visibleLines) {
+                                       ScrollY += value - visibleLines + 1;
+                                       printedCurrentLine = visibleLines - 1;
+                               }else
+                                       printedCurrentLine = value;
+                               //Debug.WriteLine ("printed current line:" + printedCurrentLine.ToString ());
+                               //update position in buffer
+                               buffer.CurrentLine = buffer.IndexOf (PrintedLines[printedCurrentLine]);
+                       }
+               }
+               int getTabulatedColumn (int col, int line) {
+                       return buffer [line].Content.Substring (0, col).Replace ("\t", new String (' ', Interface.TabSize)).Length;
+               }
+               int getTabulatedColumn (Point pos) {
+                       return getTabulatedColumn (pos.X,pos.Y);
+               }
+               /// <summary>
+               /// Moves cursor one char to the left, move up if cursor reaches start of line
+               /// </summary>
+               /// <returns><c>true</c> if move succeed</returns>
+               public bool MoveLeft(){
+                       if (buffer.CurrentColumn == 0) {
+                               if (printedCurrentLine == 0)
+                                       return false;
+                               PrintedCurrentLine--;
+                               buffer.CurrentColumn = int.MaxValue;
+                       } else
+                               buffer.CurrentColumn--;
+                       return true;
+               }
+               /// <summary>
+               /// Moves cursor one char to the right, move down if cursor reaches end of line
+               /// </summary>
+               /// <returns><c>true</c> if move succeed</returns>
+               public bool MoveRight(){
+                       if (buffer.CurrentColumn >= buffer.CurrentCodeLine.Length) {
+                               if (PrintedCurrentLine == buffer.UnfoldedLines - 1)
+                                       return false;
+                               buffer.CurrentColumn = 0;
+                               PrintedCurrentLine++;
+                       } else
+                               buffer.CurrentColumn++;
+                       return true;
+               }
+
+               #region Drawing
+               void drawLine(Context gr, Rectangle cb, int i) {
+                       CodeLine cl = PrintedLines[i];
+                       int lineIndex = buffer.IndexOf(cl);
+
+                       double y = cb.Y + (fe.Ascent+fe.Descent) * i, x = cb.X;
+
+                       //Draw line numbering
+                       Color mgFg = Color.Grey;
+                       Color mgBg = Color.White;
+                       if (PrintLineNumbers){
+                               Rectangle mgR = new Rectangle ((int)x, (int)y, leftMargin - leftMarginGap, (int)Math.Ceiling((fe.Ascent+fe.Descent)));
+                               if (cl.exception != null) {
+                                       mgBg = Color.Red;
+                                       if (buffer.CurrentLine == lineIndex)
+                                               mgFg = Color.White;
+                                       else
+                                               mgFg = Color.LightGrey;
+                               }else if (buffer.CurrentLine == lineIndex && HasFocus) {
+                                       mgFg = Color.Black;
+                                       mgBg = Color.DarkGrey;
+                               }
+                               string strLN = (lineIndex+1).ToString ();
+                               gr.SetSourceColor (mgBg);
+                               gr.Rectangle (mgR);
+                               gr.Fill();
+                               gr.SetSourceColor (mgFg);
+
+                               gr.MoveTo (cb.X + (int)(gr.TextExtents (buffer.LineCount.ToString()).Width - gr.TextExtents (strLN).Width), y + fe.Ascent);
+                               gr.ShowText (strLN);
+                               gr.Fill ();
+                       }
+
+
+
+                       //draw folding
+                       if (foldingEnabled){
+
+                               Rectangle rFld = new Rectangle (cb.X + leftMargin - leftMarginGap - foldMargin,
+                                       (int)(y + (fe.Ascent + fe.Descent) / 2.0 - foldSize / 2.0), foldSize, foldSize);
+
+                               gr.SetSourceColor (Color.Black);
+                               gr.LineWidth = 1.0;
+
+                               int level = 0;
+                               bool closingNode = false;
+
+                               if (currentNode != null) {
+                                       if (cl == currentNode.EndLine) {
+                                               currentNode = currentNode.Parent;
+                                               closingNode = true;
+                                       }
+                                       if (currentNode != null)
+                                               level = currentNode.Level - 1;
+                               }
+
+                               for (int l = 0; l < level; l++) {                                       
+                                       gr.MoveTo (rFld.Center.X + 0.5, y);
+                                       gr.LineTo (rFld.Center.X + 0.5, y + fe.Ascent + fe.Descent);
+                                       rFld.Left += foldHSpace;
+                               }
+                               if (closingNode) {
+                                       gr.MoveTo (rFld.Center.X + 0.5, y);
+                                       gr.LineTo (rFld.Center.X + 0.5, y + fe.Ascent / 2 + 0.5);
+                                       gr.LineTo (rFld.Center.X + 0.5 + foldSize / 2, y + fe.Ascent / 2 + 0.5);
+                                       closingNode = false;
+                               }
+                               //gr.SetDash (new double[]{ 1.5 },0.0);
+                               gr.SetSourceColor (Color.Grey);
+                               gr.Stroke ();
+                               //gr.SetDash (new double[]{}, 0.0);
+
+                               if (cl.IsFoldable) {
+                                       gr.Rectangle (rFld);
+                                       gr.SetSourceColor (Color.White);
+                                       gr.Fill();
+                                       gr.SetSourceColor (Color.Black);
+                                       gr.Rectangle (rFld, 1.0);
+                                       if (cl.IsFolded) {
+                                               gr.MoveTo (rFld.Center.X + 0.5, rFld.Y + 2);
+                                               gr.LineTo (rFld.Center.X + 0.5, rFld.Bottom - 2);
+                                       }else
+                                               currentNode = cl.SyntacticNode;
+                                       
+                                       gr.MoveTo (rFld.Left + 2, rFld.Center.Y + 0.5);
+                                       gr.LineTo (rFld.Right - 2, rFld.Center.Y + 0.5);
+                                       gr.Stroke ();
+                               } 
+                       }
+
+                       gr.SetSourceColor (Foreground);
+                       x += leftMargin;
+
+                       if (cl.Tokens == null)
+                               drawRawCodeLine (gr, x, y, i, lineIndex);
+                       else
+                               drawParsedCodeLine (gr, x, y, i, lineIndex);
+               }
+               Node currentNode = null;
+//             void drawParsed(Context gr){
+//                     if (PrintedLines == null)
+//                             return;
+//
+//                     gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
+//                     gr.SetFontSize (Font.Size);
+//                     gr.FontOptions = Interface.FontRenderingOptions;
+//                     gr.Antialias = Interface.Antialias;
+//
+//                     Rectangle cb = ClientRectangle;
+//                     gr.Save ();
+//                     CairoHelpers.CairoRectangle (gr, cb, CornerRadius);
+//                     gr.Clip ();
+//
+//                     bool selectionInProgress = false;
+//
+//                     Foreground.SetAsSource (gr);
+//
+//                     #region draw text cursor
+//                     if (SelBegin != SelRelease)
+//                             selectionInProgress = true;
+//                     else if (HasFocus){
+//                             gr.LineWidth = 1.0;
+//                             double cursorX = + leftMargin + cb.X + (CurrentColumn - ScrollX) * fe.MaxXAdvance;
+//                             gr.MoveTo (0.5 + cursorX, cb.Y + printedCurrentLine * (fe.Ascent+fe.Descent));
+//                             gr.LineTo (0.5 + cursorX, cb.Y + (printedCurrentLine + 1) * (fe.Ascent+fe.Descent));
+//                             gr.Stroke();
+//                     }
+//                     #endregion
+//
+//                     for (int i = 0; i < PrintedLines.Count; i++)
+//                             drawTokenLine (gr, i, selectionInProgress, cb);
+//
+//                     gr.Restore ();
+//             }
+               void drawRawCodeLine(Context gr, double x, double y, int i, int lineIndex) {
+                       string lstr = buffer[lineIndex].PrintableContent;
+                       if (ScrollX < lstr.Length)
+                               lstr = lstr.Substring (ScrollX);
+                       else
+                               lstr = "";
+
+                       gr.MoveTo (x, y + fe.Ascent);
+                       gr.ShowText (lstr);
+                       gr.Fill ();
+
+                       if (!buffer.SelectionIsEmpty && lineIndex >= buffer.SelectionStart.Y && lineIndex <= buffer.SelectionEnd.Y) {
+                               double rLineX = x,
+                               rLineY = y,
+                               rLineW = lstr.Length * fe.MaxXAdvance;
+
+                               //System.Diagnostics.Debug.WriteLine ("sel start: " + buffer.SelectionStart + " sel end: " + buffer.SelectionEnd);
+                               if (lineIndex == buffer.SelectionStart.Y) {
+                                       rLineX += (selStartCol - ScrollX) * fe.MaxXAdvance;
+                                       rLineW -= selStartCol * fe.MaxXAdvance;
+                               }
+                               if (lineIndex == buffer.SelectionEnd.Y)
+                                       rLineW -= (lstr.Length - selEndCol) * fe.MaxXAdvance;
+
+                               gr.Save ();
+                               gr.Operator = Operator.Source;
+                               gr.Rectangle (rLineX, rLineY, rLineW, (fe.Ascent+fe.Descent));
+                               gr.SetSourceColor (SelectionBackground);
+                               gr.FillPreserve ();
+                               gr.Clip ();
+                               gr.Operator = Operator.Over;
+                               gr.SetSourceColor (SelectionForeground);
+                               gr.MoveTo (x, y + fe.Ascent);
+                               gr.ShowText (lstr);
+                               gr.Fill ();
+                               gr.Restore ();
+                       }
+               }
+               void drawParsedCodeLine (Context gr, double x, double y, int i, int lineIndex) {
+                       int lPtr = 0;
+                       CodeLine cl = PrintedLines[i];
+
+                       for (int t = 0; t < cl.Tokens.Count; t++) {
+                               string lstr = cl.Tokens [t].PrintableContent;
+                               if (lPtr < ScrollX) {
+                                       if (lPtr - ScrollX + lstr.Length <= 0) {
+                                               lPtr += lstr.Length;
+                                               continue;
+                                       }
+                                       lstr = lstr.Substring (ScrollX - lPtr);
+                                       lPtr += ScrollX - lPtr;
+                               }
+                               Color bg = this.Background;
+                               Color fg = this.Foreground;
+                               Color selbg = this.SelectionBackground;
+                               Color selfg = this.SelectionForeground;
+                               FontSlant fts = FontSlant.Normal;
+                               FontWeight ftw = FontWeight.Normal;
+
+                               if (formatting.ContainsKey ((int)cl.Tokens [t].Type)) {
+                                       TextFormatting tf = formatting [(int)cl.Tokens [t].Type];
+                                       bg = tf.Background;
+                                       fg = tf.Foreground;
+                                       if (tf.Bold)
+                                               ftw = FontWeight.Bold;
+                                       if (tf.Italic)
+                                               fts = FontSlant.Italic;
+                               }
+
+                               gr.FontFace = Font.Name;
+                               gr.SetSourceColor (fg);
+
+                               gr.MoveTo (x, y + fe.Ascent);
+                               gr.ShowText (lstr);
+                               gr.Fill ();
+
+                               if (buffer.SelectionInProgress && lineIndex >= buffer.SelectionStart.Y && lineIndex <= buffer.SelectionEnd.Y &&
+                                       !(lineIndex == buffer.SelectionStart.Y && lPtr + lstr.Length <= selStartCol) &&
+                                       !(lineIndex == buffer.SelectionEnd.Y && selEndCol <= lPtr)) {
+
+                                       double rLineX = x,
+                                       rLineY = y,
+                                       rLineW = lstr.Length * fe.MaxXAdvance;
+                                       double startAdjust = 0.0;
+
+                                       if ((lineIndex == buffer.SelectionStart.Y) && (selStartCol < lPtr + lstr.Length) && (selStartCol > lPtr))
+                                               startAdjust = (selStartCol - lPtr) * fe.MaxXAdvance;
+                                       rLineX += startAdjust;
+                                       if ((lineIndex == buffer.SelectionEnd.Y) && (selEndCol < lPtr + lstr.Length))
+                                               rLineW = (selEndCol - lPtr) * fe.MaxXAdvance;
+                                       rLineW -= startAdjust;
+
+                                       gr.Save ();
+                                       gr.Operator = Operator.Source;
+                                       gr.Rectangle (rLineX, rLineY, rLineW, (fe.Ascent+fe.Descent));
+                                       gr.SetSourceColor (selbg);
+                                       gr.FillPreserve ();
+                                       gr.Clip ();
+                                       gr.Operator = Operator.Over;
+                                       gr.SetSourceColor (selfg);
+                                       gr.MoveTo (x, y + fe.Ascent);
+                                       gr.ShowText (lstr);
+                                       gr.Fill ();
+                                       gr.Restore ();
+                               }
+                               x += (int)lstr.Length * fe.MaxXAdvance;
+                               lPtr += lstr.Length;
+                       }
+               }
+
+               #endregion
+
+               #region GraphicObject overrides
+               public override Font Font {
+                       get { return base.Font; }
+                       set {
+                               base.Font = value;
+                               /*
+                               using (ImageSurface img = new ImageSurface (Format.Argb32, 1, 1)) {
+                                       using (Context gr = new Context (img)) {
+                                               gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
+                                               gr.SetFontSize (Font.Size);
+
+                                               fe = gr.FontExtents;
+                                       }
+                               }*/
+                               MaxScrollY = 0;
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               protected override int measureRawSize(LayoutingType lt)
+               {
+                       if (lt == LayoutingType.Height)
+                               return (int)Math.Ceiling((fe.Ascent+fe.Descent) * buffer.LineCount) + Margin * 2;
+
+                       return (int)(fe.MaxXAdvance * buffer.longestLineCharCount) + Margin * 2 + leftMargin;
+               }
+               public override void OnLayoutChanges (LayoutingType layoutType)
+               {
+                       base.OnLayoutChanges (layoutType);
+
+                       if (layoutType == LayoutingType.Height)
+                               updateVisibleLines ();
+                       else if (layoutType == LayoutingType.Width)
+                               updateVisibleColumns ();
+               }
+
+               protected override void onDraw (Context gr)
+               {
+                       base.onDraw (gr);
+
+                       gr.FontFace = Font.Name;
+                       gr.FontSize = (uint)Font.Size;
+
+                       Rectangle cb = ClientRectangle;
+
+                       Foreground.SetAsSource (gr);
+
+                       buffer.editMutex.EnterReadLock ();
+                       editorMutex.EnterReadLock ();
+
+                       #region draw text cursor
+                       if (buffer.SelectionInProgress){
+                               selStartCol = getTabulatedColumn (buffer.SelectionStart);
+                               selEndCol = getTabulatedColumn (buffer.SelectionEnd);
+                       }else if (HasFocus && printedCurrentLine >= 0){
+                               gr.LineWidth = 1.0;
+                               double cursorX = cb.X + (getTabulatedColumn(buffer.CurrentPosition) - ScrollX) * fe.MaxXAdvance + leftMargin;
+                               gr.MoveTo (0.5 + cursorX, cb.Y + (printedCurrentLine) * (fe.Ascent+fe.Descent));
+                               gr.LineTo (0.5 + cursorX, cb.Y + (printedCurrentLine + 1) * (fe.Ascent+fe.Descent));
+                               gr.Stroke();
+                       }
+                       #endregion
+
+                       if (PrintedLines?.Count > 0) {                          
+                               int unfoldedLines = buffer.UnfoldedLines;
+                               currentNode = null;
+                               CodeLine cl = PrintedLines[0];
+                               int idx0 = buffer.IndexOf(cl);
+                               int li = idx0-1;
+                               while (li >= 0) {
+                                       if (buffer [li].IsFoldable && !buffer [li].IsFolded) {
+                                               if (buffer.IndexOf(buffer [li].SyntacticNode.EndLine) > idx0){
+                                                       currentNode = buffer [li].SyntacticNode;
+                                                       break;
+                                               }
+                                       }
+                                       li--;
+                               }
+
+                               for (int i = 0; i < visibleLines; i++) {
+                                       if (i + ScrollY >= unfoldedLines)//TODO:need optimize
+                                               break;
+                                       drawLine (gr, cb, i);
+                               }
+                       }
+
+                       editorMutex.ExitReadLock ();
+
+                       buffer.editMutex.ExitReadLock ();
+
+               }
+               #endregion
+
+               #region Mouse handling
+
+               int hoverLine = -1;
+               public int HoverLine {
+                       get { return hoverLine; }
+                       set { 
+                               if (hoverLine == value)
+                                       return;
+                               hoverLine = value;
+                               NotifyValueChanged ("HoverLine", hoverLine);
+                               NotifyValueChanged ("HoverError", buffer [hoverLine].exception);
+                       }
+               }
+               void updateHoverLine () {
+                       if (PrintedLines.Count > 0) {
+                               int hvl = (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent + fe.Descent)));
+                               hvl = Math.Min (PrintedLines.Count - 1, hvl);
+                               HoverLine = buffer.IndexOf (PrintedLines [hvl]);
+                       } else
+                               HoverLine = 0;
+               }
+               void updateCurrentPosFromMouseLocalPos(){                       
+                       PrintedCurrentLine = (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent)));
+                       int curVisualCol = ScrollX +  (int)Math.Round ((mouseLocalPos.X - leftMargin) / fe.MaxXAdvance);
+
+                       int i = 0;
+                       int buffCol = 0;
+                       while (i < curVisualCol && buffCol < buffer.CurrentCodeLine.Length) {
+                               if (buffer.CurrentCodeLine[buffCol] == '\t')
+                                       i += Interface.TabSize;
+                               else
+                                       i++;
+                               buffCol++;
+                       }
+                       buffer.CurrentColumn = buffCol;
+               }
+               public override void onMouseEnter (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseEnter (sender, e);
+                       if (e.X - ScreenCoordinates(Slot).X < leftMargin + ClientRectangle.X)
+                               IFace.MouseCursor = MouseCursor.Arrow;
+                       else
+                               IFace.MouseCursor = MouseCursor.IBeam;
+               }
+               public override void onMouseLeave (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseLeave (sender, e);
+                       IFace.MouseCursor = MouseCursor.Arrow;
+               }
+               public override void onMouseMove (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseMove (sender, e);
+
+                       mouseLocalPos = e.Position - ScreenCoordinates(Slot).TopLeft - ClientRectangle.TopLeft;
+
+                       updateHoverLine ();
+
+                       if (!e.Mouse.IsButtonDown (MouseButton.Left)) {
+                               if (mouseLocalPos.X < leftMargin)
+                                       IFace.MouseCursor = MouseCursor.Arrow;
+                               else
+                                       IFace.MouseCursor = MouseCursor.IBeam;
+                               return;
+                       }
+
+                       if (!HasFocus || !buffer.SelectionInProgress)
+                               return;
+
+                       //mouse is down
+                       updateCurrentPosFromMouseLocalPos();
+                       buffer.SetSelEndPos ();
+               }
+               public override void onMouseDown (object sender, MouseButtonEventArgs e)
+               {
+                       if (!this.Focusable)
+                               return;
+
+                       if (mouseLocalPos.X >= leftMargin)
+                               base.onMouseDown (sender, e);
+
+                       if (doubleClicked) {
+                               doubleClicked = false;
+                               return;
+                       }
+
+                       if (mouseLocalPos.X < leftMargin) {
+                               toogleFolding (buffer.IndexOf (PrintedLines [(int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent)))]));
+                               return;
+                       }
+
+                       updateCurrentPosFromMouseLocalPos ();
+                       buffer.SetSelStartPos ();
+               }
+               public override void onMouseUp (object sender, MouseButtonEventArgs e)
+               {
+                       base.onMouseUp (sender, e);
+
+                       if (buffer.SelectionIsEmpty)
+                               buffer.ResetSelection ();
+               }
+
+               public override void onMouseDoubleClick (object sender, MouseButtonEventArgs e)
+               {
+                       doubleClicked = true;
+                       base.onMouseDoubleClick (sender, e);
+
+                       buffer.GotoWordStart ();
+                       buffer.SetSelStartPos ();
+                       buffer.GotoWordEnd ();
+                       buffer.SetSelEndPos ();
+               }
+               public void MakeSelection (int lineStart, int colStart, int lineEnd, int colEnd) {
+                       buffer.CurrentLine = lineStart;
+                       buffer.CurrentColumn = colStart;
+                       buffer.SetSelStartPos ();
+                       buffer.CurrentLine = lineEnd;
+                       buffer.CurrentColumn = colEnd;
+                       buffer.SetSelEndPos ();
+               }
+               public override void onMouseWheel (object sender, MouseWheelEventArgs e)
+               {
+                       base.onMouseWheel (sender, e);
+               }
+               #endregion
+
+               #region Keyboard handling
+               public override void onKeyDown (object sender, KeyEventArgs e)
+               {
+                       //base.onKeyDown (sender, e);
+
+                       Key key = e.Key;
+
+                       if (IFace.Ctrl) {
+                               switch (key) {
+                               case Key.S:
+                                       projFile.Save ();
+                                       break;
+                               case Key.W:
+                                       editorMutex.EnterWriteLock ();
+                                       if (IFace.Shift)
+                                               projFile.Redo (null);
+                                       else
+                                               projFile.Undo (null);
+                                       editorMutex.ExitWriteLock ();
+                                       break;
+                               default:
+                                       Console.WriteLine ("");
+                                       break;
+                               }
+                       }
+
+                       switch (key)
+                       {
+                       case Key.Backspace:
+                               buffer.DeleteChar ();
+                               break;
+                       case Key.Delete:
+                               if (buffer.SelectionIsEmpty)
+                                       MoveRight ();
+                               else if (IFace.Shift)
+                                       IFace.Clipboard = buffer.SelectedText;
+                               buffer.DeleteChar ();
+                               break;
+                       case Key.Enter:
+                       case Key.KeypadEnter:
+                               if (!buffer.SelectionIsEmpty)
+                                       buffer.DeleteChar ();
+                               buffer.InsertLineBreak ();
+                               break;
+                       case Key.Escape:
+                               buffer.ResetSelection ();
+                               break;
+                       case Key.Home:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.CurrentLine = 0;
+                                       buffer.CurrentColumn = 0;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.CurrentLine = 0;
+                               buffer.CurrentColumn = 0;
+                               break;
+                       case Key.End:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.CurrentLine = int.MaxValue;
+                                       buffer.CurrentColumn = int.MaxValue;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.CurrentLine = int.MaxValue;
+                               buffer.CurrentColumn = int.MaxValue;
+                               break;
+                       case Key.Insert:
+                               if (IFace.Shift)
+                                       buffer.Insert (IFace.Clipboard);
+                               else if (IFace.Ctrl && !buffer.SelectionIsEmpty)
+                                       IFace.Clipboard = buffer.SelectedText;
+                               break;
+                       case Key.Left:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.GotoWordStart ();
+                                       else
+                                               MoveLeft ();
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.GotoWordStart ();
+                               else
+                                       MoveLeft();
+                               break;
+                       case Key.Right:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       if (IFace.Ctrl)
+                                               buffer.GotoWordEnd ();
+                                       else
+                                               MoveRight ();
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               if (IFace.Ctrl)
+                                       buffer.GotoWordEnd ();
+                               else
+                                       MoveRight ();
+                               break;
+                       case Key.Up:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       PrintedCurrentLine--;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               PrintedCurrentLine--;
+                               break;
+                       case Key.Down:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       PrintedCurrentLine++;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               PrintedCurrentLine++;
+                               break;
+                       case Key.Menu:
+                               break;
+                       case Key.NumLock:
+                               break;
+                       case Key.PageDown:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       PrintedCurrentLine += visibleLines;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               PrintedCurrentLine += visibleLines;
+                               break;
+                       case Key.PageUp:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty)
+                                               buffer.SetSelStartPos ();
+                                       PrintedCurrentLine -= visibleLines;
+                                       buffer.SetSelEndPos ();
+                                       break;
+                               }
+                               buffer.ResetSelection ();
+                               PrintedCurrentLine -= visibleLines;
+                               break;
+                       case Key.Tab:
+                               if (IFace.Shift) {
+                                       if (buffer.SelectionIsEmpty ||
+                                               (buffer.SelectionStart.Y == buffer.SelectionEnd.Y)) {
+                                               //TODO
+                                               break;
+                                       }
+                                       for (int i = buffer.SelectionStart.Y; i <= buffer.SelectionEnd.Y; i++)
+                                               buffer.RemoveLeadingTab (i);
+                                       buffer.SetSelectionOnFullLines ();
+                               } else {
+                                       if (buffer.SelectionIsEmpty ||
+                                               (buffer.SelectionStart.Y == buffer.SelectionEnd.Y)) {
+                                               buffer.Insert ("\t");
+                                               break;
+                                       }
+                                       for (int i = buffer.SelectionStart.Y; i <= buffer.SelectionEnd.Y; i++) {
+                                               buffer.UpdateLine (i, "\t" + buffer [i].Content);
+                                       }
+                               }
+
+                               break;
+                       case Key.F8:
+                               toogleFolding (buffer.CurrentLine);
+                               break;
+                       default:
+                               break;
+                       }
+                       RegisterForGraphicUpdate();
+               }
+               public override void onKeyPress (object sender, KeyPressEventArgs e)
+               {
+                       base.onKeyPress (sender, e);
+
+                       buffer.Insert (e.KeyChar.ToString());
+                       buffer.ResetSelection ();
+               }
+               #endregion
+       }
+}
\ No newline at end of file
diff --git a/Samples/CrowIDE/src/Editors/SvgEditor.cs b/Samples/CrowIDE/src/Editors/SvgEditor.cs
new file mode 100644 (file)
index 0000000..d81b115
--- /dev/null
@@ -0,0 +1,140 @@
+//
+// SvgEditor.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.ComponentModel;
+using vkvg;
+
+namespace Crow.Coding
+{
+       public class SvgEditor : Editor
+       {
+               SvgPicture _pic = new SvgPicture();
+
+               int zoom;
+
+               [DefaultValue(100)]
+               public int Zoom {
+                       get { return zoom; }
+                       set {
+                               if (zoom == value)
+                                       return;
+                               zoom = value;
+                               NotifyValueChanged ("Zoom", zoom);
+                               updateMaxScrolls ();
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+
+               void updateMaxScrolls() {                       
+                       MaxScrollX = Math.Max(0, _pic.Dimensions.Width * zoom / 100 - Slot.Width);
+                       MaxScrollY = Math.Max(0, _pic.Dimensions.Height * zoom / 100 - Slot.Height);
+
+                       if (Slot.Width + MaxScrollX > 0)
+                               NotifyValueChanged ("ChildWidthRatio", Slot.Width * Slot.Width / (Slot.Width + MaxScrollX));
+                       else
+                               NotifyValueChanged ("ChildWidthRatio", 0);
+                       
+                       if (Slot.Height + MaxScrollY > 0)
+                               NotifyValueChanged ("ChildHeightRatio", Slot.Height * Slot.Height / (Slot.Height + MaxScrollY));
+                       else
+                               NotifyValueChanged ("ChildHeightRatio", 0);
+               }
+               #region editor overrides
+               protected override void updateEditorFromProjFile ()
+               {
+                       Error = null;
+                       try {
+                               editorMutex.EnterWriteLock();
+                               _pic.LoadSvgFragment (projFile.Source);
+                               _pic.Scaled = true;
+                               _pic.KeepProportions = true;
+                       } catch (Exception ex) {
+                               Error = ex;
+                       }
+                       editorMutex.ExitWriteLock ();
+                       updateMaxScrolls ();
+                       RegisterForGraphicUpdate ();
+               }
+               protected override void updateProjFileFromEditor ()
+               {
+                       throw new NotImplementedException ();
+               }
+               protected override bool EditorIsDirty {
+                       get { return false;     }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+               protected override bool IsReady {                       
+                       get { return projFile != null;  }
+               }
+               #endregion
+
+               #region GraphicObject overrides
+               protected override int measureRawSize (LayoutingType lt)
+               {
+                       if (_pic == null)
+                               return 2 * Margin;
+                       //_pic = "#Crow.Images.Icons.IconAlerte.svg";
+                       //TODO:take scalling in account
+                       if (lt == LayoutingType.Width)
+                               return _pic.Dimensions.Width + 2 * Margin;
+                       else
+                               return _pic.Dimensions.Height + 2 * Margin;
+               }
+               protected override void onDraw (Context gr)
+               {
+                       base.onDraw (gr);
+
+                       Rectangle r = ClientRectangle;
+                       Foreground.SetAsSource (gr, r);
+                       gr.Rectangle (r, 0.1);
+                       gr.Stroke ();
+
+                       r.Width = _pic.Dimensions.Width * zoom / 100;
+                       r.Height = _pic.Dimensions.Height * zoom / 100;
+
+                       gr.Save ();
+
+                       editorMutex.EnterReadLock ();
+
+                       gr.Translate (-ScrollX, -ScrollY);
+                       if (_pic != null)
+                               _pic.Paint (gr, r);
+                       editorMutex.ExitReadLock ();
+
+                       gr.Restore ();
+               }
+               public override void OnLayoutChanges (LayoutingType layoutType)
+               {
+                       base.OnLayoutChanges (layoutType);
+                       if ((layoutType | LayoutingType.Sizing) > 0)
+                               updateMaxScrolls ();
+               }
+               #endregion
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Extensions.cs b/Samples/CrowIDE/src/Extensions.cs
new file mode 100644 (file)
index 0000000..86c5834
--- /dev/null
@@ -0,0 +1,45 @@
+//
+//  Extensions.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2016 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+using System.Collections.Generic;
+
+namespace Crow
+{
+       public static partial class Extensions
+       {
+               public static string GetIcon(this Widget go){
+                       return "#CrowIDE.icons.toolbox." + go.GetType().FullName + ".svg";
+               }
+               public static List<Widget> GetChildren(this Widget go){
+                       Type goType = go.GetType();
+                       if (typeof (Group).IsAssignableFrom (goType))
+                               return (go as Group).Children;
+                       if (typeof(Container).IsAssignableFrom (goType))
+                               return new List<Widget>( new Widget[] { (go as Container).Child });
+                       if (typeof(TemplatedContainer).IsAssignableFrom (goType))
+                               return new List<Widget>( new Widget[] { (go as TemplatedContainer).Content });
+                       if (typeof(TemplatedGroup).IsAssignableFrom (goType))
+                               return (go as TemplatedGroup).Items;
+
+                       return new List<Widget>();
+               }
+       }
+}
diff --git a/Samples/CrowIDE/src/GraphicObjectDesignContainer.cs b/Samples/CrowIDE/src/GraphicObjectDesignContainer.cs
new file mode 100644 (file)
index 0000000..166181d
--- /dev/null
@@ -0,0 +1,85 @@
+//
+// GraphicObjectDesignContainer.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+
+namespace Crow.Coding
+{
+       public class GraphicObjectDesignContainer
+       {
+               #region CTOR
+               public GraphicObjectDesignContainer (Type crowType)
+               {
+                       CrowType = crowType;
+               }
+               #endregion
+
+               int dragIconSize = 32;
+               public Type CrowType;
+
+               public string IconPath {
+                       get { return "#CrowIDE.icons.toolbox." + CrowType.FullName + ".svg"; }
+               }
+               public string DisplayName {
+                       get { return CrowType.Name; }
+               }
+               void onStartDrag (object sender, EventArgs e)
+               {
+                       /*
+                       Widget go = sender as Widget;
+
+                       lock (go.IFace.UpdateMutex) {                           
+                               go.IFace.DragImageHeight = dragIconSize;
+                               go.IFace.DragImageWidth = dragIconSize;
+                               SvgPicture pic = new SvgPicture (IconPath);
+                               //pic.Load (go.IFace, IconPath);
+                               ImageSurface img = new ImageSurface (Format.Argb32, dragIconSize, dragIconSize);
+                               using (Context ctx = new Context (img)) {
+                                       Rectangle r = new Rectangle (0, 0, dragIconSize, dragIconSize);
+                                       pic.Paint (ctx, r);     
+                                       ctx.Operator = Operator.In;
+                                       ctx.SetSourceRGBA (1.0, 1.0, 1.0, 1.0);
+                                       ctx.Rectangle (r);
+                                       ctx.Fill ();
+
+                               }
+                               go.IFace.DragImage = img;
+                       }*/
+               }
+               void onEndDrag (object sender, DragDropEventArgs e)
+               {
+                       (sender as Widget).IFace.ClearDragImage ();
+
+               }
+               void onDrop (object sender, DragDropEventArgs e)
+               {
+                       ImlVisualEditor imlVE = e.DropTarget as ImlVisualEditor;
+                       if (imlVE != null)
+                               imlVE.ClearDraggedObj (false);
+                       (sender as Widget).IFace.ClearDragImage ();
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/INetProject.cs b/Samples/CrowIDE/src/INetProject.cs
new file mode 100644 (file)
index 0000000..53d81a1
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// INetProject.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+
+namespace Crow.Coding
+{
+       public interface INetProject
+       {
+               
+       }
+}
+
diff --git a/Samples/CrowIDE/src/MemberView/CategoryContainer.cs b/Samples/CrowIDE/src/MemberView/CategoryContainer.cs
new file mode 100644 (file)
index 0000000..fbf3fe2
--- /dev/null
@@ -0,0 +1,65 @@
+//
+// CategoryContainer.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+
+namespace Crow.Coding
+{
+       public class CategoryContainer : IValueChange
+       {
+               #region IValueChange implementation
+               public event EventHandler<ValueChangeEventArgs> ValueChanged;
+               public virtual void NotifyValueChanged(string MemberName, object _value)
+               {
+                       ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value));
+               }
+               #endregion
+
+               bool _isExpanded = true;
+
+               public PropertyContainer[] Properties;
+               public string Name;
+
+               public bool IsExpanded
+               {
+                       get { return _isExpanded; }
+                       set
+                       {
+                               if (value == _isExpanded)
+                                       return;
+
+                               _isExpanded = value;
+
+                               NotifyValueChanged ("IsExpanded", _isExpanded);
+                       }
+               }
+
+               public CategoryContainer (string categoryName, PropertyContainer[] properties){
+                       Name = categoryName;
+                       Properties = properties;
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/MemberView/MembersView.cs b/Samples/CrowIDE/src/MemberView/MembersView.cs
new file mode 100644 (file)
index 0000000..b8dad3d
--- /dev/null
@@ -0,0 +1,139 @@
+//
+//  MembersView.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+//  Copyright (c) 2016 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+using Crow;
+using System.Xml.Serialization;
+using System.ComponentModel;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Crow.Coding
+{      
+       public class MembersView : ListBox
+       {               
+               object instance;
+               ImlProjectItem projFile;
+
+               public MembersView () : base() {}
+
+               //cache property containers per type
+               //Dictionary<string,PropertyContainer[]> propContainersCache = new Dictionary<string, PropertyContainer[]>();
+               Dictionary<string,List<CategoryContainer>> categoryContainersCache = new Dictionary<string,List<CategoryContainer>> ();
+
+               [DefaultValue(null)]
+               public virtual object Instance {
+                       get { return instance; }
+                       set {
+                               if (instance == value)
+                                       return;
+                               object lastInst = instance;
+
+                               instance = value;
+                               NotifyValueChanged ("Instance", instance);
+
+                               if (Instance is Widget) {
+                                       NotifyValueChanged ("SelectedItemName", Instance.GetType().Name + (Instance as Widget).design_id
+                                               + ":" + (Instance as Widget).design_imlPath );
+                               }else
+                                       NotifyValueChanged ("SelectedItemName", "");
+
+                               if (instance == null) { 
+                                       Data = null;
+                                       return;
+                               }       
+
+                               Type it = instance.GetType ();
+                               if (!categoryContainersCache.ContainsKey (it.FullName)) {
+                                       MemberInfo[] members = it.GetMembers (BindingFlags.Public | BindingFlags.Instance);
+                                       List<PropertyContainer> props = new List<PropertyContainer> ();
+                                       foreach (MemberInfo m in members) {
+                                               if (m.MemberType == MemberTypes.Property) {
+                                                       PropertyInfo pi = m as PropertyInfo;
+                                                       if (!pi.CanWrite)
+                                                               continue;
+                                                       if (pi.GetCustomAttribute (typeof(XmlIgnoreAttribute)) != null)
+                                                               continue;
+                                                       props.Add (new PropertyContainer (this, pi));
+                                               }
+                                       }
+                                       //propContainersCache.Add (it.FullName, props.OrderBy (p => p.Name).ToArray ());
+                                       List<CategoryContainer> categories = new List<CategoryContainer> ();
+
+                                       foreach (IGrouping<string,PropertyContainer> ig in props.OrderBy (p => p.Name).GroupBy(pc=>pc.DesignCategory)) {
+                                               categories.Add(new CategoryContainer(ig.Key, ig.ToArray()));
+                                       }
+                                       categoryContainersCache.Add (it.FullName, categories);
+                               }
+
+
+                               Data = categoryContainersCache[it.FullName];
+
+                               if (lastInst != instance) {
+                                       foreach (CategoryContainer cc in categoryContainersCache [it.FullName]) {
+                                               foreach (PropertyContainer pc in cc.Properties) {
+                                                       pc.NotifyValueChanged ("Value", pc.Value);
+                                                       pc.NotifyValueChanged ("LabForeground", pc.LabForeground);
+                                               }
+                                       }
+                               }
+                       }
+               }
+               public ImlProjectItem ProjectNode {
+                       get { return projFile; }
+                       set {
+                               if (projFile == value)
+                                       return;
+                               
+//                             if (projFile != null)
+//                                     projFile.UnregisterEditor (this);
+                               
+                               projFile = value;
+
+//                             if (projFile != null)
+//                                     projFile.RegisterEditor (this);
+
+                               NotifyValueChanged ("ProjectNode", projFile);
+                       }
+               }
+
+//             public void updateSource () {
+//                     if (projFile == null)
+//                             return;
+//                     projFile.UpdateSource (this, (Instance as GraphicObject).GetIML ());
+//             }
+
+//             public override void Paint (ref Context ctx)
+//             {
+//                     base.Paint (ref ctx);
+//
+//                     if (SelectedIndex < 0)
+//                             return;
+//
+//                     Rectangle r =  Parent.ContextCoordinates(Items [SelectedIndex].Slot);
+//                     ctx.SetSourceRGB (0, 0, 1);
+//                     ctx.Rectangle (r);
+//                     ctx.LineWidth = 2;
+//                     ctx.Stroke ();
+//             }
+
+       }
+}
diff --git a/Samples/CrowIDE/src/MemberView/PropertyContainer.cs b/Samples/CrowIDE/src/MemberView/PropertyContainer.cs
new file mode 100644 (file)
index 0000000..4d043ab
--- /dev/null
@@ -0,0 +1,222 @@
+//
+// PropertyContainer.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Reflection;
+using System.Linq;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.ComponentModel;
+
+namespace Crow.Coding
+{      
+       public class PropertyContainer : IValueChange
+       {
+               #region IValueChange implementation
+               public event EventHandler<ValueChangeEventArgs> ValueChanged;
+               public virtual void NotifyValueChanged(string MemberName, object _value)
+               {
+                       ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value));
+               }
+               #endregion
+
+               PropertyInfo pi;
+               MembersView mview;
+               Command cmdReset, cmdGoToStyle;
+
+               public List<Crow.Command> Commands;
+
+               #region CTOR
+               public PropertyContainer(MembersView mv, PropertyInfo prop){
+                       mview = mv;
+                       pi = prop;
+
+                       cmdReset = new Crow.Command (new Action (() => Reset ())) { Caption = "Reset to default" };
+                       cmdGoToStyle = new Crow.Command (new Action (() => GotoStyle ())) { Caption = "Goto style" };
+
+                       Commands = new List<Crow.Command> (new Crow.Command[] { cmdReset, cmdGoToStyle });
+               }
+               #endregion
+
+               public string DesignCategory {
+                       get {
+                               DesignCategory dca = (DesignCategory)pi.GetCustomAttribute (typeof(DesignCategory));
+                               return dca == null ? "Divers" : dca.Name;                                       
+                       }
+               }
+               public string Name { get { return pi.Name; }}
+               public object Value {
+                       get {
+                               return mview.ProjectNode?.SelectedItem == null ? null : pi.GetValue(mview.ProjectNode.SelectedItem);
+                       }
+                       set {
+                               try {
+                                       if (value == Value)
+                                               return;
+                                       Widget g = Instance;
+                                       string valstr = null, oldval = null;
+
+                                       if (value != null)
+                                               valstr = value.ToString();
+
+                                       if (HasStyling)
+                                               oldval = g.design_style_values[Name];
+                                       else if (HasDefaultValue)
+                                               oldval = DefaultValue?.ToString();
+                                       else if (IsSetByIML)
+                                               oldval = g.design_iml_values [Name];
+                                       
+                                       if (valstr == oldval){
+                                               if (IsSetByIML){
+                                                       g.design_iml_values.Remove(Name);
+                                                       Debug.WriteLine("iml attrib removed {0}.{1}", g.Name, Name);
+                                               }else
+                                                       return;
+                                       }else{
+                                               if (IsSetByIML){
+                                                       g.design_iml_values [Name] = valstr;
+                                                       Debug.WriteLine("iml update {0}.{1} = {2}", g.Name, Name, valstr);
+                                               }else{
+                                                       g.design_iml_values.Add(Name,valstr);
+                                                       Debug.WriteLine("iml add {0}.{1} = {2}", g.Name, Name, valstr);
+                                               }
+                                       }
+
+                                       if (!pi.PropertyType.IsAssignableFrom(value.GetType()) && pi.PropertyType != typeof(string)){
+                                               if (pi.PropertyType.IsEnum) {
+                                                       if (value is string) {
+                                                               pi.SetValue (g, Enum.Parse (pi.PropertyType, (string)value));
+                                                       }else
+                                                               pi.SetValue (g, value);
+                                               } else {
+                                                       MethodInfo me = pi.PropertyType.GetMethod
+                                                               ("Parse", BindingFlags.Static | BindingFlags.Public,
+                                                                       System.Type.DefaultBinder, new Type [] {typeof (string)},null);
+                                                       pi.SetValue (g, me.Invoke (null, new object[] { value }), null);
+                                               }
+                                       }else
+                                               pi.SetValue(g, value);
+
+                                       Debug.WriteLine("\t\tPropContainer set design_dirty to instance");
+
+                                       mview.ProjectNode.Instance.design_HasChanged = true;
+                                       NotifyValueChanged ("Value", value);
+                                       NotifyValueChanged ("LabForeground", LabForeground);
+                               } catch (Exception ex) {
+                                       Debug.WriteLine ("Error setting property:"+ ex.ToString());
+                               }
+                               //
+                       }
+               }
+               /// <summary>
+               /// for style attribute which is a string, return Style as type
+               /// </summary>
+               public string Type { get { return pi.PropertyType.IsEnum ?
+                               "System.Enum"
+                                       : pi.Name == "Style" ? "Style" : pi.PropertyType.FullName; }}
+               
+               public object[] Choices {
+                       get {
+                               return pi.PropertyType.IsEnum ?
+                                       Enum.GetValues (pi.PropertyType).Cast<object>().ToArray() :
+                                       mview.ProjectNode.Project.solution.AvailaibleStyles;
+                       }
+               }
+               /// <summary>
+               /// Current graphicobject instance
+               /// </summary>
+               public Widget Instance {
+                       get { return mview.ProjectNode.SelectedItem as Widget; }
+               }
+               public object DefaultValue {
+                       get { return ((DefaultValueAttribute)(pi.GetCustomAttribute (typeof (DefaultValueAttribute)))).Value; }
+               }
+               public bool HasDefaultValue {
+                       get { return pi.GetCustomAttribute (typeof(DefaultValueAttribute))!=null; }
+               }
+               /// <summary>
+               /// return true if current value comes from IML attributes
+               /// </summary>
+               public bool IsSetByIML {
+                       get { return Instance.design_iml_values.ContainsKey (Name); }
+               }
+               /// <summary>
+               /// return true if member default value comes from style
+               /// </summary>
+               public bool HasStyling {
+                       get { return Instance.design_style_locations.ContainsKey(Name); }
+               }
+               /// <summary>
+               /// Return true if current value comes from styling
+               /// </summary>
+               public bool IsSetByStyling {
+                       get { return IsSetByIML ? false : HasStyling; }
+               }
+
+
+               public Fill LabForeground {
+                       get { return IsSetByIML ? Color.DarkBlue : HasStyling ? Color.Black : Color.Grey;}
+               }
+
+               /// <summary>
+               /// reset to default value
+               /// </summary>
+               public void Reset () {
+                       Widget inst = mview.ProjectNode.SelectedItem as Widget;
+                       if (!inst.design_iml_values.ContainsKey (Name))
+                               return;
+                       inst.design_iml_values.Remove (Name);
+
+                       NotifyValueChanged ("LabForeground", LabForeground);
+                       mview.ProjectNode.UpdateSource(this, mview.ProjectNode.Instance.GetIML());
+                       //mview.ProjectNode.Instance.design_HasChanged = true;
+                       //should reinstantiate to get default
+               }
+               public void GotoStyle(){
+                       Widget g = Instance;
+                       if (!g.design_style_locations.ContainsKey (Name))
+                               return;
+                       FileLocation fl = g.design_style_locations [Name];
+                       ProjectFile pf;
+                       if (!mview.ProjectNode.Project.TryGetProjectFileFromPath ("#" + fl.FilePath, out pf))
+                               return;
+
+                       if (!pf.IsOpened)
+                               pf.Open ();
+
+                       pf.CurrentLine = fl.Line;
+                       pf.CurrentColumn = fl.Column;
+
+                       pf.IsSelected = true;
+
+               }
+
+               public override string ToString ()
+               {
+                       return string.Format ("{0} = {1}", Name, Value);
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Project.cs b/Samples/CrowIDE/src/Project.cs
new file mode 100644 (file)
index 0000000..a3ffa63
--- /dev/null
@@ -0,0 +1,519 @@
+//
+// Project.cs
+//
+// Author:
+//       jp <>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Xml;
+using System.IO;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.CSharp;
+using System.CodeDom.Compiler;
+using Crow;
+using System.Text.RegularExpressions;
+
+namespace Crow.Coding {
+    public class Project : IValueChange {
+        #region IValueChange implementation
+        public event EventHandler<ValueChangeEventArgs> ValueChanged;
+        public virtual void NotifyValueChanged (string MemberName, object _value) {
+            ValueChanged.Raise (this, new ValueChangeEventArgs (MemberName, _value));
+        }
+        #endregion
+
+        bool isLoaded = false;
+        bool isExpanded;
+        XmlDocument xmlDoc;
+        XmlNode nodeProject;
+        XmlNode nodeProps;
+        XmlNodeList nodesItems;
+        SolutionProject solutionProject;
+        Crow.Command cmdSave, cmdOpen, cmdCompile, cmdSetAsStartProj, cmdNewFile;
+
+        #region CTOR
+        public Project (Solution sol, SolutionProject sp) {
+            solutionProject = sp;
+
+            solution = sol;
+
+            cmdSave = new Crow.Command (new Action (() => Save ())) { Caption = "Save", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = true };
+            cmdOpen = new Crow.Command (new Action (() => Load ())) { Caption = "Open", Icon = new SvgPicture ("#CrowIDE.icons.open.svg"), CanExecute = false };
+            cmdCompile = new Crow.Command (new Action (() => Compile ())) {
+                Caption = "Compile",
+                Icon = "#CrowIDE.icons.compile.svg"
+            };
+            cmdSetAsStartProj = new Crow.Command (new Action (() => setAsStartupProject ())) {
+                Caption = "Set as Startup Project"
+            };
+            cmdNewFile = new Crow.Command (new Action (() => AddNewFile ())) {
+                Caption = "Add New File",
+                Icon = new SvgPicture ("#CrowIDE.icons.blank-file.svg"),
+                CanExecute = true
+            };
+
+            Commands = new List<Crow.Command> (new Crow.Command[] { cmdOpen, cmdSave, cmdSetAsStartProj, cmdCompile, cmdNewFile });
+
+            Load ();
+        }
+        #endregion
+
+        public Solution solution;
+        public List<Crow.Command> Commands;
+        public CompilerResults CompilationResults;
+        public List<Project> dependantProjects = new List<Project> ();
+        public Project ParentProject = null;
+        List<ProjectNode> rootItems;
+        List<ProjectNode> flattenNodes;
+
+        public string Name {
+            get { return solutionProject.ProjectName; }
+        }
+        public bool IsLoaded {
+            get { return isLoaded; }
+            set {
+                if (isLoaded == value)
+                    return;
+                isLoaded = value;
+                NotifyValueChanged ("IsLoaded", isLoaded);
+            }
+        }
+        public bool IsExpanded {
+            get { return isExpanded; }
+            set {
+                if (value == isExpanded)
+                    return;
+                isExpanded = value;
+                NotifyValueChanged ("IsExpanded", isExpanded);
+            }
+        }
+        public bool IsStartupProject {
+            get { return solution.StartupProject == this; }
+        }
+        public string Path {
+            get { return System.IO.Path.Combine (solution.SolutionFolder, solutionProject.RelativePath.Replace ('\\', '/')); }
+        }
+        public string RootDir {
+            get { return System.IO.Path.GetDirectoryName (Path); }
+        }
+
+
+
+        public List<ProjectNode> RootItems {
+            get { return rootItems; }
+        }
+
+        void buildTreeNodes () {
+            ProjectNode root = new ProjectNode (this, ItemType.VirtualGroup, RootNamespace);
+            List<ProjectItem> items = new List<ProjectItem> ();
+            foreach (XmlNode i in nodesItems) {
+                foreach (XmlNode f in i.ChildNodes) {
+                    items.Add (new ProjectItem (this, f));
+                }
+            }
+
+            flattenNodes = new List<ProjectNode> ();
+
+            ProjectNode refs = new ProjectNode (this, ItemType.ReferenceGroup, "References");
+            root.AddChild (refs);
+
+            foreach (ProjectItem pn in items) {
+                switch (pn.Type) {
+                    case ItemType.Reference:
+                        refs.AddChild (pn);
+                        flattenNodes.Add (pn);
+                        break;
+                    case ItemType.ProjectReference:
+                        ProjectReference pr = new ProjectReference (pn);
+                        refs.AddChild (pr);
+                        flattenNodes.Add (pr);
+                        break;
+                    case ItemType.Compile:
+                    case ItemType.None:
+                    case ItemType.EmbeddedResource:
+                        ProjectNode curNode = root;
+                        string[] folds = pn.Path.Split ('/');
+                        for (int i = 0; i < folds.Length - 1; i++) {
+                            ProjectNode nextNode = curNode.ChildNodes.FirstOrDefault (n => n.DisplayName == folds[i] && n.Type == ItemType.VirtualGroup);
+                            if (nextNode == null) {
+                                nextNode = new ProjectNode (this, ItemType.VirtualGroup, folds[i]);
+                                curNode.AddChild (nextNode);
+                            }
+                            curNode = nextNode;
+                        }
+                        ProjectNode f = null;
+                        switch (pn.Extension) {
+                            /*case ".cs":
+                                f = new CSProjectFile (pn);
+                                break;*/
+                            case ".crow":
+                            case ".template":
+                            case ".goml":
+                            case ".itemp":
+                            case ".imtl":
+                                f = new ImlProjectItem (pn);
+                                break;
+                            case ".style":
+                                f = new StyleProjectItem (pn);
+                                break;
+                            default:
+                                f = new ProjectFile (pn);
+                                break;
+                        }
+                        curNode.AddChild (f);
+                        flattenNodes.Add (f);
+                        break;
+                }
+            }
+            root.SortChilds ();
+
+            rootItems = root.ChildNodes;
+        }
+
+        #region Project properties
+        public string ToolsVersion {
+            get { return nodeProject?.Attributes["ToolsVersion"]?.Value; }
+        }
+        public string DefaultTargets {
+            get { return nodeProject?.Attributes["DefaultTargets"]?.Value; }
+        }
+        public string ProjectGuid {
+            get { return solutionProject.ProjectGuid; }
+        }
+        public string AssemblyName {
+            get { return nodeProps["AssemblyName"]?.InnerText; }
+        }
+        public string OutputType {
+            get { return nodeProps["OutputType"]?.InnerText; }
+        }
+        public string RootNamespace {
+            get { return nodeProps["RootNamespace"]?.InnerText; }
+        }
+        public bool AllowUnsafeBlocks {
+            get {
+                return nodeProps["AllowUnsafeBlocks"] == null ? false :
+               bool.Parse (nodeProps["AllowUnsafeBlocks"]?.InnerText);
+            }
+        }
+        public bool NoStdLib {
+            get {
+                return nodeProps["NoStdLib"] == null ? false :
+              bool.Parse (nodeProps["NoStdLib"]?.InnerText);
+            }
+        }
+        public bool TreatWarningsAsErrors {
+            get {
+                return nodeProps["TreatWarningsAsErrors"] == null ? false :
+              bool.Parse (nodeProps["TreatWarningsAsErrors"]?.InnerText);
+            }
+        }
+        public bool SignAssembly {
+            get { return bool.Parse (nodeProps["SignAssembly"]?.InnerText); }
+        }
+        public string TargetFrameworkVersion {
+            get { return nodeProps["TargetFrameworkVersion"]?.InnerText; }
+        }
+        public string Description {
+            get { return nodeProps["Description"]?.InnerText; }
+        }
+        public string OutputPath {
+            get { return nodeProps["OutputPath"]?.InnerText; }
+        }
+        public string IntermediateOutputPath {
+            get { return nodeProps["IntermediateOutputPath"]?.InnerText; }
+        }
+        public string StartupObject {
+            get { return nodeProps["StartupObject"]?.InnerText; }
+        }
+        public bool DebugSymbols {
+            get { return nodeProps["DebugSymbols"] == null ? false : bool.Parse (nodeProps["DebugSymbols"]?.InnerText); }
+        }
+        public int WarningLevel {
+            get { return nodeProps["WarningLevel"] == null ? 0 : int.Parse (nodeProps["WarningLevel"]?.InnerText); }
+        }
+
+        #endregion
+
+
+        public void AddNewFile () {
+            Window.Show (CrowIDE.MainIFace, "#CrowIDE.ui.NewFile.crow", true).DataSource = this;
+        }
+
+        public void Load () {
+
+            xmlDoc = new XmlDocument ();
+            using (Stream ins = new FileStream (this.Path, FileMode.Open)) {
+                xmlDoc.Load (new XmlTextReader (ins) { Namespaces = false });
+            }
+
+            nodeProject = xmlDoc.SelectSingleNode ("Project");
+            XmlNodeList nodesProps = xmlDoc.SelectNodes ("/Project/PropertyGroup");
+
+            foreach (XmlNode n in nodesProps) {
+                if (n.Attributes["Condition"] == null)
+                    nodeProps = n;
+            }
+            nodesItems = xmlDoc.SelectNodes ("/Project/ItemGroup");
+
+            if (ProjectGuid != solutionProject.ProjectGuid)
+                throw new Exception ("Project GUID not matching with solution");
+
+            buildTreeNodes ();
+
+            IsLoaded = true;
+        }
+
+        public void Save () {
+
+        }
+
+        void setAsStartupProject () {
+            solution.StartupProject = this;
+        }
+        static Regex regexDirTokens = new Regex (@"\$\(([^\)]*)\)|([^\$]*)");
+
+        string getDirectoryWithTokens (string dir) {
+            Match m = regexDirTokens.Match (dir);
+            string tmp = "";
+            while (m.Success) {
+                if (m.Value == @"$(SolutionDir)")
+                    tmp = System.IO.Path.Combine (tmp, solution.SolutionFolder);
+                else if (m.Value == @"$(Configuration)")
+                    tmp = System.IO.Path.Combine (tmp, "Debug");
+                else
+                    tmp = System.IO.Path.Combine (tmp, m.Value);
+
+                if (tmp.EndsWith (@"\") || tmp.EndsWith (@"/"))
+                    tmp = tmp.Remove (tmp.Length - 1);
+
+                m = m.NextMatch ();
+            }
+            return tmp;
+        }
+        public string Compile () {
+            if (ParentProject != null)
+                ParentProject.Compile ();
+
+            CSharpCodeProvider cp = new CSharpCodeProvider ();
+            CompilerParameters parameters = new CompilerParameters ();
+
+            foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) {
+                Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID);
+                if (p == null)
+                    throw new Exception ("referenced project not found");
+                parameters.ReferencedAssemblies.Add (p.Compile ());
+            }
+
+            string outputDir = getDirectoryWithTokens (this.OutputPath);
+            string objDir = getDirectoryWithTokens (this.IntermediateOutputPath);
+
+            Directory.CreateDirectory (outputDir);
+            Directory.CreateDirectory (objDir);
+
+            parameters.OutputAssembly = System.IO.Path.Combine (outputDir, this.AssemblyName);
+
+            // True - exe file generation, false - dll file generation
+            if (this.OutputType == "Library") {
+                parameters.GenerateExecutable = false;
+                parameters.CompilerOptions += " /target:library";
+                parameters.OutputAssembly += ".dll";
+            } else {
+                parameters.GenerateExecutable = true;
+                parameters.CompilerOptions += " /target:exe";
+                parameters.OutputAssembly += ".exe";
+                parameters.MainClass = this.StartupObject;
+            }
+
+            parameters.GenerateInMemory = false;
+            parameters.IncludeDebugInformation = this.DebugSymbols;
+            parameters.TreatWarningsAsErrors = this.TreatWarningsAsErrors;
+            parameters.WarningLevel = this.WarningLevel;
+            parameters.CompilerOptions += " /noconfig";
+            if (this.AllowUnsafeBlocks)
+                parameters.CompilerOptions += " /unsafe";
+            parameters.CompilerOptions += " /delaysign+";
+            parameters.CompilerOptions += " /debug:full /debug+";
+            parameters.CompilerOptions += " /optimize-";
+            parameters.CompilerOptions += " /define:\"DEBUG;TRACE\"";
+            parameters.CompilerOptions += " /nostdlib";
+
+
+
+            foreach (ProjectItem pi in flattenNodes.Where (p => p.Type == ItemType.Reference)) {
+
+                if (string.IsNullOrEmpty (pi.HintPath)) {
+                    parameters.CompilerOptions += " /reference:/usr/lib/mono/4.5/" + pi.Path + ".dll";
+                    continue;
+                }
+                parameters.ReferencedAssemblies.Add (pi.Path);
+                string fullHintPath = System.IO.Path.GetFullPath (System.IO.Path.Combine (RootDir, pi.HintPath.Replace ('\\', '/')));
+                if (File.Exists (fullHintPath)) {
+                    string outPath = System.IO.Path.Combine (outputDir, System.IO.Path.GetFileName (fullHintPath));
+                    if (!File.Exists (outPath))
+                        File.Copy (fullHintPath, outPath);
+                }
+            }
+            parameters.CompilerOptions += " /reference:/usr/lib/mono/4.5/System.Core.dll";
+            parameters.CompilerOptions += " /reference:/usr/lib/mono/4.5/mscorlib.dll";
+            //parameters.ReferencedAssemblies.Add ("System.Core");
+            //parameters.ReferencedAssemblies.Add ("mscorlib.dll");
+
+
+            IEnumerable<ProjectFile> pfs = flattenNodes.OfType<ProjectFile> ();
+
+            foreach (ProjectFile pi in pfs.Where (p => p.Type == ItemType.EmbeddedResource)) {
+
+                string absPath = pi.AbsolutePath;
+                string logicName = pi.LogicalName;
+                if (string.IsNullOrEmpty (logicName))
+                    parameters.CompilerOptions += string.Format (" /resource:{0},{1}", absPath, this.Name + "." + pi.Path.Replace ('/', '.'));
+                else
+                    parameters.CompilerOptions += string.Format (" /resource:{0},{1}", absPath, logicName);
+            }
+            foreach (ProjectFile pi in pfs.Where (p => p.Type == ItemType.None)) {
+                if (pi.CopyToOutputDirectory == CopyToOutputState.Never)
+                    continue;
+                string source = pi.AbsolutePath;
+                string target = System.IO.Path.Combine (outputDir, pi.Path);
+                Directory.CreateDirectory (System.IO.Path.GetDirectoryName (target));
+
+                if (File.Exists (target)) {
+                    if (pi.CopyToOutputDirectory == CopyToOutputState.PreserveNewest) {
+                        if (DateTime.Compare (
+                                System.IO.File.GetLastWriteTime (source),
+                                System.IO.File.GetLastWriteTime (target)) < 0)
+                            continue;
+                    }
+                    File.Delete (target);
+                }
+                System.Diagnostics.Debug.WriteLine ("copy " + source + " to " + target);
+                File.Copy (source, target);
+            }
+            string[] files = pfs.Where (p => p.Type == ItemType.Compile).Select (p => p.AbsolutePath).ToArray ();
+
+            System.Diagnostics.Debug.WriteLine ("---- start compilation of :" + parameters.OutputAssembly);
+            System.Diagnostics.Debug.WriteLine (parameters.CompilerOptions);
+
+            CompilationResults = cp.CompileAssemblyFromFile (parameters, files);
+
+            solution.UpdateErrorList ();
+
+            return parameters.OutputAssembly;
+        }
+
+        public bool TryGetProjectFileFromAbsolutePath (string absolutePath, out ProjectFile pi) {
+            pi = flattenNodes.OfType<ProjectFile> ().FirstOrDefault
+                (pp => pp.AbsolutePath == absolutePath);
+            return pi != null;
+        }
+        public bool TryGetProjectFileFromPath (string path, out ProjectFile pi) {
+            if (path.StartsWith ("#", StringComparison.Ordinal))
+                pi = flattenNodes.OfType<ProjectFile> ().FirstOrDefault
+                    (pp => pp.Type == ItemType.EmbeddedResource && pp.ResourceID == path.Substring (1));
+            else
+                pi = flattenNodes.OfType<ProjectFile> ().FirstOrDefault (pp => pp.Path == path);
+
+            if (pi != null)
+                return true;
+
+            foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) {
+                Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID);
+                if (p == null)
+                    throw new Exception ("referenced project not found");
+                if (p.TryGetProjectFileFromPath (path, out pi))
+                    return true;
+            }
+            //TODO: search referenced assemblies
+            return false;
+        }
+
+        public void GetDefaultTemplates () {
+            IEnumerable<ProjectFile> tmpFiles =
+                flattenNodes.OfType<ProjectFile> ().Where (pp => pp.Extension == ".template");
+
+            foreach (ProjectFile pi in tmpFiles.Where (
+                pp => pp.Type == ItemType.None && pp.CopyToOutputDirectory != CopyToOutputState.Never)) {
+
+                string clsName = System.IO.Path.GetFileNameWithoutExtension (pi.Path);
+                if (solution.DefaultTemplates.ContainsKey (clsName))
+                    continue;
+                solution.DefaultTemplates[clsName] = pi.AbsolutePath;
+            }
+            foreach (ProjectFile pi in tmpFiles.Where (pp => pp.Type == ItemType.EmbeddedResource)) {
+                string resId = pi.ResourceID;
+                string clsName = resId.Substring (0, resId.Length - 9);
+                if (solution.DefaultTemplates.ContainsKey (clsName))
+                    continue;
+                solution.DefaultTemplates[clsName] = pi.Path;
+            }
+
+            foreach (Project p in ReferencedProjects)
+                p.GetDefaultTemplates ();
+        }
+        //             void searchTemplatesIn(Assembly assembly){
+        //                     if (assembly == null)
+        //                             return;
+        //                     foreach (string resId in assembly
+        //                             .GetManifestResourceNames ()
+        //                             .Where (r => r.EndsWith (".template", StringComparison.OrdinalIgnoreCase))) {
+        //                             string clsName = resId.Substring (0, resId.Length - 9);
+        //                             if (DefaultTemplates.ContainsKey (clsName))
+        //                                     continue;
+        //                             DefaultTemplates[clsName] = "#" + resId;
+        //                     }
+        //             }
+
+        public List<Project> ReferencedProjects {
+            get {
+                List<Project> tmp = new List<Project> ();
+                foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) {
+                    Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID);
+                    if (p != null)
+                        tmp.Add (p);
+                }
+                return tmp;
+            }
+        }
+
+        public void GetStyling () {
+            try {
+                foreach (ProjectFile pi in flattenNodes.OfType<ProjectFile> ().Where (pp => pp.Type == ItemType.EmbeddedResource && pp.Extension == ".style")) {
+                    using (Stream s = new MemoryStream (System.Text.Encoding.UTF8.GetBytes (pi.Source))) {
+                        new StyleReader (solution.Styling, s, pi.ResourceID);
+                    }
+                }
+            } catch (Exception ex) {
+                Console.WriteLine (ex.ToString ());
+            }
+            foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) {
+                Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID);
+                if (p == null)
+                    throw new Exception ("referenced project not found");
+                p.GetStyling ();
+            }
+
+            //TODO:get styling from referenced assemblies
+        }
+    }
+}
+
diff --git a/Samples/CrowIDE/src/ProjectTree/CSProjectFile.cs b/Samples/CrowIDE/src/ProjectTree/CSProjectFile.cs
new file mode 100644 (file)
index 0000000..586e226
--- /dev/null
@@ -0,0 +1,72 @@
+//
+// ProjectNodes.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace Crow.Coding
+{
+       public class CSProjectFile : ProjectFile
+       {
+        CSharpSyntaxTree tree;
+
+
+        #region CTOR
+        public CSProjectFile (ProjectItem pi) : base (pi){                     
+               }
+        #endregion
+
+        public override void UpdateSource(object sender, string newSrc)
+        {
+            base.UpdateSource(sender, newSrc);
+
+            tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText (Source, CSharpParseOptions.Default);
+        }
+
+        public override void Open () {
+            base.Open ();
+
+            tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText (Source, CSharpParseOptions.Default);
+
+                       CompilationUnitSyntax root = (CompilationUnitSyntax)tree.GetRoot ();
+                       MemberDeclarationSyntax firstMember = root.Members [0];
+
+                       Console.WriteLine ( firstMember.GetType().FullName);
+
+                       SyntaxToken tok = root.GetFirstToken();
+                       
+                       while (tok.Value != null) {
+                               Console.Write (tok.Text);
+                               tok = tok.GetNextToken (true,true);
+                       }
+                       Console.Out.Flush ();
+        }
+
+
+    }
+}
+
diff --git a/Samples/CrowIDE/src/ProjectTree/ImlProjectItem.cs b/Samples/CrowIDE/src/ProjectTree/ImlProjectItem.cs
new file mode 100644 (file)
index 0000000..8487f83
--- /dev/null
@@ -0,0 +1,89 @@
+//
+// ProjectNodes.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml;
+using System.IO;
+using Crow;
+using System.Threading;
+
+namespace Crow.Coding
+{
+       public class ImlProjectItem : ProjectFile
+       {
+               #region CTOR
+               public ImlProjectItem (ProjectItem pi) : base (pi){                     
+               }
+               #endregion
+
+               Widget instance;
+               Measure designWidth, designHeight;
+
+               /// <summary>
+               /// instance created with an instantiator from the source by a DesignInterface,
+               /// for now, the one in ImlVisualEditor
+               /// </summary>
+               public Widget Instance {
+                       get { return instance; }
+                       set {
+                               if (instance == value)
+                                       return;
+                               instance = value;
+                               NotifyValueChanged ("Instance", instance);
+                       }
+               }
+                       
+               public Measure DesignWidth {
+                       get { return designWidth; }
+                       set { 
+                               if (designWidth == value)
+                                       return;
+                               designWidth = value;
+                               NotifyValueChanged ("DesignWidth", designWidth);
+                       }
+               }
+               public Measure DesignHeight {
+                       get { return designHeight; }
+                       set {
+                               if (designHeight == value)
+                                       return;
+                               designHeight = value;
+                               NotifyValueChanged ("DesignHeight", designHeight);
+                       }
+               }
+
+
+               public List<Widget> GraphicTree { 
+                       get { return new List<Widget> (new Widget[] {instance}); }
+               }
+
+               void GTView_SelectedItemChanged (object sender, SelectionChangeEventArgs e){
+                       SelectedItem = e.NewValue;
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectFile.cs b/Samples/CrowIDE/src/ProjectTree/ProjectFile.cs
new file mode 100644 (file)
index 0000000..294a28f
--- /dev/null
@@ -0,0 +1,323 @@
+//
+// ProjectNodes.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Xml;
+
+namespace Crow.Coding {
+    public class ProjectFile : ProjectItem {           
+               bool isOpened = false;
+               DateTime accessTime;
+               string source;
+               string origSource;
+               object selectedItem;
+               int curLine, curColumn;
+
+               internal ReaderWriterLockSlim srcEditMtx = new ReaderWriterLockSlim();
+
+               public Dictionary<object, bool> RegisteredEditors = new Dictionary<object, bool>();
+               List<String> undoStack = new List<string>();
+               List<String> redoStack = new List<string>();
+
+               public Crow.Command cmdSave, cmdSaveAs, cmdOpen, cmdClose, cmdUndo, cmdRedo;
+
+               void initCommands (){
+                       cmdSave = new Crow.Command (new Action (() => Save ()))
+                       { Caption = "Save", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = false };
+                       cmdSaveAs = new Crow.Command (new Action (() => SaveAs ()))
+                       { Caption = "Save As ..", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = false };
+                       cmdOpen = new Crow.Command (new Action (() => Open ())) 
+                       { Caption = "Open", Icon = new SvgPicture ("#CrowIDE.icons.open.svg"), CanExecute = true };
+                       cmdClose = new Crow.Command (new Action (() => OnQueryClose (this,null))) 
+                       { Caption = "Close", Icon = new SvgPicture ("#CrowIDE.icons.open.svg"), CanExecute = false };
+                       cmdUndo = new Crow.Command (new Action (() => Undo (null))) 
+                       { Caption = "Undo", Icon = new SvgPicture ("#CrowIDE.icons.undo.svg"), CanExecute = false };
+                       cmdRedo = new Crow.Command (new Action (() => Redo (null))) 
+                       { Caption = "Redo", Icon = new SvgPicture ("#CrowIDE.icons.redo.svg"), CanExecute = false };
+
+                       Commands.Insert (0, cmdOpen);
+                       Commands.Insert (1, cmdSave);
+                       Commands.Insert (2, cmdSaveAs);
+                       Commands.Insert (3, cmdUndo);
+                       Commands.Insert (4, cmdRedo);
+                       Commands.Add (cmdClose);
+               }
+               public ProjectFile () {
+                       initCommands();
+               }
+               public ProjectFile (ProjectItem pi)
+                       : base (pi.Project, pi.node) {
+                       initCommands ();
+               }
+
+               public string ResourceID {
+                       get {                           
+                               return Type != ItemType.EmbeddedResource ? null :
+                                       node.SelectSingleNode ("LogicalName") == null ?
+                                       Project.Name + "." + Path.Replace ('/', '.') :
+                                       LogicalName;
+                       }
+               }
+               public string LogicalName {
+                       get {
+                               return node.SelectSingleNode ("LogicalName")?.InnerText;
+                       }
+               }
+               public bool IsOpened {
+                       get { return isOpened; }
+                       set {
+                               if (isOpened == value)
+                                       return;
+                               isOpened = value;
+
+                               cmdOpen.CanExecute = !isOpened;
+                               cmdClose.CanExecute = isOpened;
+                               cmdSave.CanExecute = isOpened && IsDirty;
+
+                               if (isOpened) 
+                                       Project.solution.OpenItem (this);
+                               else
+                                       Project.solution.CloseItem (this);                              
+
+                               NotifyValueChanged ("IsOpened", isOpened);
+                       }
+               }
+
+               public void UnregisterEditor (object editor){
+                       lock(RegisteredEditors){
+                               RegisteredEditors.Remove (editor);
+                       }
+               }
+               public void RegisterEditor (object editor) {
+                       lock(RegisteredEditors){
+                               RegisteredEditors.Add (editor, false);
+                       }
+               }
+               public virtual void UpdateSource (object sender, string newSrc){
+                       System.Diagnostics.Debug.WriteLine ("update source by {0}", sender);
+                       Source = newSrc;
+                       signalOtherRegisteredEditors (sender);
+               }
+               public void SignalEditorOfType<T> (){
+                       lock (RegisteredEditors) {
+                               object[] keys = RegisteredEditors.Keys.ToArray ();
+                               foreach (object ed in keys) {
+                                       T editor = (T)ed;
+                                       if (editor == null)
+                                               continue;
+                                       RegisteredEditors [editor] = false;
+                                       break;
+                               }
+                       }
+               }
+               protected void signalOtherRegisteredEditors (object sender) {
+                       lock (RegisteredEditors) {
+                               object[] keys = RegisteredEditors.Keys.ToArray ();
+                               foreach (object editor in keys) {
+                                       if (editor != sender)
+                                               RegisteredEditors [editor] = false;
+                               }
+                       }
+               }
+               public string Source {
+                       get {
+                               if (!IsOpened) {
+                                       using (StreamReader sr = new StreamReader (AbsolutePath))
+                                               source = sr.ReadToEnd ();
+                                       
+                               } else {
+                                       if (DateTime.Compare (
+                                                   accessTime,
+                                                   System.IO.File.GetLastWriteTime (AbsolutePath)) < 0)
+                                               Console.WriteLine ("File has been modified outside CrowIDE");
+                               }
+                               return source;
+                       }
+                       set {
+                               if (source == value)
+                                       return;
+                               
+                               srcEditMtx.EnterWriteLock ();
+
+                               undoStack.Add (source);
+                               cmdUndo.CanExecute = true;
+                               redoStack.Clear ();
+                               cmdRedo.CanExecute = false;
+                               source = value;
+
+                               NotifyValueChanged ("Source", source);
+                               NotifyValueChanged ("IsDirty", IsDirty);
+
+                               cmdSave.CanExecute = cmdSaveAs.CanExecute = IsDirty;
+
+                               srcEditMtx.ExitWriteLock ();
+                       }
+               }
+               public bool IsDirty {
+                       get { return source != origSource; }
+               }
+               public int CurrentColumn{
+                       get { return curColumn; }
+                       set {
+                               if (curColumn == value)
+                                       return;
+                               curColumn = value;
+                               NotifyValueChanged ("CurrentColumn", curColumn);
+                       }
+               }
+               public int CurrentLine{
+                       get { return curLine; }
+                       set {
+                               if (curLine == value)
+                                       return;
+                               curLine = value;
+                               NotifyValueChanged ("CurrentLine", curLine);
+                       }
+               }
+
+               public object SelectedItem {
+                       get { return selectedItem; }
+                       set {
+                               if (selectedItem == value)
+                                       return;
+                               selectedItem= value;
+                               Project.solution.SelectedItemElement = value;
+                               NotifyValueChanged ("SelectedItem", selectedItem);
+                       }
+               }
+
+               public CopyToOutputState CopyToOutputDirectory {
+                       get {
+                               XmlNode xn = node.SelectSingleNode ("CopyToOutputDirectory");
+                               return xn == null ? CopyToOutputState.Never :
+                                       (CopyToOutputState)Enum.Parse (typeof(CopyToOutputState), xn.InnerText, true);
+                       }
+               }
+
+               public virtual void Open () {                   
+                       accessTime = System.IO.File.GetLastWriteTime (AbsolutePath);
+                       using (StreamReader sr = new StreamReader (AbsolutePath)) {
+                               source = sr.ReadToEnd ();
+                       }
+                       origSource = source;
+                       IsOpened = true;
+                       NotifyValueChanged ("IsDirty", false);
+               }
+               public virtual void Save () {
+                       if (!IsDirty)
+                               return;
+                       using (StreamWriter sw = new StreamWriter (AbsolutePath)) {
+                               sw.Write (source);
+                       }
+                       origSource = source;
+                       NotifyValueChanged ("IsDirty", false);
+               }
+               public virtual void SaveAs () {
+                       if (!IsDirty)
+                               return;
+                       using (StreamWriter sw = new StreamWriter (AbsolutePath)) {
+                               sw.Write (source);
+                       }
+                       origSource = source;
+                       NotifyValueChanged ("IsDirty", false);
+               }
+               public void Close () {
+                       origSource = source = null;
+                       IsOpened = false;
+               }
+               public void Undo(object sender){
+                       undo();
+                       signalOtherRegisteredEditors (sender);
+               }
+               public void Redo(object sender){
+                       redo();
+                       signalOtherRegisteredEditors (sender);
+               }
+
+               void undo () {                  
+                       if (undoStack.Count == 0)
+                               return;
+                       
+                       srcEditMtx.EnterWriteLock ();
+                       string step = undoStack [undoStack.Count -1];
+                       redoStack.Add (source);
+                       cmdRedo.CanExecute = true;
+                       undoStack.RemoveAt(undoStack.Count -1);
+
+                       source = step;
+
+                       NotifyValueChanged ("Source", source);
+                       NotifyValueChanged ("IsDirty", IsDirty);
+                       cmdSave.CanExecute = IsDirty;
+
+                       if (undoStack.Count == 0)
+                               cmdUndo.CanExecute = false;
+                       srcEditMtx.ExitWriteLock ();
+               }
+
+               void redo () {
+                       if (redoStack.Count == 0)
+                               return;
+                       srcEditMtx.EnterWriteLock ();
+                       string step = redoStack [redoStack.Count -1];
+                       undoStack.Add (source);
+                       cmdUndo.CanExecute = true;
+                       redoStack.RemoveAt(redoStack.Count -1);
+                       source = step;
+                       NotifyValueChanged ("Source", source);
+                       NotifyValueChanged ("IsDirty", IsDirty);
+                       cmdSave.CanExecute = IsDirty;
+
+                       if (redoStack.Count == 0)
+                               cmdRedo.CanExecute = false;
+                       srcEditMtx.ExitWriteLock ();
+
+               }
+
+               public void onDoubleClick (object sender, MouseButtonEventArgs e){
+                       if (IsOpened)
+                               return;
+                       Open ();
+               }
+
+               public void onClick (object sender, MouseButtonEventArgs e){
+                       IsSelected = true;
+               }
+               public void OnQueryClose (object sender, EventArgs e){
+                       if (IsDirty) {
+                               MessageBox mb = MessageBox.ShowModal (CrowIDE.MainIFace,
+                                                       MessageBox.Type.YesNoCancel, $"{DisplayName} has unsaved changes.\nSave it now?");
+                               mb.Yes += (object _sender, EventArgs _e) => { Save (); Close (); };
+                               mb.No += (object _sender, EventArgs _e) => Close();
+                       } else
+                               Close ();
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectItem.cs b/Samples/CrowIDE/src/ProjectTree/ProjectItem.cs
new file mode 100644 (file)
index 0000000..afa3e3e
--- /dev/null
@@ -0,0 +1,116 @@
+//
+// ProjectNodes.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml;
+using System.IO;
+using Crow;
+using System.Threading;
+
+namespace Crow.Coding
+{      
+       public class ProjectItem : ProjectNode {
+               #region CTOR
+               public ProjectItem() {}
+               public ProjectItem (Project project, XmlNode _node) : base (project){
+                       node = _node;
+               }
+               #endregion
+
+               public XmlNode node;
+
+        public override Picture Icon {
+            get {
+                switch (Extension)
+                {
+                    case ".cs":
+                        return new SvgPicture("#CrowIDE.icons.cs-file.svg");
+                    case ".crow":                        
+                        return new SvgPicture("#CrowIDE.icons.xml-file.svg");
+                    case ".xml":
+                        return new SvgPicture("#CrowIDE.icons.xml-file.svg");
+                    default:
+                        return base.Icon;
+                }
+            }
+        }
+
+        public string Extension {
+                       get { return System.IO.Path.GetExtension (Path); }
+               }
+               public string Path {
+                       get {
+                               return node.Attributes["Include"]?.Value.Replace('\\','/');
+                       }
+               }
+               public string AbsolutePath {
+                       get {
+                               return System.IO.Path.Combine (Project.RootDir, Path);
+                       }
+               }
+               public override ItemType Type {
+                       get { 
+                               return (ItemType)Enum.Parse (typeof(ItemType), node.Name, true);
+                       }
+               }
+               public override string DisplayName {
+                       get { 
+                               return Type == ItemType.Reference ?
+                                       Path :
+                                       Path.Split ('/').LastOrDefault();
+                       }
+               }
+               public string HintPath {
+                       get { return node.SelectSingleNode ("HintPath")?.InnerText; }
+               }
+
+               public override bool IsSelected {
+                       get {
+                               return isSelected;
+                       }
+                       set {
+                               if (value == isSelected)
+                                       return;
+
+                               isSelected = value;
+
+                               NotifyValueChanged ("IsSelected", isSelected);
+
+                               if (isSelected) {
+                                       Project.solution.SelectedItem = this;
+                                       Project.IsExpanded = true;
+                                       ProjectNode pn = Parent;
+                                       while (pn != null) {
+                                               pn.IsExpanded = true;
+                                               pn = pn.Parent;
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectNodes.cs b/Samples/CrowIDE/src/ProjectTree/ProjectNodes.cs
new file mode 100644 (file)
index 0000000..bafb9cb
--- /dev/null
@@ -0,0 +1,159 @@
+//
+// ProjectNodes.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml;
+using System.IO;
+using Crow;
+using System.Threading;
+
+namespace Crow.Coding
+{
+       public enum ItemType {
+               ReferenceGroup,
+               Reference,
+               ProjectReference,
+               VirtualGroup,
+               Folder,
+               None,
+               Compile,
+               EmbeddedResource,
+       }
+       public enum CopyToOutputState {
+               Never,
+               Always,
+               PreserveNewest
+       }
+       public class ProjectNode  : IValueChange
+       {
+               #region IValueChange implementation
+               public event EventHandler<ValueChangeEventArgs> ValueChanged;
+               public virtual void NotifyValueChanged(string MemberName, object _value)
+               {
+                       ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value));
+               }
+               #endregion
+
+               #region CTOR
+               public ProjectNode (Project project, ItemType _type, string _name) : this(project){                     
+                       type = _type;
+                       name = _name;
+                       initCommands ();
+               }
+               public ProjectNode (Project project){
+                       Project = project;
+                       initCommands ();
+               }
+               public ProjectNode (){
+                       initCommands ();
+               }
+               #endregion
+
+               void initCommands () {
+                       Commands = new List<Crow.Command> ();
+               }
+
+               ProjectNode parent;
+               bool isExpanded;
+               protected bool isSelected;
+               ItemType type;
+               string name;
+               List<ProjectNode> childNodes = new List<ProjectNode>();
+
+               public Project Project;
+               public List<Crow.Command> Commands;//list of command available for that node
+
+               public virtual Crow.Picture Icon {
+                       get {
+                               switch (Type) {
+                               case ItemType.Reference:
+                                       return new SvgPicture ("#Crow.Icons.assembly.svg");
+                               case ItemType.ProjectReference:
+                                       return new SvgPicture("#Crow.Icons.projectRef.svg"); 
+                               default:
+                                       return new SvgPicture("#CrowIDE.icons.blank-file.svg"); 
+                               }
+                       }
+               }
+               public ProjectNode Parent {
+                       get { return parent; }
+                       set { parent = value; }
+               }
+               public virtual ItemType Type {
+                       get { return type; }
+               }
+               public virtual string DisplayName {
+                       get { return name; }
+               }
+               public List<ProjectNode> ChildNodes {
+                       get { return childNodes;        }
+               }
+               public void AddChild (ProjectNode pn) {
+                       childNodes.Add(pn);
+                       pn.Parent = this;
+               }
+               public void RemoveChild (ProjectNode pn){
+                       pn.Parent = null;
+                       childNodes.Remove (pn);
+               }
+               public void SortChilds () {
+                       foreach (ProjectNode pn in childNodes)
+                               pn.SortChilds ();                       
+                       childNodes = childNodes.OrderBy(c=>c.Type).ThenBy(cn=>cn.DisplayName).ToList();
+               }
+
+               public bool IsExpanded
+               {
+                       get { return isExpanded; }
+                       set
+                       {
+                               if (value == isExpanded)
+                                       return;
+                               isExpanded = value;
+                               NotifyValueChanged ("IsExpanded", isExpanded);
+                       }
+               }
+               public virtual bool IsSelected
+               {
+                       get { return isSelected; }
+                       set
+                       {
+                               if (value == isSelected)
+                                       return;
+                               
+                               isSelected = value;
+
+                               NotifyValueChanged ("IsSelected", isSelected);
+                       }
+               }
+               public override string ToString ()
+               {
+                       return DisplayName;
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectReference.cs b/Samples/CrowIDE/src/ProjectTree/ProjectReference.cs
new file mode 100644 (file)
index 0000000..8487074
--- /dev/null
@@ -0,0 +1,51 @@
+//
+// ProjectNodes.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml;
+using System.IO;
+using Crow;
+using System.Threading;
+
+namespace Crow.Coding
+{      
+       public class ProjectReference : ProjectItem {
+               public ProjectReference (ProjectItem pi) : base (pi.Project, pi.node){
+               }
+               public string ProjectGUID {
+                       get {
+                               return node.SelectSingleNode ("Project")?.InnerText;
+                       }
+               }
+               public override string DisplayName {
+                       get {
+                               return node.SelectSingleNode ("Name").InnerText;
+                       }
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/ProjectTree/StyleProjectItem.cs b/Samples/CrowIDE/src/ProjectTree/StyleProjectItem.cs
new file mode 100644 (file)
index 0000000..1de77cd
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// ProjectNodes.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml;
+using System.IO;
+using Crow;
+using System.Threading;
+
+namespace Crow.Coding
+{
+       public class StyleProjectItem : ProjectFile
+       {
+               #region CTOR
+               public StyleProjectItem (ProjectItem pi) : base (pi){                   
+               }
+               #endregion
+
+               public override void UpdateSource (object sender, string newSrc)
+               {
+                       base.UpdateSource (sender, newSrc);
+                       Project.solution.ReloadStyling ();
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/Solution.cs b/Samples/CrowIDE/src/Solution.cs
new file mode 100644 (file)
index 0000000..c6b1fbc
--- /dev/null
@@ -0,0 +1,541 @@
+//
+// Solution.cs
+//
+//code taken in project https://sourceforge.net/projects/syncproj/
+// no licence info was included, I took the liberty to modify it.
+// Author:
+//             tarmopikaro
+//      2018 Jean-Philippe Bruyère
+//MIT-licenced
+
+using Microsoft.Win32;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Xml.Serialization;
+using Crow;
+
+namespace Crow.Coding{ 
+       public class SolutionProject {
+               public string ProjectHostGuid;
+               public string ProjectName;
+               public string RelativePath;
+               public string ProjectGuid;
+       }
+       public class StyleItemContainer {
+               public object Value;
+               public string Name;
+               public StyleItemContainer(string name, object _value){
+                       Name = name;
+                       Value = _value;
+               }
+       }
+       public class StyleContainer : IValueChange {
+               #region IValueChange implementation
+               public event EventHandler<ValueChangeEventArgs> ValueChanged;
+               public virtual void NotifyValueChanged(string MemberName, object _value)
+               {
+                       ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value));
+               }
+               #endregion
+
+               Style style;
+               bool isExpanded;
+
+               public string Name;
+               public List<StyleItemContainer> Items;
+               public bool IsExpanded
+               {
+                       get { return isExpanded; }
+                       set
+                       {
+                               if (value == isExpanded)
+                                       return;
+                               isExpanded = value;
+                               NotifyValueChanged ("IsExpanded", isExpanded);
+                       }
+               }
+               public StyleContainer(string name, Style _style){
+                       Name = name;
+                       style = _style;
+
+                       Items = new List<StyleItemContainer> ();
+                       foreach (string k in style.Keys) {
+                               Items.Add(new StyleItemContainer(k, style[k]));
+                       }
+               }
+       }
+
+
+       /// <summary>
+/// .sln loaded into class.
+/// </summary>
+       public class Solution: IValueChange
+       {
+               #region IValueChange implementation
+               public event EventHandler<ValueChangeEventArgs> ValueChanged;
+               public virtual void NotifyValueChanged(string MemberName, object _value)
+               {
+                       ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value));
+               }
+               #endregion
+
+               ProjectItem selectedItem = null;
+               object selectedItemElement = null;
+               ObservableList<ProjectItem> openedItems = new ObservableList<ProjectItem>();
+               ObservableList<GraphicObjectDesignContainer> toolboxItems;
+
+               public Dictionary<string, Style> Styling;
+               public Dictionary<string, string> DefaultTemplates;
+
+               public List<Style> Styles { get { return Styling.Values.ToList(); }}
+               public List<StyleContainer> StylingContainers;
+               //TODO: check project dependencies if no startup proj
+
+               public void ReloadStyling () {
+                       Styling = new Dictionary<string, Style> ();
+                       if (StartupProject != null)
+                               StartupProject.GetStyling ();
+//                     StylingContainers = new List<StyleContainer> ();
+//                     foreach (string k in Styling.Keys) {
+//                             StylingContainers.Add (new StyleContainer (k, Styling [k]));
+//                     }
+                       foreach (ImlProjectItem pf in openedItems.OfType<ImlProjectItem>()) {
+                               pf.SignalEditorOfType<ImlVisualEditor> ();
+                       }
+               }
+               public string[] AvailaibleStyles {
+                       get { return Styling == null ? new string[] {} : Styling.Keys.ToArray();}
+               }
+               public void ReloadDefaultTemplates () {
+                       DefaultTemplates = new Dictionary<string, string>();
+                       if (StartupProject != null)
+                               StartupProject.GetDefaultTemplates ();
+               }
+               public void updateToolboxItems () {
+                       Type[] crowItems = AppDomain.CurrentDomain.GetAssemblies ()
+                               .SelectMany (t => t.GetTypes ())
+                               .Where (t => t.IsClass && !t.IsAbstract && t.IsPublic &&                                        
+                                       t.Namespace == "Crow" && t.IsSubclassOf(typeof(Widget)) &&
+                                       t.GetCustomAttribute<DesignIgnore>(false) == null).ToArray ();
+                       ToolboxItems = new ObservableList<GraphicObjectDesignContainer> ();
+                       foreach (Type ci in crowItems) {
+                               toolboxItems.AddElement(new GraphicObjectDesignContainer(ci));
+                       }
+               }
+               public bool GetProjectFileFromPath (string path, out ProjectFile pi){
+                       pi = null;
+                       return StartupProject == null ? false :
+                               StartupProject.TryGetProjectFileFromPath (path, out pi);
+               }
+
+               public ObservableList<ProjectItem> OpenedItems {
+                       get { return openedItems; }
+                       set {
+                               if (openedItems == value)
+                                       return;
+                               openedItems = value;
+                               NotifyValueChanged ("OpenedItems", openedItems);
+                       }
+               }
+
+               public ObservableList<GraphicObjectDesignContainer> ToolboxItems {
+                       get { return toolboxItems; }
+                       set {
+                               if (toolboxItems == value)
+                                       return;
+                               toolboxItems = value;
+                               NotifyValueChanged ("ToolboxItems", toolboxItems);
+                       }                       
+               }
+               public ProjectItem SelectedItem {
+                       get { return selectedItem; }
+                       set {
+                               if (selectedItem == value)
+                                       return;
+                               if (SelectedItem != null)
+                                       SelectedItem.IsSelected = false;
+                               selectedItem = value;
+                               if (SelectedItem != null) 
+                                       SelectedItem.IsSelected = true;
+
+                               UserConfig.Set ("SelectedProjItems", SelectedItem?.AbsolutePath);
+
+                               NotifyValueChanged ("SelectedItem", selectedItem);
+                       }
+               }
+               public object SelectedItemElement {
+                       get { return selectedItemElement; }
+                       set {
+                               if (selectedItemElement == value)
+                                       return;
+                               selectedItemElement = value;
+                               NotifyValueChanged ("SelectedItemElement", selectedItemElement);
+                       }
+               }
+               public string DisplayName {
+                       get { return name; }
+               }
+               /// <summary>
+               /// Gets solution path
+               /// </summary>
+               public String SolutionFolder
+               {
+                       get { return Path.GetDirectoryName (path); }
+               }
+
+//             public System.CodeDom.Compiler.CompilerErrorCollection CompilationErrors {
+//                     get {
+//                             System.CodeDom.Compiler.CompilerErrorCollection tmp = Projects.SelectMany<Project>
+//                                     (p => p.CompilationResults.Errors);
+//                             return tmp;
+//                     }
+//             }
+               public List<System.CodeDom.Compiler.CompilerError> CompilerErrors {
+                       get {
+                               int errCount = 0;
+                               for (int i = 0; i < Projects.Count; i++) {
+                                       if (Projects [i].CompilationResults != null)
+                                               errCount += Projects [i].CompilationResults.Errors.Count;
+                               }
+                               System.CodeDom.Compiler.CompilerError[] tmp = new System.CodeDom.Compiler.CompilerError[errCount];
+
+                               int ptr = 0;
+                               for (int i = 0; i < Projects.Count; i++) {
+                                       if (Projects [i].CompilationResults == null)
+                                               continue;
+                                       Projects [i].CompilationResults.Errors.CopyTo (tmp,ptr);
+                                       ptr += Projects [i].CompilationResults.Errors.Count;
+                               }
+                               return new List<System.CodeDom.Compiler.CompilerError>(tmp);
+                       }
+               }
+
+               public void UpdateErrorList () {
+                       NotifyValueChanged ("CompilerErrors", CompilerErrors);
+               }
+
+               void saveOpenedItemsInUserConfig (){
+                       if (openedItems.Count == 0)
+                               UserConfig.Set ("OpenedItems", "");
+                       else
+                               UserConfig.Set ("OpenedItems", openedItems.Select(o => o.AbsolutePath).Aggregate((a,b)=>a + ";" + b));
+               }
+               public void ReopenItemsSavedInUserConfig () {
+                       string tmp = UserConfig.Get<string> ("OpenedItems");
+                       string sel = UserConfig.Get<string> ("SelectedProjItems");
+                       ProjectFile selItem = null;
+                       if (string.IsNullOrEmpty (tmp))
+                               return;
+                       foreach (string f in tmp.Split(';')) {
+                               foreach (Project p in Projects) {
+                                       ProjectFile pi;
+                                       if (p.TryGetProjectFileFromAbsolutePath (f, out pi)) {
+                                               pi.Open ();
+                                               if (pi.AbsolutePath == sel)
+                                                       selItem = pi;
+                                               break;
+                                       }
+                               }
+                       }
+                       if (selItem == null)
+                               return;
+                       selItem.IsSelected = true;
+               }
+
+               /*void onSelectedItemChanged (object sender, SelectionChangeEventArgs e){                                                       
+                       SelectedItem = e.NewValue as ProjectItem;
+                       UserConfig.Set ("SelectedProjItems", SelectedItem?.AbsolutePath);
+               }*/
+
+               public void OpenItem (ProjectItem pi) {
+                       if (!openedItems.Contains (pi)) {
+                               openedItems.AddElement (pi);
+                               saveOpenedItemsInUserConfig ();
+                       }
+               }
+               public void CloseItem (ProjectItem pi) {                        
+                       openedItems.RemoveElement (pi);
+                       saveOpenedItemsInUserConfig ();
+               }
+
+               public void CloseSolution () {
+                       while (openedItems.Count > 0) {
+                               openedItems.RemoveElement (openedItems [0]);
+                       }
+                       while (toolboxItems.Count > 0) {
+                               toolboxItems.RemoveElement (toolboxItems [0]);
+                       }
+                       NotifyValueChanged ("Projects", null);
+               }
+           /// <summary>
+           /// Solution name
+           /// </summary>
+           String name;
+               /// <summary>
+               /// File path from where solution was loaded.
+               /// </summary>
+               [XmlIgnore]
+               String path;
+
+           /// <summary>
+           /// Solution name for debugger.
+           /// </summary>
+           [ExcludeFromCodeCoverage]
+           public override string ToString()
+           {
+               return "Solution: " + name;
+           }
+                       
+               #region Solution properties
+           double slnVer;                                      // 11.00 - vs2010, 12.00 - vs2015
+
+           /// <summary>
+           /// Visual studio version information used for generation, for example 2010, 2012, 2015 and so on...
+           /// </summary>
+           public int fileFormatVersion;
+
+           /// <summary>
+           /// null for old visual studio's
+           /// </summary>
+           public String VisualStudioVersion;
+           
+           /// <summary>
+           /// null for old visual studio's
+           /// </summary>
+           public String MinimumVisualStudioVersion;
+
+           /// <summary>
+           /// List of project included into solution.
+           /// </summary>
+           public List<Project> Projects = new List<Project>();
+
+           /// <summary>
+           /// List of configuration list, in form "{Configuration}|{Platform}", for example "Release|Win32".
+           /// To extract individual platforms / configuration list, use following functions.
+           /// </summary>
+           public List<String> configurations = new List<string>();
+
+           /// <summary>
+           /// Extracts platfroms supported by solution
+           /// </summary>
+           public IEnumerable<String> getPlatforms()
+           {
+               return configurations.Select(x => x.Split('|')[1]).Distinct();
+           }
+
+           /// <summary>
+           /// Extracts configuration names supported by solution
+           /// </summary>
+           public IEnumerable<String> getConfigurations()
+           {
+               return configurations.Select(x => x.Split('|')[0]).Distinct();
+           }
+               #endregion
+
+               public Configuration UserConfig;
+
+               public Project StartupProject {
+                       get { return Projects?.FirstOrDefault (p => p.ProjectGuid == UserConfig.Get<string> ("StartupProject")); }
+                       set {
+                               if (value == StartupProject)
+                                       return;
+                               if (value == null)
+                                       UserConfig.Set ("StartupProject", "");
+                               else {
+                                       UserConfig.Set ("StartupProject", value.ProjectGuid);
+                                       value.NotifyValueChanged("IsStartupProject", true);
+                               }
+                               NotifyValueChanged ("StartupProject", StartupProject);
+                               ReloadStyling ();
+                               ReloadDefaultTemplates ();
+                       }
+               }
+
+               #region CTOR
+           /// <summary>
+           /// Creates new solution.
+           /// </summary>
+           public Solution() { 
+               }
+
+               #endregion
+
+
+               #region Loading from SLN file   
+           /// <summary>
+           /// Loads visual studio .sln solution
+           /// </summary>
+           /// <exception cref="System.IO.FileNotFoundException">The file specified in path was not found.</exception>
+           static public Solution LoadSolution(string path)
+           {
+               Solution s = new Solution();
+               s.path = path;
+
+               String slnTxt = File.ReadAllText(path);
+               //
+               //  Extra line feed is used by Visual studio, cmake does not generate extra line feed.
+               //
+               s.slnVer = Double.Parse(Regex.Match(slnTxt, "[\r\n]?Microsoft Visual Studio Solution File, Format Version ([0-9.]+)", RegexOptions.Multiline).Groups[1].Value, CultureInfo.InvariantCulture);
+
+               int vsNumber = Int32.Parse(Regex.Match(slnTxt, "^\\# Visual Studio (Express )?([0-9]+)", RegexOptions.Multiline).Groups[2].Value);
+               if (vsNumber > 2000)
+                   s.fileFormatVersion = vsNumber;
+               else
+                   s.fileFormatVersion = vsNumber - 14 + 2015;     // Visual Studio 14 => vs2015, formula might not be applicable for future vs versions.
+
+               foreach (String line in new String[] { "VisualStudioVersion", "MinimumVisualStudioVersion" })
+               {
+                   var m = Regex.Match(slnTxt, "^" + line + " = ([0-9.]+)", RegexOptions.Multiline);
+                   String v = null;
+                   if (m.Success)
+                       v = m.Groups[1].Value;
+
+                   s.GetType().GetField(line).SetValue(s, v);
+               }
+
+               Regex reProjects = new Regex(
+                   "Project\\(\"(?<ProjectHostGuid>{[A-F0-9-]+})\"\\) = \"(?<ProjectName>.*?)\", \"(?<RelativePath>.*?)\", \"(?<ProjectGuid>{[A-F0-9-]+})\"[\r\n]*(?<dependencies>.*?)EndProject[\r\n]+",
+                   RegexOptions.Singleline);
+
+
+               reProjects.Replace(slnTxt, new MatchEvaluator(m =>
+               {
+                   SolutionProject p = new SolutionProject ();
+
+                   foreach (String g in reProjects.GetGroupNames())
+                   {
+                       if (g == "0")   //"0" - RegEx special kind of group
+                           continue;
+
+                       //
+                       // ProjectHostGuid, ProjectName, RelativePath, ProjectGuid fields/properties are set here.
+                       //
+                       String v = m.Groups[g].ToString();
+                       if (g != "dependencies")
+                       {
+                           FieldInfo fi = p.GetType().GetField(g);
+                           if (fi != null)
+                           {
+                               fi.SetValue(p, v);
+                           }
+                           else
+                           {
+                               p.GetType().GetProperty(g).SetValue(p, v);
+                           }
+                           continue;
+                       }
+
+                       if (v == "")    // No dependencies set
+                           continue;
+
+                       String depsv = new Regex("ProjectSection\\(ProjectDependencies\\)[^\r\n]*?[\r\n]+" + "(.*?)" + "EndProjectSection", RegexOptions.Singleline).Match(v).Groups[1].Value;
+
+                       //
+                       // key is always equal to it's value.
+                       // http://stackoverflow.com/questions/5629981/question-about-visual-studio-sln-file-format
+                       //
+                       var ProjectDependencies = new Regex("\\s*?({[A-F0-9-]+}) = ({[A-F0-9-]+})[\r\n]+", RegexOptions.Multiline).Matches(depsv).Cast<Match>().Select(x => x.Groups[1].Value).ToList();
+                   } //foreach
+                               s.Projects.Add(new Project (s, p));
+                   return "";
+               }
+               )
+               );
+
+               new Regex("GlobalSection\\(SolutionConfigurationPlatforms\\).*?[\r\n]+(.*?)EndGlobalSection[\r\n]+", RegexOptions.Singleline).Replace(slnTxt, new MatchEvaluator(m2 =>
+               {
+                   s.configurations = new Regex("\\s*(.*)\\s+=").Matches(m2.Groups[1].ToString()).Cast<Match>().Select(x => x.Groups[1].Value).ToList();
+                   return "";
+               }
+               ));
+
+                       Console.WriteLine ("******** CONFIG ***************");
+
+               new Regex("GlobalSection\\(ProjectConfigurationPlatforms\\).*?[\r\n]+(.*?)EndGlobalSection[\r\n]+", RegexOptions.Singleline).Replace(slnTxt, new MatchEvaluator(m2 =>
+               {
+                   foreach (Match m3 in new Regex("\\s*({[A-F0-9-]+})\\.(.*?)\\.(.*?)\\s+=\\s+(.*?)[\r\n]+").Matches(m2.Groups[1].ToString()))
+                   {
+                       String guid = m3.Groups[1].Value;
+                       String solutionConfig = m3.Groups[2].Value;
+                       String action = m3.Groups[3].Value;
+                       String projectConfig = m3.Groups[4].Value;
+
+                       Project p = s.Projects.Where(x => x.ProjectGuid == guid).FirstOrDefault();
+                       if (p == null)
+                           continue;
+
+                                               Console.WriteLine ("{0},{1},{2},{3}",guid,solutionConfig,action,projectConfig);
+
+                       int iConfigIndex = s.configurations.IndexOf(solutionConfig);
+                       if (iConfigIndex == -1)
+                           continue;
+
+//                     while (p.slnConfigurations.Count < s.configurations.Count)
+//                     {
+//                         p.slnConfigurations.Add(null);
+//                         p.slnBuildProject.Add(false);
+//                     }
+//
+//                     if (action == "ActiveCfg")
+//                     {
+//                         p.slnConfigurations[iConfigIndex] = projectConfig;
+//                     }
+//                     else
+//                     {
+//                         if (action.StartsWith("Build"))
+//                         {
+//                             p.slnBuildProject[iConfigIndex] = true;
+//                         }
+//                         else
+//                         {
+//                             if (action.StartsWith("Deploy"))
+//                             {
+//                                 if (p.slnDeployProject == null) p.slnDeployProject = new List<bool?>();
+//
+//                                 while (p.slnDeployProject.Count < s.configurations.Count)
+//                                     p.slnDeployProject.Add(null);
+//
+//                                 p.slnDeployProject[iConfigIndex] = true;
+//                             }
+//                         }
+//                     } //if-esle
+                   }
+                   return "";
+               }
+               ));
+
+               //
+               // Initializes parent-child relationship.
+               //
+               new Regex("GlobalSection\\(NestedProjects\\).*?[\r\n]+(.*?)EndGlobalSection[\r\n]+", RegexOptions.Singleline).Replace(slnTxt, new MatchEvaluator(m4 =>
+               {
+                   String v = m4.Groups[1].Value;
+                   new Regex("\\s*?({[A-F0-9-]+}) = ({[A-F0-9-]+})[\r\n]+", RegexOptions.Multiline).Replace(v, new MatchEvaluator(m5 =>
+                   {
+                       String[] args = m5.Groups.Cast<System.Text.RegularExpressions.Group>().Skip(1).Select(x => x.Value).ToArray();
+                       Project child = s.Projects.Where(x => args[0] == x.ProjectGuid).FirstOrDefault();
+                       Project parent = s.Projects.Where(x => args[1] == x.ProjectGuid).FirstOrDefault();
+                       parent.dependantProjects.Add(child);
+                       child.ParentProject = parent;
+                       return "";
+                   }));
+                   return "";
+               }
+               ));
+
+                       s.UserConfig = new Configuration (s.path + ".user");
+                       s.ReloadStyling ();
+                       s.ReloadDefaultTemplates ();
+                       s.updateToolboxItems ();
+               return s;
+           } //LoadSolution
+               #endregion
+       } 
+}
diff --git a/Samples/CrowIDE/src/SolutionControler.cs b/Samples/CrowIDE/src/SolutionControler.cs
new file mode 100644 (file)
index 0000000..edb6b0d
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// SolutionControler.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+
+namespace Crow.Coding
+{
+       public class SolutionControler
+       {
+               public SolutionControler ()
+               {
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/src/VerticalLine.cs b/Samples/CrowIDE/src/VerticalLine.cs
new file mode 100644 (file)
index 0000000..f03b311
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// VerticalLine.cs
+//
+// Author:
+//       jp <>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+using System;
+using Crow;
+using vkvg;
+
+namespace Crow.Coding
+{
+       public class VerticalLine : Widget
+       {
+               public VerticalLine () : base()
+               {
+               }
+
+               protected override void onDraw (Context gr)
+               {
+                       base.onDraw (gr);
+                       Foreground.SetAsSource (gr);
+                       Rectangle r = ClientRectangle;
+                       double x = r.Center.X - 0.5;
+                       double y;
+                       gr.LineWidth = 1;
+                       gr.MoveTo (x, r.Y);
+                       gr.LineTo (x, r.Bottom-8);
+
+                       for (y = 8.5+r.Y; y < r.Bottom; y += 18) {
+                               gr.MoveTo (x, y);
+                               gr.LineTo (x * 2, y);
+                       }
+
+                       gr.Stroke ();
+               }
+       }
+}
+
diff --git a/Samples/CrowIDE/ui/CategoryExp.template b/Samples/CrowIDE/ui/CategoryExp.template
new file mode 100755 (executable)
index 0000000..d3732ae
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<Expandable Caption="{Name}" IsExpanded="{IsExpanded}" Background="Grey" Foreground="Black">
+       <Template>
+               <VerticalStack>
+                       <HorizontalStack Spacing="1" Height="Fit" MouseDoubleClick="./onClickForExpand" Background="Grey">
+                               <Container Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand"
+                                                                                                                       MouseEnter="{Background=LightGrey}"
+                                                                                                                       MouseLeave="{Background=Transparent}">
+                                       <Image
+                                               Path="#Crow.Icons.expandable.svg"
+                                               Visible="{./IsExpandable}"
+                                               SvgSub="{./IsExpanded}"/>
+                               </Container>
+                               <Label Foreground="White" Text="{./Caption}"/>
+                       </HorizontalStack>
+                       <Container Name="Content" Visible="false"/>
+               </VerticalStack>
+       </Template>
+       <VerticalStack Spacing="1" Height="Fit" Name="ItemsContainer"
+               Margin="0" VerticalAlignment="Top"/>
+</Expandable>  
\ No newline at end of file
diff --git a/Samples/CrowIDE/ui/CrowIDE.crow b/Samples/CrowIDE/ui/CrowIDE.crow
new file mode 100644 (file)
index 0000000..4295287
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--<Window Height="Stretched" Width="Stretched" >-->
+       <VerticalStack DataSourceType="CrowIDE">
+               <Menu>
+                       <MenuItem Caption="File" Width="Fit" PopWidth="120" DataSource="{CurrentSolution}">
+                               <MenuItem Command="{CMDNew}" />
+                               <MenuItem Command="{CMDOpen}" />
+                               <MenuItem Command="{cmdCloseSolution}" />
+                               <MenuItem DataSource="{SelectedItem}" Command="{cmdSave}" />
+                               <MenuItem DataSource="{SelectedItem}" Command="{cmdSaveAs}" />
+                               <MenuItem Command="{CMDQuit}" />
+                       </MenuItem>
+                       <MenuItem Caption="Edit" Name="edit" Width="Fit" PopWidth="100" DataSource="{CurrentSolution}">
+                               <MenuItem DataSource="{SelectedItem}" Command="{cmdUndo}" />
+                               <MenuItem DataSource="{SelectedItem}" Command="{cmdRedo}" />
+                               <MenuItem Command="{CMDCut}" />
+                               <MenuItem Command="{CMDCopy}" />
+                               <MenuItem Command="{CMDPaste}" />
+                               <MenuItem Command="{CMDOptions}"/>
+                       </MenuItem>
+                       <MenuItem Caption="View" Fit="true" PopWidth="150">
+                               <MenuItem Command="{CMDViewSolution}"/>
+                               <MenuItem Command="{CMDViewEditor}"/>
+                               <MenuItem Command="{CMDViewProperties}"/>
+                               <MenuItem Command="{CMDViewDesign}"/>
+                               <MenuItem Command="{CMDViewStyling}"/>
+                               <MenuItem Command="{CMDViewToolbox}"/>
+                               <MenuItem Command="{CMDViewErrors}"/>
+                               <MenuItem Command="{CMDViewGTExp}"/>
+                               <MenuItem Command="{CMDViewSchema}"/>
+                       </MenuItem>
+                       <MenuItem Caption="Project" Fit="true" PopWidth="120">
+                               <MenuItem Command="{CMDCompile}"/>
+                               <MenuItem Command="{CMDViewProjProps}"/>
+                       </MenuItem>
+                       <MenuItem Caption="Help" Width="Fit" PopWidth="60">
+                               <MenuItem Caption="About"/>
+                               <MenuItem Command="{CMDHelp}"/>
+                       </MenuItem>
+               </Menu>
+<!--           <Label DataSource="{CurrentSolution}" Text="{SelectedItemElement}" Width="Stretched"/>-->
+<!--           <Docker >-->
+                       <DockStack Name="mainDock"/>
+<!--                   <DockWindow DataSource="{CurrentSolution}" Name="winEditor" Caption="Edit View" Width="70%" Height="80%">
+                               <Template>
+                                       <Border BorderWidth="1" Foreground="DimGrey" CornerRadius="{./CornerRadius}"
+                                                                       Background="{./Background}"
+                                                                       MouseEnter="./onBorderMouseEnter"
+                                                                       MouseLeave="./onBorderMouseLeave">
+                                               <Container Name="Content" MinimumSize="50,50"/>
+                                       </Border>
+                               </Template>
+                               <EditPane SelectedItem="{²SelectedItem}" SelectedItemElement="{²SelectedItemElement}" Data="{OpenedItems}" DataTest="Extension"
+                                       ItemTemplate="#Crow.Coding.ui.EditPaneItems.template"/>
+                       </DockWindow>-->
+<!--           </Docker>-->
+       </VerticalStack>
+<!--</Window>-->
diff --git a/Samples/CrowIDE/ui/DockWindows/GTreeExpITemp.crow b/Samples/CrowIDE/ui/DockWindows/GTreeExpITemp.crow
new file mode 100644 (file)
index 0000000..fb044b3
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<Expandable IsExpanded="{²IsExpanded}" MouseDoubleClick="/onClickForExpand">
+       <Template>
+               <VerticalStack>
+                       <Border CornerRadius="2" Margin="0" Height="Fit"                                                
+                                       Foreground="Transparent"
+                                       MouseEnter="{Foreground=DimGrey}"
+                                       MouseLeave="{Foreground=Transparent}">
+                               <HorizontalStack Spacing="1">
+                                       <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand"
+                                               Path="{./Image}"
+                                               Visible="{./IsExpandable}"
+                                               SvgSub="{./IsExpanded}"
+                                               MouseEnter="{Background=LightGrey}"
+                                               MouseLeave="{Background=Transparent}"/>
+                                       <Border Width="16" Height="16" Foreground="Black" Background="DimGrey">
+                                               <Image Margin="2" Path="{GetIcon}" />
+                                       </Border>
+                                       <Label Text="{DesignName}"/>
+                               </HorizontalStack>
+                       </Border>
+                       <Container Name="Content" Visible="false"/>
+               </VerticalStack>
+       </Template>
+       <HorizontalStack Height="Fit">
+               <Widget Width="8" Height="10"/>
+               <VerticalStack Height="Fit" Name="ItemsContainer"/>
+       </HorizontalStack>
+</Expandable>
diff --git a/Samples/CrowIDE/ui/DockWindows/WinSchemaItem.template b/Samples/CrowIDE/ui/DockWindows/WinSchemaItem.template
new file mode 100755 (executable)
index 0000000..2832a32
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<Border BorderWidth="1" Foreground="Black" CornerRadius="10"
+                               Background="Grey"
+                               MouseEnter="./onBorderMouseEnter"
+                               MouseLeave="./onBorderMouseLeave">
+       <VerticalStack Spacing="0">
+               <HorizontalStack Background="MediumSeaGreen" Margin="0" Spacing="0" Height="Fit" Width="Stretched">                             
+                       <Label Width="Stretched" Margin="0" TextAlignment="Center" Text="{./Caption}" />
+               </HorizontalStack>
+               <Widget Background="Black" Height="1"/>
+               <Container Margin="5" Name="Content" Width="Fit"/>
+       </VerticalStack>
+</Border>
diff --git a/Samples/CrowIDE/ui/DockWindows/toolboxBut.template b/Samples/CrowIDE/ui/DockWindows/toolboxBut.template
new file mode 100644 (file)
index 0000000..0729a38
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<Border Background="{./Background}" Name="Content"
+       Foreground="Transparent" CornerRadius="{./CornerRadius}" BorderWidth="1"
+       MouseDown="{Foreground=vgradient|0:Black|0.05:Grey|0.85:Grey|1:White}"
+       MouseUp="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}">
+       <Image Path="{./Caption}" Margin="2" Width="20" Height="20" />
+</Border>
diff --git a/Samples/CrowIDE/ui/DockWindows/winDesign.crow b/Samples/CrowIDE/ui/DockWindows/winDesign.crow
new file mode 100644 (file)
index 0000000..4b5125b
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<DockWindow DataSource="{CurrentSolution}" Name="winDesign" Caption="Design" Width="200" Height="50%">
+       <VerticalStack DataSource="{SelectedItemElement}">
+               <ColorPicker SelectedColor="{²Background}"/>
+               <Group Fit="true">
+                       <Border Foreground="Black" Left="25" Top="12" Width="34" Height="21" Background="{Background}"/>
+                       <Border Foreground="Black" Left="1" Top="1" Width="34" Height="21" Background="{Foreground}"/>
+               </Group>
+       </VerticalStack>
+</DockWindow>
diff --git a/Samples/CrowIDE/ui/DockWindows/winEditor.crow b/Samples/CrowIDE/ui/DockWindows/winEditor.crow
new file mode 100644 (file)
index 0000000..461a260
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<DockWindow Name="winEditor" Caption="Edit View">
+       <EditPane DataSource="{CurrentSolution}"
+               SelectedItemElement="{²SelectedItemElement}" Data="{OpenedItems}" DataTest="Extension"
+               ItemTemplate="#Crow.Coding.EditPaneItems.template"/>
+</DockWindow>
diff --git a/Samples/CrowIDE/ui/DockWindows/winErrors.crow b/Samples/CrowIDE/ui/DockWindows/winErrors.crow
new file mode 100644 (file)
index 0000000..82ecc17
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<DockWindow DataSource="{CurrentSolution}" Name="winErrors" Caption="Errors"  Width="20%">
+       <ListBox Width="Stretched" Data="{CompilerErrors}">
+               <ItemTemplate>
+                       <HorizontalStack Height="Fit" Margin="0" Focusable="true" Spacing="10"
+                                       MouseEnter="{Background=SteelBlue}"
+                                       MouseLeave="{Background=Transparent}">                                          
+                               <Image Width="10" Height="10" Path="#Crow.Icons.compiler_error.svg" SvgSub="{IsWarning}"/>
+                               <Label Text="{Line}" Width="25" TextAlignment="Right"/>
+                               <Label Text="{ErrorText}" Width="60%"/>
+                               <Label Text="{FileName}" Width="Fit"/>
+                       </HorizontalStack>
+               </ItemTemplate>
+       </ListBox>
+</DockWindow>
diff --git a/Samples/CrowIDE/ui/DockWindows/winGTExplorer.crow b/Samples/CrowIDE/ui/DockWindows/winGTExplorer.crow
new file mode 100644 (file)
index 0000000..62c7b9b
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<DockWindow Name="winGTExplorer" Caption="Edit View" Width="40%" Height="80%">
+       <VerticalStack Name="vstack" DataSource="{CurrentSolution}">
+               <Button Caption="Expand All" MouseClick="../treeView.onExpandAll_MouseClick"/>          
+               <TreeView DataSource="{SelectedItem}" IsRoot="true" Name="treeView" Data="{GraphicTree}"
+                       SelectedItemChanged="../../vstack.DataSource.GTView_SelectedItemChanged">
+                       <ItemTemplate>
+                               <Border Width="Stretched" Focusable="true" Foreground="Transparent">
+                                       <HorizontalStack Spacing="5">
+                                               <Widget Width="5" Height="5"/>
+                                               <Border Width="16" Height="16" Foreground="Black" Background="DimGrey">
+                                                       <Image Margin="2" Path="{GetIcon}" />
+                                               </Border>
+                                               <Label Text="{DesignName}" Width="Stretched"/>
+                                       </HorizontalStack>
+                               </Border>
+                       </ItemTemplate>
+                       <ItemTemplate DataType="Crow.Group" Data="GetChildren"
+                               Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/>
+                       <ItemTemplate DataType="Crow.Container" Data="GetChildren"
+                               Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/>
+                       <ItemTemplate DataType="Crow.TemplatedContainer" Data="GetChildren"
+                               Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/>
+                       <ItemTemplate DataType="Crow.TemplatedGroup" Data="GetChildren"
+                               Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/>
+               </TreeView>
+       </VerticalStack>
+</DockWindow>
diff --git a/Samples/CrowIDE/ui/DockWindows/winProperties.crow b/Samples/CrowIDE/ui/DockWindows/winProperties.crow
new file mode 100644 (file)
index 0000000..2ef5f6e
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<DockWindow Name="winProperties" Caption="Properties"  Width="20%">
+       <MembersView DataSource="{CurrentSolution}" ProjectNode="{SelectedItem}"
+               Instance="{SelectedItemElement}" DataTest="Type"
+               ItemTemplate="#Crow.Coding.MembersItem.template"/>
+</DockWindow>
+
diff --git a/Samples/CrowIDE/ui/DockWindows/winSchema.crow b/Samples/CrowIDE/ui/DockWindows/winSchema.crow
new file mode 100644 (file)
index 0000000..cd84249
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<DockWindow DataSource="{CurrentSolution}" Name="winSchema" Caption="IML Schematic View" Height="60%" Width="80%">
+       <ImlSchematicEditor DataSource="{SelectedItem}" Data="{GraphicTree}">
+               <Template>
+                       <Group Name="ItemsContainer"/>
+               </Template>
+               <ItemTemplate DataType="Crow.Widget">
+                       <Window Style="WinSchema" Caption="{Name}">
+                               <Label Text="test"/>
+                       </Window>
+               </ItemTemplate>
+               <ItemTemplate DataType="Crow.Container" >
+                       <Window Style="WinSchema" Caption="{Name}">
+                               <Label Text="test"/>
+                       </Window>
+               </ItemTemplate>
+       </ImlSchematicEditor>
+</DockWindow>
diff --git a/Samples/CrowIDE/ui/DockWindows/winSolution.crow b/Samples/CrowIDE/ui/DockWindows/winSolution.crow
new file mode 100644 (file)
index 0000000..e33a200
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<DockWindow Name="winSolution" Caption="Solution"  Width="20%">
+       <TreeView Name="treeview" IsRoot="true" DataSource="{CurrentSolution}"
+               Data="{Projects}" SelectedItemChanged="onSelectedItemChanged"
+               ItemTemplate="#Crow.Coding.ProjectTree.template"/>
+</DockWindow>
diff --git a/Samples/CrowIDE/ui/DockWindows/winStyleView.crow b/Samples/CrowIDE/ui/DockWindows/winStyleView.crow
new file mode 100644 (file)
index 0000000..a86343e
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<DockWindow DataSource="{CurrentSolution}" Name="winStyle" Caption="Styling"  Width="20%">
+       <TreeView Data="{StylingContainers}">
+               <Template>
+                       <VerticalStack Name="ItemsContainer" Spacing="1"/>
+               </Template>
+               <ItemTemplate DataType="Crow.Coding.StyleItemContainer">
+                       <HorizontalStack Height="Fit" Spacing="1">
+                               <Label Background="White" Foreground="Jet" Text="{Name}" Width="40%"/>
+                               <Label Background="White" Foreground="Jet" Text="{Value}" Width="Stretched"/>
+                       </HorizontalStack>
+               </ItemTemplate>
+               <ItemTemplate Path="#Crow.Coding.ui.CategoryExp.template" DataType="Crow.Coding.StyleContainer" Data="Items"/>
+       </TreeView>
+</DockWindow>
+
diff --git a/Samples/CrowIDE/ui/DockWindows/winToolbox.crow b/Samples/CrowIDE/ui/DockWindows/winToolbox.crow
new file mode 100644 (file)
index 0000000..615488e
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<DockWindow DataSource="{CurrentSolution}" Name="winToolbox" Caption="Toolbox" Width="60">
+       <ListBox Margin="3" Data="{ToolboxItems}" SelectionBackground="SkyBlue">
+               <Template>
+                       <Wrapper Name="ItemsContainer" Orientation="Vertical" Spacing="0"/>
+               </Template>
+               <ItemTemplate>
+                       <Container Fit="true" Focusable="true" Tooltip="{DisplayName}" Margin="2" AllowDrag="true"
+                               StartDrag="onStartDrag" EndDrag="onEndDrag" Drop="onDrop">
+                               <Border Foreground="Black" Background="DimGrey" Margin="0" BorderWidth="1"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=Black}">
+                                       <Image Path="{IconPath}" Margin="3"  Width="20" Height="20" />
+                               </Border>
+                       </Container>
+               </ItemTemplate>
+       </ListBox>
+</DockWindow>
diff --git a/Samples/CrowIDE/ui/IcoBut.template b/Samples/CrowIDE/ui/IcoBut.template
new file mode 100644 (file)
index 0000000..ef84670
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Border Background="{./Background}" Name="Content"
+       BorderWidth="1" BorderStyle="Normal"
+       MouseDown="{BorderStyle=Sunken}"
+       MouseUp="{BorderStyle=Normal}">
+       <Image Margin="1" Path="#icons.blank-file" />
+</Border>
diff --git a/Samples/CrowIDE/ui/ItemTemplates/Enum.template b/Samples/CrowIDE/ui/ItemTemplates/Enum.template
new file mode 100755 (executable)
index 0000000..9ee2b60
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}" DataSourceType="PropertyContainer">
+       <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}"/>
+       <ComboBox Margin="0"  Height="Stretched" Width="50%" Data="{Choices}"
+                       SelectedItem="{²Value}">
+               <Template>
+                       <Popper Name="popper" PopDirection="Bottom">
+                               <Template>
+                                       <CheckBox Caption="{./Caption}" IsChecked="{²./IsPopped}" Foreground="{./Foreground}" Background="{./Background}">
+                                               <Template>
+                                                       <Border CornerRadius="0" Foreground="LightGrey" Background="White">
+                                                               <HorizontalStack Margin="0" Spacing="1">
+                                                                       <Label Width="Stretched" MinimumSize="80,10" Margin="1" Foreground = "{LabForeground}" Background="White"
+                                                                               Text="{../../../../../SelectedItem}"/>
+                                                                       <Button Width="12" Height="12" Focusable="false"
+                                                                               Template="#Crow.ArrowBut.template">
+                                                                               <Image Margin="1" Path="#Crow.Icons.updown.svg" SvgSub="down"/>
+                                                                       </Button>
+                                                               </HorizontalStack>
+                                                       </Border>
+                                               </Template>
+                                       </CheckBox>
+                               </Template>
+                               <Border Background="White" BorderWidth="1" Margin="1" Foreground="Black"
+                                       MinimumSize="{../../MinimumPopupSize}" Fit="true">
+                                       <Scroller Name="scroller1" Margin="2" 
+                                               MaximumSize="0,200"
+                                               HorizontalAlignment="Left">
+                                               <VerticalStack LayoutChanged="../../../../_list_LayoutChanged"
+                                                       MouseClick="../../../onMouseClick" Focusable="True"
+                                                       Height="Fit" Name="ItemsContainer" Margin="0"
+                                                       HorizontalAlignment="Left"
+                                                       VerticalAlignment="Top"/>
+                                       </Scroller>
+                               </Border>
+                       </Popper>
+               </Template>
+               <ItemTemplate>
+                       <Container Fit="true" Margin="0" Focusable="true"
+                                       HorizontalAlignment="Left"
+                                       MouseEnter="{Background=SteelBlue}"
+                                       MouseLeave="{Background=Transparent}">
+                               <Label Text="{}" Foreground="Black"/>
+                       </Container>
+               </ItemTemplate>
+       </ComboBox>
+</HorizontalStack>
diff --git a/Samples/CrowIDE/ui/ItemTemplates/Fill.template b/Samples/CrowIDE/ui/ItemTemplates/Fill.template
new file mode 100755 (executable)
index 0000000..56d4a4d
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}">
+       <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}"/>
+       <Popper Height="Stretched" Caption="{Value}">
+               <Template>
+                       <CheckBox Caption="{./Caption}" IsChecked="{²./IsPopped}">
+                               <Template>
+                                       <HorizontalStack Margin="1" Height="Stretched" Spacing="3" Background="White">
+                                               <Border Foreground="{LabForeground}" Width="18" Height="12" CornerRadius="3"
+                                                       Background="{Value}">
+                                               </Border>
+                                               <Label Width="Stretched" Text="{./Caption}" Foreground="{LabForeground}"/>
+                                       </HorizontalStack>
+                               </Template>
+                       </CheckBox>
+               </Template>
+               <ColorPicker SelectedColor="{²Value}" Background="DimGrey" Margin="5" Fit="True" />
+       </Popper>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/CrowIDE/ui/LQIsExplorer.crow b/Samples/CrowIDE/ui/LQIsExplorer.crow
new file mode 100644 (file)
index 0000000..2994db6
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<Window Width="50%" Height="50%" Background="DimGrey">
+       <TreeView IsRoot="true" Name="treeView" Data="{LQIs}">
+               <ItemTemplate DataType="Crow.LayoutingQueueItem" Data="triggeredLQIs">
+                       <Expandable>
+                               <Template>
+                                       <VerticalStack Height="{./HeightPolicy}" Width="{./WidthPolicy}">
+                                               <VerticalStack Fit="true" Margin="3" Background="DimGrey"
+                                                               HorizontalAlignment="Left"
+                                                               MouseEnter="{Background=hgradient|0:RoyalBlue|1:Transparent}"
+                                                               MouseLeave="{Background=DimGrey}">
+                                                       <Label Text="{FullName}" Font="droid, 8" Background="LightGrey" Foreground="Black"/>
+                                                       <HorizontalStack Fit="true" Spacing="10">
+                                                               <Label Text="{LayoutingTries}" Foreground="SkyBlue"/>
+                                                               <Label Text="{DiscardCount}" Foreground="Red"/>
+                                                               <Label Text="{Name}" Font="droid bold"/>
+                                                               <Label Text="{LayoutType}" Foreground="Maize"/>
+                                                               <Label Text="{Width}"/>
+                                                               <Label Text="{Height}"/>
+                                                       </HorizontalStack>
+
+                                                       <HorizontalStack Fit="true">
+                                                               <Label Text="{Slot}"/>
+                                                               <Label Text=" => "/>
+                                                               <Label Text="{NewSlot}"/>
+                                                       </HorizontalStack>
+                                                       <Widget Background="SeaGreen" Height="3" Visible="{HasTriggeredLQIs}"/>
+                                               </VerticalStack>
+                                               <Container Name="Content" Visible="false" HorizontalAlignment="Left"
+                                                               Fit="true"/>
+                                       </VerticalStack>
+                               </Template>
+                               <HorizontalStack Height="Fit" Width="Fit">
+                                       <Widget Width="20" Height="10"/>
+                                       <TreeView Name="List" Height="Fit" Width="Fit"
+                                               Template="#Crow.Templates.treeList.crow" />
+                               </HorizontalStack>
+                       </Expandable>
+               </ItemTemplate>
+               <ItemTemplate DataType="Crow.LQIList" Data="GetRootLQIs">
+                       <Expandable Caption="{}" >
+                               <Template>
+                                       <VerticalStack Height="{./HeightPolicy}" Width="{./WidthPolicy}">
+                                               <HorizontalStack Spacing="1" Height="Fit" Width="{./WidthPolicy}"
+                                                               MouseEnter="{Background=hgradient|0:RoyalBlue|1:Transparent}"
+                                                               MouseLeave="{Background=Transparent}">
+                                                       <Image Margin="2" Width="12" Height="12"
+
+                                                               Path="{./Image}"
+                                                               SvgSub="{./IsExpanded}"/>
+                                                       <Label Text="{./Caption}" Width="{./WidthPolicy}"/>
+                                               </HorizontalStack>
+                                               <Container Name="Content" Visible="false"
+                                                               Height="{./HeightPolicy}" Width="{./WidthPolicy}"/>
+                                       </VerticalStack>
+                               </Template>
+                               <HorizontalStack Height="Fit" Width="{./WidthPolicy}">
+                                       <Widget Width="12" Height="10"/>
+                                       <TreeView Name="List" Height="Fit" Width="{./WidthPolicy}"
+                                               Template="#Crow.Templates.treeList.crow" />
+                               </HorizontalStack>
+                       </Expandable>
+               </ItemTemplate>
+       </TreeView>
+</Window>
diff --git a/Samples/CrowIDE/ui/MemberView.crow b/Samples/CrowIDE/ui/MemberView.crow
new file mode 100644 (file)
index 0000000..170a3fc
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Window Caption="Properties" Width="30%" Height="60%" AlwaysOnTop="true">
+       <MembersView Instance="{SelectedItem}" DataTest="Type"
+               ItemTemplate="#Crow.Coding.ui.MembersItem.template"/>
+</Window>
\ No newline at end of file
diff --git a/Samples/CrowIDE/ui/MembersItem.template b/Samples/CrowIDE/ui/MembersItem.template
new file mode 100755 (executable)
index 0000000..b552e92
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<ItemTemplate>
+       <HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}" DataSourceType="PropertyContainer">
+               <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}"/>
+               <TextBox Margin="1" Text="{²Value}" Height="Fit" Foreground = "{LabForeground}"/>
+       </HorizontalStack>
+</ItemTemplate>
+<ItemTemplate Path="#Crow.Coding.CategoryExp.template" DataType="Crow.Coding.CategoryContainer"
+       Data="Properties" DataTest="Type"/>
+<ItemTemplate DataType="System.Boolean" >
+       <HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}">
+               <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}" />
+               <CheckBox Background="White" Foreground = "{LabForeground}" Height="Stretched" Caption="" IsChecked="{²Value}"/>
+       </HorizontalStack>
+</ItemTemplate>
+<ItemTemplate Path="#Crow.Coding.Enum.template" DataType="System.Enum" />
+<ItemTemplate Path="#Crow.Coding.Enum.template" DataType="Style" />
+<!--<ItemTemplate Path="#Crow.Coding.ui.ItemTemplates.Fill.template" DataType="Crow.Fill"/>-->
+       
\ No newline at end of file
diff --git a/Samples/CrowIDE/ui/MembersView.template b/Samples/CrowIDE/ui/MembersView.template
new file mode 100755 (executable)
index 0000000..046049e
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <Border Height="Fit">
+               <Label TextAlignment="Left" Text="{./SelectedItemName}" Width="Stretched"/>
+       </Border>
+       <HorizontalStack>
+               <Scroller  Name="scroller1" Margin="1" 
+                       Background="{./Background}">
+                       <VerticalStack Spacing="1"
+                               Height="Fit" Name="ItemsContainer" Margin="0" VerticalAlignment="Top"/>
+               </Scroller>
+               <ScrollBar
+                       Name="scrollbar1" Orientation="Vertical"
+                       LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30"
+                       CursorSize="{../scroller1.ChildHeightRatio}"
+                       Value="{²../scroller1.ScrollY}"
+                       Maximum="{../scroller1.MaxScrollY}"/>
+       </HorizontalStack>
+</VerticalStack>
diff --git a/Samples/CrowIDE/ui/NewFile.crow b/Samples/CrowIDE/ui/NewFile.crow
new file mode 100644 (file)
index 0000000..ffee5fe
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Window Caption="Add New File..." Height="60%" Width="70%">
+       <Label/>
+</Window>
+
diff --git a/Samples/CrowIDE/ui/Options.crow b/Samples/CrowIDE/ui/Options.crow
new file mode 100644 (file)
index 0000000..7d401e0
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<Window Caption="Crow IDE Options" Width="80%" Height="70%" Background="DimGrey" Modal="true">
+       <TabView>
+               <TabItem Caption="IML Visual Editor">
+                       <VerticalStack Margin="10">
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                       </VerticalStack>
+               </TabItem>
+               <TabItem Caption="Text Editor">
+                       <VerticalStack Margin="10">
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                               <CheckBox Caption="Print Line Numbers" IsChecked="True"/>
+                       </VerticalStack>
+               </TabItem>
+
+       </TabView>
+</Window>
diff --git a/Samples/CrowIDE/ui/ProjectProperties.crow b/Samples/CrowIDE/ui/ProjectProperties.crow
new file mode 100644 (file)
index 0000000..9a6ba39
--- /dev/null
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<Window Caption="Project Properties" Width="60%" Height="70%" Modal="true">
+       <HorizontalStack>
+               <VerticalStack Height="Fit" Width="50%">
+                       <HorizontalStack>
+                               <Label Text="Tools Version" Width="30%"/>
+                               <Label Text="{ToolsVersion}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Default Targets" Width="30%"/>
+                               <Label Text="{DefaultTargets}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Project Guid" Width="30%"/>
+                               <Label Text="{ProjectGuid}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Output Type" Width="30%"/>
+                               <Label Text="{OutputType}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Root Namespace" Width="30%"/>
+                               <Label Text="{RootNamespace}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Assembly Name" Width="30%"/>
+                               <Label Text="{AssemblyName}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Allow Unsafe Blocks" Width="30%"/>
+                               <CheckBox IsChecked="{AllowUnsafeBlocks}" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="No Std Lib" Width="30%"/>
+                               <CheckBox IsChecked="{NoStdLib}" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Treat Warnings As Errors" Width="30%"/>
+                               <CheckBox IsChecked="{TreatWarningsAsErrors}" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Sign Assembly" Width="30%"/>
+                               <CheckBox IsChecked="{SignAssembly}" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Target Framework" Width="30%"/>
+                               <Label Text="{TargetFrameworkVersion}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Description" Width="30%"/>
+                               <Label Text="{Description}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Output Path" Width="30%"/>
+                               <Label Text="{OutputPath}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+                       <HorizontalStack>
+                               <Label Text="Intermediate Output Path" Width="30%"/>
+                               <Label Text="{IntermediateOutputPath}" IsEnabled="false" Width="70%"/>
+                       </HorizontalStack>
+               </VerticalStack>
+               <TreeView Width="50%" IsRoot="true" Name="treeView" Data="{RootItems}" DataTest="Type"
+                       ItemTemplate="#Crow.Coding.ui.ProjectTree.template">
+               </TreeView>
+       </HorizontalStack>
+</Window>
diff --git a/Samples/CrowIDE/ui/ProjectTree.template b/Samples/CrowIDE/ui/ProjectTree.template
new file mode 100644 (file)
index 0000000..8ffb17b
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<ItemTemplate>
+       <Border DataSourceType="ProjectItem" Style="TreeItemBorder" ContextCommands="{Commands}" Focusable="true" MouseDown="onClick" MouseDoubleClick="onDoubleClick">
+               <Group>
+                       <Widget Height="Stretched" Background="RoyalBlue" Visible="{IsSelected}"/>
+                       <HorizontalStack>
+                               <Widget Width="5" Height="5"/>
+                               <Image Style="TreeIcon" Picture="{Icon}"/>
+                               <Label Text="{DisplayName}" Width="Stretched"/>
+                       </HorizontalStack>
+               </Group>
+       </Border>
+</ItemTemplate>
+<ItemTemplate DataType="Crow.Coding.Project" Data="RootItems" DataTest="Type">
+       <Expandable DataSourceType="Project" Caption="{Name}" ContextCommands="{Commands}" IsExpanded="{²IsExpanded}" MouseDoubleClick="/onClickForExpand">
+               <Template>
+                       <VerticalStack>
+                               <Border Style="TreeItemBorder" >
+                                       <HorizontalStack Spacing="1">
+                                               <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand"
+                                                       Path="{./Image}"
+                                                       Visible="{./IsExpandable}"
+                                                       SvgSub="{./IsExpanded}"
+                                                       MouseEnter="{Background=LightGrey}"
+                                                       MouseLeave="{Background=Transparent}"/>
+                                               <Image Style="TreeIcon"
+                                                       Path="#Crow.Icons.crowproj.svg"/>
+                                               <Widget Width="4" Height="9" Background="Green" Visible="{IsStartupProject}"/>
+                                               <Label Text="{./Caption}"/>                                             
+                                       </HorizontalStack>
+                               </Border>
+                               <Container Name="Content" Visible="false"/>
+                       </VerticalStack>
+               </Template>
+               <HorizontalStack Height="Fit">
+                       <Widget Width="8" Height="10"/>
+                       <VerticalStack Height="Fit" Name="ItemsContainer"/>
+               </HorizontalStack>
+       </Expandable>
+</ItemTemplate>
+<ItemTemplate DataSourceType="ProjectNode" DataType="ReferenceGroup" Data="ChildNodes" DataTest="Type" >
+       <Expandable Caption="{DisplayName}" Template="#Crow.Coding.TreeExpandable.template" IsExpanded="{²IsExpanded}">
+               <HorizontalStack Height="Fit">
+                       <Widget Width="8" Height="10"/>
+                       <VerticalStack Height="Fit" Name="ItemsContainer"/>
+               </HorizontalStack>
+       </Expandable>
+</ItemTemplate>
+<ItemTemplate DataType="VirtualGroup" Data="ChildNodes" DataTest="Type">
+       <Expandable DataSourceType="ProjectNode" Caption="{DisplayName}" Template="#Crow.Coding.TreeExpandable.template" IsExpanded="{²IsExpanded}">
+               <HorizontalStack Height="Fit">
+                       <Widget Width="8" Height="10"/>
+                       <VerticalStack Height="Fit" Name="ItemsContainer"/>
+               </HorizontalStack>
+       </Expandable>
+</ItemTemplate>
+<ItemTemplate DataType="Folder" DataTest="Type">
+       <Border DataSourceType="ProjectNode" Style="TreeItemBorder" ContextCommands="{Commands}">
+               <HorizontalStack>
+                       <Image Style="ProjTreeIcon"
+                               Path="#Crow.Icons.folder.svg"/>
+                       <Label Text="{DisplayName}" Width="Stretched"/>
+               </HorizontalStack>
+       </Border>
+</ItemTemplate>
diff --git a/Samples/CrowIDE/ui/TreeExpandable.template b/Samples/CrowIDE/ui/TreeExpandable.template
new file mode 100644 (file)
index 0000000..f945f78
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <Border Style="TreeItemBorder" >                
+               <HorizontalStack Spacing="5" Focusable="true" MouseDoubleClick="./onClickForExpand">
+                       <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand"
+                               Path="{./Image}"
+                               Visible="{./IsExpandable}"
+                               SvgSub="{./IsExpanded}"
+                               MouseEnter="{Background=LightGrey}"
+                               MouseLeave="{Background=Transparent}"/>
+                       <Image Style="TreeIcon"
+                               Path="#Crow.Icons.folder.svg" SvgSub="{./IsExpanded}"/>
+                       <Label Text="{./Caption}"/>
+               </HorizontalStack>
+       </Border>
+       <Container Name="Content" Visible="false"/>
+</VerticalStack>
diff --git a/Samples/CrowIDE/ui/editors/EditPane.template b/Samples/CrowIDE/ui/editors/EditPane.template
new file mode 100644 (file)
index 0000000..f6eb0f8
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<TabView SelectedTab="{²./SelectedIndex}" Name="ItemsContainer" Orientation="Horizontal"/>
diff --git a/Samples/CrowIDE/ui/editors/EditPaneItems.template b/Samples/CrowIDE/ui/editors/EditPaneItems.template
new file mode 100644 (file)
index 0000000..d9f253e
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<ItemTemplate> 
+       <TabItem Caption="{DisplayName}" QueryClose="OnQueryClose">
+               <Label Text="Error" Background="Red"/>
+       </TabItem>
+</ItemTemplate>
+<ItemTemplate Path="#CrowIDE.ui.editors.SvgEdit.itemp" DataType=".svg"/>
+<ItemTemplate Path="#CrowIDE.ui.editors.SrcEdit.itemp" DataType=".cs"/>
+<ItemTemplate Path="#CrowIDE.ui.editors.SrcEdit.itemp" DataType=".style"/>
+<ItemTemplate Path="#CrowIDE.ui.editors.IMLEdit.itemp" DataType=".crow"/>
+<ItemTemplate Path="#CrowIDE.ui.editors.IMLEdit.itemp" DataType=".itemp"/>
+<ItemTemplate Path="#CrowIDE.ui.editors.IMLEdit.itemp" DataType=".template"/>
+<ItemTemplate DataType=".goml">
+       <TabItem Caption="{DisplayName}" QueryClose="OnQueryClose">
+               <IMLContainer Path="#CrowIDE.ui.editors.TextEditor.crow"/>
+       </TabItem>
+</ItemTemplate>
+
diff --git a/Samples/CrowIDE/ui/editors/EditTabItem.template b/Samples/CrowIDE/ui/editors/EditTabItem.template
new file mode 100644 (file)
index 0000000..b082c06
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<GenericStack Orientation="Vertical" Spacing="0" DataSourceType="ProjectFile"          
+       MouseEnter="{caption.Font=hack bold, 10}"
+       MouseLeave="{caption.Font=hack, 10}">
+       <HorizontalStack Margin="2" Left="{./TabOffset}"
+               Name="TabTitle"
+               HorizontalAlignment="Left"
+               Height="{./TabHeight}"
+               Width="{./TabWidth}">
+               <Widget Width="5" Height="5" Background="Blue" Visible="{IsDirty}"/>
+               <Label Name="caption" Text="{DisplayName}" Foreground="Black" Width="Stretched"/>
+               <Border CornerRadius="5" BorderWidth="1" Foreground="Transparent"  Height="12" Width="12"
+                                       MouseEnter="{Foreground=Black}" MouseLeave="{Foreground=Transparent}">
+                       <Image Focusable="true" Name="Image" Margin="0" Width="Stretched" Height="Stretched" Path="#Crow.Icons.exit2.svg"
+                                MouseClick="./butCloseTabClick"/>
+               </Border>
+       </HorizontalStack>
+       <Container Name="Content"/>
+</GenericStack>
\ No newline at end of file
diff --git a/Samples/CrowIDE/ui/editors/IMLEdit.itemp b/Samples/CrowIDE/ui/editors/IMLEdit.itemp
new file mode 100644 (file)
index 0000000..4ee3aba
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<TabItem DataSourceType="ImlProjectItem" QueryClose="OnQueryClose" IsSelected="{²IsSelected}" Template="#Crow.Coding.EditTabItem.template">
+       <VerticalStack>
+        <VerticalStack Height="60%">
+               <Label DataSource="{../editor.HoverWidget}" Width="Stretched" Margin="2" Text="{Name}"/>
+               <VerticalStack Width="Stretched" Margin="0" MinimumSize="10,10">
+                       <HorizontalStack>
+                               <Scroller Name="scroller1" Margin="2" >
+                                       <ImlVisualEditor  Foreground="SkyBlue" Name="editor" Background="Grey"                                          
+                                               VerticalAlignment="Top" HorizontalAlignment="Left" Margin="4"
+                                               ContextCommands="{/Commands}"
+                                               AllowDrop="true" AllowDrag="true" Focusable="true"
+                                               UpdateEnabled="{IsSelected}"
+                                               ProjectNode="{}" SelectedItem="{²SelectedItem}"/>
+                               </Scroller>
+                               <ScrollBar Name="scrollbar1" Orientation="Vertical"                    
+                                       Value="{²../scroller1.ScrollY}"        Maximum="{../scroller1.MaxScrollY}" 
+                                       CursorSize="{../scroller1.ChildHeightRatio}"
+                                       LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30"
+                                        />
+                       </HorizontalStack>
+                       <ScrollBar Style="HScrollBar" Name="scrollbarX" Orientation="Horizontal"                    
+                                       Value="{²../scroller1.ScrollX}" Maximum="{../scroller1.MaxScrollX}" 
+                                       CursorSize="{../scroller1.ChildWidthRatio}" 
+                                       LargeIncrement="{../scroller1.PageWidth}" SmallIncrement="30"/>
+               </VerticalStack>        
+            <HorizontalStack Height="Fit" Margin="2" Spacing="5" Background="vgradient|0:0.8,0.8,0.8,1|1:Grey">
+                <HorizontalStack Width="Fit" Spacing="1">
+                    <Label Text="Design Size:"/>
+                    <TextBox Text="{²../../../editor.DesignWidth}" Width="40" TextAlignment="Right"/>
+                    <Label Text="X"/>
+                    <TextBox Text="{²../../../editor.DesignHeight}" Width="40" TextAlignment="Right"/>
+                </HorizontalStack>
+                <HorizontalStack Width="Fit" Spacing="1">
+                    <Label Text="Zoom:"/>
+                    <Slider Value="{²../../../editor.Zoom}" Width="100" Height="10" Minimum="10" Maximum="200" SmallIncrement="10" LargeIncrement="50"/>
+                    <Label Text="{../../../editor.Zoom}"/>
+                </HorizontalStack>
+                <HorizontalStack Width="Fit" Spacing="1">
+                    <Label Text="Grid Spacing:"/>
+                    <Slider Value="{²../../../editor.GridSpacing}" Width="100" Height="10" Minimum="5" Maximum="100" SmallIncrement="5" LargeIncrement="20"/>
+                    <TextBox Text="{../../../editor.GridSpacing}"/>
+                </HorizontalStack>
+            </HorizontalStack>
+        </VerticalStack>               
+        <Splitter/>
+               <IMLContainer Path="#CrowIDE.ui.editors.SourceEditor.crow"/>
+               <Splitter Visible="{../editor.HasError}"/>
+               <Label DataSource="{../editor.Error}" Text="{}"
+                       Visible="{../editor.HasError}"
+                       Height="Fit" Width="Stretched" Background="DarkRed" Foreground="White"
+                       TextAlignment="TopLeft" Multiline="true"/>
+       </VerticalStack>
+</TabItem>
diff --git a/Samples/CrowIDE/ui/editors/SourceEditor.crow b/Samples/CrowIDE/ui/editors/SourceEditor.crow
new file mode 100644 (file)
index 0000000..17d3b1e
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<VerticalStack>
+       <HorizontalStack >
+               <SourceEditor Focusable="true" Name="editor" Font="monospace, 12" VerticalAlignment="Top" Margin="2"
+                               CurrentLine="{²CurrentLine}" CurrentColumn="{²CurrentColumn}" HasFocus="{IsSelected}"
+                               Foreground="Jet" Background="White" Width="Stretched" Height="Stretched"
+                               ProjectNode="{}"  KeyDown="textView_KeyDown"/>
+               <ScrollBar Name="scrollbarY" Value="{²../editor.ScrollY}"
+                                  LargeIncrement="{../editor.VisibleLines}"
+                                  CursorSize="{../editor.ChildHeightRatio}"
+                       Maximum="{../editor.MaxScrollY}" Orientation="Vertical"/>
+       </HorizontalStack>
+       <ScrollBar Style="HScrollBar" Name="scrollbarX" Value="{²../editor.ScrollX}"
+                       Maximum="{../editor.MaxScrollX}" Orientation="Horizontal"
+                       LargeIncrement="{../editor.VisibleColumns}"
+                       CursorSize="{../editor.ChildWidthRatio}"/>                      
+       <HorizontalStack Height="Fit">
+               <Label Text="{../../editor.HoverError}" Width="Stretched"/>
+               <Widget Background="Red" Width="5" Height="5" Visible="{IsDirty}"/>
+               <Label Text="Hover Line:" Foreground="Grey"/>
+               <Label Text="{../../editor.HoverLine}"/>
+               <Widget Height="5" Width="10"/>
+               <Label Text="Line:" Foreground="Grey"/>
+               <Label Text="{CurrentLine}"/>
+               <Widget Height="5" Width="10"/>
+               <Label Text="column:" Foreground="Grey"/>
+               <Label Text="{CurrentColumn}"/>
+               <Widget Height="5" Width="10"/>
+               <Label Text="ScrollX:" Foreground="Grey"/>
+               <Label Text="{../../editor.ScrollX}"/>
+       </HorizontalStack>
+</VerticalStack>
diff --git a/Samples/CrowIDE/ui/editors/SrcEdit.itemp b/Samples/CrowIDE/ui/editors/SrcEdit.itemp
new file mode 100644 (file)
index 0000000..330dac6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<TabItem QueryClose="OnQueryClose" IsSelected="{²IsSelected}" Template="#Crow.Coding.EditTabItem.template">
+       <IMLContainer Path="#CrowIDE.ui.editors.SourceEditor.crow"/>
+</TabItem>
\ No newline at end of file
diff --git a/Samples/CrowIDE/ui/editors/SvgEdit.itemp b/Samples/CrowIDE/ui/editors/SvgEdit.itemp
new file mode 100644 (file)
index 0000000..e7318b8
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<TabItem QueryClose="OnQueryClose" IsSelected="{²IsSelected}" Template="#Crow.Coding.EditTabItem.template">
+       <VerticalStack>
+               <VerticalStack Height="50%">
+                       <HorizontalStack >
+                               <SvgEditor Margin="10" ProjectNode="{}" Focusable="true" Name="editor" MouseWheelSpeed="20" Foreground="Black"/>
+                               <ScrollBar Name="scrollbarY" Value="{²../editor.ScrollY}"
+                                                  LargeIncrement="10"
+                                                  CursorSize="{../editor.ChildHeightRatio}"
+                                       Maximum="{../editor.MaxScrollY}" Orientation="Vertical"/>
+                       </HorizontalStack>
+                       <ScrollBar Style="HScrollBar" Name="scrollbarX" Value="{²../editor.ScrollX}"
+                                       Maximum="{../editor.MaxScrollX}" Orientation="Horizontal"
+                                       LargeIncrement="10"
+                                       CursorSize="{../editor.ChildWidthRatio}"/>
+                       <HorizontalStack Height="Fit" Margin="3">
+                               <Label Text="Zoom:"/>
+                               <Label Text="{../../editor.Zoom}" Fit="true"/>
+                               <!--<Spinner Name="sldZoom" Value="{²../../editor.Zoom}" Maximum="800" Minimum="1" SmallIncrement="10" LargeIncrement="50" Width="40" />-->
+                               <Slider Value="{²../../editor.Zoom}" CursorSize="2" Height="8" Maximum="800" Minimum="1" SmallIncrement="1" LargeIncrement="10" Width="100" />
+                       </HorizontalStack>
+               </VerticalStack>
+               <Splitter/>
+               <IMLContainer Path="#Crow.Coding.ui.editors.SourceEditor.crow"/>
+               <Label DataSource="{../editor.Error}" Text="{Message}"
+                       Visible="{../editor.HasError}"
+                       Height="Fit" Width="Stretched" Background="DarkRed" Foreground="White"
+                       TextAlignment="TopLeft" Multiline="true"/>
+       </VerticalStack>
+</TabItem>
\ No newline at end of file
diff --git a/Samples/CrowIDE/ui/editors/TextEditor.crow b/Samples/CrowIDE/ui/editors/TextEditor.crow
new file mode 100644 (file)
index 0000000..a87d4ac
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<VerticalStack>
+       <HorizontalStack >
+               <TextEditor Focusable="true" Name="editor" Font="monospace, 12" VerticalAlignment="Top" Margin="1"
+                               CurrentLine="{²CurrentLine}" CurrentColumn="{²CurrentColumn}"
+                               Foreground="DimGrey" Background="White" Width="Stretched" Height="Stretched"
+                               ProjectNode="{}"  KeyDown="textView_KeyDown"/>
+               <ScrollBar Name="scrollbarY" Value="{²../editor.ScrollY}"
+                                  LargeIncrement="{../editor.VisibleLines}"
+                                  CursorSize="{../editor.ChildHeightRatio}"
+                       Maximum="{../editor.MaxScrollY}" Orientation="Vertical"/>
+       </HorizontalStack>
+       <ScrollBar Style="HScrollBar" Name="scrollbarX" Value="{²../editor.ScrollX}"
+                       Maximum="{../editor.MaxScrollX}" Orientation="Horizontal"
+                       LargeIncrement="{../editor.VisibleColumns}"
+                       CursorSize="{../editor.ChildWidthRatio}"/>                      
+       <HorizontalStack Height="Fit">
+               <Widget Height="5" Width="Stretched"/>
+               <Widget Background="Red" Width="5" Height="5" Visible="{IsDirty}"/>
+               <Label Text="Line:" Foreground="Grey"/>
+               <Label Text="{CurrentLine}"/>
+               <Widget Height="5" Width="10"/>
+               <Label Text="column:" Foreground="Grey"/>
+               <Label Text="{CurrentColumn}"/>
+               <Widget Height="5" Width="10"/>
+               <Label Text="ScrollX:" Foreground="Grey"/>
+               <Label Text="{../../editor.ScrollX}"/>
+       </HorizontalStack>
+</VerticalStack>
diff --git a/Samples/CrowIDE/ui/test.crow b/Samples/CrowIDE/ui/test.crow
new file mode 100644 (file)
index 0000000..37d4bdd
--- /dev/null
@@ -0,0 +1,4 @@
+<Container Margin="20" Background="DimGrey">
+       <ImlVisualEditor Width="80%" Height="80%" Margin="0" MinimumSize="10,10" Foreground="SkyBlue"
+                       Name="crowContainer" Background="DimGrey"/>
+</Container>
diff --git a/Samples/HelloWorld/HelloWorld.csproj b/Samples/HelloWorld/HelloWorld.csproj
new file mode 100644 (file)
index 0000000..c878722
--- /dev/null
@@ -0,0 +1,33 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <Import Project="$(SolutionDir)netfx.props" />
+  <PropertyGroup>
+    <TargetFrameworks>net471;netstandard2.0</TargetFrameworks>
+    <OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
+    <OutputType>Exe</OutputType>        
+    <RepositoryUrl>https://github.com/jpbruyere/Crow</RepositoryUrl>
+    <License>MIT</License>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <EnableDefaultNoneItems>false</EnableDefaultNoneItems>     
+    <ReleaseVersion>0.8.0</ReleaseVersion>
+  </PropertyGroup>
+            
+  <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
+    <Reference Include="System" />
+  </ItemGroup>    
+
+  <ItemGroup>  
+    <ProjectReference Include="..\..\Crow\Crow.csproj" />
+  </ItemGroup>    
+    
+  <ItemGroup>    
+    <Datas Include="..\data\**\*.*">      
+      <Link>data\%(RecursiveDir)%(Filename)%(Extension)</Link>
+    </Datas>
+    <EmbeddedResource Include="ui\**\*.*">
+      <LogicalName>HelloWorld.%(Filename)%(Extension)</LogicalName>
+    </EmbeddedResource>                
+  </ItemGroup>     
+  <ItemGroup>
+    <Compile Remove="..\common\CrowWin.cs" />
+  </ItemGroup>
+</Project>
diff --git a/Samples/HelloWorld/main.cs b/Samples/HelloWorld/main.cs
new file mode 100644 (file)
index 0000000..a9d48fc
--- /dev/null
@@ -0,0 +1,13 @@
+using Crow;
+
+namespace HelloWorld
+{
+       class Program : Interface {
+               static void Main (string[] args) {
+                       using (Program vke = new Program ()) {
+                               vke.Load ("#HelloWorld.helloworld.crow");
+                               vke.Run ();
+                       }
+               }
+       }
+}
diff --git a/Samples/HelloWorld/obj/HelloWorld.csproj.nuget.cache b/Samples/HelloWorld/obj/HelloWorld.csproj.nuget.cache
new file mode 100644 (file)
index 0000000..f893ebf
--- /dev/null
@@ -0,0 +1,5 @@
+{
+  "version": 1,
+  "dgSpecHash": "qKyLZbFT5TztPs5GUeqYgYIB3ZvzbHPg0W5JjCs+7BvvK+Cq8BQAj8P3xG6dtm4KYOyL9ozMSIHJrC97lMO0CA==",
+  "success": true
+}
\ No newline at end of file
diff --git a/Samples/HelloWorld/obj/HelloWorld.csproj.nuget.g.props b/Samples/HelloWorld/obj/HelloWorld.csproj.nuget.g.props
new file mode 100644 (file)
index 0000000..6a8fd3c
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+    <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+    <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">/mnt/devel/Crow/Samples/HelloWorld/obj/project.assets.json</ProjectAssetsFile>
+    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/jp/.nuget/packages/</NuGetPackageRoot>
+    <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/jp/.nuget/packages/;/usr/share/dotnet/sdk/NuGetFallbackFolder</NuGetPackageFolders>
+    <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">4.8.0</NuGetToolVersion>
+  </PropertyGroup>
+  <PropertyGroup>
+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Samples/HelloWorld/obj/HelloWorld.csproj.nuget.g.targets b/Samples/HelloWorld/obj/HelloWorld.csproj.nuget.g.targets
new file mode 100644 (file)
index 0000000..889c631
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+  </PropertyGroup>
+  <ImportGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' AND '$(ExcludeRestorePackageImports)' != 'true' ">
+    <Import Project="/usr/share/dotnet/sdk/NuGetFallbackFolder/netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets" Condition="Exists('/usr/share/dotnet/sdk/NuGetFallbackFolder/netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets')" />
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/Samples/HelloWorld/obj/project.assets.json b/Samples/HelloWorld/obj/project.assets.json
new file mode 100644 (file)
index 0000000..a84a827
--- /dev/null
@@ -0,0 +1,937 @@
+{
+  "version": 3,
+  "targets": {
+    ".NETFramework,Version=v4.7.1": {
+      "Crow/0.8.1-beta": {
+        "type": "project",
+        "framework": ".NETFramework,Version=v4.7.1",
+        "compile": {
+          "bin/placeholder/Crow.dll": {}
+        },
+        "runtime": {
+          "bin/placeholder/Crow.dll": {}
+        }
+      }
+    },
+    ".NETStandard,Version=v2.0": {
+      "Microsoft.NETCore.Platforms/1.1.0": {
+        "type": "package",
+        "compile": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "runtime": {
+          "lib/netstandard1.0/_._": {}
+        }
+      },
+      "Microsoft.NETCore.Targets/1.1.0": {
+        "type": "package",
+        "compile": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "runtime": {
+          "lib/netstandard1.0/_._": {}
+        }
+      },
+      "NETStandard.Library/2.0.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0"
+        },
+        "compile": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "runtime": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "build": {
+          "build/netstandard2.0/NETStandard.Library.targets": {}
+        }
+      },
+      "System.IO/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0",
+          "System.Text.Encoding": "4.3.0",
+          "System.Threading.Tasks": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.5/System.IO.dll": {}
+        }
+      },
+      "System.Reflection/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.IO": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.5/System.Reflection.dll": {}
+        }
+      },
+      "System.Reflection.Emit.ILGeneration/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Reflection": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {}
+        }
+      },
+      "System.Reflection.Emit.Lightweight/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Reflection": "4.3.0",
+          "System.Reflection.Emit.ILGeneration": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {}
+        }
+      },
+      "System.Reflection.Primitives/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.0/System.Reflection.Primitives.dll": {}
+        }
+      },
+      "System.Runtime/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0"
+        },
+        "compile": {
+          "ref/netstandard1.5/System.Runtime.dll": {}
+        }
+      },
+      "System.Text.Encoding/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.3/System.Text.Encoding.dll": {}
+        }
+      },
+      "System.Threading.Tasks/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.3/System.Threading.Tasks.dll": {}
+        }
+      },
+      "Crow/0.8.1-beta": {
+        "type": "project",
+        "framework": ".NETStandard,Version=v2.0",
+        "dependencies": {
+          "System.Reflection.Emit.ILGeneration": "4.3.0",
+          "System.Reflection.Emit.Lightweight": "4.3.0"
+        },
+        "compile": {
+          "bin/placeholder/Crow.dll": {}
+        },
+        "runtime": {
+          "bin/placeholder/Crow.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "Microsoft.NETCore.Platforms/1.1.0": {
+      "sha512": "a/iSwnRZb+LHFk49hQOyThh/ZNC3vsbZsF65XwQIb863qF6msmhdQtxGXFL28Ob2NsCz/drEj28BJd/YPpLRBg==",
+      "type": "package",
+      "path": "microsoft.netcore.platforms/1.1.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/netstandard1.0/_._",
+        "microsoft.netcore.platforms.1.1.0.nupkg.sha512",
+        "microsoft.netcore.platforms.nuspec",
+        "runtime.json"
+      ]
+    },
+    "Microsoft.NETCore.Targets/1.1.0": {
+      "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
+      "type": "package",
+      "path": "microsoft.netcore.targets/1.1.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/netstandard1.0/_._",
+        "microsoft.netcore.targets.1.1.0.nupkg.sha512",
+        "microsoft.netcore.targets.nuspec",
+        "runtime.json"
+      ]
+    },
+    "NETStandard.Library/2.0.3": {
+      "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
+      "type": "package",
+      "path": "netstandard.library/2.0.3",
+      "files": [
+        ".nupkg.metadata",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "build/netstandard2.0/NETStandard.Library.targets",
+        "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll",
+        "build/netstandard2.0/ref/System.AppContext.dll",
+        "build/netstandard2.0/ref/System.Collections.Concurrent.dll",
+        "build/netstandard2.0/ref/System.Collections.NonGeneric.dll",
+        "build/netstandard2.0/ref/System.Collections.Specialized.dll",
+        "build/netstandard2.0/ref/System.Collections.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.Composition.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.dll",
+        "build/netstandard2.0/ref/System.Console.dll",
+        "build/netstandard2.0/ref/System.Core.dll",
+        "build/netstandard2.0/ref/System.Data.Common.dll",
+        "build/netstandard2.0/ref/System.Data.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Debug.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Process.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Tools.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll",
+        "build/netstandard2.0/ref/System.Drawing.Primitives.dll",
+        "build/netstandard2.0/ref/System.Drawing.dll",
+        "build/netstandard2.0/ref/System.Dynamic.Runtime.dll",
+        "build/netstandard2.0/ref/System.Globalization.Calendars.dll",
+        "build/netstandard2.0/ref/System.Globalization.Extensions.dll",
+        "build/netstandard2.0/ref/System.Globalization.dll",
+        "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll",
+        "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll",
+        "build/netstandard2.0/ref/System.IO.Compression.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.dll",
+        "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll",
+        "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll",
+        "build/netstandard2.0/ref/System.IO.Pipes.dll",
+        "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll",
+        "build/netstandard2.0/ref/System.IO.dll",
+        "build/netstandard2.0/ref/System.Linq.Expressions.dll",
+        "build/netstandard2.0/ref/System.Linq.Parallel.dll",
+        "build/netstandard2.0/ref/System.Linq.Queryable.dll",
+        "build/netstandard2.0/ref/System.Linq.dll",
+        "build/netstandard2.0/ref/System.Net.Http.dll",
+        "build/netstandard2.0/ref/System.Net.NameResolution.dll",
+        "build/netstandard2.0/ref/System.Net.NetworkInformation.dll",
+        "build/netstandard2.0/ref/System.Net.Ping.dll",
+        "build/netstandard2.0/ref/System.Net.Primitives.dll",
+        "build/netstandard2.0/ref/System.Net.Requests.dll",
+        "build/netstandard2.0/ref/System.Net.Security.dll",
+        "build/netstandard2.0/ref/System.Net.Sockets.dll",
+        "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll",
+        "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll",
+        "build/netstandard2.0/ref/System.Net.WebSockets.dll",
+        "build/netstandard2.0/ref/System.Net.dll",
+        "build/netstandard2.0/ref/System.Numerics.dll",
+        "build/netstandard2.0/ref/System.ObjectModel.dll",
+        "build/netstandard2.0/ref/System.Reflection.Extensions.dll",
+        "build/netstandard2.0/ref/System.Reflection.Primitives.dll",
+        "build/netstandard2.0/ref/System.Reflection.dll",
+        "build/netstandard2.0/ref/System.Resources.Reader.dll",
+        "build/netstandard2.0/ref/System.Resources.ResourceManager.dll",
+        "build/netstandard2.0/ref/System.Resources.Writer.dll",
+        "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll",
+        "build/netstandard2.0/ref/System.Runtime.Extensions.dll",
+        "build/netstandard2.0/ref/System.Runtime.Handles.dll",
+        "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll",
+        "build/netstandard2.0/ref/System.Runtime.InteropServices.dll",
+        "build/netstandard2.0/ref/System.Runtime.Numerics.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.dll",
+        "build/netstandard2.0/ref/System.Runtime.dll",
+        "build/netstandard2.0/ref/System.Security.Claims.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll",
+        "build/netstandard2.0/ref/System.Security.Principal.dll",
+        "build/netstandard2.0/ref/System.Security.SecureString.dll",
+        "build/netstandard2.0/ref/System.ServiceModel.Web.dll",
+        "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll",
+        "build/netstandard2.0/ref/System.Text.Encoding.dll",
+        "build/netstandard2.0/ref/System.Text.RegularExpressions.dll",
+        "build/netstandard2.0/ref/System.Threading.Overlapped.dll",
+        "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll",
+        "build/netstandard2.0/ref/System.Threading.Tasks.dll",
+        "build/netstandard2.0/ref/System.Threading.Thread.dll",
+        "build/netstandard2.0/ref/System.Threading.ThreadPool.dll",
+        "build/netstandard2.0/ref/System.Threading.Timer.dll",
+        "build/netstandard2.0/ref/System.Threading.dll",
+        "build/netstandard2.0/ref/System.Transactions.dll",
+        "build/netstandard2.0/ref/System.ValueTuple.dll",
+        "build/netstandard2.0/ref/System.Web.dll",
+        "build/netstandard2.0/ref/System.Windows.dll",
+        "build/netstandard2.0/ref/System.Xml.Linq.dll",
+        "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll",
+        "build/netstandard2.0/ref/System.Xml.Serialization.dll",
+        "build/netstandard2.0/ref/System.Xml.XDocument.dll",
+        "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll",
+        "build/netstandard2.0/ref/System.Xml.XPath.dll",
+        "build/netstandard2.0/ref/System.Xml.XmlDocument.dll",
+        "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll",
+        "build/netstandard2.0/ref/System.Xml.dll",
+        "build/netstandard2.0/ref/System.dll",
+        "build/netstandard2.0/ref/mscorlib.dll",
+        "build/netstandard2.0/ref/netstandard.dll",
+        "build/netstandard2.0/ref/netstandard.xml",
+        "lib/netstandard1.0/_._",
+        "netstandard.library.2.0.3.nupkg.sha512",
+        "netstandard.library.nuspec"
+      ]
+    },
+    "System.IO/4.3.0": {
+      "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
+      "type": "package",
+      "path": "system.io/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/net462/System.IO.dll",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/net462/System.IO.dll",
+        "ref/netcore50/System.IO.dll",
+        "ref/netcore50/System.IO.xml",
+        "ref/netcore50/de/System.IO.xml",
+        "ref/netcore50/es/System.IO.xml",
+        "ref/netcore50/fr/System.IO.xml",
+        "ref/netcore50/it/System.IO.xml",
+        "ref/netcore50/ja/System.IO.xml",
+        "ref/netcore50/ko/System.IO.xml",
+        "ref/netcore50/ru/System.IO.xml",
+        "ref/netcore50/zh-hans/System.IO.xml",
+        "ref/netcore50/zh-hant/System.IO.xml",
+        "ref/netstandard1.0/System.IO.dll",
+        "ref/netstandard1.0/System.IO.xml",
+        "ref/netstandard1.0/de/System.IO.xml",
+        "ref/netstandard1.0/es/System.IO.xml",
+        "ref/netstandard1.0/fr/System.IO.xml",
+        "ref/netstandard1.0/it/System.IO.xml",
+        "ref/netstandard1.0/ja/System.IO.xml",
+        "ref/netstandard1.0/ko/System.IO.xml",
+        "ref/netstandard1.0/ru/System.IO.xml",
+        "ref/netstandard1.0/zh-hans/System.IO.xml",
+        "ref/netstandard1.0/zh-hant/System.IO.xml",
+        "ref/netstandard1.3/System.IO.dll",
+        "ref/netstandard1.3/System.IO.xml",
+        "ref/netstandard1.3/de/System.IO.xml",
+        "ref/netstandard1.3/es/System.IO.xml",
+        "ref/netstandard1.3/fr/System.IO.xml",
+        "ref/netstandard1.3/it/System.IO.xml",
+        "ref/netstandard1.3/ja/System.IO.xml",
+        "ref/netstandard1.3/ko/System.IO.xml",
+        "ref/netstandard1.3/ru/System.IO.xml",
+        "ref/netstandard1.3/zh-hans/System.IO.xml",
+        "ref/netstandard1.3/zh-hant/System.IO.xml",
+        "ref/netstandard1.5/System.IO.dll",
+        "ref/netstandard1.5/System.IO.xml",
+        "ref/netstandard1.5/de/System.IO.xml",
+        "ref/netstandard1.5/es/System.IO.xml",
+        "ref/netstandard1.5/fr/System.IO.xml",
+        "ref/netstandard1.5/it/System.IO.xml",
+        "ref/netstandard1.5/ja/System.IO.xml",
+        "ref/netstandard1.5/ko/System.IO.xml",
+        "ref/netstandard1.5/ru/System.IO.xml",
+        "ref/netstandard1.5/zh-hans/System.IO.xml",
+        "ref/netstandard1.5/zh-hant/System.IO.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.io.4.3.0.nupkg.sha512",
+        "system.io.nuspec"
+      ]
+    },
+    "System.Reflection/4.3.0": {
+      "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
+      "type": "package",
+      "path": "system.reflection/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/net462/System.Reflection.dll",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/net462/System.Reflection.dll",
+        "ref/netcore50/System.Reflection.dll",
+        "ref/netcore50/System.Reflection.xml",
+        "ref/netcore50/de/System.Reflection.xml",
+        "ref/netcore50/es/System.Reflection.xml",
+        "ref/netcore50/fr/System.Reflection.xml",
+        "ref/netcore50/it/System.Reflection.xml",
+        "ref/netcore50/ja/System.Reflection.xml",
+        "ref/netcore50/ko/System.Reflection.xml",
+        "ref/netcore50/ru/System.Reflection.xml",
+        "ref/netcore50/zh-hans/System.Reflection.xml",
+        "ref/netcore50/zh-hant/System.Reflection.xml",
+        "ref/netstandard1.0/System.Reflection.dll",
+        "ref/netstandard1.0/System.Reflection.xml",
+        "ref/netstandard1.0/de/System.Reflection.xml",
+        "ref/netstandard1.0/es/System.Reflection.xml",
+        "ref/netstandard1.0/fr/System.Reflection.xml",
+        "ref/netstandard1.0/it/System.Reflection.xml",
+        "ref/netstandard1.0/ja/System.Reflection.xml",
+        "ref/netstandard1.0/ko/System.Reflection.xml",
+        "ref/netstandard1.0/ru/System.Reflection.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.xml",
+        "ref/netstandard1.3/System.Reflection.dll",
+        "ref/netstandard1.3/System.Reflection.xml",
+        "ref/netstandard1.3/de/System.Reflection.xml",
+        "ref/netstandard1.3/es/System.Reflection.xml",
+        "ref/netstandard1.3/fr/System.Reflection.xml",
+        "ref/netstandard1.3/it/System.Reflection.xml",
+        "ref/netstandard1.3/ja/System.Reflection.xml",
+        "ref/netstandard1.3/ko/System.Reflection.xml",
+        "ref/netstandard1.3/ru/System.Reflection.xml",
+        "ref/netstandard1.3/zh-hans/System.Reflection.xml",
+        "ref/netstandard1.3/zh-hant/System.Reflection.xml",
+        "ref/netstandard1.5/System.Reflection.dll",
+        "ref/netstandard1.5/System.Reflection.xml",
+        "ref/netstandard1.5/de/System.Reflection.xml",
+        "ref/netstandard1.5/es/System.Reflection.xml",
+        "ref/netstandard1.5/fr/System.Reflection.xml",
+        "ref/netstandard1.5/it/System.Reflection.xml",
+        "ref/netstandard1.5/ja/System.Reflection.xml",
+        "ref/netstandard1.5/ko/System.Reflection.xml",
+        "ref/netstandard1.5/ru/System.Reflection.xml",
+        "ref/netstandard1.5/zh-hans/System.Reflection.xml",
+        "ref/netstandard1.5/zh-hant/System.Reflection.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.reflection.4.3.0.nupkg.sha512",
+        "system.reflection.nuspec"
+      ]
+    },
+    "System.Reflection.Emit.ILGeneration/4.3.0": {
+      "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
+      "type": "package",
+      "path": "system.reflection.emit.ilgeneration/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Emit.ILGeneration.dll",
+        "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll",
+        "lib/portable-net45+wp8/_._",
+        "lib/wp80/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll",
+        "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml",
+        "ref/portable-net45+wp8/_._",
+        "ref/wp80/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "runtimes/aot/lib/netcore50/_._",
+        "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512",
+        "system.reflection.emit.ilgeneration.nuspec"
+      ]
+    },
+    "System.Reflection.Emit.Lightweight/4.3.0": {
+      "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
+      "type": "package",
+      "path": "system.reflection.emit.lightweight/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Emit.Lightweight.dll",
+        "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll",
+        "lib/portable-net45+wp8/_._",
+        "lib/wp80/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll",
+        "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml",
+        "ref/portable-net45+wp8/_._",
+        "ref/wp80/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "runtimes/aot/lib/netcore50/_._",
+        "system.reflection.emit.lightweight.4.3.0.nupkg.sha512",
+        "system.reflection.emit.lightweight.nuspec"
+      ]
+    },
+    "System.Reflection.Primitives/4.3.0": {
+      "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
+      "type": "package",
+      "path": "system.reflection.primitives/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.Primitives.dll",
+        "ref/netcore50/System.Reflection.Primitives.xml",
+        "ref/netcore50/de/System.Reflection.Primitives.xml",
+        "ref/netcore50/es/System.Reflection.Primitives.xml",
+        "ref/netcore50/fr/System.Reflection.Primitives.xml",
+        "ref/netcore50/it/System.Reflection.Primitives.xml",
+        "ref/netcore50/ja/System.Reflection.Primitives.xml",
+        "ref/netcore50/ko/System.Reflection.Primitives.xml",
+        "ref/netcore50/ru/System.Reflection.Primitives.xml",
+        "ref/netcore50/zh-hans/System.Reflection.Primitives.xml",
+        "ref/netcore50/zh-hant/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/System.Reflection.Primitives.dll",
+        "ref/netstandard1.0/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/de/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/es/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/fr/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/it/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/ja/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/ko/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/ru/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.reflection.primitives.4.3.0.nupkg.sha512",
+        "system.reflection.primitives.nuspec"
+      ]
+    },
+    "System.Runtime/4.3.0": {
+      "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
+      "type": "package",
+      "path": "system.runtime/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/net462/System.Runtime.dll",
+        "lib/portable-net45+win8+wp80+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/net462/System.Runtime.dll",
+        "ref/netcore50/System.Runtime.dll",
+        "ref/netcore50/System.Runtime.xml",
+        "ref/netcore50/de/System.Runtime.xml",
+        "ref/netcore50/es/System.Runtime.xml",
+        "ref/netcore50/fr/System.Runtime.xml",
+        "ref/netcore50/it/System.Runtime.xml",
+        "ref/netcore50/ja/System.Runtime.xml",
+        "ref/netcore50/ko/System.Runtime.xml",
+        "ref/netcore50/ru/System.Runtime.xml",
+        "ref/netcore50/zh-hans/System.Runtime.xml",
+        "ref/netcore50/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.0/System.Runtime.dll",
+        "ref/netstandard1.0/System.Runtime.xml",
+        "ref/netstandard1.0/de/System.Runtime.xml",
+        "ref/netstandard1.0/es/System.Runtime.xml",
+        "ref/netstandard1.0/fr/System.Runtime.xml",
+        "ref/netstandard1.0/it/System.Runtime.xml",
+        "ref/netstandard1.0/ja/System.Runtime.xml",
+        "ref/netstandard1.0/ko/System.Runtime.xml",
+        "ref/netstandard1.0/ru/System.Runtime.xml",
+        "ref/netstandard1.0/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.0/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.2/System.Runtime.dll",
+        "ref/netstandard1.2/System.Runtime.xml",
+        "ref/netstandard1.2/de/System.Runtime.xml",
+        "ref/netstandard1.2/es/System.Runtime.xml",
+        "ref/netstandard1.2/fr/System.Runtime.xml",
+        "ref/netstandard1.2/it/System.Runtime.xml",
+        "ref/netstandard1.2/ja/System.Runtime.xml",
+        "ref/netstandard1.2/ko/System.Runtime.xml",
+        "ref/netstandard1.2/ru/System.Runtime.xml",
+        "ref/netstandard1.2/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.2/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.3/System.Runtime.dll",
+        "ref/netstandard1.3/System.Runtime.xml",
+        "ref/netstandard1.3/de/System.Runtime.xml",
+        "ref/netstandard1.3/es/System.Runtime.xml",
+        "ref/netstandard1.3/fr/System.Runtime.xml",
+        "ref/netstandard1.3/it/System.Runtime.xml",
+        "ref/netstandard1.3/ja/System.Runtime.xml",
+        "ref/netstandard1.3/ko/System.Runtime.xml",
+        "ref/netstandard1.3/ru/System.Runtime.xml",
+        "ref/netstandard1.3/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.3/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.5/System.Runtime.dll",
+        "ref/netstandard1.5/System.Runtime.xml",
+        "ref/netstandard1.5/de/System.Runtime.xml",
+        "ref/netstandard1.5/es/System.Runtime.xml",
+        "ref/netstandard1.5/fr/System.Runtime.xml",
+        "ref/netstandard1.5/it/System.Runtime.xml",
+        "ref/netstandard1.5/ja/System.Runtime.xml",
+        "ref/netstandard1.5/ko/System.Runtime.xml",
+        "ref/netstandard1.5/ru/System.Runtime.xml",
+        "ref/netstandard1.5/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.5/zh-hant/System.Runtime.xml",
+        "ref/portable-net45+win8+wp80+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.runtime.4.3.0.nupkg.sha512",
+        "system.runtime.nuspec"
+      ]
+    },
+    "System.Text.Encoding/4.3.0": {
+      "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
+      "type": "package",
+      "path": "system.text.encoding/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Text.Encoding.dll",
+        "ref/netcore50/System.Text.Encoding.xml",
+        "ref/netcore50/de/System.Text.Encoding.xml",
+        "ref/netcore50/es/System.Text.Encoding.xml",
+        "ref/netcore50/fr/System.Text.Encoding.xml",
+        "ref/netcore50/it/System.Text.Encoding.xml",
+        "ref/netcore50/ja/System.Text.Encoding.xml",
+        "ref/netcore50/ko/System.Text.Encoding.xml",
+        "ref/netcore50/ru/System.Text.Encoding.xml",
+        "ref/netcore50/zh-hans/System.Text.Encoding.xml",
+        "ref/netcore50/zh-hant/System.Text.Encoding.xml",
+        "ref/netstandard1.0/System.Text.Encoding.dll",
+        "ref/netstandard1.0/System.Text.Encoding.xml",
+        "ref/netstandard1.0/de/System.Text.Encoding.xml",
+        "ref/netstandard1.0/es/System.Text.Encoding.xml",
+        "ref/netstandard1.0/fr/System.Text.Encoding.xml",
+        "ref/netstandard1.0/it/System.Text.Encoding.xml",
+        "ref/netstandard1.0/ja/System.Text.Encoding.xml",
+        "ref/netstandard1.0/ko/System.Text.Encoding.xml",
+        "ref/netstandard1.0/ru/System.Text.Encoding.xml",
+        "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml",
+        "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml",
+        "ref/netstandard1.3/System.Text.Encoding.dll",
+        "ref/netstandard1.3/System.Text.Encoding.xml",
+        "ref/netstandard1.3/de/System.Text.Encoding.xml",
+        "ref/netstandard1.3/es/System.Text.Encoding.xml",
+        "ref/netstandard1.3/fr/System.Text.Encoding.xml",
+        "ref/netstandard1.3/it/System.Text.Encoding.xml",
+        "ref/netstandard1.3/ja/System.Text.Encoding.xml",
+        "ref/netstandard1.3/ko/System.Text.Encoding.xml",
+        "ref/netstandard1.3/ru/System.Text.Encoding.xml",
+        "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml",
+        "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.text.encoding.4.3.0.nupkg.sha512",
+        "system.text.encoding.nuspec"
+      ]
+    },
+    "System.Threading.Tasks/4.3.0": {
+      "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
+      "type": "package",
+      "path": "system.threading.tasks/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Threading.Tasks.dll",
+        "ref/netcore50/System.Threading.Tasks.xml",
+        "ref/netcore50/de/System.Threading.Tasks.xml",
+        "ref/netcore50/es/System.Threading.Tasks.xml",
+        "ref/netcore50/fr/System.Threading.Tasks.xml",
+        "ref/netcore50/it/System.Threading.Tasks.xml",
+        "ref/netcore50/ja/System.Threading.Tasks.xml",
+        "ref/netcore50/ko/System.Threading.Tasks.xml",
+        "ref/netcore50/ru/System.Threading.Tasks.xml",
+        "ref/netcore50/zh-hans/System.Threading.Tasks.xml",
+        "ref/netcore50/zh-hant/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/System.Threading.Tasks.dll",
+        "ref/netstandard1.0/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/de/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/es/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/fr/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/it/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/ja/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/ko/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/ru/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/System.Threading.Tasks.dll",
+        "ref/netstandard1.3/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/de/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/es/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/fr/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/it/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/ja/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/ko/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/ru/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.threading.tasks.4.3.0.nupkg.sha512",
+        "system.threading.tasks.nuspec"
+      ]
+    },
+    "Crow/0.8.1-beta": {
+      "type": "project",
+      "path": "../../Crow/Crow.csproj",
+      "msbuildProject": "../../Crow/Crow.csproj"
+    }
+  },
+  "projectFileDependencyGroups": {
+    ".NETFramework,Version=v4.7.1": [
+      "Crow >= 0.8.1-beta"
+    ],
+    ".NETStandard,Version=v2.0": [
+      "Crow >= 0.8.1-beta",
+      "NETStandard.Library >= 2.0.3"
+    ]
+  },
+  "packageFolders": {
+    "/home/jp/.nuget/packages/": {},
+    "/usr/share/dotnet/sdk/NuGetFallbackFolder": {}
+  },
+  "project": {
+    "version": "1.0.0",
+    "restore": {
+      "projectUniqueName": "/mnt/devel/Crow/Samples/HelloWorld/HelloWorld.csproj",
+      "projectName": "HelloWorld",
+      "projectPath": "/mnt/devel/Crow/Samples/HelloWorld/HelloWorld.csproj",
+      "packagesPath": "/home/jp/.nuget/packages/",
+      "outputPath": "/mnt/devel/Crow/Samples/HelloWorld/obj/",
+      "projectStyle": "PackageReference",
+      "crossTargeting": true,
+      "fallbackFolders": [
+        "/usr/share/dotnet/sdk/NuGetFallbackFolder"
+      ],
+      "configFilePaths": [
+        "/home/jp/.config/NuGet/NuGet.Config"
+      ],
+      "originalTargetFrameworks": [
+        "net471",
+        "netstandard2.0"
+      ],
+      "sources": {
+        "/opt/localNuget": {},
+        "https://api.nuget.org/v3/index.json": {},
+        "https://www.myget.org/F/opentk-develop": {},
+        "https://www.nuget.org/api/v2/": {}
+      },
+      "frameworks": {
+        "net471": {
+          "projectReferences": {
+            "/mnt/devel/Crow/Crow/Crow.csproj": {
+              "projectPath": "/mnt/devel/Crow/Crow/Crow.csproj"
+            }
+          }
+        },
+        "netstandard2.0": {
+          "projectReferences": {
+            "/mnt/devel/Crow/Crow/Crow.csproj": {
+              "projectPath": "/mnt/devel/Crow/Crow/Crow.csproj"
+            }
+          }
+        }
+      },
+      "warningProperties": {
+        "warnAsError": [
+          "NU1605"
+        ]
+      }
+    },
+    "frameworks": {
+      "net471": {},
+      "netstandard2.0": {
+        "dependencies": {
+          "NETStandard.Library": {
+            "suppressParent": "All",
+            "target": "Package",
+            "version": "[2.0.3, )",
+            "autoReferenced": true
+          }
+        },
+        "imports": [
+          "net461"
+        ],
+        "assetTargetFallback": true,
+        "warn": true
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/Samples/HelloWorld/ui/helloworld.crow b/Samples/HelloWorld/ui/helloworld.crow
new file mode 100644 (file)
index 0000000..1d1a351
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Window Caption="Hello World" Icon="#Crow.Icons.crow.svg" Width="40%" Height="40%" CornerRadius="5">
+    <VerticalStack>
+        <Label Text="Hello World" Font="mono, 20"/>
+        <Image Path="#Crow.Icons.crow.svg"/>
+    </VerticalStack>
+</Window>
+
diff --git a/Samples/ShowCase/ShowCase.csproj b/Samples/ShowCase/ShowCase.csproj
new file mode 100644 (file)
index 0000000..fd711e6
--- /dev/null
@@ -0,0 +1,43 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <Import Project="$(SolutionDir)netfx.props" />
+  <PropertyGroup>
+    <TargetFrameworks>net471;netstandard2.0</TargetFrameworks>
+    <OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath>
+    <OutputType>Exe</OutputType>        
+    <RepositoryUrl>https://github.com/jpbruyere/Crow</RepositoryUrl>
+    <License>MIT</License>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <EnableDefaultNoneItems>false</EnableDefaultNoneItems>    
+    <ReleaseVersion>0.8.0</ReleaseVersion>
+  </PropertyGroup>
+            
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugType>full</DebugType>
+    <DefineConstants>TRACE;DEBUG</DefineConstants>
+    <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+  </PropertyGroup>
+    
+  <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
+    <Reference Include="System" />
+  </ItemGroup>    
+
+  <ItemGroup>  
+    <ProjectReference Include="..\..\Crow\Crow.csproj" />    
+  </ItemGroup>    
+    
+  <ItemGroup>    
+    <Datas Include="..\data\**\*.*">      
+      <Link>data\%(RecursiveDir)%(Filename)%(Extension)</Link>
+    </Datas>
+    <EmbeddedResource Include="ui\*.*">        
+      <LogicalName>ShowCase.%(Filename)%(Extension)</LogicalName>
+    </EmbeddedResource>                
+    <None Include="..\common\ui\Interfaces\**\*.*">  
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+      <Link>Interfaces\%(RecursiveDir)%(Filename)%(Extension)</Link>
+    </None>
+  </ItemGroup>     
+  <ItemGroup>
+    <Compile Remove="..\common\CrowWin.cs" />
+  </ItemGroup>
+</Project>
diff --git a/Samples/ShowCase/main.cs b/Samples/ShowCase/main.cs
new file mode 100644 (file)
index 0000000..c6ffc40
--- /dev/null
@@ -0,0 +1,230 @@
+//
+// UIEditor.cs
+//
+// Author:
+//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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 above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// 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.
+
+using System;
+using Crow;
+using System.IO;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Linq;
+using System.Text;
+using Crow.IML;
+
+namespace tests
+{
+       class Showcase : Interface
+       {
+               public Container crowContainer;
+
+               [STAThread]
+               static void Main ()
+               {
+                       using (Showcase app = new Showcase ()) {
+                               //app.Keyboard.KeyDown += App_KeyboardKeyDown;
+
+                               Widget g = app.Load ("#ShowCase.showcase.crow");
+                               g.DataSource = app;
+                               app.crowContainer = g.FindByName ("CrowContainer") as Container;
+                               //I set an empty object as datasource at this level to force update when new
+                               //widgets are added to the interface
+                               app.crowContainer.DataSource = new object ();
+                               app.hideError ();
+                               app.Run ();
+
+                       }
+               }
+
+               static void App_KeyboardKeyDown (object sender, KeyEventArgs e)
+               {
+#if DEBUG_LOG
+                       switch (e.Key) {
+                       case Key.F2:
+                               DebugLog.save (sender as Interface);
+                               break;
+                       }
+#endif
+               }
+
+               public Showcase ()
+                       : base (1024, 800)
+               {
+               }
+
+
+               void Dv_SelectedItemChanged (object sender, SelectionChangeEventArgs e)
+               {
+                       FileSystemInfo fi = e.NewValue as FileSystemInfo;
+                       if (fi == null)
+                               return;
+                       if (fi is DirectoryInfo)
+                               return;
+                       hideError ();
+                       lock (UpdateMutex) {
+                               try {
+                                       Widget g = CreateInstance (fi.FullName);
+                                       crowContainer.SetChild (g);
+                                       g.DataSource = this;
+                               } catch (Exception ex) {
+                                       Console.WriteLine (ex.ToString ());
+                                       if (ex is InstantiatorException)
+                                               showError ((InstantiatorException)ex);
+                               }
+                       }
+
+                       string source = "";
+                       using (Stream s = new FileStream (fi.FullName, FileMode.Open)) {
+                               using (StreamReader sr = new StreamReader (s)) {
+                                       source = sr.ReadToEnd ();
+                               }
+                       }
+                       NotifyValueChanged ("source", source);
+               }
+
+               void showError (InstantiatorException ex)
+               {
+                       NotifyValueChanged ("ErrorMessage", ex.Path + ": " + ex.InnerException.Message);
+                       NotifyValueChanged ("ShowError", true);
+               }
+               void hideError ()
+               {
+                       NotifyValueChanged ("ShowError", false);
+               }
+
+               void Tb_TextChanged (object sender, TextChangeEventArgs e)
+               {
+                       hideError ();
+                       Widget g = null;
+                       try {
+                               lock (UpdateMutex) {
+                                       Instantiator inst = null;
+                                       using (MemoryStream ms = new MemoryStream (Encoding.UTF8.GetBytes (e.Text))) {
+                                               inst = new Instantiator (this, ms);
+                                       }
+                                       g = inst.CreateInstance ();
+                                       crowContainer.SetChild (g);
+                                       g.DataSource = this;
+                               }
+                       } catch (Exception ex) {
+                               Console.WriteLine (ex.ToString ());
+                               if (ex is InstantiatorException)
+                                       showError ((InstantiatorException)ex);
+                       }
+               }
+
+
+               #region Test values for Binding
+               public int intValue = 500;
+               DirectoryInfo curDir = new DirectoryInfo (Path.GetDirectoryName (Assembly.GetEntryAssembly ().Location));
+               //DirectoryInfo curDir = new DirectoryInfo (@"/mnt/data/Images");
+               public FileSystemInfo [] CurDirectory {
+                       get { return curDir.GetFileSystemInfos (); }
+               }
+               public int IntValue {
+                       get {
+                               return intValue;
+                       }
+                       set {
+                               intValue = value;
+                               NotifyValueChanged ("IntValue", intValue);
+                       }
+               }
+               void onSpinnerValueChange (object sender, ValueChangeEventArgs e)
+               {
+                       if (e.MemberName != "Value")
+                               return;
+                       intValue = Convert.ToInt32 (e.NewValue);
+               }
+               void change_alignment (object sender, EventArgs e)
+               {
+                       RadioButton rb = sender as RadioButton;
+                       if (rb == null)
+                               return;
+                       NotifyValueChanged ("alignment", Enum.Parse (typeof (Alignment), rb.Caption));
+               }
+               public IList<String> List2 = new List<string> (new string []
+                       {
+                               "string1",
+                               "string2",
+                               "string3",
+                               //                              "string4",
+                               //                              "string5",
+                               //                              "string6",
+                               //                              "string7",
+                               //                              "string8",
+                               //                              "string8",
+                               //                              "string8",
+                               //                              "string8",
+                               //                              "string8",
+                               //                              "string8",
+                               //                              "string9"
+                       }
+               );
+               public IList<String> TestList2 {
+                       set {
+                               List2 = value;
+                               NotifyValueChanged ("TestList2", testList);
+                       }
+                       get { return List2; }
+               }
+               IList<Color> testList = Color.ColorDic.Values.ToList ();
+               public IList<Color> TestList {
+                       set {
+                               testList = value;
+                               NotifyValueChanged ("TestList", testList);
+                       }
+                       get { return testList; }
+               }
+               string curSources = "";
+               public string CurSources {
+                       get { return curSources; }
+                       set {
+                               if (value == curSources)
+                                       return;
+                               curSources = value;
+                               NotifyValueChanged ("CurSources", curSources);
+                       }
+               }
+               bool boolVal = true;
+               public bool BoolVal {
+                       get { return boolVal; }
+                       set {
+                               if (boolVal == value)
+                                       return;
+                               boolVal = value;
+                               NotifyValueChanged ("BoolVal", boolVal);
+                       }
+               }
+
+               #endregion
+
+               void OnClear (object sender, MouseButtonEventArgs e) => TestList = null;
+
+               void OnLoadList (object sender, MouseButtonEventArgs e) => TestList = Color.ColorDic.Values.ToList ();
+
+       }
+
+
+}
\ No newline at end of file
diff --git a/Samples/ShowCase/obj/ShowCase.csproj.nuget.cache b/Samples/ShowCase/obj/ShowCase.csproj.nuget.cache
new file mode 100644 (file)
index 0000000..d4028d3
--- /dev/null
@@ -0,0 +1,5 @@
+{
+  "version": 1,
+  "dgSpecHash": "Lonjf74CSvIz4D0v5YsXwKD/S11cKW+FVV4HlbnO9USLfjai/RrGsCWS5/zgY3KGAmveVub6J2bqJrRa4Nltbg==",
+  "success": true
+}
\ No newline at end of file
diff --git a/Samples/ShowCase/obj/ShowCase.csproj.nuget.g.props b/Samples/ShowCase/obj/ShowCase.csproj.nuget.g.props
new file mode 100644 (file)
index 0000000..c3a7e59
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+    <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+    <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">/mnt/devel/Crow/Samples/ShowCase/obj/project.assets.json</ProjectAssetsFile>
+    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/jp/.nuget/packages/</NuGetPackageRoot>
+    <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/jp/.nuget/packages/;/usr/share/dotnet/sdk/NuGetFallbackFolder</NuGetPackageFolders>
+    <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">4.8.0</NuGetToolVersion>
+  </PropertyGroup>
+  <PropertyGroup>
+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Samples/ShowCase/obj/ShowCase.csproj.nuget.g.targets b/Samples/ShowCase/obj/ShowCase.csproj.nuget.g.targets
new file mode 100644 (file)
index 0000000..889c631
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+  </PropertyGroup>
+  <ImportGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' AND '$(ExcludeRestorePackageImports)' != 'true' ">
+    <Import Project="/usr/share/dotnet/sdk/NuGetFallbackFolder/netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets" Condition="Exists('/usr/share/dotnet/sdk/NuGetFallbackFolder/netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets')" />
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/Samples/ShowCase/obj/project.assets.json b/Samples/ShowCase/obj/project.assets.json
new file mode 100644 (file)
index 0000000..0a92653
--- /dev/null
@@ -0,0 +1,937 @@
+{
+  "version": 3,
+  "targets": {
+    ".NETFramework,Version=v4.7.1": {
+      "Crow/0.8.1-beta": {
+        "type": "project",
+        "framework": ".NETFramework,Version=v4.7.1",
+        "compile": {
+          "bin/placeholder/Crow.dll": {}
+        },
+        "runtime": {
+          "bin/placeholder/Crow.dll": {}
+        }
+      }
+    },
+    ".NETStandard,Version=v2.0": {
+      "Microsoft.NETCore.Platforms/1.1.0": {
+        "type": "package",
+        "compile": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "runtime": {
+          "lib/netstandard1.0/_._": {}
+        }
+      },
+      "Microsoft.NETCore.Targets/1.1.0": {
+        "type": "package",
+        "compile": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "runtime": {
+          "lib/netstandard1.0/_._": {}
+        }
+      },
+      "NETStandard.Library/2.0.3": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0"
+        },
+        "compile": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "runtime": {
+          "lib/netstandard1.0/_._": {}
+        },
+        "build": {
+          "build/netstandard2.0/NETStandard.Library.targets": {}
+        }
+      },
+      "System.IO/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0",
+          "System.Text.Encoding": "4.3.0",
+          "System.Threading.Tasks": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.5/System.IO.dll": {}
+        }
+      },
+      "System.Reflection/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.IO": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.5/System.Reflection.dll": {}
+        }
+      },
+      "System.Reflection.Emit.ILGeneration/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Reflection": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {}
+        }
+      },
+      "System.Reflection.Emit.Lightweight/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "System.Reflection": "4.3.0",
+          "System.Reflection.Emit.ILGeneration": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll": {}
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {}
+        }
+      },
+      "System.Reflection.Primitives/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.0/System.Reflection.Primitives.dll": {}
+        }
+      },
+      "System.Runtime/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0"
+        },
+        "compile": {
+          "ref/netstandard1.5/System.Runtime.dll": {}
+        }
+      },
+      "System.Text.Encoding/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.3/System.Text.Encoding.dll": {}
+        }
+      },
+      "System.Threading.Tasks/4.3.0": {
+        "type": "package",
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
+        },
+        "compile": {
+          "ref/netstandard1.3/System.Threading.Tasks.dll": {}
+        }
+      },
+      "Crow/0.8.1-beta": {
+        "type": "project",
+        "framework": ".NETStandard,Version=v2.0",
+        "dependencies": {
+          "System.Reflection.Emit.ILGeneration": "4.3.0",
+          "System.Reflection.Emit.Lightweight": "4.3.0"
+        },
+        "compile": {
+          "bin/placeholder/Crow.dll": {}
+        },
+        "runtime": {
+          "bin/placeholder/Crow.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "Microsoft.NETCore.Platforms/1.1.0": {
+      "sha512": "a/iSwnRZb+LHFk49hQOyThh/ZNC3vsbZsF65XwQIb863qF6msmhdQtxGXFL28Ob2NsCz/drEj28BJd/YPpLRBg==",
+      "type": "package",
+      "path": "microsoft.netcore.platforms/1.1.0",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/netstandard1.0/_._",
+        "microsoft.netcore.platforms.1.1.0.nupkg.sha512",
+        "microsoft.netcore.platforms.nuspec",
+        "runtime.json"
+      ]
+    },
+    "Microsoft.NETCore.Targets/1.1.0": {
+      "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
+      "type": "package",
+      "path": "microsoft.netcore.targets/1.1.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/netstandard1.0/_._",
+        "microsoft.netcore.targets.1.1.0.nupkg.sha512",
+        "microsoft.netcore.targets.nuspec",
+        "runtime.json"
+      ]
+    },
+    "NETStandard.Library/2.0.3": {
+      "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
+      "type": "package",
+      "path": "netstandard.library/2.0.3",
+      "files": [
+        ".nupkg.metadata",
+        "LICENSE.TXT",
+        "THIRD-PARTY-NOTICES.TXT",
+        "build/netstandard2.0/NETStandard.Library.targets",
+        "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll",
+        "build/netstandard2.0/ref/System.AppContext.dll",
+        "build/netstandard2.0/ref/System.Collections.Concurrent.dll",
+        "build/netstandard2.0/ref/System.Collections.NonGeneric.dll",
+        "build/netstandard2.0/ref/System.Collections.Specialized.dll",
+        "build/netstandard2.0/ref/System.Collections.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.Composition.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll",
+        "build/netstandard2.0/ref/System.ComponentModel.dll",
+        "build/netstandard2.0/ref/System.Console.dll",
+        "build/netstandard2.0/ref/System.Core.dll",
+        "build/netstandard2.0/ref/System.Data.Common.dll",
+        "build/netstandard2.0/ref/System.Data.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Debug.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Process.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Tools.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll",
+        "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll",
+        "build/netstandard2.0/ref/System.Drawing.Primitives.dll",
+        "build/netstandard2.0/ref/System.Drawing.dll",
+        "build/netstandard2.0/ref/System.Dynamic.Runtime.dll",
+        "build/netstandard2.0/ref/System.Globalization.Calendars.dll",
+        "build/netstandard2.0/ref/System.Globalization.Extensions.dll",
+        "build/netstandard2.0/ref/System.Globalization.dll",
+        "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll",
+        "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll",
+        "build/netstandard2.0/ref/System.IO.Compression.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll",
+        "build/netstandard2.0/ref/System.IO.FileSystem.dll",
+        "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll",
+        "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll",
+        "build/netstandard2.0/ref/System.IO.Pipes.dll",
+        "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll",
+        "build/netstandard2.0/ref/System.IO.dll",
+        "build/netstandard2.0/ref/System.Linq.Expressions.dll",
+        "build/netstandard2.0/ref/System.Linq.Parallel.dll",
+        "build/netstandard2.0/ref/System.Linq.Queryable.dll",
+        "build/netstandard2.0/ref/System.Linq.dll",
+        "build/netstandard2.0/ref/System.Net.Http.dll",
+        "build/netstandard2.0/ref/System.Net.NameResolution.dll",
+        "build/netstandard2.0/ref/System.Net.NetworkInformation.dll",
+        "build/netstandard2.0/ref/System.Net.Ping.dll",
+        "build/netstandard2.0/ref/System.Net.Primitives.dll",
+        "build/netstandard2.0/ref/System.Net.Requests.dll",
+        "build/netstandard2.0/ref/System.Net.Security.dll",
+        "build/netstandard2.0/ref/System.Net.Sockets.dll",
+        "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll",
+        "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll",
+        "build/netstandard2.0/ref/System.Net.WebSockets.dll",
+        "build/netstandard2.0/ref/System.Net.dll",
+        "build/netstandard2.0/ref/System.Numerics.dll",
+        "build/netstandard2.0/ref/System.ObjectModel.dll",
+        "build/netstandard2.0/ref/System.Reflection.Extensions.dll",
+        "build/netstandard2.0/ref/System.Reflection.Primitives.dll",
+        "build/netstandard2.0/ref/System.Reflection.dll",
+        "build/netstandard2.0/ref/System.Resources.Reader.dll",
+        "build/netstandard2.0/ref/System.Resources.ResourceManager.dll",
+        "build/netstandard2.0/ref/System.Resources.Writer.dll",
+        "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll",
+        "build/netstandard2.0/ref/System.Runtime.Extensions.dll",
+        "build/netstandard2.0/ref/System.Runtime.Handles.dll",
+        "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll",
+        "build/netstandard2.0/ref/System.Runtime.InteropServices.dll",
+        "build/netstandard2.0/ref/System.Runtime.Numerics.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll",
+        "build/netstandard2.0/ref/System.Runtime.Serialization.dll",
+        "build/netstandard2.0/ref/System.Runtime.dll",
+        "build/netstandard2.0/ref/System.Security.Claims.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll",
+        "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll",
+        "build/netstandard2.0/ref/System.Security.Principal.dll",
+        "build/netstandard2.0/ref/System.Security.SecureString.dll",
+        "build/netstandard2.0/ref/System.ServiceModel.Web.dll",
+        "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll",
+        "build/netstandard2.0/ref/System.Text.Encoding.dll",
+        "build/netstandard2.0/ref/System.Text.RegularExpressions.dll",
+        "build/netstandard2.0/ref/System.Threading.Overlapped.dll",
+        "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll",
+        "build/netstandard2.0/ref/System.Threading.Tasks.dll",
+        "build/netstandard2.0/ref/System.Threading.Thread.dll",
+        "build/netstandard2.0/ref/System.Threading.ThreadPool.dll",
+        "build/netstandard2.0/ref/System.Threading.Timer.dll",
+        "build/netstandard2.0/ref/System.Threading.dll",
+        "build/netstandard2.0/ref/System.Transactions.dll",
+        "build/netstandard2.0/ref/System.ValueTuple.dll",
+        "build/netstandard2.0/ref/System.Web.dll",
+        "build/netstandard2.0/ref/System.Windows.dll",
+        "build/netstandard2.0/ref/System.Xml.Linq.dll",
+        "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll",
+        "build/netstandard2.0/ref/System.Xml.Serialization.dll",
+        "build/netstandard2.0/ref/System.Xml.XDocument.dll",
+        "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll",
+        "build/netstandard2.0/ref/System.Xml.XPath.dll",
+        "build/netstandard2.0/ref/System.Xml.XmlDocument.dll",
+        "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll",
+        "build/netstandard2.0/ref/System.Xml.dll",
+        "build/netstandard2.0/ref/System.dll",
+        "build/netstandard2.0/ref/mscorlib.dll",
+        "build/netstandard2.0/ref/netstandard.dll",
+        "build/netstandard2.0/ref/netstandard.xml",
+        "lib/netstandard1.0/_._",
+        "netstandard.library.2.0.3.nupkg.sha512",
+        "netstandard.library.nuspec"
+      ]
+    },
+    "System.IO/4.3.0": {
+      "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
+      "type": "package",
+      "path": "system.io/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/net462/System.IO.dll",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/net462/System.IO.dll",
+        "ref/netcore50/System.IO.dll",
+        "ref/netcore50/System.IO.xml",
+        "ref/netcore50/de/System.IO.xml",
+        "ref/netcore50/es/System.IO.xml",
+        "ref/netcore50/fr/System.IO.xml",
+        "ref/netcore50/it/System.IO.xml",
+        "ref/netcore50/ja/System.IO.xml",
+        "ref/netcore50/ko/System.IO.xml",
+        "ref/netcore50/ru/System.IO.xml",
+        "ref/netcore50/zh-hans/System.IO.xml",
+        "ref/netcore50/zh-hant/System.IO.xml",
+        "ref/netstandard1.0/System.IO.dll",
+        "ref/netstandard1.0/System.IO.xml",
+        "ref/netstandard1.0/de/System.IO.xml",
+        "ref/netstandard1.0/es/System.IO.xml",
+        "ref/netstandard1.0/fr/System.IO.xml",
+        "ref/netstandard1.0/it/System.IO.xml",
+        "ref/netstandard1.0/ja/System.IO.xml",
+        "ref/netstandard1.0/ko/System.IO.xml",
+        "ref/netstandard1.0/ru/System.IO.xml",
+        "ref/netstandard1.0/zh-hans/System.IO.xml",
+        "ref/netstandard1.0/zh-hant/System.IO.xml",
+        "ref/netstandard1.3/System.IO.dll",
+        "ref/netstandard1.3/System.IO.xml",
+        "ref/netstandard1.3/de/System.IO.xml",
+        "ref/netstandard1.3/es/System.IO.xml",
+        "ref/netstandard1.3/fr/System.IO.xml",
+        "ref/netstandard1.3/it/System.IO.xml",
+        "ref/netstandard1.3/ja/System.IO.xml",
+        "ref/netstandard1.3/ko/System.IO.xml",
+        "ref/netstandard1.3/ru/System.IO.xml",
+        "ref/netstandard1.3/zh-hans/System.IO.xml",
+        "ref/netstandard1.3/zh-hant/System.IO.xml",
+        "ref/netstandard1.5/System.IO.dll",
+        "ref/netstandard1.5/System.IO.xml",
+        "ref/netstandard1.5/de/System.IO.xml",
+        "ref/netstandard1.5/es/System.IO.xml",
+        "ref/netstandard1.5/fr/System.IO.xml",
+        "ref/netstandard1.5/it/System.IO.xml",
+        "ref/netstandard1.5/ja/System.IO.xml",
+        "ref/netstandard1.5/ko/System.IO.xml",
+        "ref/netstandard1.5/ru/System.IO.xml",
+        "ref/netstandard1.5/zh-hans/System.IO.xml",
+        "ref/netstandard1.5/zh-hant/System.IO.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.io.4.3.0.nupkg.sha512",
+        "system.io.nuspec"
+      ]
+    },
+    "System.Reflection/4.3.0": {
+      "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
+      "type": "package",
+      "path": "system.reflection/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/net462/System.Reflection.dll",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/net462/System.Reflection.dll",
+        "ref/netcore50/System.Reflection.dll",
+        "ref/netcore50/System.Reflection.xml",
+        "ref/netcore50/de/System.Reflection.xml",
+        "ref/netcore50/es/System.Reflection.xml",
+        "ref/netcore50/fr/System.Reflection.xml",
+        "ref/netcore50/it/System.Reflection.xml",
+        "ref/netcore50/ja/System.Reflection.xml",
+        "ref/netcore50/ko/System.Reflection.xml",
+        "ref/netcore50/ru/System.Reflection.xml",
+        "ref/netcore50/zh-hans/System.Reflection.xml",
+        "ref/netcore50/zh-hant/System.Reflection.xml",
+        "ref/netstandard1.0/System.Reflection.dll",
+        "ref/netstandard1.0/System.Reflection.xml",
+        "ref/netstandard1.0/de/System.Reflection.xml",
+        "ref/netstandard1.0/es/System.Reflection.xml",
+        "ref/netstandard1.0/fr/System.Reflection.xml",
+        "ref/netstandard1.0/it/System.Reflection.xml",
+        "ref/netstandard1.0/ja/System.Reflection.xml",
+        "ref/netstandard1.0/ko/System.Reflection.xml",
+        "ref/netstandard1.0/ru/System.Reflection.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.xml",
+        "ref/netstandard1.3/System.Reflection.dll",
+        "ref/netstandard1.3/System.Reflection.xml",
+        "ref/netstandard1.3/de/System.Reflection.xml",
+        "ref/netstandard1.3/es/System.Reflection.xml",
+        "ref/netstandard1.3/fr/System.Reflection.xml",
+        "ref/netstandard1.3/it/System.Reflection.xml",
+        "ref/netstandard1.3/ja/System.Reflection.xml",
+        "ref/netstandard1.3/ko/System.Reflection.xml",
+        "ref/netstandard1.3/ru/System.Reflection.xml",
+        "ref/netstandard1.3/zh-hans/System.Reflection.xml",
+        "ref/netstandard1.3/zh-hant/System.Reflection.xml",
+        "ref/netstandard1.5/System.Reflection.dll",
+        "ref/netstandard1.5/System.Reflection.xml",
+        "ref/netstandard1.5/de/System.Reflection.xml",
+        "ref/netstandard1.5/es/System.Reflection.xml",
+        "ref/netstandard1.5/fr/System.Reflection.xml",
+        "ref/netstandard1.5/it/System.Reflection.xml",
+        "ref/netstandard1.5/ja/System.Reflection.xml",
+        "ref/netstandard1.5/ko/System.Reflection.xml",
+        "ref/netstandard1.5/ru/System.Reflection.xml",
+        "ref/netstandard1.5/zh-hans/System.Reflection.xml",
+        "ref/netstandard1.5/zh-hant/System.Reflection.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.reflection.4.3.0.nupkg.sha512",
+        "system.reflection.nuspec"
+      ]
+    },
+    "System.Reflection.Emit.ILGeneration/4.3.0": {
+      "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
+      "type": "package",
+      "path": "system.reflection.emit.ilgeneration/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Emit.ILGeneration.dll",
+        "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll",
+        "lib/portable-net45+wp8/_._",
+        "lib/wp80/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll",
+        "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml",
+        "ref/portable-net45+wp8/_._",
+        "ref/wp80/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "runtimes/aot/lib/netcore50/_._",
+        "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512",
+        "system.reflection.emit.ilgeneration.nuspec"
+      ]
+    },
+    "System.Reflection.Emit.Lightweight/4.3.0": {
+      "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
+      "type": "package",
+      "path": "system.reflection.emit.lightweight/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Emit.Lightweight.dll",
+        "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll",
+        "lib/portable-net45+wp8/_._",
+        "lib/wp80/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll",
+        "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml",
+        "ref/portable-net45+wp8/_._",
+        "ref/wp80/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "runtimes/aot/lib/netcore50/_._",
+        "system.reflection.emit.lightweight.4.3.0.nupkg.sha512",
+        "system.reflection.emit.lightweight.nuspec"
+      ]
+    },
+    "System.Reflection.Primitives/4.3.0": {
+      "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
+      "type": "package",
+      "path": "system.reflection.primitives/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.Primitives.dll",
+        "ref/netcore50/System.Reflection.Primitives.xml",
+        "ref/netcore50/de/System.Reflection.Primitives.xml",
+        "ref/netcore50/es/System.Reflection.Primitives.xml",
+        "ref/netcore50/fr/System.Reflection.Primitives.xml",
+        "ref/netcore50/it/System.Reflection.Primitives.xml",
+        "ref/netcore50/ja/System.Reflection.Primitives.xml",
+        "ref/netcore50/ko/System.Reflection.Primitives.xml",
+        "ref/netcore50/ru/System.Reflection.Primitives.xml",
+        "ref/netcore50/zh-hans/System.Reflection.Primitives.xml",
+        "ref/netcore50/zh-hant/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/System.Reflection.Primitives.dll",
+        "ref/netstandard1.0/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/de/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/es/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/fr/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/it/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/ja/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/ko/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/ru/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml",
+        "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.reflection.primitives.4.3.0.nupkg.sha512",
+        "system.reflection.primitives.nuspec"
+      ]
+    },
+    "System.Runtime/4.3.0": {
+      "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
+      "type": "package",
+      "path": "system.runtime/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/net462/System.Runtime.dll",
+        "lib/portable-net45+win8+wp80+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/net462/System.Runtime.dll",
+        "ref/netcore50/System.Runtime.dll",
+        "ref/netcore50/System.Runtime.xml",
+        "ref/netcore50/de/System.Runtime.xml",
+        "ref/netcore50/es/System.Runtime.xml",
+        "ref/netcore50/fr/System.Runtime.xml",
+        "ref/netcore50/it/System.Runtime.xml",
+        "ref/netcore50/ja/System.Runtime.xml",
+        "ref/netcore50/ko/System.Runtime.xml",
+        "ref/netcore50/ru/System.Runtime.xml",
+        "ref/netcore50/zh-hans/System.Runtime.xml",
+        "ref/netcore50/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.0/System.Runtime.dll",
+        "ref/netstandard1.0/System.Runtime.xml",
+        "ref/netstandard1.0/de/System.Runtime.xml",
+        "ref/netstandard1.0/es/System.Runtime.xml",
+        "ref/netstandard1.0/fr/System.Runtime.xml",
+        "ref/netstandard1.0/it/System.Runtime.xml",
+        "ref/netstandard1.0/ja/System.Runtime.xml",
+        "ref/netstandard1.0/ko/System.Runtime.xml",
+        "ref/netstandard1.0/ru/System.Runtime.xml",
+        "ref/netstandard1.0/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.0/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.2/System.Runtime.dll",
+        "ref/netstandard1.2/System.Runtime.xml",
+        "ref/netstandard1.2/de/System.Runtime.xml",
+        "ref/netstandard1.2/es/System.Runtime.xml",
+        "ref/netstandard1.2/fr/System.Runtime.xml",
+        "ref/netstandard1.2/it/System.Runtime.xml",
+        "ref/netstandard1.2/ja/System.Runtime.xml",
+        "ref/netstandard1.2/ko/System.Runtime.xml",
+        "ref/netstandard1.2/ru/System.Runtime.xml",
+        "ref/netstandard1.2/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.2/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.3/System.Runtime.dll",
+        "ref/netstandard1.3/System.Runtime.xml",
+        "ref/netstandard1.3/de/System.Runtime.xml",
+        "ref/netstandard1.3/es/System.Runtime.xml",
+        "ref/netstandard1.3/fr/System.Runtime.xml",
+        "ref/netstandard1.3/it/System.Runtime.xml",
+        "ref/netstandard1.3/ja/System.Runtime.xml",
+        "ref/netstandard1.3/ko/System.Runtime.xml",
+        "ref/netstandard1.3/ru/System.Runtime.xml",
+        "ref/netstandard1.3/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.3/zh-hant/System.Runtime.xml",
+        "ref/netstandard1.5/System.Runtime.dll",
+        "ref/netstandard1.5/System.Runtime.xml",
+        "ref/netstandard1.5/de/System.Runtime.xml",
+        "ref/netstandard1.5/es/System.Runtime.xml",
+        "ref/netstandard1.5/fr/System.Runtime.xml",
+        "ref/netstandard1.5/it/System.Runtime.xml",
+        "ref/netstandard1.5/ja/System.Runtime.xml",
+        "ref/netstandard1.5/ko/System.Runtime.xml",
+        "ref/netstandard1.5/ru/System.Runtime.xml",
+        "ref/netstandard1.5/zh-hans/System.Runtime.xml",
+        "ref/netstandard1.5/zh-hant/System.Runtime.xml",
+        "ref/portable-net45+win8+wp80+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.runtime.4.3.0.nupkg.sha512",
+        "system.runtime.nuspec"
+      ]
+    },
+    "System.Text.Encoding/4.3.0": {
+      "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
+      "type": "package",
+      "path": "system.text.encoding/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Text.Encoding.dll",
+        "ref/netcore50/System.Text.Encoding.xml",
+        "ref/netcore50/de/System.Text.Encoding.xml",
+        "ref/netcore50/es/System.Text.Encoding.xml",
+        "ref/netcore50/fr/System.Text.Encoding.xml",
+        "ref/netcore50/it/System.Text.Encoding.xml",
+        "ref/netcore50/ja/System.Text.Encoding.xml",
+        "ref/netcore50/ko/System.Text.Encoding.xml",
+        "ref/netcore50/ru/System.Text.Encoding.xml",
+        "ref/netcore50/zh-hans/System.Text.Encoding.xml",
+        "ref/netcore50/zh-hant/System.Text.Encoding.xml",
+        "ref/netstandard1.0/System.Text.Encoding.dll",
+        "ref/netstandard1.0/System.Text.Encoding.xml",
+        "ref/netstandard1.0/de/System.Text.Encoding.xml",
+        "ref/netstandard1.0/es/System.Text.Encoding.xml",
+        "ref/netstandard1.0/fr/System.Text.Encoding.xml",
+        "ref/netstandard1.0/it/System.Text.Encoding.xml",
+        "ref/netstandard1.0/ja/System.Text.Encoding.xml",
+        "ref/netstandard1.0/ko/System.Text.Encoding.xml",
+        "ref/netstandard1.0/ru/System.Text.Encoding.xml",
+        "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml",
+        "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml",
+        "ref/netstandard1.3/System.Text.Encoding.dll",
+        "ref/netstandard1.3/System.Text.Encoding.xml",
+        "ref/netstandard1.3/de/System.Text.Encoding.xml",
+        "ref/netstandard1.3/es/System.Text.Encoding.xml",
+        "ref/netstandard1.3/fr/System.Text.Encoding.xml",
+        "ref/netstandard1.3/it/System.Text.Encoding.xml",
+        "ref/netstandard1.3/ja/System.Text.Encoding.xml",
+        "ref/netstandard1.3/ko/System.Text.Encoding.xml",
+        "ref/netstandard1.3/ru/System.Text.Encoding.xml",
+        "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml",
+        "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.text.encoding.4.3.0.nupkg.sha512",
+        "system.text.encoding.nuspec"
+      ]
+    },
+    "System.Threading.Tasks/4.3.0": {
+      "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
+      "type": "package",
+      "path": "system.threading.tasks/4.3.0",
+      "files": [
+        ".nupkg.metadata",
+        "ThirdPartyNotices.txt",
+        "dotnet_library_license.txt",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/portable-net45+win8+wp8+wpa81/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "lib/xamarintvos10/_._",
+        "lib/xamarinwatchos10/_._",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Threading.Tasks.dll",
+        "ref/netcore50/System.Threading.Tasks.xml",
+        "ref/netcore50/de/System.Threading.Tasks.xml",
+        "ref/netcore50/es/System.Threading.Tasks.xml",
+        "ref/netcore50/fr/System.Threading.Tasks.xml",
+        "ref/netcore50/it/System.Threading.Tasks.xml",
+        "ref/netcore50/ja/System.Threading.Tasks.xml",
+        "ref/netcore50/ko/System.Threading.Tasks.xml",
+        "ref/netcore50/ru/System.Threading.Tasks.xml",
+        "ref/netcore50/zh-hans/System.Threading.Tasks.xml",
+        "ref/netcore50/zh-hant/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/System.Threading.Tasks.dll",
+        "ref/netstandard1.0/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/de/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/es/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/fr/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/it/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/ja/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/ko/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/ru/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml",
+        "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/System.Threading.Tasks.dll",
+        "ref/netstandard1.3/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/de/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/es/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/fr/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/it/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/ja/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/ko/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/ru/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml",
+        "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml",
+        "ref/portable-net45+win8+wp8+wpa81/_._",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "ref/xamarintvos10/_._",
+        "ref/xamarinwatchos10/_._",
+        "system.threading.tasks.4.3.0.nupkg.sha512",
+        "system.threading.tasks.nuspec"
+      ]
+    },
+    "Crow/0.8.1-beta": {
+      "type": "project",
+      "path": "../../Crow/Crow.csproj",
+      "msbuildProject": "../../Crow/Crow.csproj"
+    }
+  },
+  "projectFileDependencyGroups": {
+    ".NETFramework,Version=v4.7.1": [
+      "Crow >= 0.8.1-beta"
+    ],
+    ".NETStandard,Version=v2.0": [
+      "Crow >= 0.8.1-beta",
+      "NETStandard.Library >= 2.0.3"
+    ]
+  },
+  "packageFolders": {
+    "/home/jp/.nuget/packages/": {},
+    "/usr/share/dotnet/sdk/NuGetFallbackFolder": {}
+  },
+  "project": {
+    "version": "1.0.0",
+    "restore": {
+      "projectUniqueName": "/mnt/devel/Crow/Samples/ShowCase/ShowCase.csproj",
+      "projectName": "ShowCase",
+      "projectPath": "/mnt/devel/Crow/Samples/ShowCase/ShowCase.csproj",
+      "packagesPath": "/home/jp/.nuget/packages/",
+      "outputPath": "/mnt/devel/Crow/Samples/ShowCase/obj/",
+      "projectStyle": "PackageReference",
+      "crossTargeting": true,
+      "fallbackFolders": [
+        "/usr/share/dotnet/sdk/NuGetFallbackFolder"
+      ],
+      "configFilePaths": [
+        "/home/jp/.config/NuGet/NuGet.Config"
+      ],
+      "originalTargetFrameworks": [
+        "net471",
+        "netstandard2.0"
+      ],
+      "sources": {
+        "/opt/localNuget": {},
+        "https://api.nuget.org/v3/index.json": {},
+        "https://www.myget.org/F/opentk-develop": {},
+        "https://www.nuget.org/api/v2/": {}
+      },
+      "frameworks": {
+        "net471": {
+          "projectReferences": {
+            "/mnt/devel/Crow/Crow/Crow.csproj": {
+              "projectPath": "/mnt/devel/Crow/Crow/Crow.csproj"
+            }
+          }
+        },
+        "netstandard2.0": {
+          "projectReferences": {
+            "/mnt/devel/Crow/Crow/Crow.csproj": {
+              "projectPath": "/mnt/devel/Crow/Crow/Crow.csproj"
+            }
+          }
+        }
+      },
+      "warningProperties": {
+        "warnAsError": [
+          "NU1605"
+        ]
+      }
+    },
+    "frameworks": {
+      "net471": {},
+      "netstandard2.0": {
+        "dependencies": {
+          "NETStandard.Library": {
+            "suppressParent": "All",
+            "target": "Package",
+            "version": "[2.0.3, )",
+            "autoReferenced": true
+          }
+        },
+        "imports": [
+          "net461"
+        ],
+        "assetTargetFallback": true,
+        "warn": true
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/Samples/ShowCase/packages.config b/Samples/ShowCase/packages.config
new file mode 100644 (file)
index 0000000..fba81eb
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="CVKL" version="0.1.2" targetFramework="net471" />
+  <package id="glTF2Loader" version="1.1.3-alpha" targetFramework="net471" />
+  <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net471" />
+  <package id="System.Numerics.Vectors" version="4.6.0-preview4.19212.13" targetFramework="net471" />
+  <package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0-preview4.19212.13" targetFramework="net471" />
+  <package id="Vulkan" version="0.1.2.6" targetFramework="net471" />
+</packages>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/CheckBox2.imlt b/Samples/ShowCase/ui/Interfaces/CheckBox2.imlt
new file mode 100644 (file)
index 0000000..c2bfe8d
--- /dev/null
@@ -0,0 +1,7 @@
+<Label Font="{./Font}" Text="{./Caption}" Height="{./HeightPolicy}" Width="{./WidthPolicy}"
+       Margin="3"
+       Background="{./Background}"
+       Foreground="DimGrey"
+       TextAlignment="Center"
+       MouseEnter="{Foreground=White}"
+       MouseLeave="{Foreground=DimGrey}"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Container/0.crow b/Samples/ShowCase/ui/Interfaces/Container/0.crow
new file mode 100755 (executable)
index 0000000..5ad8de0
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Container Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10"  Background="SeaGreen"
+                       MinimumSize="50,50"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Container/1.crow b/Samples/ShowCase/ui/Interfaces/Container/1.crow
new file mode 100755 (executable)
index 0000000..e879bce
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Container Background="Lust" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="50%" Height="50%" Background="Maize"
+                       MinimumSize="50,50"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Container/2.crow b/Samples/ShowCase/ui/Interfaces/Container/2.crow
new file mode 100755 (executable)
index 0000000..98d1add
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Container Background="MediumSeaGreen" Margin="10" Fit="true">
+       <Widget Margin="10" Width="50%" Height="50%" Background="DarkGreen"
+                       MinimumSize="50,50"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Container/3.crow b/Samples/ShowCase/ui/Interfaces/Container/3.crow
new file mode 100755 (executable)
index 0000000..94655ca
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Container Background="DimGrey" Margin="10" Fit="true">
+       <Label Text="{fps}" Margin="10" Fit="true" Background="SeaGreen"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/DragAndDrop/0.crow b/Samples/ShowCase/ui/Interfaces/DragAndDrop/0.crow
new file mode 100755 (executable)
index 0000000..ca1a7bb
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="90%" Spacing="100" Focusable="true">
+       <Container Name="source" StartDrag="{Background=DimGrey}" EndDrag="{Background=SeaGreen}" Focusable="true" Fit="true"
+                       Drop="{../target.Background=Green}"
+                       MouseEnter="{/txt.Foreground=Red}" MouseLeave="{/txt.Foreground=White}" MouseClick="{Background=SeaGreen}"
+                       AllowDrag="true" Width="200" Height="200" Background="SeaGreen">
+               <VerticalStack Margin="50">
+                       <Label Name="txt" Text="Drag me" Foreground="Grey"/>
+                       <Label Text="Dragged" Visible="{../../IsDragged}" Foreground="Grey"/>
+               </VerticalStack>
+       </Container>
+       <Container Name="target" DragEnter="{Background=SeaGreen}" DragLeave="{Background=DimGrey}" Focusable="true" Fit="true"
+                       MouseEnter="{/txt.Foreground=Red}" MouseLeave="{/txt.Foreground=White}"
+                       AllowDrop="true"  Background="DimGrey">
+               <VerticalStack Margin="50">
+                       <Label Name="txt" Text="Drop here" Foreground="Grey"/>
+                       <Label Text="Dragged" Visible="{../../IsDragged}" Foreground="Grey"/>
+               </VerticalStack>
+       </Container>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Experimental/DockWindow.template b/Samples/ShowCase/ui/Interfaces/Experimental/DockWindow.template
new file mode 100755 (executable)
index 0000000..6c91312
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--<Widget Background="{./Background}"/>-->
+<Border BorderWidth="1" Foreground="Black" CornerRadius="{./CornerRadius}"
+                               Background="{./Background}"
+                               MouseEnter="./onBorderMouseEnter"
+                               MouseLeave="./onBorderMouseLeave">
+       <VerticalStack Spacing="0">
+               <HorizontalStack Height="Fit">
+                       <Label  Text="{./Name}" TextAlignment="Left" Width="Fit"
+                                        Foreground="White" />
+                       <Label  Text="{./DockingPosition}" TextAlignment="Left" Width="Fit"
+                                        Foreground="White" />
+               </HorizontalStack>
+               <Label  Text="{./Width}" TextAlignment="Left" Width="Fit"
+                                Foreground="White" />
+               <Label  Text="{./Height}" TextAlignment="Left" Width="Fit"
+                                Foreground="White" />
+
+               <HorizontalStack Visible="{./IsDocked}" Height="Fit" Margin="1" Background="Grey">
+                       <Label  Text="{./Caption}" TextAlignment="Left" Width="Stretched"
+                                        Foreground="Jet" />
+                       <Image Width="8" Height="8" Focusable="true" Margin="0" Path="#Crow.Icons.exit2.svg"
+                                        MouseClick="./butQuitPress"/>
+               </HorizontalStack>
+               <HorizontalStack Background="vgradient|0:0.5,0.6,0.5,0.5|1:0.2,0.3,0.3,0.7"
+                               Name="hs" Margin="0" Spacing="0" Height="Fit" Visible="{./IsFloating}">
+                       <Widget Width="5"/>
+                       <Image Margin="1" Width="10" Height="10" Path="{./Icon}"/>
+                       <Label Width="Stretched" Foreground="White" Margin="1" TextAlignment="Left" Text="{./Caption}" />
+                       <Border CornerRadius="6" BorderWidth="1" Foreground="Transparent"  Height="10" Width="10"
+                               MouseEnter="{Foreground=White}" MouseLeave="{Foreground=Transparent}">
+                               <Image Focusable="true" Name="Image" Margin="0" Path="#Crow.Icons.exit2.svg"
+                                        MouseClick="./butQuitPress"/>
+                       </Border>
+                       <Widget Width="5"/>
+               </HorizontalStack>
+               <Container Name="Content" MinimumSize="50,50"/>
+       </VerticalStack>
+</Border>
diff --git a/Samples/ShowCase/ui/Interfaces/Experimental/testDock.crow b/Samples/ShowCase/ui/Interfaces/Experimental/testDock.crow
new file mode 100644 (file)
index 0000000..f09552c
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<Window Width="Stretched" Height="Stretched" Background="Jet">
+       <DockStack Name="mainDock" Background="DarkRed" Margin="20">
+       </DockStack>
+</Window>
+<!---          
+               <DockWindow Left="450" Top="450" Width="150" Height="150" Background="Maize"/>-->
+       
+
+<!--<Group Background="DimGrey" Margin = "0" Focusable="true" >
+       <Window Top="100" Left="100" Focusable="true" Caption="View 1" Width="300" Height="300"><Widget Background="Green" Focusable="true" MouseEnter="{Background=Grey}" MouseLeave="{Background=Green}"/></Window>
+       <Window Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></Window>
+       <Window Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></Window>
+       <Window Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></Window>
+</Group>-->
+<!--<Docker >
+       <DockWindow Resizable = "true" Top="100" Left="100" Caption="View 1" Width="300" Height="300">
+               <VerticalStack Background="DarkGreen" Focusable="true">
+                       <Label Text="{../../Left}" Background="Black" Width="Stretched"/>
+                       <Label Text="{../../Top}" Background="Black"/>
+                       <Label Text="{../../LogicalParent}" Background="Black"/>
+               </VerticalStack>
+       </DockWindow>
+       <DockWindow Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></DockWindow>
+       <DockWindow Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></DockWindow>
+       <DockWindow Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></DockWindow>
+</Docker>-->
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Experimental/testDock2.crow b/Samples/ShowCase/ui/Interfaces/Experimental/testDock2.crow
new file mode 100644 (file)
index 0000000..5ff6f70
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<Docker >
+       <DockWindow Left="100" Top="100" Width="150" Height="150" Background="DarkRed"/>
+       <DockWindow Left="200" Top="200" Width="150" Height="150" Background="DarkGreen"/>
+       <DockWindow Left="300" Top="300" Width="150" Height="150" Background="Blue"/>
+       <DockWindow Left="400" Top="400" Width="150" Height="150" Background="DarkYellow"/>
+       <DockWindow Left="500" Top="500" Width="150" Height="150" Background="Yellow"/>
+</Docker>
+<!--<Group Background="DimGrey" Margin = "0" Focusable="true" >
+       <Window Top="100" Left="100" Focusable="true" Caption="View 1" Width="300" Height="300"><Widget Background="Green" Focusable="true" MouseEnter="{Background=Grey}" MouseLeave="{Background=Green}"/></Window>
+       <Window Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></Window>
+       <Window Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></Window>
+       <Window Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></Window>
+</Group>-->
+<!--<Docker >
+       <DockWindow Resizable = "true" Top="100" Left="100" Caption="View 1" Width="300" Height="300">
+               <VerticalStack Background="DarkGreen" Focusable="true">
+                       <Label Text="{../../Left}" Background="Black" Width="Stretched"/>
+                       <Label Text="{../../Top}" Background="Black"/>
+                       <Label Text="{../../LogicalParent}" Background="Black"/>
+               </VerticalStack>
+       </DockWindow>
+       <DockWindow Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></DockWindow>
+       <DockWindow Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></DockWindow>
+       <DockWindow Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></DockWindow>
+</Docker>-->
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Experimental/testStack.crow b/Samples/ShowCase/ui/Interfaces/Experimental/testStack.crow
new file mode 100644 (file)
index 0000000..0348f0b
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<Window Width="600" Height="500">
+<VerticalStack Margin="20" Background="DimGrey" Spacing="10">
+       <Widget Height="100" Width="500" Background="Green"/>
+       <Splitter/>
+       <HorizontalStack>
+               <Widget Height="Stretched" Width="100" Background="Red"/>
+               <Splitter/>
+               <Widget Height="Stretched" Width="100" Background="DarkRed"/>
+       </HorizontalStack>
+       <Splitter/>
+       <Widget Height="100" Width="500" Background="Green"/>
+</VerticalStack>
+</Window>
+<!--<Group Background="DimGrey" Margin = "0" Focusable="true" >
+       <Window Top="100" Left="100" Focusable="true" Caption="View 1" Width="300" Height="300"><Widget Background="Green" Focusable="true" MouseEnter="{Background=Grey}" MouseLeave="{Background=Green}"/></Window>
+       <Window Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></Window>
+       <Window Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></Window>
+       <Window Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></Window>
+</Group>-->
+<!--<Docker >
+       <DockWindow Resizable = "true" Top="100" Left="100" Caption="View 1" Width="300" Height="300">
+               <VerticalStack Background="DarkGreen" Focusable="true">
+                       <Label Text="{../../Left}" Background="Black" Width="Stretched"/>
+                       <Label Text="{../../Top}" Background="Black"/>
+                       <Label Text="{../../LogicalParent}" Background="Black"/>
+               </VerticalStack>
+       </DockWindow>
+       <DockWindow Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></DockWindow>
+       <DockWindow Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></DockWindow>
+       <DockWindow Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></DockWindow>
+</Docker>-->
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Experimental/testTypeViewer.goml b/Samples/ShowCase/ui/Interfaces/Experimental/testTypeViewer.goml
new file mode 100755 (executable)
index 0000000..caa454f
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+
+       <VerticalStack Height="Fit" Width="250" Name="hstack" Margin="0" Spacing="0">
+               <Border Height="Fit" Width="Stretched" BorderWidth="2" CornerRadius="10" Background="SteelBlue">
+                       <Label Name="labName" Text="{Name}" Width="Stretched" Height="Fit" Margin="3"/>
+               </Border>
+               <ListBox Data="{Members}" Width="Stretched" Height="400" ItemTemplate="Interfaces/tmpMembers.goml" Focusable="true">
+                       
+               </ListBox>
+       </VerticalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/GraphicObject/0.crow b/Samples/ShowCase/ui/Interfaces/GraphicObject/0.crow
new file mode 100755 (executable)
index 0000000..542e2ba
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+
+    <Button CornerRadius="0" Background="Red"/>
+
diff --git a/Samples/ShowCase/ui/Interfaces/GraphicObject/1.crow b/Samples/ShowCase/ui/Interfaces/GraphicObject/1.crow
new file mode 100755 (executable)
index 0000000..d74f494
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<Widget Margin="10" Width="150" Height="150" Background="SeaGreen"
+               MinimumSize="50,50"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/GraphicObject/2.crow b/Samples/ShowCase/ui/Interfaces/GraphicObject/2.crow
new file mode 100755 (executable)
index 0000000..af2998a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Widget Margin="10" Width="50%" Height="50%"
+               Background="hgradient|0:Red|0.25:Blue|0.5:Green|0.75:Yellow|1:Red"
+               MinimumSize="50,50"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/GraphicObject/4.crow b/Samples/ShowCase/ui/Interfaces/GraphicObject/4.crow
new file mode 100755 (executable)
index 0000000..f696a9e
--- /dev/null
@@ -0,0 +1,377 @@
+<?xml version="1.0"?>
+<HorizontalStack Fit="true">
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <ProgressBar CornerRadius="5" Background="DimGray" Margin="1" Maximum="1000" Value="{fps}" Width="200" Height="15"/>
+               <HorizontalStack Fit="true">
+                       <Label Text="Memory:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{memory}" Font="droid,12" TextAlignment="Center"
+                               Background="vgradient|0:BlueCrayola|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:AoEnglish|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/GraphicObject/5.crow b/Samples/ShowCase/ui/Interfaces/GraphicObject/5.crow
new file mode 100755 (executable)
index 0000000..4922474
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<HorizontalStack Width="Stretched" Height="Fit" Margin="5" Background="Mantis">
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="Stretched" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+</HorizontalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/GraphicObject/6.crow b/Samples/ShowCase/ui/Interfaces/GraphicObject/6.crow
new file mode 100755 (executable)
index 0000000..c37ca36
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Background="DimGray" Margin="5">
+<!--   <RadioButton/>-->
+       <Label Text="a" Width="Stretched" Background="Red"/>
+       <Label Text="{fps}" HorizontalAlignment="Right" Background="LimeGreen"/>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/GraphicObject/7.crow b/Samples/ShowCase/ui/Interfaces/GraphicObject/7.crow
new file mode 100755 (executable)
index 0000000..d8e9cd3
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<VerticalStack Height="Fit" Width="Fit">
+       <Label Width="0"/>
+       <Expandable  Width="Fit" Background="Gray">
+               <Expandable Background="LightBlue">
+                       <Expandable Background="Green">
+                               <Expandable Background="LimeGreen">
+                                       <Expandable Background="DimGray">
+                                               <Expandable Width="0" Background="Yellow">
+                                                       <Expandable Background="NavyBlue">
+                                                               <Expandable Width="0" Background="Blue">
+                                                                       <Expandable Width="0" Background="BlueCrayola">
+                                                                               <Expandable Width="0" Background="Green">
+                                                                                       <Label Background="Red"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
+       <Expandable Width="0"  Background="Gray">
+               <Expandable Width="0" Background="LightBlue">
+                       <Expandable Width="0" Background="Green">
+                               <Expandable Width="0" Background="LimeGreen">
+                                       <Expandable Width="0" Background="DimGray">
+                                               <Expandable Width="0" Background="Yellow">
+                                                       <Expandable Width="0" Background="NavyBlue">
+                                                               <Expandable Width="0" Background="Blue">
+                                                                       <Expandable Width="0" Background="BlueCrayola">
+                                                                               <Expandable Width="0" Background="Green">
+                                                                                       <Label Background="Red"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/Group/0.crow b/Samples/ShowCase/ui/Interfaces/Group/0.crow
new file mode 100755 (executable)
index 0000000..db09cab
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<Group MinimumSize="50,50" Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"                        
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Group/1.crow b/Samples/ShowCase/ui/Interfaces/Group/1.crow
new file mode 100755 (executable)
index 0000000..2d378d3
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Group/2.crow b/Samples/ShowCase/ui/Interfaces/Group/2.crow
new file mode 100755 (executable)
index 0000000..721790d
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Fit="true">
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Group/3.crow b/Samples/ShowCase/ui/Interfaces/Group/3.crow
new file mode 100755 (executable)
index 0000000..bcb57b2
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Width="70%" Height="50%">
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="100%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Group/4.crow b/Samples/ShowCase/ui/Interfaces/Group/4.crow
new file mode 100755 (executable)
index 0000000..3e97341
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Fit="true">
+       <Label Font="droid bold,40" Text="{fps}" Margin="10"  Fit="true"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Splitter/1.crow b/Samples/ShowCase/ui/Interfaces/Splitter/1.crow
new file mode 100755 (executable)
index 0000000..48c1ea1
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<HorizontalStack Width="80%" Height="50%">
+       <Border Width="45%" CornerRadius="10" BorderWidth="1">
+               <VerticalStack>
+                       <VerticalStack Height="45%">
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 1" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 2"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="true" Caption="Check 3"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 4" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                       </VerticalStack>
+                       <Splitter Thickness="3"/>
+                       <VerticalStack Height="45%">
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 1" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 2"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="true" Caption="Check 3"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 4" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                       </VerticalStack>
+               </VerticalStack>
+       </Border>
+       <Splitter Thickness="3"/>
+       <Border Width="45%" CornerRadius="10" BorderWidth="1">
+               <VerticalStack Width="50%" Height="50%" Background="DimGrey">
+                       <RadioButton IsChecked="false" Caption="Choice 1" Background="hgradient|0:DarkRed|1:Transparent"/>
+                       <RadioButton IsChecked="false" Caption="Choice 2"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                       <RadioButton IsChecked="true" Caption="Choice 3"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                       <RadioButton IsChecked="false" Caption="Choice 4" Background="hgradient|0:DarkRed|1:Transparent"/>
+               </VerticalStack>
+       </Border>
+       <Splitter Thickness="3"/>
+</HorizontalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/Splitter/3.crow b/Samples/ShowCase/ui/Interfaces/Splitter/3.crow
new file mode 100755 (executable)
index 0000000..582944a
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <GraphicObject CornerRadius="5" Height="10" Width="600" Background="vgradient|0:Transparent|0,5:White|1:Transparent"/>
+       <HorizontalStack Fit="true" HorizontalAlignment="Left">
+               <Border Fit="true" CornerRadius="10" BorderWidth="1">
+                       <VerticalStack Margin="10">
+                               <CheckBox IsChecked="false" Caption="Check 1" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox IsChecked="false" Caption="Check 2"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox IsChecked="true" Caption="Check 3"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox IsChecked="false" Caption="Check 4" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter/>
+               <Border Fit="true" CornerRadius="10" BorderWidth="1">
+                       <VerticalStack Margin="10">
+                               <RadioButton IsChecked="false" Caption="Choice 1" Background="hgradient|0:DarkRed|1:Transparent"/>
+                               <Splitter/>
+                               <RadioButton Width="Stretched" IsChecked="false" Caption="Choice 2"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                               <RadioButton IsChecked="true" Caption="Choice 3"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                               <RadioButton IsChecked="false" Caption="Choice 4" Background="hgradient|0:DarkRed|1:Transparent"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter Thickness="3" />
+               <Border Fit="true" CornerRadius="10" BorderWidth="1" MaximumSize="150;150" MinimumSize="50;50">
+                       <VerticalStack Margin="10">
+                               <Label Text="label 1" Background="hgradient|0:BlueCrayola|1:Transparent"/>
+                               <Label Text="label 2" Background="hgradient|0:BlueCrayola|1:Transparent"/>
+                               <Label Text="label 3" Background="hgradient|0:BlueCrayola|1:Transparent"/>
+                               <Label Text="label 4" Width="Stretched" Background="hgradient|0:BlueCrayola|1:Transparent"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter/>
+               <Border Fit="true" CornerRadius="10" BorderWidth="1">
+                       <VerticalStack Margin="10">
+                               <Button Caption="Button 1" Background="hgradient|0:Red|1:DarkRed" CornerRadius="5"/>
+                               <Button Caption="Button 2"  Background="hgradient|0:AoEnglish|1:Arsenic" CornerRadius="3"/>
+                               <Button Caption="Button 3"  Background="hgradient|0:DarkRed|1:Transparent" CornerRadius="0"/>
+                               <Button Caption="Button 4" Background="hgradient|0:DarkRed|1:Transparent" CornerRadius="8"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter/>
+       </HorizontalStack>
+       <GraphicObject CornerRadius="5" Height="10" Width="600" Background="vgradient|0:Transparent|0,5:White|1:Transparent"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/0.crow b/Samples/ShowCase/ui/Interfaces/Stack/0.crow
new file mode 100755 (executable)
index 0000000..e2ce6bb
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<VerticalStack MinimumSize="50,50" Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/0h.crow b/Samples/ShowCase/ui/Interfaces/Stack/0h.crow
new file mode 100755 (executable)
index 0000000..af596cb
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<HorizontalStack MinimumSize="50,50" Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/1.crow b/Samples/ShowCase/ui/Interfaces/Stack/1.crow
new file mode 100755 (executable)
index 0000000..4b89bea
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="60%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/1h.crow b/Samples/ShowCase/ui/Interfaces/Stack/1h.crow
new file mode 100755 (executable)
index 0000000..5fb0551
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="60%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/2.crow b/Samples/ShowCase/ui/Interfaces/Stack/2.crow
new file mode 100755 (executable)
index 0000000..2498ee3
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DimGrey" Margin="10" Width="90%" Height="100%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/2h.crow b/Samples/ShowCase/ui/Interfaces/Stack/2h.crow
new file mode 100755 (executable)
index 0000000..c72e9da
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="100%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/3.crow b/Samples/ShowCase/ui/Interfaces/Stack/3.crow
new file mode 100755 (executable)
index 0000000..7aa7c9e
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/3h.crow b/Samples/ShowCase/ui/Interfaces/Stack/3h.crow
new file mode 100755 (executable)
index 0000000..2acdd49
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Stack/4.crow b/Samples/ShowCase/ui/Interfaces/Stack/4.crow
new file mode 100755 (executable)
index 0000000..33d57de
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="20%">
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Width="100%" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+       </HorizontalStack>
+       <HorizontalStack Background="DimGrey" Margin="10" Width="Fit" Height="20%">
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Width="100%" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TabItem.template b/Samples/ShowCase/ui/Interfaces/TabItem.template
new file mode 100644 (file)
index 0000000..fd0f310
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<GenericStack Orientation="Vertical" Spacing="0"
+               Background="{./Background}"
+               MouseEnter="{/caption.Foreground=White}"
+               MouseLeave="{/caption.Foreground=Grey}">
+       <HorizontalStack Left="{./TabOffset}"
+               Name="TabTitle"
+               HorizontalAlignment="Left"
+               Height="{./TabHeight}"
+               Width="{./TabWidth}">
+               <Label Name="caption" Text="{./Caption}" Foreground="Grey" Width="Stretched"/>
+               <Label Text="{./ViewIndex}" Foreground="Green"/>
+               <Label Text="{./TabOffset}" Foreground="Red"/>
+               <Border CornerRadius="5" BorderWidth="1" Foreground="Transparent"  Height="12" Width="12"
+                                       MouseEnter="{Foreground=White}" MouseLeave="{Foreground=Transparent}">
+                       <Image Focusable="true" Name="Image" Margin="0" Width="Stretched" Height="Stretched" Path="#Crow.Icons.exit2.svg"
+                                MouseClick="./butCloseTabClick"/>
+               </Border>
+       </HorizontalStack>
+       <Container Margin="20">
+               <Container Background="DimGrey" Name="Content"/>
+       </Container>
+</GenericStack>
+
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/0.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/0.crow
new file mode 100755 (executable)
index 0000000..5b26740
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<Expandable Fit="true" Caption="Test expandable" Background="DimGrey">
+               <VerticalStack Margin="5" >
+                       <CheckBox Name="chk1" />
+                       <CheckBox Name="chk2" IsChecked="true"/>
+                       <CheckBox Name="chk3" />
+                       <CheckBox Name="chk4" />
+                       <HorizontalStack Fit="true" Margin="2" Background="SeaGreen">
+                               <Label Name="captionFps" Text="Fps:" Width="30" TextAlignment="Right"/>
+                               <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="Fit" TextAlignment="Center" Background="SeaGreen"/>
+                       </HorizontalStack>
+               </VerticalStack>
+</Expandable>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/6.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/6.crow
new file mode 100755 (executable)
index 0000000..641d58f
--- /dev/null
@@ -0,0 +1,21 @@
+<Expandable Width="Stretched"  Background="Grey">
+               <Expandable Width="Stretched" Background="LightBlue">
+                       <Expandable Width="Stretched" Background="Green">
+                               <Expandable Width="Stretched" Background="LimeGreen">
+                                       <Expandable Width="Stretched" Background="DimGrey">
+                                               <Expandable Width="Stretched" Background="Yellow">
+                                                       <Expandable Width="Stretched" Background="SeaGreen">
+                                                               <Expandable Width="Stretched" Background="Blue">
+                                                                       <Expandable Width="Stretched" Background="RoyalBlue">
+                                                                               <Expandable Width="Stretched" Background="Green">
+                                                                                       <Label Background="Red" Text="{fps}"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/7.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/7.crow
new file mode 100755 (executable)
index 0000000..99a7507
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<VerticalStack Height="Fit" Width="Fit">
+       <Label Width="Stretched"/>
+       <Expandable  Width="Fit" Background="Grey">
+               <Expandable Background="LightBlue">
+                       <Expandable Background="Green">
+                               <Expandable Background="LimeGreen">
+                                       <Expandable Background="DimGrey">
+                                               <Expandable Width="Stretched" Background="Yellow">
+                                                       <Expandable Background="SeaGreen">
+                                                               <Expandable Width="Stretched" Background="Blue">
+                                                                       <Expandable Width="Stretched" Background="RoyalBlue">
+                                                                               <Expandable Width="Stretched" Background="Green">
+                                                                                       <Label Background="Red" Text="{fps}"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testGroupBox.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testGroupBox.crow
new file mode 100755 (executable)
index 0000000..4858180
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!--<Container Background="vgradient|0:DarkGrey|1:DimGrey">-->
+       <GroupBox Fit="true" Background="vgradient|0:SteelBlue|1:Transparent"
+               Foreground="White">
+<!--           <Label/>-->
+       </GroupBox>
+<!--</Container>-->
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testMsgBox.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testMsgBox.crow
new file mode 100755 (executable)
index 0000000..d60c281
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<MessageBox Caption="message" Message="this is a message box"/>
+<!--   Ok="onMsgBoxOk"
+       Cancel="onMsgBoxCancel"/>-->
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testPopper.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testPopper.crow
new file mode 100755 (executable)
index 0000000..27da8ea
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <Border Fit="true" Margin="10">
+               <VerticalStack Width="150" Height="Fit">
+                       <RadioButton Caption="Left" IsChecked="true" Checked="change_alignment"/>
+                       <RadioButton Caption="Right" Checked="change_alignment"/>
+                       <RadioButton Caption="Top" Checked="change_alignment"/>
+                       <RadioButton Caption="Bottom" Checked="change_alignment"/>
+               </VerticalStack>
+       </Border>
+       <Widget Height="200"/>
+       <Popper Caption="TestPopper" Width="100" Background="DimGrey" PopDirection="{alignment}">
+               <Border Fit="True" Background="SteelBlue">
+                       <Image Fit="true" Path="#go.Images.Icons.tetra.png" Margin="10"/>
+                       <VerticalStack Fit="true" Margin="10" Background="CornflowerBlue">
+                               <CheckBox Name="chk1" Background="Red"/>
+                               <CheckBox Name="chk2" IsChecked="true"/>
+                               <CheckBox Name="chk3"/>
+                               <CheckBox Name="chk4"/>
+                               <HorizontalStack Fit="true" Margin="20">
+                                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" Background="SeaGreen"/>
+                               </HorizontalStack>
+                       </VerticalStack>
+               </Border>
+       </Popper>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTabView.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTabView.crow
new file mode 100644 (file)
index 0000000..e3717c8
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Group Height="90%" Width="95%">
+<VerticalStack >
+       <HorizontalStack Height="Fit">
+               <Label Text="Selected Tab:"/>
+               <Label Text="{../../tabview1.SelectedTab}"/>
+       </HorizontalStack>
+       <TabView Name="tabview1" Background="DimGrey" Orientation="Horizontal">
+               <TabItem Name="TabItem1" Caption="tab item 1" Background="DimGrey">
+                       <VerticalStack Margin="20">
+                               <CheckBox/>
+                               <CheckBox/>
+                               <CheckBox/>
+                               <CheckBox/>
+                       </VerticalStack>
+               </TabItem>
+               <TabItem Name="TabItem2" Caption="tab item 2" Background="DimGrey">
+                       <VerticalStack Height="Fit" Margin="10">
+                               <RadioButton Fit="true"/>
+                               <RadioButton/>
+                               <RadioButton/>
+                               <RadioButton/>
+                       </VerticalStack>
+               </TabItem>
+               <TabItem Name="TabItem3" Background="DimGrey" Caption="tab item 3">
+                       <Container Margin="5" CornerRadius="2" >
+                               <TextBox Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                       </Container>
+               </TabItem>
+               <TabItem Name="TabItem4" Background="DimGrey" Caption="tab item 4" Margin="0">
+                       <TextBox/>
+               </TabItem>
+       </TabView>
+       <Button Background="vgradient|0:DimGrey|1:Black" HorizontalAlignment="Right"
+               Caption="Add new tab" Width="Fit" Height="30" MouseDown="onAddTabButClick"/>
+</VerticalStack>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTabView2.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTabView2.crow
new file mode 100644 (file)
index 0000000..67b87b0
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<HorizontalStack Height="90%" Width="99%" Spacing="50">
+       <VerticalStack Width="40%">     
+               <HorizontalStack Height="Fit">
+                       <Label Text="Selected Tab:"/>
+                       <Label Text="{../../tabview1.SelectedTab}"/>
+               </HorizontalStack>
+               <TabView Name="tabview1" Background="DimGrey" Orientation="Horizontal" Margin="5" >
+                       <TabItem Name="TabItem1" Caption="tab-1.1" Background="DimGrey">
+                               <VerticalStack Margin="20">
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem2" Caption="tab-1.2" Background="DimGrey">
+                               <VerticalStack Height="Fit" Margin="10">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem3" Background="DimGrey" Caption="tab-1.3">
+                               <Container Margin="5" CornerRadius="2" >
+                                       <TextBox Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                               </Container>
+                       </TabItem>
+               </TabView>
+               <Button Background="vgradient|0:DimGrey|1:Black" HorizontalAlignment="Right"
+                       Caption="Add new tab" Width="Fit" Height="30" MouseDown="onAddTabButClick"/>    
+       </VerticalStack>
+       <VerticalStack Width="40%">     
+               <HorizontalStack Height="Fit">
+                       <Label Text="Selected Tab:"/>
+                       <Label Text="{../../tabview2.SelectedTab}"/>
+               </HorizontalStack>
+               <TabView Name="tabview2" Background="DimGrey" Orientation="Horizontal" >
+                       <TabItem Name="TabItem1" Caption="tab-2.1" Background="DimGrey">
+                               <VerticalStack Margin="20">
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem2" Caption="tab-2.2" Background="DimGrey">
+                               <VerticalStack Height="Fit" Margin="10">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem3" Background="DimGrey" Caption="tab-2.3">
+                               <Container Margin="5" CornerRadius="2" >
+                                       <TextBox Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                               </Container>
+                       </TabItem>
+               </TabView>
+               <Button Background="vgradient|0:DimGrey|1:Black" HorizontalAlignment="Right"
+                       Caption="Add new tab" Width="Fit" Height="30" MouseDown="onAddTabButClick2"/>   
+       </VerticalStack>
+</HorizontalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTreeView.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testTreeView.crow
new file mode 100755 (executable)
index 0000000..099ce66
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Border Margin="5" Height="90%" Width="50%">
+       <DirectoryView Name="dv" CurrentDirectory="/" Margin="1"/>
+</Border>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow.goml b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow.goml
new file mode 100755 (executable)
index 0000000..e42a5c9
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<Window Left="10" Top="10" Caption="Test window"
+               Width="250" Height="550" >
+       <VerticalStack Name="contentVSStack" Margin="10" Spacing="10" Background="0.4,0.4,0.4,0.4">
+               <Slider Name="slider" Height="12" Width="Stretched" CornerRadius="3"/>
+               <GroupBox Caption="test"  Height="Fit" Width="Stretched" Margin="5">
+                       <VerticalStack  Height="Fit" Width="Stretched" >
+                               <RadioButton  Caption="Radio 1" Background="Red" Width="Stretched"/>
+                               <RadioButton  Caption="Radio 2" IsChecked="true" />
+                               <RadioButton  Caption="Radio 3" />
+                               <RadioButton  Caption="Radio 1" Background="SkyBlue" Width="Stretched"/>
+                       </VerticalStack>
+               </GroupBox>
+               <HorizontalStack Width="Stretched" Height="Fit" Margin="10" CornerRadius="5" Background="SkyBlue">
+                       <RadioButton Width="80" Height="Fit"  Caption="Radio 2" IsChecked="true" />
+                       <Widget Width="Stretched"/>
+                       <RadioButton Width="80" Height="Fit" Caption="Radio 3" />
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Stretched" MinimumSize="10,40" Margin="0" CornerRadius="5"
+                               Background="vgradient|0:White|0.1:SteelBlue|0.9:SteelBlue|1:Transparent">
+                       <CheckBox Height="Fit" Width="80"/>
+                       <Widget Width="Stretched"/>
+                       <CheckBox Height="Fit" Width="80" IsChecked="true"/>
+               </HorizontalStack>
+               <Border Fit="true" CornerRadius="5" BorderWidth="1" >
+                       <Container Name="MainGrp" Background="0.5,0.5,0.5,0.4" Width="120" Fit="true"
+                               Margin="10" Focusable="True" >
+                                       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                                                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Clipping:" Width="50" TextAlignment="Right"/>
+                                                       <Label Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                                                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                                                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                                                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                                                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                       </VerticalStack>
+                       </Container>
+               </Border>
+               <HorizontalStack Fit="true" Background="RoyalBlue" Margin="3">
+                       <Widget Margin="10" Background="LimeGreen" Width="5" Height="5"/>
+                       <TextBox Font="droid, 16" Multiline="true" Text="this is a test\nmultiline" Margin="2"/>
+                       <Widget Margin="10" Background="LimeGreen" Width="5" Height="5"/>
+               </HorizontalStack>
+       </VerticalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow2.goml b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow2.goml
new file mode 100755 (executable)
index 0000000..cf88e8c
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Window Focusable="true" Caption="Measures" Width="30%" Height="Fit" MinimumSize="100,100">
+       <VerticalStack Width="90%" Height="Fit" Spacing="1" Margin="10">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="FpsLabel"/>
+                       <Label Text="{fps}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="FpsLabel"/>
+                       <Label Text="{fpsMin}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="FpsLabel"/>
+                       <Label Text="{fpsMax}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="FpsLabel"/>
+                       <Label Text="{update}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="FpsLabel"/>
+                       <Label Text="{layouting}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Clipping:" Style="FpsLabel"/>
+                       <Label Text="{clipping}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="FpsLabel"/>
+                       <Label Text="{drawing}" Style="FpsDisp"/>
+               </HorizontalStack>
+       </VerticalStack>
+</Window>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow3.goml b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/testWindow3.goml
new file mode 100755 (executable)
index 0000000..869615b
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<Window Left="10" Top="10" Caption="Test window" Width="200" Height="200" Background="0.5,0.5,0.5,0.8"
+       Focusable="True"  CornerRadius="20" MinimumSize="100,100" MaximumSize="500,500">
+       <Template>
+               <Container Margin="20" Name="Content" Height="{../HeightPolicy}" Width="{../WidthPolicy}" Background="0.5,0.5,0.5,0.5"/>
+       </Template>
+<!--   <Group Background="Green">-->
+               <Widget Height="50" Width="50" Background="Red" Margin="5"/>
+<!--           <Scrollbar Orientation="Vertical" Height="Stretched" Width="10" Background="Blue" Margin="0" HorizontalAlignment="Right"/>-->
+<!--   </Group>-->
+</Window>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedContainer/test_Listbox.crow b/Samples/ShowCase/ui/Interfaces/TemplatedContainer/test_Listbox.crow
new file mode 100755 (executable)
index 0000000..47adb8c
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!--<ListBox Data="{TestList}" Focusable="true"/>-->
+<Border Margin="50">
+       <VerticalStack >
+               <Label Text="{../ColorList.SelectedItem}" Background="DarkGreen"/>
+               <Label Text="{Hover}" Background="DarkGreen"/>
+               <Button Caption="Clear" Width="Stretched" MouseClick="OnClear"/>
+               <ListBox Name="ColorList" Data="{TestList}"  Width="200" Height="200" 
+                                        ItemTemplate="#Tests.Interfaces.colorItem.crow">                       
+               </ListBox>
+               <Button Caption="Load list" Width="Stretched" MouseClick="OnLoadList"/>
+       </VerticalStack>
+</Border>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedControl/testButton.crow b/Samples/ShowCase/ui/Interfaces/TemplatedControl/testButton.crow
new file mode 100755 (executable)
index 0000000..8911619
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Background="vgradient|0:DimGrey|1:Black">
+       <HorizontalStack Fit="True">
+               <Button Caption="but" MouseClick="onButClick"/>
+               <Button Caption="but" MouseClick="onButClick" Fit="true"/>
+               <Button Width="60" Height="40" MouseClick="onButClick"/>
+               <Button Caption="Long text button" MouseClick="onButClick"/>
+               <Button Font="droid, 20" Caption="Button"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedControl/testCheckbox.crow b/Samples/ShowCase/ui/Interfaces/TemplatedControl/testCheckbox.crow
new file mode 100755 (executable)
index 0000000..7c8438c
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Margin="100" Background="DimGrey" >
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedControl/testCombobox.crow b/Samples/ShowCase/ui/Interfaces/TemplatedControl/testCombobox.crow
new file mode 100755 (executable)
index 0000000..4363986
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Container Background="DimGrey" Width="300">
+       <ComboBox  Data="{TestList}" ItemTemplate="#Tests.Interfaces.colorItem.crow"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedControl/testItemTemplateTag.crow b/Samples/ShowCase/ui/Interfaces/TemplatedControl/testItemTemplateTag.crow
new file mode 100755 (executable)
index 0000000..b29be38
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<Border BorderWidth="2" Fit="true">
+       <VerticalStack Fit="true" Margin="5">
+               <ListBox Data="{TestList}" Background="0.5,0.5,0.5,0.7"
+                                        HorizontalAlignment="Center" Width="200" Height="200" Margin="5">
+                       <Template>
+                               <Border BorderWidth="1">
+                                       <HorizontalStack Margin="1">
+                                               <Scroller Name="scroller1" Margin="2">
+                                                       <VerticalStack Height="Fit" MinimumSize="10,10"
+                                                               Name="ItemsContainer" Margin="0" VerticalAlignment="Top"/>
+                                               </Scroller>
+                                               <ScrollBar Name="scrollbar1" Value="{²../scroller1.ScrollY}"
+                                                       LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30" CursorSize="{../scroller1.ChildHeightRatio}"
+                                                       Maximum="{../scroller1.MaxScrollY}" Orientation="Vertical" 
+                                                       Width="14" />
+                                       </HorizontalStack>
+                               </Border>
+                       </Template>
+                       <ItemTemplate DataType="Crow.Color">
+                               <HorizontalStack
+                                                       HorizontalAlignment="Left"
+                                                       Height="Fit" Width="200" Margin="1" Focusable="true"
+                                                       MouseEnter="{Background=hgradient|0:DarkRed|1:Transparent}"
+                                                       MouseLeave="{Background=Transparent}">
+                                       <Widget Height="12" Width="20" Background="{}" Margin="0" CornerRadius="3"/>
+                                       <Label Text="{}" Margin="0" Width="Stretched"/>
+                               </HorizontalStack>
+                       </ItemTemplate>
+               </ListBox>
+               <HorizontalStack Fit="true" HorizontalAlignment="Right">
+                       <Button Caption="Load list" MouseDown="OnLoadList"/>
+                       <Button Caption="Clear" MouseDown="OnClear"/>
+               </HorizontalStack>
+       </VerticalStack>
+</Border>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedControl/testRadioButton.crow b/Samples/ShowCase/ui/Interfaces/TemplatedControl/testRadioButton.crow
new file mode 100755 (executable)
index 0000000..a01d904
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<VerticalStack Width="200" Height="Fit" Margin="20" Background="DimGrey">
+       <RadioButton Caption="Radio1"/>
+       <RadioButton Caption="Radio2" IsChecked="true"/>
+       <RadioButton Caption="Radio3"/>
+       <RadioButton Caption="Radio4"/>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedControl/testScrollbar.crow b/Samples/ShowCase/ui/Interfaces/TemplatedControl/testScrollbar.crow
new file mode 100755 (executable)
index 0000000..f8c4a9a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Group Name="TopContainer" Width="400" Height="400"
+       Focusable="True" Background="Grey">
+       <ScrollBar Height="16" Orientation="Horizontal" Width="Stretched" Maximum="100"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedControl/testSpinner.crow b/Samples/ShowCase/ui/Interfaces/TemplatedControl/testSpinner.crow
new file mode 100755 (executable)
index 0000000..01d5301
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<VerticalStack Name="TopContainer" Width="400" Height="Fit"
+       Margin="20" Background="DarkGrey">
+
+       <HorizontalStack Fit="true" Margin="5" Background="SkyBlue">
+               <Spinner Name="sp1" Value="5" ValueChanged="onSpinnerValueChange"/>
+               <Spinner Value="5"/>
+               <Spinner Value="5"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedGroup/0.crow b/Samples/ShowCase/ui/Interfaces/TemplatedGroup/0.crow
new file mode 100755 (executable)
index 0000000..92cd224
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="File" Width="Fit">
+               <MenuItem Caption="New" />
+               <MenuItem Caption="Open"/>
+               <MenuItem Caption="Save"/>
+               <MenuItem Caption="Quit"/>
+       </MenuItem>
+       <MenuItem Caption="Edit" Name="edit" Width="Fit">
+               <MenuItem Caption="Cut"/>
+               <MenuItem Caption="Copy"/>
+               <MenuItem Caption="Paste"/>
+               <MenuItem Caption="Special" Name="special" Width="Fit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+               </MenuItem>
+               <MenuItem Caption="Special2" Name="special" Width="Fit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+               </MenuItem>
+       </MenuItem>
+       <MenuItem Caption="Help" Width="Fit">
+               <MenuItem Caption="About"/>
+               <MenuItem Caption="Help"/>
+       </MenuItem>
+</Menu>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedGroup/1.crow b/Samples/ShowCase/ui/Interfaces/TemplatedGroup/1.crow
new file mode 100755 (executable)
index 0000000..f47e7aa
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="File">
+               <MenuItem Caption="New"/>
+               <MenuItem Caption="Open"/>
+               <MenuItem Caption="Save"/>
+               <MenuItem Caption="Quit"/>
+       </MenuItem>
+</Menu>
diff --git a/Samples/ShowCase/ui/Interfaces/TemplatedGroup/2.crow b/Samples/ShowCase/ui/Interfaces/TemplatedGroup/2.crow
new file mode 100755 (executable)
index 0000000..8d25db5
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="Menu">
+               <MenuItem Caption="File">
+                       <MenuItem Caption="New"></MenuItem>
+                       <MenuItem Caption="Open"></MenuItem>
+                       <MenuItem Caption="Save"></MenuItem>
+                       <MenuItem Caption="Quit"></MenuItem>
+               </MenuItem>
+               <MenuItem Caption="Edit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+                       <MenuItem Caption="Special">
+                               <MenuItem Caption="Cut"/>
+                               <MenuItem Caption="Copy"/>
+                               <MenuItem Caption="Paste"/>
+                       </MenuItem>
+               </MenuItem>
+               <MenuItem Caption="Help">
+                       <MenuItem Caption="About"/>
+                       <MenuItem Caption="Help"/>
+               </MenuItem>
+       </MenuItem>
+</Menu>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/TmpExpandable.goml b/Samples/ShowCase/ui/Interfaces/TmpExpandable.goml
new file mode 100755 (executable)
index 0000000..9dddceb
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!--<VerticalStack Height="{../HeightPolicy}" Width="{../WidthPolicy}" MouseClick="../onMouseClick">
+       <Label Text="{../../Caption}" Width="{../../WidthPolicy}"/>
+       <Container Name="Content" Visible="false" Height="{../../HeightPolicy}" Width="{../../WidthPolicy}"/>
+</VerticalStack>-->
+<Group BorderWidth="1" Foreground="LightGray" 
+               MouseClick="../onMouseClick">
+       <VerticalStack>
+               <Label Text="{../../../Caption}"/>
+               <Container Name="Content" Visible="false"/>
+       </VerticalStack>
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Wrapper/1.1.crow b/Samples/ShowCase/ui/Interfaces/Wrapper/1.1.crow
new file mode 100755 (executable)
index 0000000..548aab3
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Vertical Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Vertical" Height="Fit" Width="90%" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Wrapper/1.crow b/Samples/ShowCase/ui/Interfaces/Wrapper/1.crow
new file mode 100755 (executable)
index 0000000..58c79ee
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Vertical Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Vertical" Height="Fit" Width="Fit" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Wrapper/2.1.crow b/Samples/ShowCase/ui/Interfaces/Wrapper/2.1.crow
new file mode 100755 (executable)
index 0000000..2a35289
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Horizontal Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Horizontal" Height="90%" Width="Fit" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Wrapper/2.2.crow b/Samples/ShowCase/ui/Interfaces/Wrapper/2.2.crow
new file mode 100755 (executable)
index 0000000..4621c14
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<Window Caption="Horizontal Wrapper" Width="50%" Height="50%">
+               <Wrapper HorizontalAlignment="Left" Orientation="Horizontal" Height="100%" Width="Fit" Margin="0" Background="MediumSeaGreen" Spacing="1" >
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50%" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50%" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50%" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50%" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50%" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50%" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+               </Wrapper>      
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/Wrapper/2.crow b/Samples/ShowCase/ui/Interfaces/Wrapper/2.crow
new file mode 100755 (executable)
index 0000000..c1f234e
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Horizontal Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Horizontal" Height="Fit" Width="Fit" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/basicTests/7.crow b/Samples/ShowCase/ui/Interfaces/basicTests/7.crow
new file mode 100755 (executable)
index 0000000..8d1e441
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<Window Title="Showcase" Height="90%" Width="90%">
+       <HorizontalStack >
+               <VerticalStack Width="33%" Margin="5">
+                       <GroupBox Caption="Performance" Height="Fit">
+                               <VerticalStack Width="90%" Height="Fit" Spacing="2" >
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Fps:" Style="FpsLabel"/>
+                                               <Label Text="{fps}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Min:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMin}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Max:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMax}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Update:" Style="FpsLabel"/>
+                                               <Label Text="{update}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Layouting:" Style="FpsLabel"/>
+                                               <Label Text="{layouting}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Clipping:" Style="FpsLabel"/>
+                                               <Label Text="{clipping}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Drawing:" Style="FpsLabel"/>
+                                               <Label Text="{drawing}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                               </VerticalStack>
+                       </GroupBox>
+                       <Label Width="Stretched" Margin="3" Background="Onyx"/>
+                       <TextBox Text="TextBox" Multiline="true" Margin="3"/>
+                       <HorizontalStack Height="Fit" Margin="5" Background="Onyx" CornerRadius="10">
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                               </VerticalStack>
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                               </VerticalStack>
+                       </HorizontalStack>
+                       <HorizontalStack Height="Fit" Margin="5">
+                               <Label Text="MouseEvents" Width="50%" Margin="3"
+                                       Background="Onyx"
+                                       Foreground="DimGray"
+                                       TextAlignment="Center"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGray}"
+                                       MouseDown="{Background=DarkRed}"
+                                       MouseUp="{Background=Onyx}"/>
+                               <Label Text="MouseEvents" Width="50%" Margin="3"
+                                       Background="Onyx"
+                                       Foreground="DimGray"
+                                       TextAlignment="Center"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGray}"
+                                       MouseDown="{Background=Mantis}"
+                                       MouseUp="{Background=Onyx}"/>
+                       </HorizontalStack>
+                       <GroupBox Caption="Templated controls" Height="Fit" Margin="5">
+                               <HorizontalStack Height="Fit">
+                                       <VerticalStack Width="50%">
+                                               <CheckBox Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                               <CheckBox  Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                               <CheckBox  Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                               <CheckBox  Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                       </VerticalStack>
+                                       <Splitter/>
+                                       <VerticalStack Width="50%">
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                       </VerticalStack>
+                               </HorizontalStack>
+                       </GroupBox>
+                       <Spinner Fit="true"/>
+               </VerticalStack>
+               <VerticalStack Width="33%" Margin="5" Spacing="5">
+                       <Expandable Background="DimGray">
+                               <Image Path="#Crow.Icons.crow.svg"/>
+                       </Expandable>
+                       <Popper Background="DimGray" PopDirection="Bottom">
+                               <Border Fit="True" Background="DimGray" CornerRadius="0" BorderWidth="1">
+                                       <Image Path="#Crow.Icons.crow.svg" Width="100" Height="100" Margin="10"
+                                               MouseEnter="{Background=LightGray}"
+                                               MouseLeave="{Background=Transparent}"/>
+                               </Border>
+                       </Popper>
+                       <Slider Height="10" Width="90%"/>
+                       <Container Height="Fit" Background="Onyx" Margin="2" CornerRadius="5">
+                               <ProgressBar Background="DimGray" Height="10" Value="50"/>
+                       </Container>
+                       <Image Path="#Crow.Icons.crow.svg" Width="60" Height="60" Background="LightGray" />
+                       <TabView Name="tabview1"
+                               Height="120" Orientation="Horizontal" Spacing="15">
+                               <TabItem Name="TabItem1" Caption="Tab 1" Margin="0">
+                                       <VerticalStack Fit="true">
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem2" Caption="Tab 2" Background="Gray">
+                                       <VerticalStack Fit="true">
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem2" Caption="Tab 3" Background="Gray">
+                                       <Container Margin="5" CornerRadius="2">
+                                               <TextBox Height="Stretched" Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                                       </Container>
+                               </TabItem>
+                       </TabView>
+                       <MessageBox Movable="false"/>
+               </VerticalStack>
+               <VerticalStack Width="33%" Margin="5">
+                       <Border Margin="5" Background="Onyx" Height="Fit">
+                               <Label Width="Stretched" Margin="1" Text="{../../dv.SelectedItem}"/>
+                       </Border>
+                       <Border Margin="5" Background="Onyx" Height="50%">
+                               <DirectoryView Name="dv" Root="./" Margin="1"/>
+                       </Border>
+                       <ListBox Data="{TestList}" Background="Onyx" Margin="5"
+                                        ItemTemplate="#Tests.Interfaces.colorItem.crow"
+                                        Template="#Crow.Templates.ScrollingListBox.goml"/>
+               </VerticalStack>
+       </HorizontalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/colorItem.crow b/Samples/ShowCase/ui/Interfaces/colorItem.crow
new file mode 100755 (executable)
index 0000000..30bfe3d
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Border Foreground="Transparent" Focusable="true" HorizontalAlignment="Left" Height="Fit" Width="200">
+       <HorizontalStack Margin="0"
+                               MouseEnter="{Background=hgradient|0:DarkRed|1:Transparent}"
+                               MouseLeave="{Background=Transparent}">
+               <Widget Height="12" Width="20" Background="{}" Margin="0" CornerRadius="3"/>
+               <Label Text="{}" Margin="0" Width="Stretched"/>
+       </HorizontalStack>
+</Border>
+
diff --git a/Samples/ShowCase/ui/Interfaces/colorItem2.crow b/Samples/ShowCase/ui/Interfaces/colorItem2.crow
new file mode 100755 (executable)
index 0000000..83239b3
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Border Foreground="Transparent" Focusable="true" HorizontalAlignment="Left" Height="Fit">
+       <HorizontalStack Margin="0"
+                               MouseEnter="{Background=CornflowerBlue}"
+                               MouseLeave="{Background=Transparent}">
+               <Widget Height="8" Width="14" Background="{}" Margin="0" CornerRadius="2"/>
+               <Label Text="{}" Margin="0" Width="Stretched" Font="mono, 8"/>
+       </HorizontalStack>
+</Border>
+
diff --git a/Samples/ShowCase/ui/Interfaces/itemTmp.goml b/Samples/ShowCase/ui/Interfaces/itemTmp.goml
new file mode 100755 (executable)
index 0000000..fadf5e6
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Border BorderWidth="3">
+       <Label Text="{Name}" Focusable="true" Width="Stretched" Height="Fit" Margin="0"
+                       MouseEnter="{Background=Red}"
+                       MouseLeave="{Background=Transparent}"
+       />
+</Border>
+
diff --git a/Samples/ShowCase/ui/Interfaces/log.xml b/Samples/ShowCase/ui/Interfaces/log.xml
new file mode 100755 (executable)
index 0000000..1039f7b
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Container Name="topContainer" HorizontalAlignment="Center" VerticalAlignment="Top"
+       Margin="2"
+       Width="600" Height="-1">
+       <Border Margin="2" BorderWidth="1" Background="0,6;0,6;0,6;0,6" Height="-1">
+               <Group Width="0" Name="logs">
+                       <VerticalStack Name="VerticalStack" Width="0" Focusable="False">
+                               <Label Name="line1" Width="0" Text="Line1" Margin="0"/>
+                               <Label Name="line2" Width="0" Text="Line2" Margin="0"/>
+                               <Label Name="line3" Width="0" Text="Line3" Margin="0"/>
+                               <Label Name="line4" Width="0" Text="Line4" Margin="0"/>
+                       </VerticalStack>
+                       <Button Name="btOk" Background="Gray" Fit="True"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseClick="BtOk_MouseClick">
+                               <Label Text="Ok" Margin="3" Foreground="White" />
+                       </Button>
+               </Group>
+       </Border>
+</Container>
+
diff --git a/Samples/ShowCase/ui/Interfaces/perfMsr.crow b/Samples/ShowCase/ui/Interfaces/perfMsr.crow
new file mode 100755 (executable)
index 0000000..22a62ea
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+
+       <VerticalStack Spacing="1" Height="Fit" Width="Stretched">
+               <HorizontalStack Background="DarkSlateGrey">
+                       <Label Text="{Name}" Width="Stretched" Font="doid bold, 10" Margin="2"/>
+                       <Button Caption="Reset" MouseClick="onResetClick" Height="Fit"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Current:" Style="FpsLabel"/>
+                       <Label Text="{current}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Minimum:" Style="FpsLabel"/>
+                       <Label Text="{minimum}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Mean:" Style="FpsLabel"/>
+                       <Label Text="{mean}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Maximum:" Style="FpsLabel"/>
+                       <Label Text="{maximum}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <Border Foreground="White" Width="Stretched" Height="60">
+                       <Trend Background="Black" NewValue="{current}" Minimum="0" Maximum="100"/>
+               </Border>
+<!--           <HorizontalStack>
+                       <Label Text="Total:" Style="FpsLabel"/>
+                       <Label Text="{total}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Cpt:" Style="FpsLabel"/>
+                       <Label Text="{cptMeasures}" Style="FpsDisp"/>
+               </HorizontalStack>-->
+       </VerticalStack>
+
diff --git a/Samples/ShowCase/ui/Interfaces/testMeter.goml b/Samples/ShowCase/ui/Interfaces/testMeter.goml
new file mode 100755 (executable)
index 0000000..2c840a8
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<AnalogMeter Width="Fit" Height="Fit" Background="White" Foreground="Black"  Value="{fps}" Minimum="Stretched" Maximum="100"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/testWindow.goml.sav b/Samples/ShowCase/ui/Interfaces/testWindow.goml.sav
new file mode 100755 (executable)
index 0000000..42b4b74
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--<Group>-->
+<Window Name="window1" Left="10" Top="10" Title="Test window" 
+               Width="250" Height="300" >
+       <VerticalStack Name="contentVSStack" Margin="10" Spacing="10">
+               <Slider Name="slider" Height="10" Width="0"/>
+
+               <HorizontalStack Width="0" Height="-1" Margin="10" Background="BlueCrayola">
+                       <Checkbox Height="-1" Width="80"/>
+                       <GraphicObject Width="0"/>
+                       <Checkbox Height="-1" Width="80"/>
+               </HorizontalStack>
+               <Groupbox Text="test"  Height="-1" Width="-1" Margin="5">
+                       <VerticalStack  Height="-1" Width="0" >
+                               <RadioButton  Caption="Radio 1" Background="Red" />
+                               <RadioButton  Caption="Radio 2" IsChecked="true" />
+                               <RadioButton  Caption="Radio 3" />
+                       </VerticalStack>
+               </Groupbox>
+<!--           <Checkbox Height="-1" Width="-1" Background="Red" Margin="0" VerticalAlignment="Center" HorizontalAlignment="Right"/>-->
+       </VerticalStack>
+</Window>
+<!--</Group>-->
+<!--           <Label Text="{fps}"  Background="DarkRed"/>
+               <Label Text="{fpsMin}"  />
+               <Label Text="{fpsMax}"  />-->
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/Interfaces/tmpDirItem.goml b/Samples/ShowCase/ui/Interfaces/tmpDirItem.goml
new file mode 100755 (executable)
index 0000000..41665d1
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+       <HorizontalStack Width="Fit" Height="Fit" Focusable="true"
+                       HorizontalAlignment="Left"
+                       MouseEnter="{Background=RoyalBlue}"
+                       MouseLeave="{Background=Transparent}">
+               <Image Width="16" Height="16" Path="#Tests.image.folder1.svg" SvgSub="{Attributes}"/>
+               <Label Text="{Name}" Width="Fit" Height="Fit" Margin="0"/>
+               <Label Text="{Attributes}" Width="Fit" Height="Fit" Margin="0"/>
+               <Label Text="{Extension}" Width="Fit" Height="Fit" Margin="0"/>
+       </HorizontalStack>
+
diff --git a/Samples/ShowCase/ui/Interfaces/tmpMembers.goml b/Samples/ShowCase/ui/Interfaces/tmpMembers.goml
new file mode 100755 (executable)
index 0000000..f48d8d6
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+       <HorizontalStack Width="Stretched" Height="Fit" Focusable="true" 
+                       MouseEnter="{Background=SkyBlue}"
+                       MouseLeave="{Background=Transparent}">
+               <Image Width="8" Height="8" Path="#Crow.Images.Icons.member.svg" SvgSub="{GetIcon}"/>
+               <Label Text="{Name}" Width="Stretched" Height="Fit" Margin="1"/>
+               <Label Text="{MemberType}" Width="Fit" Height="Fit" Margin="0"/>
+       </HorizontalStack>
+
diff --git a/Samples/ShowCase/ui/Interfaces/treeList.crow b/Samples/ShowCase/ui/Interfaces/treeList.crow
new file mode 100755 (executable)
index 0000000..ca59c17
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<VerticalStack Height="Fit" Name="List"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/0.crow b/Samples/ShowCase/ui/divers/0.crow
new file mode 100755 (executable)
index 0000000..e7cf3e2
--- /dev/null
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<Window Caption="Showcase" Height="90%" Width="90%">
+       <HorizontalStack >
+               <VerticalStack Width="30%" Margin="5">
+                       <GroupBox Caption="Performance" Height="Fit">
+                               <VerticalStack DataSource="{drawingMeasure}" Width="90%" Height="Fit" Spacing="2" >
+                                       <HorizontalStack Height="Fit" Tooltip="Frame per second">
+                                               <Label Text="Fps:" Style="FpsLabel"/>
+                                               <Label Text="{minimum}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Minimum Frame per second">
+                                               <Label Text="Min:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMin}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Maximum Frame per second">
+                                               <Label Text="Max:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMax}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Update loop duration">
+                                               <Label Text="Update:" Style="FpsLabel"/>
+                                               <Label Text="{update}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Layouting process duration">
+                                               <Label Text="Layouting:" Style="FpsLabel"/>
+                                               <Label Text="{layouting}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Clipping duration">
+                                               <Label Text="Clipping:" Style="FpsLabel"/>
+                                               <Label Text="{clipping}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Drawing:" Style="FpsLabel"/>
+                                               <Label Text="{drawing}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                               </VerticalStack>
+                       </GroupBox>
+                       <Label Width="Stretched" Margin="3" Background="DimGrey"/>
+                       <TextBox Text="TextBox" Multiline="true" Margin="3"/>
+                       <HorizontalStack Height="Fit" Margin="5" Background="DimGrey" CornerRadius="10">
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <CheckBox Fit="true" Caption="test"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true" IsChecked="true"/>
+                               </VerticalStack>
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true" IsChecked="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                               </VerticalStack>
+                       </HorizontalStack>
+                       <HorizontalStack Height="Fit" Margin="5">
+                               <Label Text="MouseEvents" Width="50%" Margin="3" Focusable="true"
+                                       Background="Jet"
+                                       Foreground="DimGrey"
+                                       TextAlignment="Center"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGrey}"
+                                       MouseDown="{Background=DarkRed}"
+                                       MouseClick="{Foreground=Green}"
+                                       MouseDoubleClick="{Foreground=Yellow}"
+                                       MouseUp="{Background=Jet}"/>
+                               <Label Text="MouseEvents" Width="50%" Margin="3"
+                                       Background="Jet"
+                                       Foreground="DimGrey"
+                                       TextAlignment="Center"
+                                       MouseClick="{Foreground=Green}"
+                                       MouseDoubleClick="{Foreground=Yellow}"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGrey}"
+                                       MouseDown="{Background=SeaGreen}"
+                                       MouseUp="{Background=DimGrey}"/>
+                       </HorizontalStack>
+                       <GroupBox Caption="Templated controls" Height="Fit" Margin="5">
+                               <HorizontalStack Height="Fit">
+                                       <VerticalStack Width="50%">
+                                               <CheckBox IsChecked="true" Style="CheckBox2"/>
+                                               <CheckBox Style="CheckBox2"/>
+                                               <CheckBox Style="CheckBox2"/>
+                                               <CheckBox Style="CheckBox2"/>
+                                       </VerticalStack>
+                                       <Splitter/>
+                                       <VerticalStack Width="50%">
+                                               <RadioButton Style="RadioButton2"/>
+                                               <RadioButton Style="RadioButton2"/>
+                                               <RadioButton Style="RadioButton2"/>
+                                               <RadioButton Style="RadioButton2"/>
+                                       </VerticalStack>
+                               </HorizontalStack>
+                       </GroupBox>
+                       <HorizontalStack Height="Fit">
+                               <Label Text="Spinner"/>
+                               <Spinner Fit="true"/>
+                       </HorizontalStack>
+                       <HorizontalStack Height="Fit">
+                               <Button Caption="Button"/>
+                               <Button Caption="Button" IsEnabled="false"/>
+                       </HorizontalStack>
+               </VerticalStack>
+               <Splitter/>
+               <VerticalStack Width="40%" Margin="5" Spacing="5">
+                       <Expandable>
+                               <Image Path="#Crow.Icons.crow.svg"/>
+                       </Expandable>
+                       <Popper>
+                               <Border Fit="True" Background="DimGrey" CornerRadius="0" BorderWidth="1">
+                                       <Image Path="#Crow.Icons.crow.svg" Width="100" Height="100" Margin="10"
+                                               MouseEnter="{Background=LightGrey}"
+                                               MouseLeave="{Background=Transparent}"/>
+                               </Border>
+                       </Popper>
+                       <Slider Height="10" Width="90%"/>
+                       <Container Height="Fit" Width="200" Background="DimGrey" Margin="2" CornerRadius="5">
+                               <ProgressBar Background="DimGrey" Height="10" Value="50"/>
+                       </Container>
+                       <Image Path="#Crow.Icons.crow.svg" Width="60" Height="60" Background="LightGrey" />
+<!--                   <TabView Name="tabview1"
+                               Height="120" Orientation="Horizontal" Spacing="15">
+                               <TabItem Name="TabItem1" Caption="Tab 1" Margin="0">
+                                       <VerticalStack Fit="true">
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem2" Caption="Tab 2" Background="Grey">
+                                       <VerticalStack Fit="true">
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem3" Caption="Tab 3" Background="Grey">
+                                       <Container Margin="5" CornerRadius="2">
+                                               <TextBox Height="Stretched" Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                                       </Container>
+                               </TabItem>
+                       </TabView>-->
+                       <MessageBox Movable="false"/>
+                       <ColorPicker SelectedColor="{²../go.Background}" Name="colorPicker" Margin="5" Fit="True" />
+                       <Widget Name="go" Width="100" Height="60" Background="{../../colorList.SelectedItem}"/>
+                       <Label Text="{../colorPicker.SelectedColor}"/>
+               </VerticalStack>
+               <Splitter/>
+               <VerticalStack Width="30%" Margin="5">
+<!--                   <Border Margin="5" Height="Fit">
+                               <Label Width="Stretched" Margin="1" Text="{../../dv.SelectedItem}"/>
+                       </Border>
+                       <Border Margin="5" Height="30%">
+                               <DirectoryView Name="dv" CurrentDirectory="/" Margin="1"/>
+                       </Border>
+                       <Splitter/>-->
+                       <ListBox Name="colorList" Data="{TestList}" Margin="5"
+                                        ItemTemplate="Interfaces/colorItem.crow"
+                                        Template="#Crow.ScrollingListBox.template"
+                                        />
+               </VerticalStack>
+       </HorizontalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/2.crow b/Samples/ShowCase/ui/divers/2.crow
new file mode 100755 (executable)
index 0000000..b4a06b6
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <TextBox Font="droid, 20" Text="test text box" Width="Stretched"/>
+       <HorizontalStack Margin="5" Fit="true" MouseEnter="{Background=White}" MouseLeave="{Background=Transparent}">
+               <Label Text="centered" Width="80" Height="30" Background="DarkBlue" TextAlignment="Center"/>
+               <Label Text="top left" Width="80" Height="30" Background="DarkBlue" TextAlignment="TopLeft"/>
+               <Label Text="top right" Width="80" Height="30" Background="DarkBlue" TextAlignment="TopRight"/>
+               <Label Text="right center" Width="80" Height="30" Background="DarkBlue" TextAlignment="Right"/>
+               <Label Text="bottom left" Width="80" Height="30" Background="DarkBlue" TextAlignment="BottomLeft"/>
+               <Label Text="bottom center" Width="80" Height="30" Background="DarkBlue" TextAlignment="Bottom"/>
+               <Label Text="bottom right" Width="80" Height="30" Background="DarkBlue" TextAlignment="BottomRight"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/3.crow b/Samples/ShowCase/ui/divers/3.crow
new file mode 100755 (executable)
index 0000000..a1f5e95
--- /dev/null
@@ -0,0 +1,377 @@
+<?xml version="1.0"?>
+<HorizontalStack Fit="true">   
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <ProgressBar CornerRadius="5" Background="DimGrey" Margin="1" Maximum="1000" Value="{fps}" Width="200" Height="15"/>
+               <HorizontalStack Fit="true">
+                       <Label Text="Memory:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{memory}" Font="droid,12" TextAlignment="Center"
+                               Background="vgradient|0:RoyalBlue|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/4.crow b/Samples/ShowCase/ui/divers/4.crow
new file mode 100755 (executable)
index 0000000..ca69662
--- /dev/null
@@ -0,0 +1,1695 @@
+<?xml version="1.0"?>
+<HorizontalStack>      
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/5.crow b/Samples/ShowCase/ui/divers/5.crow
new file mode 100755 (executable)
index 0000000..7e3df06
--- /dev/null
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<HorizontalStack Fit="true" Margin="5">
+       <VerticalStack Fit="true" Margin="2" Spacing="2">
+               <TextRun Text="text run test"/>
+<!--           <Label Text="label test"/>
+               <TextBox Text="text box test"/>
+               <Button Caption="test button"/>-->
+<!--           <CheckBox Caption="test checkbox"/>
+               <RadioButton Caption="test radiobutton"/>
+               <ComboBox/>
+               <Popper Caption="test popper">
+                       <Label Text="label test"/>
+               </Popper>
+               <Expandable Caption="test expandable">
+                       <Label Text="label test"/>
+               </Expandable>
+               <Border >
+                       <Label Text="border test" Margin="3"/>
+               </Border>
+               <GroupBox Caption="Group box" >
+                       <Label Text="border test" Margin="3"/>
+               </GroupBox>
+               <Container Fit="true" Background="DimGrey" Margin="3">
+                       <Widget Width="20" Height="20" Background="LightGrey"/>
+               </Container>-->
+<!--           <ProgressBar Height="10" Width="150" Background="DimGrey" Value="50" />
+               <Slider Value="5" Width="150" Height="10"/>
+               <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="150"/>
+               <Spinner Value="100"/>-->
+       </VerticalStack>
+<!--   <VerticalStack Width="150" Height="Fit" Margin="2" Spacing="2">
+               <TextRun Text="text run test" Width="Stretched"/>
+               <Label Text="label test" Width="Stretched"/>
+               <TextBox Text="text box test" Width="Stretched"/>
+               <Button Caption="test button" Width="Stretched"/>
+               <CheckBox Caption="test checkbox" Width="Stretched"/>
+               <RadioButton Caption="test radiobutton" Width="Stretched"/>
+               <ComboBox Width="Stretched"/>
+               <Popper Caption="test popper" Width="Stretched">
+                       <Label Text="label test"/>
+               </Popper>
+               <Expandable Caption="test expandable" Width="Stretched">
+                       <Label Text="label test"/>
+               </Expandable>
+               <Border  Width="Stretched">
+                       <Label Text="border test" Margin="3"/>
+               </Border>
+               <GroupBox Caption="Group box"  Width="Stretched">
+                       <Label Text="border test" Margin="3"/>
+               </GroupBox>
+               <Container Height="Fit"  Width="Stretched" Background="DimGrey" Margin="3">
+                       <Widget Width="20" Height="20" Background="LightGrey"/>
+               </Container>
+               <ProgressBar Height="10" Width="Stretched" Background="DimGrey" Value="50" />
+               <Slider Value="5" Width="Stretched" Height="10"/>
+               <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="Stretched"/>
+               <Spinner Value="100"  Width="Stretched"/>
+       </VerticalStack>-->
+</HorizontalStack>
+<!--<HorizontalStack Fit="true" Background="RoyalBlue" Margin="5">
+       <Widget Background="Red" Width="30" Height="20"/>
+       <Spinner Maximum="10000000000" SmallIncrement="10" Value="0"/>
+       <Widget Background="Green" Width="30" Height="20"/>
+</HorizontalStack>-->
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/6.crow b/Samples/ShowCase/ui/divers/6.crow
new file mode 100755 (executable)
index 0000000..f537a71
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Background="DimGrey" Margin="5">
+<!--   <RadioButton/>-->
+       <Label Text="a" Width="Stretched" Background="Red"/>
+       <Label Text="{fps}" HorizontalAlignment="Right" Background="LimeGreen"/>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/divers/clip0.crow b/Samples/ShowCase/ui/divers/clip0.crow
new file mode 100755 (executable)
index 0000000..0dee2ef
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Container Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=Grey}"
+               MouseLeave="{Background=LimeGreen}">
+       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="false"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+ </Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/clip1.crow b/Samples/ShowCase/ui/divers/clip1.crow
new file mode 100755 (executable)
index 0000000..bc4c927
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<Container Fit="true" Margin="20" Background="SkyBlue" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=LightGrey}"
+               MouseLeave="{Background=SkyBlue}">
+               <Container Fit="true" Margin="20" Background="Red" CacheEnabled="true"
+                       HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                       MouseEnter="{Background=White}"
+                       MouseLeave="{Background=Red}">
+                       <Container Fit="true" Margin="20" Background="Yellow" CacheEnabled="false"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseEnter="{Background=Blue}"
+                               MouseLeave="{Background=Yellow}">
+                               <Container Margin="50" Background="LimeGreen" CacheEnabled="true"
+                                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                                               MouseEnter="{Background=Grey}"
+                                               MouseLeave="{Background=LimeGreen}">
+                                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                                               MouseEnter="{Background=DimGrey}"
+                                               MouseLeave="{Background=RoyalBlue}" 
+                                               Margin="1" Text="{drawing}" Background="RoyalBlue"/>
+                               </Container>
+                       </Container>
+               </Container>
+ </Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/clip2.crow b/Samples/ShowCase/ui/divers/clip2.crow
new file mode 100755 (executable)
index 0000000..9292150
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<Group Fit="true" Margin="50" Background="Yellow" CacheEnabled="true"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=DimGrey}"
+               MouseLeave="{Background=Yellow}">
+<Group Width="300" Height="200" Margin="50" Background="LimeGreen" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=Grey}"
+               MouseLeave="{Background=LimeGreen}">
+       <Label Left="10" HorizontalAlignment="Right" VerticalAlignment="Center" CacheEnabled="true"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+ </Group>
+ </Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/clip3.crow b/Samples/ShowCase/ui/divers/clip3.crow
new file mode 100755 (executable)
index 0000000..82a9888
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<Group Fit="true" Margin="50" Background="Yellow" CacheEnabled="true"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=DimGrey}"
+               MouseLeave="{Background=Yellow}">
+       <HorizontalStack Fit="true">
+               <VerticalStack Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseEnter="{Background=Grey}"
+                               MouseLeave="{Background=LimeGreen}">
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{fps}" Background="RoyalBlue"/>
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+                </VerticalStack>
+               <VerticalStack Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseEnter="{Background=Grey}"
+                               MouseLeave="{Background=LimeGreen}">
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{fpsMax}" Background="RoyalBlue"/>
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{fpsMin}" Background="RoyalBlue"/>
+                </VerticalStack>
+       </HorizontalStack>
+ </Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/clip4.crow b/Samples/ShowCase/ui/divers/clip4.crow
new file mode 100755 (executable)
index 0000000..5caaf77
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<Border Fit="true" BorderWidth="2"  >
+<Scroller CornerRadius="2" Height="200" Width="300" Background="DimGrey" Margin="2">
+       <VerticalStack Margin="10" VerticalAlignment="Top" Fit="true" Background="vgradient|0:RoyalBlue|1:Black" >
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 1"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 2"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 3"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 4"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 5"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 6"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 7"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 8"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 9"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 10"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 11"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 12"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 13"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 14"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 15"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 16"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 17"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 18"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 19"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 20"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 21"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 22"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 23"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 24"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 25"/>
+       </VerticalStack>
+</Scroller>
+</Border>
+<!--<VerticalStack Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=Grey}"
+               MouseLeave="{Background=LimeGreen}">
+
+               <CheckBox Margin="20" Background="RoyalBlue"/>
+               <CheckBox/>
+               <CheckBox/>
+               <CheckBox/>
+               <CheckBox/>
+               <RadioButton/>
+               <RadioButton/>
+               <RadioButton/>
+               <RadioButton/>
+               <RadioButton/>
+               <CheckBox/>
+
+       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{fps}" Background="RoyalBlue"/>
+       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+ </VerticalStack>-->
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/colorPicker.crow b/Samples/ShowCase/ui/divers/colorPicker.crow
new file mode 100755 (executable)
index 0000000..afdef14
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <ColorPicker SelectedColor="{²../go.Background}" Name="colorPicker" Background="DimGrey" Margin="5" Fit="True" />
+       <Widget Name="go" Width="100" Height="60" Background="DarkBlue"/>
+       <Widget Name="go" Width="100" Height="60" Background="{../colorPicker.SelectedColor}"/>
+       <Label Text="{../colorPicker.SelectedColor}"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/fps.crow b/Samples/ShowCase/ui/divers/fps.crow
new file mode 100755 (executable)
index 0000000..1d515a1
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<Border Fit="true" CornerRadius="5" BorderWidth="1">
+       <Container Name="MainGrp" Background="0.5,0.5,0.5,0.4" Width="120" Fit="true"
+               Margin="10" Focusable="True" >
+                       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+                               <HorizontalStack Fit="true">
+                                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Name="labUpdate" Text="{update}" Font="droid,12" Background="SeaGreen" Width="50" TextAlignment="Center"/>
+                               </HorizontalStack>
+                               <HorizontalStack Fit="true">
+                                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" Background="SeaGreen"/>
+                               </HorizontalStack>
+                               <HorizontalStack Fit="true">
+                                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center" Background="SeaGreen"/>
+                               </HorizontalStack>
+                               <HorizontalStack Fit="true">
+                                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Text="{fpsMax}" Font="droid , 12" Background="SeaGreen" Width="50" TextAlignment="Center"/>
+                               </HorizontalStack>
+                       </VerticalStack>
+       </Container>
+</Border>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/perfMeasures.crow b/Samples/ShowCase/ui/divers/perfMeasures.crow
new file mode 100755 (executable)
index 0000000..d2d5138
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Window Focusable="true" Caption="Measures" Width="30%" Height="300" MinimumSize="100,100">
+       <ListBox Data="{PerfMeasures}"
+               ItemTemplate="#ui.perfMsr.crow"/>
+</Window>
diff --git a/Samples/ShowCase/ui/divers/test1.1.crow b/Samples/ShowCase/ui/divers/test1.1.crow
new file mode 100755 (executable)
index 0000000..e6f8e2a
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<Group Name="TopGroup" Width="500" Height="400" Margin="5"
+       Focusable="True" Background="Yellow">
+       <Group Name="InnerGroup" Width="Fit" Height="Fit" Margin="50" 
+               VerticalAlignment="Top" HorizontalAlignment="Left"
+               Focusable="True" Background="Green">
+               <Image VerticalAlignment="Bottom"                       
+                       Name="PhaseOverlay1" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+               <Image Top="100"                
+                       Name="PhaseOverlay2" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+       </Group>
+       <Image VerticalAlignment="Center" HorizontalAlignment="Right"
+               Name="PhaseOverlay0" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+
+</Group>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/test1.2.crow b/Samples/ShowCase/ui/divers/test1.2.crow
new file mode 100755 (executable)
index 0000000..00fb7d2
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<Container Background="Green" Height="400" Width="400">
+<VerticalStack Margin="10" Background="DarkBlue" Height="Fit" Width="Stretched">
+       <Label Text="label11" Width="Stretched"/>
+       <Label Text="label21"/>
+       <HorizontalStack Width="Fit" Height="Fit" Margin="5"
+               Focusable="True" Background="Blue">
+               <Label Text="label12"/>
+               <Label Text="label22"/>
+               <Label Text="label32"/>
+               <Label Text="label42"/>
+               <Label Text="label52"/>
+       </HorizontalStack>
+       <Label Text="label33" Background="Green" Width="Stretched"/>
+       <Button/>
+       <Label Text="label43"/>
+       <Label Text="label53"/>
+
+</VerticalStack>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/test1.crow b/Samples/ShowCase/ui/divers/test1.crow
new file mode 100755 (executable)
index 0000000..74da472
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<Container Name="TopContainer" Width="400" Height="350"
+       Margin="20" Focusable="True" Background="Yellow">
+       <Container Name="MiddleContainer" Width="50%" Height="Stretched"
+               Margin="20" Focusable="True" Background="Green">
+                       <Image VerticalAlignment="Bottom"                       
+                               Name="PhaseOverlay" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+       </Container>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/test2WayBinding.crow b/Samples/ShowCase/ui/divers/test2WayBinding.crow
new file mode 100755 (executable)
index 0000000..cf76f72
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <CheckBox IsChecked="{²BoolVal}"/>
+       <CheckBox Caption="second" IsChecked="{²BoolVal}"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testBind0.crow b/Samples/ShowCase/ui/divers/testBind0.crow
new file mode 100755 (executable)
index 0000000..d8991c7
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <TextBox Text="{Datas}" Width="100" />
+       <Button Text="Set Text to Null" MouseClick="onSetDataToNull"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testCtxMenu.crow b/Samples/ShowCase/ui/divers/testCtxMenu.crow
new file mode 100755 (executable)
index 0000000..5fd6072
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Widget Margin="10" Width="50%" Height="50%" Focusable="true"
+               Background="hgradient|0:Red|0.25:Blue|0.5:Green|0.75:Yellow|1:Red"
+               MinimumSize="50,50" ContextCommands="{Commands}"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testDisable.crow b/Samples/ShowCase/ui/divers/testDisable.crow
new file mode 100644 (file)
index 0000000..68d1ceb
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" VerticalAlignment="Top" Background="0.7,0.7,0.7,0.5"
+       Margin="10" CornerRadius="10" ClipToClientRect="false">
+       <Label Font="20" Text="Enable / Disable test"/>
+       <Label Text="{fps}" IsEnabled="false" Font="30"/>
+       <Label Text="{fps}" IsEnabled="true" Font="30"/>
+               <Label Text="{fps}" IsEnabled="false" Font="30" Background="SeaGreen"/>
+       <Label Text="{fps}" IsEnabled="true" Font="30" Background="SeaGreen"/>
+       <Button Caption="Button" IsEnabled="true" Background="Grey"/>
+       <Button Caption="Button" IsEnabled="false" Background="Grey"/>
+       <Button Caption="Button" IsEnabled="true" />
+       <Button Caption="Button" IsEnabled="false" />
+       <Spinner Fit="true"/>
+       <Spinner IsEnabled="false" Fit="true"/>
+       <CheckBox/>
+       <CheckBox IsEnabled="false"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testFileDialog.crow b/Samples/ShowCase/ui/divers/testFileDialog.crow
new file mode 100644 (file)
index 0000000..868baf6
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<FileDialog Caption="Open File" CurrentDirectory="/" SearchPattern="*.*"/>
+
diff --git a/Samples/ShowCase/ui/divers/testFocus.crow b/Samples/ShowCase/ui/divers/testFocus.crow
new file mode 100755 (executable)
index 0000000..1f26263
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <Menu>
+               <MenuItem Caption="File" Width="Fit">
+                       <MenuItem Command="{CMDTest}"/>
+                       <MenuItem Caption="Open"/>
+                       <MenuItem Caption="Save"/>
+                       <MenuItem Caption="Quit"/>
+               </MenuItem>
+               <MenuItem Caption="Edit" Name="edit" Width="Fit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+                       <MenuItem Caption="Special" Name="special" Width="Fit">
+                               <MenuItem Caption="Cut"/>
+                               <MenuItem Caption="Copy"/>
+                               <MenuItem Caption="Paste"/>
+                       </MenuItem>
+                       <MenuItem Caption="Special2" Name="special" Width="Fit">
+                               <MenuItem Caption="Cut"/>
+                               <MenuItem Caption="Copy"/>
+                               <MenuItem Caption="Paste"/>
+                       </MenuItem>
+               </MenuItem>
+               <MenuItem Caption="Help" Width="Fit">
+                       <MenuItem Caption="About"/>
+                       <MenuItem Caption="Help"/>
+               </MenuItem>
+       </Menu>
+       <HorizontalStack Height="Fit">
+               <Label Text="Hover:" Width="50" Foreground="Grey"/>
+               <Label Text="{HoverWidget}"/>
+       </HorizontalStack>
+       <HorizontalStack Height="Fit">
+               <Label Text="Focus:" Width="50" Foreground="Grey"/>
+               <Label Text="{FocusedWidget}"/>
+       </HorizontalStack>
+       <HorizontalStack Height="Fit">
+               <Label Text="Active:" Width="50" Foreground="Grey"/>
+               <Label Text="{ActiveWidget}"/>
+       </HorizontalStack>
+       <Container Fit="true" Margin="50" Background="SlateGrey">
+               <Label Text="MouseEvents" Margin="3" Focusable="true" Fit="true"
+                       Background="Jet"
+                       Foreground="DimGrey"
+                       TextAlignment="Center"
+                       MouseEnter="{Foreground=White}"
+                       MouseLeave="{Foreground=DimGrey}"
+                       MouseDown="{Background=DarkRed}"
+                       MouseClick="{Foreground=Green}"
+                       MouseDoubleClick="{Foreground=Yellow}"
+                       MouseUp="{Background=Jet}"/>
+       </Container>
+       <TextBox Width="300" Margin="10"/>
+       <Slider Width="300" Height="12"/>
+       <ComboBox Data="{TestList}" Width="120">
+               <ItemTemplate DataType="Crow.Color">
+                       <HorizontalStack
+                                               HorizontalAlignment="Left"
+                                               Height="Fit" Width="200" Margin="1" Focusable="true"
+                                               MouseEnter="{Background=hgradient|0:DarkRed|1:Transparent}"
+                                               MouseLeave="{Background=Transparent}">
+                               <Widget Height="12" Width="20" Background="{}" Margin="0" CornerRadius="3"/>
+                               <Label Text="{}" Margin="0" Width="Stretched"/>
+                       </HorizontalStack>
+               </ItemTemplate>
+       </ComboBox>
+       <HorizontalStack Height="Fit" Margin="1" Background="DimGrey" Width="200">
+                               <VerticalStack Spacing="2" Width="50%">
+                                       <CheckBox Caption="test" MouseEnter="{Background=Blue}" MouseLeave="{Background=Transparent}"/>
+                                       <CheckBox />
+                                       <CheckBox />
+                                       <CheckBox IsChecked="true"/>
+                               </VerticalStack>
+                               <VerticalStack Spacing="2" Width="50%">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true" IsChecked="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                               </VerticalStack>
+                       </HorizontalStack>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/divers/testIMLContainer.crow b/Samples/ShowCase/ui/divers/testIMLContainer.crow
new file mode 100644 (file)
index 0000000..2ba5f2c
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<IMLContainer Path="Interfaces/Divers/colorPicker.crow"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testImage.crow b/Samples/ShowCase/ui/divers/testImage.crow
new file mode 100755 (executable)
index 0000000..ccdd87c
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED PROPORTIONNAL" Width="150"/>
+               <Image Width="10%" Height="Fit" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg"/>
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED NOT PROPORTIONNAL" Width="150"/>
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="UNSCALED" Width="150"/>
+               <Image Scaled="false" Background="Blue" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED PROPORTIONNAL" Width="150"/>
+               <Image Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image Background="Blue" Width="50" Height="100" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Background="Blue" Width="100" Height="50" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Width="100" Height="50" Path="#Crow.Icons.tetra.png"/>
+               <Image Background="Blue" Width="50" Height="Fit" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Crow.Icons.tetra.png"/>
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED NOT PROPORTIONNAL" Width="150"/>
+               <Image KeepProportions="false" Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="50" Height="100" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="UNSCALED" Width="150"/>
+               <Image Scaled="false" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+       </HorizontalStack>
+       <HorizontalStack Width="Fit" Height="100" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Image Background="Blue" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="White" Path="#Tests.image.crow0.svg" />
+               <Image Background="White" Width="20" Height="10" Path="#Tests.image.crow0.svg" />
+               <Image Margin="1" Background="White" Width="20" Height="10" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testMenu.crow b/Samples/ShowCase/ui/divers/testMenu.crow
new file mode 100755 (executable)
index 0000000..0882244
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="File" Width="Fit">
+               <MenuItem Command="{CMDTest}"/>
+       </MenuItem>
+</Menu>
diff --git a/Samples/ShowCase/ui/divers/testOutOfClipUpdate.crow b/Samples/ShowCase/ui/divers/testOutOfClipUpdate.crow
new file mode 100755 (executable)
index 0000000..22523b8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Container Width="200" Height="100" Background="DimGrey" Margin="5">
+       <Container Width="Stretched" Height="800" Background="DarkBlue">
+               <Label Text="{fps}" Background="RoyalBlue" VerticalAlignment="Center"/>
+       </Container>
+</Container>
diff --git a/Samples/ShowCase/ui/divers/testPropLess.crow b/Samples/ShowCase/ui/divers/testPropLess.crow
new file mode 100755 (executable)
index 0000000..42282c1
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<Label Margin="50" MinimumSize="10,10" Background="DimGrey" Text="{PropertyLessBinding}"/>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testShape.crow b/Samples/ShowCase/ui/divers/testShape.crow
new file mode 100644 (file)
index 0000000..d1f9f3c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Container Fit="true" Background="Red" Tooltip="test tooltip" >
+       <Shape Foreground="Transparent" Background="DimGrey" Path="M 5.5,0.5 L 10.5,10.5 L 0.5,10.5 Z"
+               MouseEnter="{Background=hgradient|0:DimGrey|0.5:RoyalBlue|1:Black}"
+               MouseLeave="{Background=DimGrey}"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testStacks.crow b/Samples/ShowCase/ui/divers/testStacks.crow
new file mode 100755 (executable)
index 0000000..99279cd
--- /dev/null
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<Window Width="500" Height="300" MinimumSize="50,50">
+<HorizontalStack Margin="5" Background="DimGrey">
+       <VerticalStack Width="200" Margin="5" Background="Grey">
+               <VerticalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </VerticalStack>
+               <VerticalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue" Height="Stretched"/>
+               </VerticalStack>
+               <HorizontalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+                       <HorizontalStack Width="Stretched" Height="Stretched" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="Stretched" Height="Stretched" Margin="5" Background="Grey">
+               <VerticalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </VerticalStack>
+               <VerticalStack Width="Stretched" Height="Stretched" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun TextAlignment="Center" Background="SkyBlue" Width="Stretched" Height="Stretched"/>
+               </VerticalStack>
+               <HorizontalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+                       <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="Fit" Margin="5" Background="Grey">
+               <VerticalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue" HorizontalAlignment="Left"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </VerticalStack>
+               <VerticalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue" Height="Stretched"/>
+               </VerticalStack>
+               <HorizontalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+                       <HorizontalStack Width="Stretched" Height="Stretched" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testTextBox.crow b/Samples/ShowCase/ui/divers/testTextBox.crow
new file mode 100755 (executable)
index 0000000..d0fe0af
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<VerticalStack Background="SteelBlue" Fit="true">
+       <HorizontalStack Fit="true">
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="TopLeft"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Top"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="TopRight"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Left"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Center"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Right"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="BottomLeft"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Bottom"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="BottomRight"/>
+       </HorizontalStack>
+       <HorizontalStack Fit="true">
+               <TextBox Background="DarkGrey" Height="30" Width="70" TextAlignment="Top" HorizontalStretch="true" Text="TopStretch"/>
+               <TextBox Background="DarkGrey" Height="30" Width="60" TextAlignment="Center" HorizontalStretch="true" Text="HorizontalStretch" />
+               <TextBox Background="DarkGrey" Height="30" Width="60" TextAlignment="Bottom" HorizontalStretch="true" Text="BottomStretch"/>
+               <TextBox Background="DarkGrey" Height="10" Width="70" TextAlignment="Left" VerticalStretch="true" Text="LeftStretch"/>
+               <TextBox Background="DarkGrey" Height="10" Width="70" TextAlignment="Center" VerticalStretch="true" Text="VerticalStretch"/>
+               <TextBox Background="DarkGrey" Height="10" Width="70" TextAlignment="Right" VerticalStretch="true" Text="RightStretch"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" HorizontalStretch="true" VerticalStretch="true" Text="Fit"/>
+       </HorizontalStack>      
+       <TextBox Name="tb" Multiline="true" Font="droid,16" Margin="5" Text="A\nBB\nCCC\nDDDD"/>
+       <TextBox Multiline="true" Font="droid,16" Name="tb5" Margin="5" Text="{../tb.SelectedText}"/>
+<!--   <TextBox Font="droid,10" Name="tb1" Margin="5" Text="this is a test of a text box"/>
+       <TextBox Width="300" Height="35" Text="this is a test of a text box"/>-->
+       <TextBox Font="droid,10" Name="tb2" Margin="0" Text="this is a test of a text box"/>
+       <TextBox Font="droid,10" Name="tb3" Margin="5" Text="this is a test of a text box"/>
+       <TextBox Font="droid,10" Name="tb4" Margin="5" Text="this is a test of a text box"/>
+       <TextBox Font="droid,10" Name="tb5" Margin="20" Text="this is a test of a text box"/>
+       <TextBox Multiline="true" Font="droid,10" Name="tb6" Margin="5" Text="this is a test of a text box\nthis is a test of a text box"/>
+       <TextBox Multiline="true" Font="droid,10" Name="tb7" Margin="1" TextAlignment="Center"
+               Text="this is a test of a text box\nthis is a test\nthis is a test when line are centered"/>
+       <TextBox Multiline="true" Font="droid,10" Name="tb8" Margin="1" TextAlignment="Center"
+               Text="this is a test of a text box\n\n\nthis is a test\nthis is a test when line are centered"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/divers/testVisibility.crow b/Samples/ShowCase/ui/divers/testVisibility.crow
new file mode 100755 (executable)
index 0000000..9f9464c
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Container Margin="20" Background="Red" >
+       <Container Margin="20" Background="Green" MouseDown="{../go1.Visible=True}" >
+               <Widget Name="go1" Margin="20" Background="DimGrey" Visible="false" MouseDown="{Visible=false}"
+                       MouseEnter="{Background=Blue}"
+                       MouseLeave="{Background=DimGrey}"/>
+       </Container>
+</Container>
diff --git a/Samples/ShowCase/ui/divers/test_stack.crow b/Samples/ShowCase/ui/divers/test_stack.crow
new file mode 100755 (executable)
index 0000000..044fd7f
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DarkBlue" Height="300" Width="200">
+<!--   <Label Text="label11" Width="Stretched" Background="Green"/>
+       <Label Text="label21"/>-->
+       <HorizontalStack Width="Fit" Height="Fit" Margin="5"
+               Focusable="True" Background="Blue">
+
+               <Label Text="label12"/>
+               <VerticalStack Background="Red" Fit="true">
+                       <Label Text="label99"/>
+                       <Label Text="label999"/>
+               </VerticalStack>
+               <Label Text="label22"/>
+<!--           <Label Text="label32"/>
+               <Label Text="label42"/>
+               <Label Text="label52"/>-->
+       </HorizontalStack>
+<!--   <Label Text="label33" Background="Green" Width="Stretched"/>-->
+<!--   <Label Text="label43"/>-->
+<!--   <Border Margin="10">
+               <Label Text="label53" Background="Red" Height="Stretched" CornerRadius="10"/>
+       </Border>-->
+       <Label Text="label43"/>
+       <Label Text="label43"/>
+</VerticalStack>
diff --git a/Samples/ShowCase/ui/divers/welcome.crow b/Samples/ShowCase/ui/divers/welcome.crow
new file mode 100644 (file)
index 0000000..fa6da1e
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<Border BorderStyle="Sunken" Fit="true" Background="0.7,0.7,0.7,0.5" CornerRadius="10">
+       <VerticalStack Margin="20">
+               <Image Path="#Crow.Icons.crow.svg"/>
+<!--           <Label Font="Times bold, 60" Text="C.R.O.W"/>-->
+               <HorizontalStack Fit="true" DataSource="{CrowVersion}" Spacing="0">
+                       <Label Foreground="Black" Font="mono, 12" Text="version: "/>            
+                       <Label Foreground="Black" Font="mono, 12" Text="{Major}"/>              
+                       <Label Foreground="Black" Font="mono, 12" Text="."/>
+                       <Label Foreground="Black" Font="mono, 12" Text="{Minor}"/>
+                       <Label Foreground="Black" Font="mono, 12" Text="."/>
+                       <Label Foreground="DimGrey" Font="mono, 12" Text="{Build}"/>
+               </HorizontalStack>
+               <Widget Height="30"/>
+               <Label Font="20" Text="Press &lt;F2&gt; and &lt;F3&gt; to cycle into the examples"/>
+               <Label Font="20" Text="Those are basic tests used to validate changes,"/>
+               <Widget Height="30"/>
+               <Label Foreground="DimGrey" Font="20" Text="&lt;F5&gt; => File dialog example"/>
+               <Label Foreground="DimGrey" Font="20" Text="&lt;F6&gt; => Window example"/>
+       </VerticalStack>
+</Border>
\ No newline at end of file
diff --git a/Samples/ShowCase/ui/helloworld.crow b/Samples/ShowCase/ui/helloworld.crow
new file mode 100644 (file)
index 0000000..1d1a351
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Window Caption="Hello World" Icon="#Crow.Icons.crow.svg" Width="40%" Height="40%" CornerRadius="5">
+    <VerticalStack>
+        <Label Text="Hello World" Font="mono, 20"/>
+        <Image Path="#Crow.Icons.crow.svg"/>
+    </VerticalStack>
+</Window>
+
diff --git a/Samples/ShowCase/ui/showcase.crow b/Samples/ShowCase/ui/showcase.crow
new file mode 100755 (executable)
index 0000000..f14e965
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="Jet" Margin="5">
+       <DirectoryView Name="dv" CurrentDirectory="Interfaces" Width="25%" SelectedItemChanged="Dv_SelectedItemChanged"/>
+       <Splitter Width="6"/>
+       <VerticalStack>
+               <Container Name="CrowContainer" Height="60%" Background="DimGrey"/>
+               <Splitter/>
+               <HorizontalStack>
+                       <Scroller Name="scroller1" Background="White"
+                                       Margin="2" ScrollY="{../scrollbar1.Value}"
+                                       ValueChanged="./_scroller_ValueChanged">
+                               <TextBox VerticalAlignment="Top" TextChanged="Tb_TextChanged"
+                                       Text="{source}" Multiline="true" TextAlignment="TopLeft"
+                                       Font="Courriernew 10"/>
+                       </Scroller>
+                       <ScrollBar Name="scrollbar1" Value="{../scroller1.ScrollY}"
+                               LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30"
+                               CursorSize="{../scroller1.ChildHeightRatio}"
+                               Maximum="{../scroller1.MaxScrollY}" Orientation="Vertical"
+                               Width="14" />
+               </HorizontalStack>
+               <Label Visible="{ShowError}" Text="{ErrorMessage}" Background="Red" Foreground="White" Width="Stretched" Margin="2"
+                       Multiline="true"/>
+       </VerticalStack>
+</HorizontalStack>
diff --git a/Samples/common/CrowVkWin.cs b/Samples/common/CrowVkWin.cs
new file mode 100644 (file)
index 0000000..dd83a37
--- /dev/null
@@ -0,0 +1,206 @@
+using System;
+using System.Threading;
+using Crow;
+using CVKL;
+using VK;
+
+namespace Crow
+{
+       public class CrowVkWin : VkWindow, IValueChange {
+        #region IValueChange implementation
+        public event EventHandler<Crow.ValueChangeEventArgs> ValueChanged;
+        public virtual void NotifyValueChanged(string MemberName, object _value)
+        {
+            if (ValueChanged != null)
+                ValueChanged.Invoke(this, new Crow.ValueChangeEventArgs(MemberName, _value));
+        }
+        #endregion
+
+        protected Crow.Interface crow;
+        protected CVKL.Image uiImage;
+        protected vkvg.Device vkvgDev;
+        bool isRunning;
+
+        protected CrowVkWin() : base()
+        {
+            Thread crowThread = new Thread(crow_thread_func);
+            crowThread.IsBackground = true;
+            crowThread.Start();
+
+            while (crow == null)
+                Thread.Sleep(2);
+
+            initUISurface();
+        }
+
+        protected override void render () {
+                       int idx = swapChain.GetNextImage ();
+
+                       if (idx < 0) {
+                               OnResize ();
+                               return;
+                       }
+
+                       lock (crow.RenderMutex) {
+                               presentQueue.Submit (cmds[idx], swapChain.presentComplete, drawComplete[idx]);
+                               presentQueue.Present (swapChain, drawComplete[idx]);
+                               presentQueue.WaitIdle ();
+                       }
+                       Thread.Sleep (1);
+               }
+
+               void crow_thread_func () {
+                       vkvgDev = new vkvg.Device (instance.Handle, phy.Handle, dev.VkDev.Handle, presentQueue.qFamIndex,
+                               vkvg.SampleCount.Sample_8, presentQueue.index);
+
+                       crow = new Crow.Interface (vkvgDev, 800, 600);
+
+                       isRunning = true;
+                       while (isRunning) {
+                               crow.Update ();
+                               Thread.Sleep (3);
+                       }
+
+                       crow.Dispose ();
+                       vkvgDev.Dispose ();
+                       crow = null;
+               }
+
+               void initUISurface () {
+                       lock (crow.UpdateMutex) {
+                               uiImage?.Dispose ();
+                               uiImage = new CVKL.Image (dev, new VkImage ((ulong)crow.surf.VkImage.ToInt64 ()), VkFormat.B8g8r8a8Unorm,
+                                       VkImageUsageFlags.Sampled, swapChain.Width, swapChain.Height);
+                               uiImage.SetName ("uiImage");
+                               uiImage.CreateView (VkImageViewType.ImageView2D, VkImageAspectFlags.Color);
+                               uiImage.CreateSampler (VkFilter.Nearest, VkFilter.Nearest, VkSamplerMipmapMode.Nearest, VkSamplerAddressMode.ClampToBorder);
+                               uiImage.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
+                       }
+               }
+
+               protected virtual void recordDraw (CommandBuffer cmd, int imageIndex) { }
+
+               void buildCommandBuffers () {
+                       for (int i = 0; i < swapChain.ImageCount; ++i) {
+                               cmds[i]?.Free ();
+                               cmds[i] = cmdPool.AllocateAndStart ();
+
+                               CommandBuffer cmd = cmds [i];
+
+                               recordDraw (cmd, i);
+
+                               swapChain.images [i].SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.Undefined, VkImageLayout.TransferDstOptimal,
+                                       VkPipelineStageFlags.BottomOfPipe, VkPipelineStageFlags.Transfer);
+                               uiImage.SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.ColorAttachmentOptimal, VkImageLayout.TransferSrcOptimal,
+                                       VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.Transfer);
+                                       
+                               VkImageSubresourceLayers imgSubResLayer = new VkImageSubresourceLayers {
+                                       aspectMask = VkImageAspectFlags.Color,
+                                       mipLevel = 0,
+                                       baseArrayLayer = 0,
+                                       layerCount = 1
+                               };
+                               VkImageCopy cregion = new VkImageCopy {
+                                       srcSubresource = imgSubResLayer,
+                                       srcOffset = default (VkOffset3D),
+                                       dstSubresource = imgSubResLayer,
+                                       dstOffset = default (VkOffset3D),
+                                       extent = new VkExtent3D { width = swapChain.Width, height = swapChain.Height }
+                               };
+                               Vk.vkCmdCopyImage (cmds [i].Handle, uiImage.Handle, VkImageLayout.TransferSrcOptimal,
+                                       swapChain.images [i].Handle, VkImageLayout.TransferDstOptimal, 1, ref cregion);
+
+                               swapChain.images [i].SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.TransferDstOptimal, VkImageLayout.PresentSrcKHR,
+                                       VkPipelineStageFlags.Transfer, VkPipelineStageFlags.BottomOfPipe);
+                               uiImage.SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.TransferSrcOptimal, VkImageLayout.ColorAttachmentOptimal,
+                                       VkPipelineStageFlags.Transfer, VkPipelineStageFlags.ColorAttachmentOutput);
+
+                               cmds [i].End ();
+                       }
+               }
+
+               /// <summary>
+               /// rebuild command buffers if needed
+               /// </summary>
+               public override void Update () {
+                       if (rebuildBuffers) {
+                               buildCommandBuffers ();
+                               rebuildBuffers = false;
+                       }
+               }
+
+               protected override void OnResize () {
+                       dev.WaitIdle ();
+
+                       crow.ProcessResize (new Crow.Rectangle (0, 0, (int)swapChain.Width, (int)swapChain.Height));
+
+                       initUISurface ();
+
+                       buildCommandBuffers ();
+                       dev.WaitIdle ();
+               }
+
+               #region Mouse and keyboard
+               //protected override void onScroll (double xOffset, double yOffset)
+               //{
+               //      if (KeyModifiers.HasFlag (Glfw.Modifier.Shift))
+               //              crow.ProcessMouseWheelChanged ((float)xOffset);
+               //      else
+               //              crow.ProcessMouseWheelChanged ((float)yOffset);
+               //}
+               protected override void onMouseMove (double xPos, double yPos)
+               {
+                       if (crow.ProcessMouseMove ((int)xPos, (int)yPos))
+                               return;
+               }
+               protected override void onMouseButtonDown (Glfw.MouseButton button)
+               {
+                       if (crow.ProcessMouseButtonDown ((Crow.MouseButton)button))
+                               return;
+                       base.onMouseButtonDown (button);
+               }
+               protected override void onMouseButtonUp (Glfw.MouseButton button)
+               {
+                       if (crow.ProcessMouseButtonUp ((Crow.MouseButton)button))
+                               return;
+                       base.onMouseButtonUp (button);
+               }
+               protected override void onKeyDown (Glfw.Key key, int scanCode, Glfw.Modifier modifiers)
+               {
+                       if (crow.ProcessKeyDown ((Crow.Key)key))
+                               return;
+               }
+               protected override void onKeyUp (Glfw.Key key, int scanCode, Glfw.Modifier modifiers)
+               {
+                       if (crow.ProcessKeyUp ((Crow.Key)key))
+                               return;
+               }
+               //protected override void onChar (Glfw.CodePoint cp)
+               //{
+               //      if (crow.ProcessKeyPress (cp.ToChar ()))
+               //              return;
+               //}
+               #endregion
+
+               #region dispose
+               protected override void Dispose (bool disposing) {
+                       if (disposing) {
+                               if (!isDisposed) {
+                                       dev.WaitIdle ();
+
+                                       isRunning = false;
+                                       uiImage?.Dispose ();
+                                       while (crow != null)
+                                               Thread.Sleep (1);
+                               }
+                       }
+
+                       base.Dispose (disposing);
+               }
+               #endregion
+       }
+}
\ No newline at end of file
diff --git a/Samples/common/CrowWin.cs b/Samples/common/CrowWin.cs
new file mode 100644 (file)
index 0000000..a25ef6e
--- /dev/null
@@ -0,0 +1,241 @@
+using System;
+using System.Threading;
+using Crow;
+using CVKL;
+using VK;
+
+namespace Crow
+{
+       public class CrowVkWin : VkWindow, IValueChange {
+        #region IValueChange implementation
+        public event EventHandler<Crow.ValueChangeEventArgs> ValueChanged;
+        public virtual void NotifyValueChanged(string MemberName, object _value)
+        {
+            if (ValueChanged != null)
+                ValueChanged.Invoke(this, new Crow.ValueChangeEventArgs(MemberName, _value));
+        }
+        #endregion
+
+        protected Crow.Interface crow;
+        protected CVKL.Image uiImage;
+        protected vkvg.Device vkvgDev;
+        bool isRunning;
+
+        protected CrowVkWin() : base()
+        {
+
+            Thread crowThread = new Thread(crow_thread_func);
+            crowThread.IsBackground = true;
+            crowThread.Start();
+
+            while (crow == null)
+                Thread.Sleep(2);
+
+            initUISurface();
+        }
+
+               protected virtual void onLoad () { }
+               public override void Run ()
+               {
+                       onLoad ();
+                       base.Run ();
+               }
+               protected override void render () {
+                       int idx = swapChain.GetNextImage ();
+
+                       if (idx < 0) {
+                               OnResize ();
+                               return;
+                       }
+
+                       lock (crow.RenderMutex) {
+                               presentQueue.Submit (cmds[idx], swapChain.presentComplete, drawComplete[idx]);
+                               presentQueue.Present (swapChain, drawComplete[idx]);
+                               presentQueue.WaitIdle ();
+                       }
+                       Thread.Sleep (1);
+               }
+
+               void crow_thread_func () {
+                       vkvgDev = new vkvg.Device (instance.Handle, phy.Handle, dev.VkDev.Handle, presentQueue.qFamIndex,
+                               vkvg.SampleCount.Sample_8, presentQueue.index);
+
+                       crow = new Crow.Interface (vkvgDev, 800, 600);
+                       crow.MouseCursorChanged +=Crow_MouseCursorChanged;; 
+
+                       isRunning = true;
+                       while (isRunning) {
+                               crow.Update ();
+                               Thread.Sleep (1);
+                       }
+
+                       crow.Dispose ();
+                       vkvgDev.Dispose ();
+                       crow = null;
+               }
+
+               void Crow_MouseCursorChanged (object sender, MouseCursorChangedEventArgs e)
+               {
+                       switch (e.NewCursor) {
+                       case MouseCursor.Arrow:
+                               SetCursor (Glfw.CursorShape.Arrow);
+                               break;
+                       case MouseCursor.IBeam:
+                               SetCursor (Glfw.CursorShape.IBeam);
+                               break;
+                       case MouseCursor.Crosshair:
+                               SetCursor (Glfw.CursorShape.Crosshair);
+                               break;
+                       case MouseCursor.Hand:
+                               SetCursor (Glfw.CursorShape.Hand);
+                               break;
+                       case MouseCursor.HResize:
+                               SetCursor (Glfw.CursorShape.HResize);
+                               break;
+                       case MouseCursor.VResize:
+                               SetCursor (Glfw.CursorShape.VResize);
+                               break;
+                       default:
+                               SetCursor (Glfw.CursorShape.Crosshair);
+                               break;
+                       }
+               }
+
+               void initUISurface () {
+                       lock (crow.UpdateMutex) {
+                               uiImage?.Dispose ();
+                               uiImage = new CVKL.Image (dev, new VkImage ((ulong)crow.surf.VkImage.ToInt64 ()), VkFormat.B8g8r8a8Unorm,
+                                       VkImageUsageFlags.Sampled, swapChain.Width, swapChain.Height);
+                               uiImage.SetName ("uiImage");
+                               uiImage.CreateView (VkImageViewType.ImageView2D, VkImageAspectFlags.Color);
+                               uiImage.CreateSampler (VkFilter.Nearest, VkFilter.Nearest, VkSamplerMipmapMode.Nearest, VkSamplerAddressMode.ClampToBorder);
+                               uiImage.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
+                       }
+               }
+
+               protected virtual void recordDraw (CommandBuffer cmd, int imageIndex) { }
+
+               void buildCommandBuffers () {
+                       for (int i = 0; i < swapChain.ImageCount; ++i) {
+                               cmds[i]?.Free ();
+                               cmds[i] = cmdPool.AllocateAndStart ();
+
+                               CommandBuffer cmd = cmds [i];
+
+                               recordDraw (cmd, i);
+
+                               swapChain.images [i].SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.Undefined, VkImageLayout.TransferDstOptimal,
+                                       VkPipelineStageFlags.BottomOfPipe, VkPipelineStageFlags.Transfer);
+                               uiImage.SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.Undefined, VkImageLayout.TransferSrcOptimal,
+                                       VkPipelineStageFlags.Transfer, VkPipelineStageFlags.Transfer);
+                                       
+                               VkImageSubresourceLayers imgSubResLayer = new VkImageSubresourceLayers {
+                                       aspectMask = VkImageAspectFlags.Color,
+                                       mipLevel = 0,
+                                       baseArrayLayer = 0,
+                                       layerCount = 1
+                               };
+                               VkImageCopy cregion = new VkImageCopy {
+                                       srcSubresource = imgSubResLayer,
+                                       srcOffset = default (VkOffset3D),
+                                       dstSubresource = imgSubResLayer,
+                                       dstOffset = default (VkOffset3D),
+                                       extent = new VkExtent3D { width = swapChain.Width, height = swapChain.Height }
+                               };
+                               Vk.vkCmdCopyImage (cmds [i].Handle, uiImage.Handle, VkImageLayout.TransferSrcOptimal,
+                                       swapChain.images [i].Handle, VkImageLayout.TransferDstOptimal, 1, ref cregion);
+
+                               swapChain.images [i].SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.TransferDstOptimal, VkImageLayout.PresentSrcKHR,
+                                       VkPipelineStageFlags.Transfer, VkPipelineStageFlags.BottomOfPipe);
+                               uiImage.SetLayout (cmd, VkImageAspectFlags.Color,
+                                       VkImageLayout.TransferSrcOptimal, VkImageLayout.ColorAttachmentOptimal,
+                                       VkPipelineStageFlags.Transfer, VkPipelineStageFlags.ColorAttachmentOutput);
+
+                               cmds [i].End ();
+                       }
+               }
+
+               /// <summary>
+               /// rebuild command buffers if needed
+               /// </summary>
+               public override void Update () {
+                       if (rebuildBuffers) {
+                               buildCommandBuffers ();
+                               rebuildBuffers = false;
+                       }
+               }
+
+               protected override void OnResize () {
+                       dev.WaitIdle ();
+
+                       crow.ProcessResize (new Crow.Rectangle (0, 0, (int)swapChain.Width, (int)swapChain.Height));
+
+                       initUISurface ();
+
+                       buildCommandBuffers ();
+                       dev.WaitIdle ();
+               }
+
+               #region Mouse and keyboard
+               protected override void onScroll (double xOffset, double yOffset)
+               {
+                       if (KeyModifiers.HasFlag (Glfw.Modifier.Shift))
+                               crow.ProcessMouseWheelChanged ((float)xOffset);
+                       else
+                               crow.ProcessMouseWheelChanged ((float)yOffset);
+               }
+               protected override void onMouseMove (double xPos, double yPos)
+               {
+                       if (crow.ProcessMouseMove ((int)xPos, (int)yPos))
+                               return;
+               }
+               protected override void onMouseButtonDown (Glfw.MouseButton button)
+               {
+                       if (crow.ProcessMouseButtonDown ((Crow.MouseButton)button))
+                               return;
+                       base.onMouseButtonDown (button);
+               }
+               protected override void onMouseButtonUp (Glfw.MouseButton button)
+               {
+                       if (crow.ProcessMouseButtonUp ((Crow.MouseButton)button))
+                               return;
+                       base.onMouseButtonUp (button);
+               }
+               protected override void onKeyDown (Glfw.Key key, int scanCode, Glfw.Modifier modifiers)
+               {
+                       if (crow.ProcessKeyDown ((Crow.Key)key))
+                               return;
+               }
+               protected override void onKeyUp (Glfw.Key key, int scanCode, Glfw.Modifier modifiers)
+               {
+                       if (crow.ProcessKeyUp ((Crow.Key)key))
+                               return;
+               }
+               protected override void onChar (Glfw.CodePoint cp)
+               {
+                       if (crow.ProcessKeyPress (cp.ToChar ()))
+                               return;
+               }
+               #endregion
+
+               #region dispose
+               protected override void Dispose (bool disposing) {
+                       if (disposing) {
+                               if (!isDisposed) {
+                                       dev.WaitIdle ();
+
+                                       isRunning = false;
+                                       uiImage?.Dispose ();
+                                       while (crow != null)
+                                               Thread.Sleep (1);
+                               }
+                       }
+
+                       base.Dispose (disposing);
+               }
+               #endregion
+       }
+}
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/CheckBox2.imlt b/Samples/common/ui/Interfaces/CheckBox2.imlt
new file mode 100644 (file)
index 0000000..c2bfe8d
--- /dev/null
@@ -0,0 +1,7 @@
+<Label Font="{./Font}" Text="{./Caption}" Height="{./HeightPolicy}" Width="{./WidthPolicy}"
+       Margin="3"
+       Background="{./Background}"
+       Foreground="DimGrey"
+       TextAlignment="Center"
+       MouseEnter="{Foreground=White}"
+       MouseLeave="{Foreground=DimGrey}"/>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Container/0.crow b/Samples/common/ui/Interfaces/Container/0.crow
new file mode 100755 (executable)
index 0000000..5ad8de0
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Container Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10"  Background="SeaGreen"
+                       MinimumSize="50,50"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Container/1.crow b/Samples/common/ui/Interfaces/Container/1.crow
new file mode 100755 (executable)
index 0000000..19af523
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Container Background="Yellow" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="50%" Height="50%" Background="Yellow"
+                       MinimumSize="50,50"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Container/2.crow b/Samples/common/ui/Interfaces/Container/2.crow
new file mode 100755 (executable)
index 0000000..98d1add
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Container Background="MediumSeaGreen" Margin="10" Fit="true">
+       <Widget Margin="10" Width="50%" Height="50%" Background="DarkGreen"
+                       MinimumSize="50,50"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Container/3.crow b/Samples/common/ui/Interfaces/Container/3.crow
new file mode 100755 (executable)
index 0000000..94655ca
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Container Background="DimGrey" Margin="10" Fit="true">
+       <Label Text="{fps}" Margin="10" Fit="true" Background="SeaGreen"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/0.crow b/Samples/common/ui/Interfaces/Divers/0.crow
new file mode 100755 (executable)
index 0000000..e7cf3e2
--- /dev/null
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<Window Caption="Showcase" Height="90%" Width="90%">
+       <HorizontalStack >
+               <VerticalStack Width="30%" Margin="5">
+                       <GroupBox Caption="Performance" Height="Fit">
+                               <VerticalStack DataSource="{drawingMeasure}" Width="90%" Height="Fit" Spacing="2" >
+                                       <HorizontalStack Height="Fit" Tooltip="Frame per second">
+                                               <Label Text="Fps:" Style="FpsLabel"/>
+                                               <Label Text="{minimum}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Minimum Frame per second">
+                                               <Label Text="Min:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMin}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Maximum Frame per second">
+                                               <Label Text="Max:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMax}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Update loop duration">
+                                               <Label Text="Update:" Style="FpsLabel"/>
+                                               <Label Text="{update}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Layouting process duration">
+                                               <Label Text="Layouting:" Style="FpsLabel"/>
+                                               <Label Text="{layouting}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit" Tooltip="Clipping duration">
+                                               <Label Text="Clipping:" Style="FpsLabel"/>
+                                               <Label Text="{clipping}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Drawing:" Style="FpsLabel"/>
+                                               <Label Text="{drawing}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                               </VerticalStack>
+                       </GroupBox>
+                       <Label Width="Stretched" Margin="3" Background="DimGrey"/>
+                       <TextBox Text="TextBox" Multiline="true" Margin="3"/>
+                       <HorizontalStack Height="Fit" Margin="5" Background="DimGrey" CornerRadius="10">
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <CheckBox Fit="true" Caption="test"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true" IsChecked="true"/>
+                               </VerticalStack>
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true" IsChecked="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                               </VerticalStack>
+                       </HorizontalStack>
+                       <HorizontalStack Height="Fit" Margin="5">
+                               <Label Text="MouseEvents" Width="50%" Margin="3" Focusable="true"
+                                       Background="Jet"
+                                       Foreground="DimGrey"
+                                       TextAlignment="Center"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGrey}"
+                                       MouseDown="{Background=DarkRed}"
+                                       MouseClick="{Foreground=Green}"
+                                       MouseDoubleClick="{Foreground=Yellow}"
+                                       MouseUp="{Background=Jet}"/>
+                               <Label Text="MouseEvents" Width="50%" Margin="3"
+                                       Background="Jet"
+                                       Foreground="DimGrey"
+                                       TextAlignment="Center"
+                                       MouseClick="{Foreground=Green}"
+                                       MouseDoubleClick="{Foreground=Yellow}"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGrey}"
+                                       MouseDown="{Background=SeaGreen}"
+                                       MouseUp="{Background=DimGrey}"/>
+                       </HorizontalStack>
+                       <GroupBox Caption="Templated controls" Height="Fit" Margin="5">
+                               <HorizontalStack Height="Fit">
+                                       <VerticalStack Width="50%">
+                                               <CheckBox IsChecked="true" Style="CheckBox2"/>
+                                               <CheckBox Style="CheckBox2"/>
+                                               <CheckBox Style="CheckBox2"/>
+                                               <CheckBox Style="CheckBox2"/>
+                                       </VerticalStack>
+                                       <Splitter/>
+                                       <VerticalStack Width="50%">
+                                               <RadioButton Style="RadioButton2"/>
+                                               <RadioButton Style="RadioButton2"/>
+                                               <RadioButton Style="RadioButton2"/>
+                                               <RadioButton Style="RadioButton2"/>
+                                       </VerticalStack>
+                               </HorizontalStack>
+                       </GroupBox>
+                       <HorizontalStack Height="Fit">
+                               <Label Text="Spinner"/>
+                               <Spinner Fit="true"/>
+                       </HorizontalStack>
+                       <HorizontalStack Height="Fit">
+                               <Button Caption="Button"/>
+                               <Button Caption="Button" IsEnabled="false"/>
+                       </HorizontalStack>
+               </VerticalStack>
+               <Splitter/>
+               <VerticalStack Width="40%" Margin="5" Spacing="5">
+                       <Expandable>
+                               <Image Path="#Crow.Icons.crow.svg"/>
+                       </Expandable>
+                       <Popper>
+                               <Border Fit="True" Background="DimGrey" CornerRadius="0" BorderWidth="1">
+                                       <Image Path="#Crow.Icons.crow.svg" Width="100" Height="100" Margin="10"
+                                               MouseEnter="{Background=LightGrey}"
+                                               MouseLeave="{Background=Transparent}"/>
+                               </Border>
+                       </Popper>
+                       <Slider Height="10" Width="90%"/>
+                       <Container Height="Fit" Width="200" Background="DimGrey" Margin="2" CornerRadius="5">
+                               <ProgressBar Background="DimGrey" Height="10" Value="50"/>
+                       </Container>
+                       <Image Path="#Crow.Icons.crow.svg" Width="60" Height="60" Background="LightGrey" />
+<!--                   <TabView Name="tabview1"
+                               Height="120" Orientation="Horizontal" Spacing="15">
+                               <TabItem Name="TabItem1" Caption="Tab 1" Margin="0">
+                                       <VerticalStack Fit="true">
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem2" Caption="Tab 2" Background="Grey">
+                                       <VerticalStack Fit="true">
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem3" Caption="Tab 3" Background="Grey">
+                                       <Container Margin="5" CornerRadius="2">
+                                               <TextBox Height="Stretched" Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                                       </Container>
+                               </TabItem>
+                       </TabView>-->
+                       <MessageBox Movable="false"/>
+                       <ColorPicker SelectedColor="{²../go.Background}" Name="colorPicker" Margin="5" Fit="True" />
+                       <Widget Name="go" Width="100" Height="60" Background="{../../colorList.SelectedItem}"/>
+                       <Label Text="{../colorPicker.SelectedColor}"/>
+               </VerticalStack>
+               <Splitter/>
+               <VerticalStack Width="30%" Margin="5">
+<!--                   <Border Margin="5" Height="Fit">
+                               <Label Width="Stretched" Margin="1" Text="{../../dv.SelectedItem}"/>
+                       </Border>
+                       <Border Margin="5" Height="30%">
+                               <DirectoryView Name="dv" CurrentDirectory="/" Margin="1"/>
+                       </Border>
+                       <Splitter/>-->
+                       <ListBox Name="colorList" Data="{TestList}" Margin="5"
+                                        ItemTemplate="Interfaces/colorItem.crow"
+                                        Template="#Crow.ScrollingListBox.template"
+                                        />
+               </VerticalStack>
+       </HorizontalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/2.crow b/Samples/common/ui/Interfaces/Divers/2.crow
new file mode 100755 (executable)
index 0000000..b4a06b6
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <TextBox Font="droid, 20" Text="test text box" Width="Stretched"/>
+       <HorizontalStack Margin="5" Fit="true" MouseEnter="{Background=White}" MouseLeave="{Background=Transparent}">
+               <Label Text="centered" Width="80" Height="30" Background="DarkBlue" TextAlignment="Center"/>
+               <Label Text="top left" Width="80" Height="30" Background="DarkBlue" TextAlignment="TopLeft"/>
+               <Label Text="top right" Width="80" Height="30" Background="DarkBlue" TextAlignment="TopRight"/>
+               <Label Text="right center" Width="80" Height="30" Background="DarkBlue" TextAlignment="Right"/>
+               <Label Text="bottom left" Width="80" Height="30" Background="DarkBlue" TextAlignment="BottomLeft"/>
+               <Label Text="bottom center" Width="80" Height="30" Background="DarkBlue" TextAlignment="Bottom"/>
+               <Label Text="bottom right" Width="80" Height="30" Background="DarkBlue" TextAlignment="BottomRight"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/3.crow b/Samples/common/ui/Interfaces/Divers/3.crow
new file mode 100755 (executable)
index 0000000..a1f5e95
--- /dev/null
@@ -0,0 +1,377 @@
+<?xml version="1.0"?>
+<HorizontalStack Fit="true">   
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <ProgressBar CornerRadius="5" Background="DimGrey" Margin="1" Maximum="1000" Value="{fps}" Width="200" Height="15"/>
+               <HorizontalStack Fit="true">
+                       <Label Text="Memory:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{memory}" Font="droid,12" TextAlignment="Center"
+                               Background="vgradient|0:RoyalBlue|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:SeaGreen|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/4.crow b/Samples/common/ui/Interfaces/Divers/4.crow
new file mode 100755 (executable)
index 0000000..ca69662
--- /dev/null
@@ -0,0 +1,1695 @@
+<?xml version="1.0"?>
+<HorizontalStack>      
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="15%">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Memory:" Style="labPerf" />
+                       <Label Text="{memory}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="labPerf" />
+                       <Label Text="{update}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="labPerf" />
+                       <Label Text="{layouting}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="labPerf" />
+                       <Label Text="{drawing}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="labPerf" />
+                       <Label Text="{fps}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="labPerf" />
+                       <Label Text="{fpsMin}" Style="labPerfVal"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="labPerf" />
+                       <Label Text="{fpsMax}" Style="labPerfVal"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/5.crow b/Samples/common/ui/Interfaces/Divers/5.crow
new file mode 100755 (executable)
index 0000000..7e3df06
--- /dev/null
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<HorizontalStack Fit="true" Margin="5">
+       <VerticalStack Fit="true" Margin="2" Spacing="2">
+               <TextRun Text="text run test"/>
+<!--           <Label Text="label test"/>
+               <TextBox Text="text box test"/>
+               <Button Caption="test button"/>-->
+<!--           <CheckBox Caption="test checkbox"/>
+               <RadioButton Caption="test radiobutton"/>
+               <ComboBox/>
+               <Popper Caption="test popper">
+                       <Label Text="label test"/>
+               </Popper>
+               <Expandable Caption="test expandable">
+                       <Label Text="label test"/>
+               </Expandable>
+               <Border >
+                       <Label Text="border test" Margin="3"/>
+               </Border>
+               <GroupBox Caption="Group box" >
+                       <Label Text="border test" Margin="3"/>
+               </GroupBox>
+               <Container Fit="true" Background="DimGrey" Margin="3">
+                       <Widget Width="20" Height="20" Background="LightGrey"/>
+               </Container>-->
+<!--           <ProgressBar Height="10" Width="150" Background="DimGrey" Value="50" />
+               <Slider Value="5" Width="150" Height="10"/>
+               <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="150"/>
+               <Spinner Value="100"/>-->
+       </VerticalStack>
+<!--   <VerticalStack Width="150" Height="Fit" Margin="2" Spacing="2">
+               <TextRun Text="text run test" Width="Stretched"/>
+               <Label Text="label test" Width="Stretched"/>
+               <TextBox Text="text box test" Width="Stretched"/>
+               <Button Caption="test button" Width="Stretched"/>
+               <CheckBox Caption="test checkbox" Width="Stretched"/>
+               <RadioButton Caption="test radiobutton" Width="Stretched"/>
+               <ComboBox Width="Stretched"/>
+               <Popper Caption="test popper" Width="Stretched">
+                       <Label Text="label test"/>
+               </Popper>
+               <Expandable Caption="test expandable" Width="Stretched">
+                       <Label Text="label test"/>
+               </Expandable>
+               <Border  Width="Stretched">
+                       <Label Text="border test" Margin="3"/>
+               </Border>
+               <GroupBox Caption="Group box"  Width="Stretched">
+                       <Label Text="border test" Margin="3"/>
+               </GroupBox>
+               <Container Height="Fit"  Width="Stretched" Background="DimGrey" Margin="3">
+                       <Widget Width="20" Height="20" Background="LightGrey"/>
+               </Container>
+               <ProgressBar Height="10" Width="Stretched" Background="DimGrey" Value="50" />
+               <Slider Value="5" Width="Stretched" Height="10"/>
+               <ScrollBar Orientation="Horizontal" Maximum="100" Value="50" Height="16" Width="Stretched"/>
+               <Spinner Value="100"  Width="Stretched"/>
+       </VerticalStack>-->
+</HorizontalStack>
+<!--<HorizontalStack Fit="true" Background="RoyalBlue" Margin="5">
+       <Widget Background="Red" Width="30" Height="20"/>
+       <Spinner Maximum="10000000000" SmallIncrement="10" Value="0"/>
+       <Widget Background="Green" Width="30" Height="20"/>
+</HorizontalStack>-->
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/6.crow b/Samples/common/ui/Interfaces/Divers/6.crow
new file mode 100755 (executable)
index 0000000..f537a71
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Background="DimGrey" Margin="5">
+<!--   <RadioButton/>-->
+       <Label Text="a" Width="Stretched" Background="Red"/>
+       <Label Text="{fps}" HorizontalAlignment="Right" Background="LimeGreen"/>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/Divers/clip0.crow b/Samples/common/ui/Interfaces/Divers/clip0.crow
new file mode 100755 (executable)
index 0000000..0dee2ef
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Container Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=Grey}"
+               MouseLeave="{Background=LimeGreen}">
+       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="false"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+ </Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/clip1.crow b/Samples/common/ui/Interfaces/Divers/clip1.crow
new file mode 100755 (executable)
index 0000000..bc4c927
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<Container Fit="true" Margin="20" Background="SkyBlue" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=LightGrey}"
+               MouseLeave="{Background=SkyBlue}">
+               <Container Fit="true" Margin="20" Background="Red" CacheEnabled="true"
+                       HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                       MouseEnter="{Background=White}"
+                       MouseLeave="{Background=Red}">
+                       <Container Fit="true" Margin="20" Background="Yellow" CacheEnabled="false"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseEnter="{Background=Blue}"
+                               MouseLeave="{Background=Yellow}">
+                               <Container Margin="50" Background="LimeGreen" CacheEnabled="true"
+                                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                                               MouseEnter="{Background=Grey}"
+                                               MouseLeave="{Background=LimeGreen}">
+                                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                                               MouseEnter="{Background=DimGrey}"
+                                               MouseLeave="{Background=RoyalBlue}" 
+                                               Margin="1" Text="{drawing}" Background="RoyalBlue"/>
+                               </Container>
+                       </Container>
+               </Container>
+ </Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/clip2.crow b/Samples/common/ui/Interfaces/Divers/clip2.crow
new file mode 100755 (executable)
index 0000000..9292150
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<Group Fit="true" Margin="50" Background="Yellow" CacheEnabled="true"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=DimGrey}"
+               MouseLeave="{Background=Yellow}">
+<Group Width="300" Height="200" Margin="50" Background="LimeGreen" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=Grey}"
+               MouseLeave="{Background=LimeGreen}">
+       <Label Left="10" HorizontalAlignment="Right" VerticalAlignment="Center" CacheEnabled="true"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+ </Group>
+ </Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/clip3.crow b/Samples/common/ui/Interfaces/Divers/clip3.crow
new file mode 100755 (executable)
index 0000000..82a9888
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<Group Fit="true" Margin="50" Background="Yellow" CacheEnabled="true"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=DimGrey}"
+               MouseLeave="{Background=Yellow}">
+       <HorizontalStack Fit="true">
+               <VerticalStack Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseEnter="{Background=Grey}"
+                               MouseLeave="{Background=LimeGreen}">
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{fps}" Background="RoyalBlue"/>
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+                </VerticalStack>
+               <VerticalStack Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseEnter="{Background=Grey}"
+                               MouseLeave="{Background=LimeGreen}">
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{fpsMax}" Background="RoyalBlue"/>
+                       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+                               MouseEnter="{Background=DimGrey}" Width="100"
+                               MouseLeave="{Background=RoyalBlue}"
+                               Margin="10" Text="{fpsMin}" Background="RoyalBlue"/>
+                </VerticalStack>
+       </HorizontalStack>
+ </Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/clip4.crow b/Samples/common/ui/Interfaces/Divers/clip4.crow
new file mode 100755 (executable)
index 0000000..5caaf77
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<Border Fit="true" BorderWidth="2"  >
+<Scroller CornerRadius="2" Height="200" Width="300" Background="DimGrey" Margin="2">
+       <VerticalStack Margin="10" VerticalAlignment="Top" Fit="true" Background="vgradient|0:RoyalBlue|1:Black" >
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 1"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 2"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 3"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 4"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 5"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 6"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 7"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 8"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 9"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 10"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 11"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 12"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 13"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 14"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 15"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 16"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 17"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 18"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 19"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 20"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 21"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 22"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 23"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 24"/>
+                <Label MouseEnter="{Background=Grey}" MouseLeave="{Background=hgradient|0:DarkRed|1:Transparent}" Margin="5" Background="hgradient|0:DarkRed|1:Transparent" Font="droid,20" Text="label 25"/>
+       </VerticalStack>
+</Scroller>
+</Border>
+<!--<VerticalStack Fit="true" Margin="50" Background="LimeGreen" CacheEnabled="false"
+               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+               MouseEnter="{Background=Grey}"
+               MouseLeave="{Background=LimeGreen}">
+
+               <CheckBox Margin="20" Background="RoyalBlue"/>
+               <CheckBox/>
+               <CheckBox/>
+               <CheckBox/>
+               <CheckBox/>
+               <RadioButton/>
+               <RadioButton/>
+               <RadioButton/>
+               <RadioButton/>
+               <RadioButton/>
+               <CheckBox/>
+
+       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{fps}" Background="RoyalBlue"/>
+       <Label HorizontalAlignment="Center" VerticalAlignment="Center" CacheEnabled="true"
+               MouseEnter="{Background=DimGrey}" Width="100"
+               MouseLeave="{Background=RoyalBlue}"
+               Margin="10" Text="{drawing}" Background="RoyalBlue"/>
+ </VerticalStack>-->
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/colorPicker.crow b/Samples/common/ui/Interfaces/Divers/colorPicker.crow
new file mode 100755 (executable)
index 0000000..afdef14
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <ColorPicker SelectedColor="{²../go.Background}" Name="colorPicker" Background="DimGrey" Margin="5" Fit="True" />
+       <Widget Name="go" Width="100" Height="60" Background="DarkBlue"/>
+       <Widget Name="go" Width="100" Height="60" Background="{../colorPicker.SelectedColor}"/>
+       <Label Text="{../colorPicker.SelectedColor}"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/fps.crow b/Samples/common/ui/Interfaces/Divers/fps.crow
new file mode 100755 (executable)
index 0000000..1d515a1
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<Border Fit="true" CornerRadius="5" BorderWidth="1">
+       <Container Name="MainGrp" Background="0.5,0.5,0.5,0.4" Width="120" Fit="true"
+               Margin="10" Focusable="True" >
+                       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+                               <HorizontalStack Fit="true">
+                                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Name="labUpdate" Text="{update}" Font="droid,12" Background="SeaGreen" Width="50" TextAlignment="Center"/>
+                               </HorizontalStack>
+                               <HorizontalStack Fit="true">
+                                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" Background="SeaGreen"/>
+                               </HorizontalStack>
+                               <HorizontalStack Fit="true">
+                                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center" Background="SeaGreen"/>
+                               </HorizontalStack>
+                               <HorizontalStack Fit="true">
+                                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                                       <Label Margin="5" Text="{fpsMax}" Font="droid , 12" Background="SeaGreen" Width="50" TextAlignment="Center"/>
+                               </HorizontalStack>
+                       </VerticalStack>
+       </Container>
+</Border>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/perfMeasures.crow b/Samples/common/ui/Interfaces/Divers/perfMeasures.crow
new file mode 100755 (executable)
index 0000000..d2d5138
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Window Focusable="true" Caption="Measures" Width="30%" Height="300" MinimumSize="100,100">
+       <ListBox Data="{PerfMeasures}"
+               ItemTemplate="#ui.perfMsr.crow"/>
+</Window>
diff --git a/Samples/common/ui/Interfaces/Divers/test1.1.crow b/Samples/common/ui/Interfaces/Divers/test1.1.crow
new file mode 100755 (executable)
index 0000000..e6f8e2a
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<Group Name="TopGroup" Width="500" Height="400" Margin="5"
+       Focusable="True" Background="Yellow">
+       <Group Name="InnerGroup" Width="Fit" Height="Fit" Margin="50" 
+               VerticalAlignment="Top" HorizontalAlignment="Left"
+               Focusable="True" Background="Green">
+               <Image VerticalAlignment="Bottom"                       
+                       Name="PhaseOverlay1" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+               <Image Top="100"                
+                       Name="PhaseOverlay2" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+       </Group>
+       <Image VerticalAlignment="Center" HorizontalAlignment="Right"
+               Name="PhaseOverlay0" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/test1.2.crow b/Samples/common/ui/Interfaces/Divers/test1.2.crow
new file mode 100755 (executable)
index 0000000..00fb7d2
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<Container Background="Green" Height="400" Width="400">
+<VerticalStack Margin="10" Background="DarkBlue" Height="Fit" Width="Stretched">
+       <Label Text="label11" Width="Stretched"/>
+       <Label Text="label21"/>
+       <HorizontalStack Width="Fit" Height="Fit" Margin="5"
+               Focusable="True" Background="Blue">
+               <Label Text="label12"/>
+               <Label Text="label22"/>
+               <Label Text="label32"/>
+               <Label Text="label42"/>
+               <Label Text="label52"/>
+       </HorizontalStack>
+       <Label Text="label33" Background="Green" Width="Stretched"/>
+       <Button/>
+       <Label Text="label43"/>
+       <Label Text="label53"/>
+
+</VerticalStack>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/test1.crow b/Samples/common/ui/Interfaces/Divers/test1.crow
new file mode 100755 (executable)
index 0000000..74da472
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<Container Name="TopContainer" Width="400" Height="350"
+       Margin="20" Focusable="True" Background="Yellow">
+       <Container Name="MiddleContainer" Width="50%" Height="Stretched"
+               Margin="20" Focusable="True" Background="Green">
+                       <Image VerticalAlignment="Bottom"                       
+                               Name="PhaseOverlay" Width="100" Height="100" Path="image/u.svg" Background="Red"/>
+       </Container>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/test2WayBinding.crow b/Samples/common/ui/Interfaces/Divers/test2WayBinding.crow
new file mode 100755 (executable)
index 0000000..cf76f72
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <CheckBox IsChecked="{²BoolVal}"/>
+       <CheckBox Caption="second" IsChecked="{²BoolVal}"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testBind0.crow b/Samples/common/ui/Interfaces/Divers/testBind0.crow
new file mode 100755 (executable)
index 0000000..d8991c7
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <TextBox Text="{Datas}" Width="100" />
+       <Button Text="Set Text to Null" MouseClick="onSetDataToNull"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testCtxMenu.crow b/Samples/common/ui/Interfaces/Divers/testCtxMenu.crow
new file mode 100755 (executable)
index 0000000..5fd6072
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Widget Margin="10" Width="50%" Height="50%" Focusable="true"
+               Background="hgradient|0:Red|0.25:Blue|0.5:Green|0.75:Yellow|1:Red"
+               MinimumSize="50,50" ContextCommands="{Commands}"/>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testDisable.crow b/Samples/common/ui/Interfaces/Divers/testDisable.crow
new file mode 100644 (file)
index 0000000..68d1ceb
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" VerticalAlignment="Top" Background="0.7,0.7,0.7,0.5"
+       Margin="10" CornerRadius="10" ClipToClientRect="false">
+       <Label Font="20" Text="Enable / Disable test"/>
+       <Label Text="{fps}" IsEnabled="false" Font="30"/>
+       <Label Text="{fps}" IsEnabled="true" Font="30"/>
+               <Label Text="{fps}" IsEnabled="false" Font="30" Background="SeaGreen"/>
+       <Label Text="{fps}" IsEnabled="true" Font="30" Background="SeaGreen"/>
+       <Button Caption="Button" IsEnabled="true" Background="Grey"/>
+       <Button Caption="Button" IsEnabled="false" Background="Grey"/>
+       <Button Caption="Button" IsEnabled="true" />
+       <Button Caption="Button" IsEnabled="false" />
+       <Spinner Fit="true"/>
+       <Spinner IsEnabled="false" Fit="true"/>
+       <CheckBox/>
+       <CheckBox IsEnabled="false"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testFileDialog.crow b/Samples/common/ui/Interfaces/Divers/testFileDialog.crow
new file mode 100644 (file)
index 0000000..868baf6
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<FileDialog Caption="Open File" CurrentDirectory="/" SearchPattern="*.*"/>
+
diff --git a/Samples/common/ui/Interfaces/Divers/testFocus.crow b/Samples/common/ui/Interfaces/Divers/testFocus.crow
new file mode 100755 (executable)
index 0000000..1f26263
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <Menu>
+               <MenuItem Caption="File" Width="Fit">
+                       <MenuItem Command="{CMDTest}"/>
+                       <MenuItem Caption="Open"/>
+                       <MenuItem Caption="Save"/>
+                       <MenuItem Caption="Quit"/>
+               </MenuItem>
+               <MenuItem Caption="Edit" Name="edit" Width="Fit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+                       <MenuItem Caption="Special" Name="special" Width="Fit">
+                               <MenuItem Caption="Cut"/>
+                               <MenuItem Caption="Copy"/>
+                               <MenuItem Caption="Paste"/>
+                       </MenuItem>
+                       <MenuItem Caption="Special2" Name="special" Width="Fit">
+                               <MenuItem Caption="Cut"/>
+                               <MenuItem Caption="Copy"/>
+                               <MenuItem Caption="Paste"/>
+                       </MenuItem>
+               </MenuItem>
+               <MenuItem Caption="Help" Width="Fit">
+                       <MenuItem Caption="About"/>
+                       <MenuItem Caption="Help"/>
+               </MenuItem>
+       </Menu>
+       <HorizontalStack Height="Fit">
+               <Label Text="Hover:" Width="50" Foreground="Grey"/>
+               <Label Text="{HoverWidget}"/>
+       </HorizontalStack>
+       <HorizontalStack Height="Fit">
+               <Label Text="Focus:" Width="50" Foreground="Grey"/>
+               <Label Text="{FocusedWidget}"/>
+       </HorizontalStack>
+       <HorizontalStack Height="Fit">
+               <Label Text="Active:" Width="50" Foreground="Grey"/>
+               <Label Text="{ActiveWidget}"/>
+       </HorizontalStack>
+       <Container Fit="true" Margin="50" Background="SlateGrey">
+               <Label Text="MouseEvents" Margin="3" Focusable="true" Fit="true"
+                       Background="Jet"
+                       Foreground="DimGrey"
+                       TextAlignment="Center"
+                       MouseEnter="{Foreground=White}"
+                       MouseLeave="{Foreground=DimGrey}"
+                       MouseDown="{Background=DarkRed}"
+                       MouseClick="{Foreground=Green}"
+                       MouseDoubleClick="{Foreground=Yellow}"
+                       MouseUp="{Background=Jet}"/>
+       </Container>
+       <TextBox Width="300" Margin="10"/>
+       <Slider Width="300" Height="12"/>
+       <ComboBox Data="{TestList}" Width="120">
+               <ItemTemplate DataType="Crow.Color">
+                       <HorizontalStack
+                                               HorizontalAlignment="Left"
+                                               Height="Fit" Width="200" Margin="1" Focusable="true"
+                                               MouseEnter="{Background=hgradient|0:DarkRed|1:Transparent}"
+                                               MouseLeave="{Background=Transparent}">
+                               <Widget Height="12" Width="20" Background="{}" Margin="0" CornerRadius="3"/>
+                               <Label Text="{}" Margin="0" Width="Stretched"/>
+                       </HorizontalStack>
+               </ItemTemplate>
+       </ComboBox>
+       <HorizontalStack Height="Fit" Margin="1" Background="DimGrey" Width="200">
+                               <VerticalStack Spacing="2" Width="50%">
+                                       <CheckBox Caption="test" MouseEnter="{Background=Blue}" MouseLeave="{Background=Transparent}"/>
+                                       <CheckBox />
+                                       <CheckBox />
+                                       <CheckBox IsChecked="true"/>
+                               </VerticalStack>
+                               <VerticalStack Spacing="2" Width="50%">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true" IsChecked="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                               </VerticalStack>
+                       </HorizontalStack>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/Divers/testIMLContainer.crow b/Samples/common/ui/Interfaces/Divers/testIMLContainer.crow
new file mode 100644 (file)
index 0000000..2ba5f2c
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<IMLContainer Path="Interfaces/Divers/colorPicker.crow"/>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testImage.crow b/Samples/common/ui/Interfaces/Divers/testImage.crow
new file mode 100755 (executable)
index 0000000..ccdd87c
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED PROPORTIONNAL" Width="150"/>
+               <Image Width="10%" Height="Fit" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg"/>
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED NOT PROPORTIONNAL" Width="150"/>
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="2" Background="vgradient|0:SkyBlue|1:White" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+               <Image KeepProportions="false" Margin="10" Background="vgradient|0:SkyBlue|1:White" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="UNSCALED" Width="150"/>
+               <Image Scaled="false" Background="Blue" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="100" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Width="100" Height="50" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Background="Blue" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED PROPORTIONNAL" Width="150"/>
+               <Image Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image Background="Blue" Width="50" Height="100" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Background="Blue" Width="100" Height="50" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Width="100" Height="50" Path="#Crow.Icons.tetra.png"/>
+               <Image Background="Blue" Width="50" Height="Fit" Path="#Crow.Icons.tetra.png"/>
+               <Image Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Crow.Icons.tetra.png"/>
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="SCALED NOT PROPORTIONNAL" Width="150"/>
+               <Image KeepProportions="false" Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="50" Height="100" Path="#Crow.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image KeepProportions="false" Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+       </HorizontalStack>
+       <HorizontalStack Fit="true" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Label Text="UNSCALED" Width="150"/>
+               <Image Scaled="false" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="2" Background="Blue" Width="20" Height="20" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="100" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Width="100" Height="50" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+               <Image Scaled="false" Margin="10" Background="Blue" Width="50" Height="Fit" Path="#Crow.Images.Icons.tetra.png"/>
+       </HorizontalStack>
+       <HorizontalStack Width="Fit" Height="100" Background="hgradient|0:DarkRed|1:Transparent" Margin="5">
+               <Image Background="Blue" Path="#Tests.image.crow0.svg" />
+               <Image Margin="10" Background="White" Path="#Tests.image.crow0.svg" />
+               <Image Background="White" Width="20" Height="10" Path="#Tests.image.crow0.svg" />
+               <Image Margin="1" Background="White" Width="20" Height="10" Path="#Tests.image.crow0.svg" />
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testMenu.crow b/Samples/common/ui/Interfaces/Divers/testMenu.crow
new file mode 100755 (executable)
index 0000000..0882244
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="File" Width="Fit">
+               <MenuItem Command="{CMDTest}"/>
+       </MenuItem>
+</Menu>
diff --git a/Samples/common/ui/Interfaces/Divers/testOutOfClipUpdate.crow b/Samples/common/ui/Interfaces/Divers/testOutOfClipUpdate.crow
new file mode 100755 (executable)
index 0000000..22523b8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Container Width="200" Height="100" Background="DimGrey" Margin="5">
+       <Container Width="Stretched" Height="800" Background="DarkBlue">
+               <Label Text="{fps}" Background="RoyalBlue" VerticalAlignment="Center"/>
+       </Container>
+</Container>
diff --git a/Samples/common/ui/Interfaces/Divers/testPropLess.crow b/Samples/common/ui/Interfaces/Divers/testPropLess.crow
new file mode 100755 (executable)
index 0000000..42282c1
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<Label Margin="50" MinimumSize="10,10" Background="DimGrey" Text="{PropertyLessBinding}"/>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testShape.crow b/Samples/common/ui/Interfaces/Divers/testShape.crow
new file mode 100644 (file)
index 0000000..99b89b0
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Container Fit="true" Background="Red" Tooltip="test tooltip" >
+       <Shape Foreground="Transparent" Background="DimGrey" Size="11,11" Path="M 5.5,0.5 L 10.5,10.5 L 0.5,10.5 Z"
+               MouseEnter="{Background=hgradient|0:DimGrey|0.5:RoyalBlue|1:Black}"
+               MouseLeave="{Background=DimGrey}"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testStacks.crow b/Samples/common/ui/Interfaces/Divers/testStacks.crow
new file mode 100755 (executable)
index 0000000..99279cd
--- /dev/null
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<Window Width="500" Height="300" MinimumSize="50,50">
+<HorizontalStack Margin="5" Background="DimGrey">
+       <VerticalStack Width="200" Margin="5" Background="Grey">
+               <VerticalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </VerticalStack>
+               <VerticalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue" Height="Stretched"/>
+               </VerticalStack>
+               <HorizontalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+                       <HorizontalStack Width="Stretched" Height="Stretched" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="Stretched" Height="Stretched" Margin="5" Background="Grey">
+               <VerticalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </VerticalStack>
+               <VerticalStack Width="Stretched" Height="Stretched" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun TextAlignment="Center" Background="SkyBlue" Width="Stretched" Height="Stretched"/>
+               </VerticalStack>
+               <HorizontalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+                       <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Width="Fit" Margin="5" Background="Grey">
+               <VerticalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue" HorizontalAlignment="Left"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </VerticalStack>
+               <VerticalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue" Height="Stretched"/>
+               </VerticalStack>
+               <HorizontalStack Fit="true" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Fit" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+                       <HorizontalStack Width="Stretched" Height="Stretched" Background="DimGrey" Margin="5">
+                       <TextRun Background="SkyBlue"/>
+                       <TextRun Background="SkyBlue" Width="Stretched"/>
+                       <TextRun Background="SkyBlue"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testTextBox.crow b/Samples/common/ui/Interfaces/Divers/testTextBox.crow
new file mode 100755 (executable)
index 0000000..d0fe0af
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<VerticalStack Background="SteelBlue" Fit="true">
+       <HorizontalStack Fit="true">
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="TopLeft"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Top"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="TopRight"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Left"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Center"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Right"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="BottomLeft"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="Bottom"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" TextAlignment="BottomRight"/>
+       </HorizontalStack>
+       <HorizontalStack Fit="true">
+               <TextBox Background="DarkGrey" Height="30" Width="70" TextAlignment="Top" HorizontalStretch="true" Text="TopStretch"/>
+               <TextBox Background="DarkGrey" Height="30" Width="60" TextAlignment="Center" HorizontalStretch="true" Text="HorizontalStretch" />
+               <TextBox Background="DarkGrey" Height="30" Width="60" TextAlignment="Bottom" HorizontalStretch="true" Text="BottomStretch"/>
+               <TextBox Background="DarkGrey" Height="10" Width="70" TextAlignment="Left" VerticalStretch="true" Text="LeftStretch"/>
+               <TextBox Background="DarkGrey" Height="10" Width="70" TextAlignment="Center" VerticalStretch="true" Text="VerticalStretch"/>
+               <TextBox Background="DarkGrey" Height="10" Width="70" TextAlignment="Right" VerticalStretch="true" Text="RightStretch"/>
+               <TextBox Background="DarkGrey" Height="30" Width="50" HorizontalStretch="true" VerticalStretch="true" Text="Fit"/>
+       </HorizontalStack>      
+       <TextBox Name="tb" Multiline="true" Font="droid,16" Margin="5" Text="A\nBB\nCCC\nDDDD"/>
+       <TextBox Multiline="true" Font="droid,16" Name="tb5" Margin="5" Text="{../tb.SelectedText}"/>
+<!--   <TextBox Font="droid,10" Name="tb1" Margin="5" Text="this is a test of a text box"/>
+       <TextBox Width="300" Height="35" Text="this is a test of a text box"/>-->
+       <TextBox Font="droid,10" Name="tb2" Margin="0" Text="this is a test of a text box"/>
+       <TextBox Font="droid,10" Name="tb3" Margin="5" Text="this is a test of a text box"/>
+       <TextBox Font="droid,10" Name="tb4" Margin="5" Text="this is a test of a text box"/>
+       <TextBox Font="droid,10" Name="tb5" Margin="20" Text="this is a test of a text box"/>
+       <TextBox Multiline="true" Font="droid,10" Name="tb6" Margin="5" Text="this is a test of a text box\nthis is a test of a text box"/>
+       <TextBox Multiline="true" Font="droid,10" Name="tb7" Margin="1" TextAlignment="Center"
+               Text="this is a test of a text box\nthis is a test\nthis is a test when line are centered"/>
+       <TextBox Multiline="true" Font="droid,10" Name="tb8" Margin="1" TextAlignment="Center"
+               Text="this is a test of a text box\n\n\nthis is a test\nthis is a test when line are centered"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Divers/testVisibility.crow b/Samples/common/ui/Interfaces/Divers/testVisibility.crow
new file mode 100755 (executable)
index 0000000..9f9464c
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Container Margin="20" Background="Red" >
+       <Container Margin="20" Background="Green" MouseDown="{../go1.Visible=True}" >
+               <Widget Name="go1" Margin="20" Background="DimGrey" Visible="false" MouseDown="{Visible=false}"
+                       MouseEnter="{Background=Blue}"
+                       MouseLeave="{Background=DimGrey}"/>
+       </Container>
+</Container>
diff --git a/Samples/common/ui/Interfaces/Divers/test_stack.crow b/Samples/common/ui/Interfaces/Divers/test_stack.crow
new file mode 100755 (executable)
index 0000000..044fd7f
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DarkBlue" Height="300" Width="200">
+<!--   <Label Text="label11" Width="Stretched" Background="Green"/>
+       <Label Text="label21"/>-->
+       <HorizontalStack Width="Fit" Height="Fit" Margin="5"
+               Focusable="True" Background="Blue">
+
+               <Label Text="label12"/>
+               <VerticalStack Background="Red" Fit="true">
+                       <Label Text="label99"/>
+                       <Label Text="label999"/>
+               </VerticalStack>
+               <Label Text="label22"/>
+<!--           <Label Text="label32"/>
+               <Label Text="label42"/>
+               <Label Text="label52"/>-->
+       </HorizontalStack>
+<!--   <Label Text="label33" Background="Green" Width="Stretched"/>-->
+<!--   <Label Text="label43"/>-->
+<!--   <Border Margin="10">
+               <Label Text="label53" Background="Red" Height="Stretched" CornerRadius="10"/>
+       </Border>-->
+       <Label Text="label43"/>
+       <Label Text="label43"/>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/Divers/welcome.crow b/Samples/common/ui/Interfaces/Divers/welcome.crow
new file mode 100644 (file)
index 0000000..fa6da1e
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<Border BorderStyle="Sunken" Fit="true" Background="0.7,0.7,0.7,0.5" CornerRadius="10">
+       <VerticalStack Margin="20">
+               <Image Path="#Crow.Icons.crow.svg"/>
+<!--           <Label Font="Times bold, 60" Text="C.R.O.W"/>-->
+               <HorizontalStack Fit="true" DataSource="{CrowVersion}" Spacing="0">
+                       <Label Foreground="Black" Font="mono, 12" Text="version: "/>            
+                       <Label Foreground="Black" Font="mono, 12" Text="{Major}"/>              
+                       <Label Foreground="Black" Font="mono, 12" Text="."/>
+                       <Label Foreground="Black" Font="mono, 12" Text="{Minor}"/>
+                       <Label Foreground="Black" Font="mono, 12" Text="."/>
+                       <Label Foreground="DimGrey" Font="mono, 12" Text="{Build}"/>
+               </HorizontalStack>
+               <Widget Height="30"/>
+               <Label Font="20" Text="Press &lt;F2&gt; and &lt;F3&gt; to cycle into the examples"/>
+               <Label Font="20" Text="Those are basic tests used to validate changes,"/>
+               <Widget Height="30"/>
+               <Label Foreground="DimGrey" Font="20" Text="&lt;F5&gt; => File dialog example"/>
+               <Label Foreground="DimGrey" Font="20" Text="&lt;F6&gt; => Window example"/>
+       </VerticalStack>
+</Border>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/DragAndDrop/0.crow b/Samples/common/ui/Interfaces/DragAndDrop/0.crow
new file mode 100755 (executable)
index 0000000..ca1a7bb
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="90%" Spacing="100" Focusable="true">
+       <Container Name="source" StartDrag="{Background=DimGrey}" EndDrag="{Background=SeaGreen}" Focusable="true" Fit="true"
+                       Drop="{../target.Background=Green}"
+                       MouseEnter="{/txt.Foreground=Red}" MouseLeave="{/txt.Foreground=White}" MouseClick="{Background=SeaGreen}"
+                       AllowDrag="true" Width="200" Height="200" Background="SeaGreen">
+               <VerticalStack Margin="50">
+                       <Label Name="txt" Text="Drag me" Foreground="Grey"/>
+                       <Label Text="Dragged" Visible="{../../IsDragged}" Foreground="Grey"/>
+               </VerticalStack>
+       </Container>
+       <Container Name="target" DragEnter="{Background=SeaGreen}" DragLeave="{Background=DimGrey}" Focusable="true" Fit="true"
+                       MouseEnter="{/txt.Foreground=Red}" MouseLeave="{/txt.Foreground=White}"
+                       AllowDrop="true"  Background="DimGrey">
+               <VerticalStack Margin="50">
+                       <Label Name="txt" Text="Drop here" Foreground="Grey"/>
+                       <Label Text="Dragged" Visible="{../../IsDragged}" Foreground="Grey"/>
+               </VerticalStack>
+       </Container>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Experimental/DockWindow.template b/Samples/common/ui/Interfaces/Experimental/DockWindow.template
new file mode 100755 (executable)
index 0000000..6c91312
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--<Widget Background="{./Background}"/>-->
+<Border BorderWidth="1" Foreground="Black" CornerRadius="{./CornerRadius}"
+                               Background="{./Background}"
+                               MouseEnter="./onBorderMouseEnter"
+                               MouseLeave="./onBorderMouseLeave">
+       <VerticalStack Spacing="0">
+               <HorizontalStack Height="Fit">
+                       <Label  Text="{./Name}" TextAlignment="Left" Width="Fit"
+                                        Foreground="White" />
+                       <Label  Text="{./DockingPosition}" TextAlignment="Left" Width="Fit"
+                                        Foreground="White" />
+               </HorizontalStack>
+               <Label  Text="{./Width}" TextAlignment="Left" Width="Fit"
+                                Foreground="White" />
+               <Label  Text="{./Height}" TextAlignment="Left" Width="Fit"
+                                Foreground="White" />
+
+               <HorizontalStack Visible="{./IsDocked}" Height="Fit" Margin="1" Background="Grey">
+                       <Label  Text="{./Caption}" TextAlignment="Left" Width="Stretched"
+                                        Foreground="Jet" />
+                       <Image Width="8" Height="8" Focusable="true" Margin="0" Path="#Crow.Icons.exit2.svg"
+                                        MouseClick="./butQuitPress"/>
+               </HorizontalStack>
+               <HorizontalStack Background="vgradient|0:0.5,0.6,0.5,0.5|1:0.2,0.3,0.3,0.7"
+                               Name="hs" Margin="0" Spacing="0" Height="Fit" Visible="{./IsFloating}">
+                       <Widget Width="5"/>
+                       <Image Margin="1" Width="10" Height="10" Path="{./Icon}"/>
+                       <Label Width="Stretched" Foreground="White" Margin="1" TextAlignment="Left" Text="{./Caption}" />
+                       <Border CornerRadius="6" BorderWidth="1" Foreground="Transparent"  Height="10" Width="10"
+                               MouseEnter="{Foreground=White}" MouseLeave="{Foreground=Transparent}">
+                               <Image Focusable="true" Name="Image" Margin="0" Path="#Crow.Icons.exit2.svg"
+                                        MouseClick="./butQuitPress"/>
+                       </Border>
+                       <Widget Width="5"/>
+               </HorizontalStack>
+               <Container Name="Content" MinimumSize="50,50"/>
+       </VerticalStack>
+</Border>
diff --git a/Samples/common/ui/Interfaces/Experimental/testDock.crow b/Samples/common/ui/Interfaces/Experimental/testDock.crow
new file mode 100644 (file)
index 0000000..b69f8e7
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<Window Width="Stretched" Height="Stretched" Background="Jet">
+       <DockStack Name="mainDock" Background="DarkRed" Margin="20">
+       </DockStack>
+</Window>
+<!---          
+               <DockWindow Left="450" Top="450" Width="150" Height="150" Background="Yellow"/>-->
+       
+
+<!--<Group Background="DimGrey" Margin = "0" Focusable="true" >
+       <Window Top="100" Left="100" Focusable="true" Caption="View 1" Width="300" Height="300"><Widget Background="Green" Focusable="true" MouseEnter="{Background=Grey}" MouseLeave="{Background=Green}"/></Window>
+       <Window Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></Window>
+       <Window Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></Window>
+       <Window Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></Window>
+</Group>-->
+<!--<Docker >
+       <DockWindow Resizable = "true" Top="100" Left="100" Caption="View 1" Width="300" Height="300">
+               <VerticalStack Background="DarkGreen" Focusable="true">
+                       <Label Text="{../../Left}" Background="Black" Width="Stretched"/>
+                       <Label Text="{../../Top}" Background="Black"/>
+                       <Label Text="{../../LogicalParent}" Background="Black"/>
+               </VerticalStack>
+       </DockWindow>
+       <DockWindow Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></DockWindow>
+       <DockWindow Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></DockWindow>
+       <DockWindow Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></DockWindow>
+</Docker>-->
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Experimental/testDock2.crow b/Samples/common/ui/Interfaces/Experimental/testDock2.crow
new file mode 100644 (file)
index 0000000..d4eb29a
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<Docker >
+       <DockWindow Left="100" Top="100" Width="150" Height="150" Background="DarkRed"/>
+       <DockWindow Left="200" Top="200" Width="150" Height="150" Background="DarkGreen"/>
+       <DockWindow Left="300" Top="300" Width="150" Height="150" Background="Blue"/>
+       <DockWindow Left="400" Top="400" Width="150" Height="150" Background="Yellow"/>
+       <DockWindow Left="500" Top="500" Width="150" Height="150" Background="Yellow"/>
+</Docker>
+<!--<Group Background="DimGrey" Margin = "0" Focusable="true" >
+       <Window Top="100" Left="100" Focusable="true" Caption="View 1" Width="300" Height="300"><Widget Background="Green" Focusable="true" MouseEnter="{Background=Grey}" MouseLeave="{Background=Green}"/></Window>
+       <Window Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></Window>
+       <Window Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></Window>
+       <Window Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></Window>
+</Group>-->
+<!--<Docker >
+       <DockWindow Resizable = "true" Top="100" Left="100" Caption="View 1" Width="300" Height="300">
+               <VerticalStack Background="DarkGreen" Focusable="true">
+                       <Label Text="{../../Left}" Background="Black" Width="Stretched"/>
+                       <Label Text="{../../Top}" Background="Black"/>
+                       <Label Text="{../../LogicalParent}" Background="Black"/>
+               </VerticalStack>
+       </DockWindow>
+       <DockWindow Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></DockWindow>
+       <DockWindow Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></DockWindow>
+       <DockWindow Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></DockWindow>
+</Docker>-->
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Experimental/testStack.crow b/Samples/common/ui/Interfaces/Experimental/testStack.crow
new file mode 100644 (file)
index 0000000..0348f0b
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<Window Width="600" Height="500">
+<VerticalStack Margin="20" Background="DimGrey" Spacing="10">
+       <Widget Height="100" Width="500" Background="Green"/>
+       <Splitter/>
+       <HorizontalStack>
+               <Widget Height="Stretched" Width="100" Background="Red"/>
+               <Splitter/>
+               <Widget Height="Stretched" Width="100" Background="DarkRed"/>
+       </HorizontalStack>
+       <Splitter/>
+       <Widget Height="100" Width="500" Background="Green"/>
+</VerticalStack>
+</Window>
+<!--<Group Background="DimGrey" Margin = "0" Focusable="true" >
+       <Window Top="100" Left="100" Focusable="true" Caption="View 1" Width="300" Height="300"><Widget Background="Green" Focusable="true" MouseEnter="{Background=Grey}" MouseLeave="{Background=Green}"/></Window>
+       <Window Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></Window>
+       <Window Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></Window>
+       <Window Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></Window>
+</Group>-->
+<!--<Docker >
+       <DockWindow Resizable = "true" Top="100" Left="100" Caption="View 1" Width="300" Height="300">
+               <VerticalStack Background="DarkGreen" Focusable="true">
+                       <Label Text="{../../Left}" Background="Black" Width="Stretched"/>
+                       <Label Text="{../../Top}" Background="Black"/>
+                       <Label Text="{../../LogicalParent}" Background="Black"/>
+               </VerticalStack>
+       </DockWindow>
+       <DockWindow Top="200" Left="200" Focusable="true" Caption="View 2" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Blue" MouseEnter="{Background=Grey}" MouseLeave="{Background=Blue}"/></DockWindow>
+       <DockWindow Top="300" Left="300" Focusable="true" Caption="View 3" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Yellow" MouseEnter="{Background=Grey}" MouseLeave="{Background=Yellow}"/></DockWindow>
+       <DockWindow Top="400" Left="400" Focusable="true" Caption="View 4" Resizable = "true" Width="300" Height="300"><Widget Focusable="true" Background="Black" MouseEnter="{Background=Grey}" MouseLeave="{Background=Black}"/></DockWindow>
+</Docker>-->
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Experimental/testTypeViewer.goml b/Samples/common/ui/Interfaces/Experimental/testTypeViewer.goml
new file mode 100755 (executable)
index 0000000..caa454f
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+
+       <VerticalStack Height="Fit" Width="250" Name="hstack" Margin="0" Spacing="0">
+               <Border Height="Fit" Width="Stretched" BorderWidth="2" CornerRadius="10" Background="SteelBlue">
+                       <Label Name="labName" Text="{Name}" Width="Stretched" Height="Fit" Margin="3"/>
+               </Border>
+               <ListBox Data="{Members}" Width="Stretched" Height="400" ItemTemplate="Interfaces/tmpMembers.goml" Focusable="true">
+                       
+               </ListBox>
+       </VerticalStack>
diff --git a/Samples/common/ui/Interfaces/GraphicObject/0.crow b/Samples/common/ui/Interfaces/GraphicObject/0.crow
new file mode 100755 (executable)
index 0000000..d786e6a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<VerticalStack Height="Fit" Width="20" Margin="1" Spacing="2" Background="White" >                     
+       <Widget Height="50" Background="Green"/>                                                
+       <Widget Height="50" Background="Red"/>                                          
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/GraphicObject/1.crow b/Samples/common/ui/Interfaces/GraphicObject/1.crow
new file mode 100755 (executable)
index 0000000..d74f494
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<Widget Margin="10" Width="150" Height="150" Background="SeaGreen"
+               MinimumSize="50,50"/>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/GraphicObject/2.crow b/Samples/common/ui/Interfaces/GraphicObject/2.crow
new file mode 100755 (executable)
index 0000000..af2998a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Widget Margin="10" Width="50%" Height="50%"
+               Background="hgradient|0:Red|0.25:Blue|0.5:Green|0.75:Yellow|1:Red"
+               MinimumSize="50,50"/>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/GraphicObject/4.crow b/Samples/common/ui/Interfaces/GraphicObject/4.crow
new file mode 100755 (executable)
index 0000000..81d386c
--- /dev/null
@@ -0,0 +1,377 @@
+<?xml version="1.0"?>
+<HorizontalStack Fit="true">
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <ProgressBar CornerRadius="5" Background="DimGrey" Margin="1" Maximum="1000" Value="{fps}" Width="200" Height="15"/>
+               <HorizontalStack Fit="true">
+                       <Label Text="Memory:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{memory}" Font="droid,12" TextAlignment="Center"
+                               Background="vgradient|0:Blue|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Update:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+               <HorizontalStack Fit="true">
+                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                               Background="vgradient|0:Green|1:Black"/>
+               </HorizontalStack>
+       </VerticalStack>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/GraphicObject/5.crow b/Samples/common/ui/Interfaces/GraphicObject/5.crow
new file mode 100755 (executable)
index 0000000..4922474
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<HorizontalStack Width="Stretched" Height="Fit" Margin="5" Background="Mantis">
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="Stretched" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+       <GraphicObject Background="Carmine" Width="10%" Height="20"/>
+</HorizontalStack>
diff --git a/Samples/common/ui/Interfaces/GraphicObject/6.crow b/Samples/common/ui/Interfaces/GraphicObject/6.crow
new file mode 100755 (executable)
index 0000000..f537a71
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Background="DimGrey" Margin="5">
+<!--   <RadioButton/>-->
+       <Label Text="a" Width="Stretched" Background="Red"/>
+       <Label Text="{fps}" HorizontalAlignment="Right" Background="LimeGreen"/>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/GraphicObject/7.crow b/Samples/common/ui/Interfaces/GraphicObject/7.crow
new file mode 100755 (executable)
index 0000000..0ac9b19
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<VerticalStack Height="Fit" Width="Fit">
+       <Label Width="0"/>
+       <Expandable  Width="Fit" Background="Grey">
+               <Expandable Background="LightBlue">
+                       <Expandable Background="Green">
+                               <Expandable Background="LimeGreen">
+                                       <Expandable Background="DimGrey">
+                                               <Expandable Width="0" Background="Yellow">
+                                                       <Expandable Background="Blue">
+                                                               <Expandable Width="0" Background="Blue">
+                                                                       <Expandable Width="0" Background="Blue">
+                                                                               <Expandable Width="0" Background="Green">
+                                                                                       <Label Background="Red"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
+       <Expandable Width="0"  Background="Grey">
+               <Expandable Width="0" Background="LightBlue">
+                       <Expandable Width="0" Background="Green">
+                               <Expandable Width="0" Background="LimeGreen">
+                                       <Expandable Width="0" Background="DimGrey">
+                                               <Expandable Width="0" Background="Yellow">
+                                                       <Expandable Width="0" Background="Blue">
+                                                               <Expandable Width="0" Background="Blue">
+                                                                       <Expandable Width="0" Background="Blue">
+                                                                               <Expandable Width="0" Background="Green">
+                                                                                       <Label Background="Red"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/Group/0.crow b/Samples/common/ui/Interfaces/Group/0.crow
new file mode 100755 (executable)
index 0000000..db09cab
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<Group MinimumSize="50,50" Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"                        
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Group/1.crow b/Samples/common/ui/Interfaces/Group/1.crow
new file mode 100755 (executable)
index 0000000..2d378d3
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Group/2.crow b/Samples/common/ui/Interfaces/Group/2.crow
new file mode 100755 (executable)
index 0000000..721790d
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Fit="true">
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Group/3.crow b/Samples/common/ui/Interfaces/Group/3.crow
new file mode 100755 (executable)
index 0000000..bcb57b2
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Width="70%" Height="50%">
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="100%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Left"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Bottom"
+                       HorizontalAlignment="Right"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Group/4.crow b/Samples/common/ui/Interfaces/Group/4.crow
new file mode 100755 (executable)
index 0000000..3e97341
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<Group Background="DimGrey" Margin="10" Fit="true">
+       <Label Font="droid bold,40" Text="{fps}" Margin="10"  Fit="true"/>
+       <Widget Margin="10" Width="20%" Height="20%" Background="SeaGreen"
+                       VerticalAlignment="Top"
+                       MinimumSize="10,10"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Splitter/1.crow b/Samples/common/ui/Interfaces/Splitter/1.crow
new file mode 100755 (executable)
index 0000000..48c1ea1
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<HorizontalStack Width="80%" Height="50%">
+       <Border Width="45%" CornerRadius="10" BorderWidth="1">
+               <VerticalStack>
+                       <VerticalStack Height="45%">
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 1" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 2"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="true" Caption="Check 3"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 4" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                       </VerticalStack>
+                       <Splitter Thickness="3"/>
+                       <VerticalStack Height="45%">
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 1" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 2"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="true" Caption="Check 3"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox Height="25%" IsChecked="false" Caption="Check 4" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                       </VerticalStack>
+               </VerticalStack>
+       </Border>
+       <Splitter Thickness="3"/>
+       <Border Width="45%" CornerRadius="10" BorderWidth="1">
+               <VerticalStack Width="50%" Height="50%" Background="DimGrey">
+                       <RadioButton IsChecked="false" Caption="Choice 1" Background="hgradient|0:DarkRed|1:Transparent"/>
+                       <RadioButton IsChecked="false" Caption="Choice 2"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                       <RadioButton IsChecked="true" Caption="Choice 3"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                       <RadioButton IsChecked="false" Caption="Choice 4" Background="hgradient|0:DarkRed|1:Transparent"/>
+               </VerticalStack>
+       </Border>
+       <Splitter Thickness="3"/>
+</HorizontalStack>
diff --git a/Samples/common/ui/Interfaces/Splitter/3.crow b/Samples/common/ui/Interfaces/Splitter/3.crow
new file mode 100755 (executable)
index 0000000..9a28896
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true">
+       <Widget CornerRadius="5" Height="10" Width="600" Background="vgradient|0:Transparent|0.5:White|1:Transparent"/>
+       <HorizontalStack Fit="true" HorizontalAlignment="Left">
+               <Border Fit="true" CornerRadius="10" BorderWidth="1">
+                       <VerticalStack Margin="10">
+                               <CheckBox IsChecked="false" Caption="Check 1" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox IsChecked="false" Caption="Check 2"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox IsChecked="true" Caption="Check 3"  Background="hgradient|0:LimeGreen|1:Transparent"/>
+                               <CheckBox IsChecked="false" Caption="Check 4" Background="hgradient|0:LimeGreen|1:Transparent"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter/>
+               <Border Fit="true" CornerRadius="10" BorderWidth="1">
+                       <VerticalStack Margin="10">
+                               <RadioButton IsChecked="false" Caption="Choice 1" Background="hgradient|0:DarkRed|1:Transparent"/>
+                               <Splitter/>
+                               <RadioButton Width="Stretched" IsChecked="false" Caption="Choice 2"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                               <RadioButton IsChecked="true" Caption="Choice 3"  Background="hgradient|0:DarkRed|1:Transparent"/>
+                               <RadioButton IsChecked="false" Caption="Choice 4" Background="hgradient|0:DarkRed|1:Transparent"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter Thickness="3" />
+               <Border Fit="true" CornerRadius="10" BorderWidth="1" MaximumSize="150,150" MinimumSize="50,50">
+                       <VerticalStack Margin="10">
+                               <Label Text="label 1" Background="hgradient|0:Blue|1:Transparent"/>
+                               <Label Text="label 2" Background="hgradient|0:Blue|1:Transparent"/>
+                               <Label Text="label 3" Background="hgradient|0:Blue|1:Transparent"/>
+                               <Label Text="label 4" Width="Stretched" Background="hgradient|0:Blue|1:Transparent"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter/>
+               <Border Fit="true" CornerRadius="10" BorderWidth="1">
+                       <VerticalStack Margin="10">
+                               <Button Caption="Button 1" Background="hgradient|0:Red|1:DarkRed" CornerRadius="5"/>
+                               <Button Caption="Button 2"  Background="hgradient|0:Green|1:Blue" CornerRadius="3"/>
+                               <Button Caption="Button 3"  Background="hgradient|0:DarkRed|1:Transparent" CornerRadius="0"/>
+                               <Button Caption="Button 4" Background="hgradient|0:DarkRed|1:Transparent" CornerRadius="8"/>
+                       </VerticalStack>
+               </Border>
+               <Splitter/>
+       </HorizontalStack>
+       <Widget CornerRadius="5" Height="10" Width="600" Background="vgradient|0:Transparent|0.5:White|1:Transparent"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/0.crow b/Samples/common/ui/Interfaces/Stack/0.crow
new file mode 100755 (executable)
index 0000000..e2ce6bb
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<VerticalStack MinimumSize="50,50" Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/0h.crow b/Samples/common/ui/Interfaces/Stack/0h.crow
new file mode 100755 (executable)
index 0000000..af596cb
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<HorizontalStack MinimumSize="50,50" Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/1.crow b/Samples/common/ui/Interfaces/Stack/1.crow
new file mode 100755 (executable)
index 0000000..4b89bea
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="60%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/1h.crow b/Samples/common/ui/Interfaces/Stack/1h.crow
new file mode 100755 (executable)
index 0000000..5fb0551
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="60%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="20%" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/2.crow b/Samples/common/ui/Interfaces/Stack/2.crow
new file mode 100755 (executable)
index 0000000..2498ee3
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DimGrey" Margin="10" Width="90%" Height="100%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/2h.crow b/Samples/common/ui/Interfaces/Stack/2h.crow
new file mode 100755 (executable)
index 0000000..c72e9da
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="100%">
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+       <Widget Margin="10" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="10,10"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/3.crow b/Samples/common/ui/Interfaces/Stack/3.crow
new file mode 100755 (executable)
index 0000000..7aa7c9e
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<VerticalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/3h.crow b/Samples/common/ui/Interfaces/Stack/3h.crow
new file mode 100755 (executable)
index 0000000..2acdd49
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="90%">
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Stretched" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+       <Widget Margin="1" Width="Stretched" Height="Fit" Background="SeaGreen"
+                       MinimumSize="2,2"/>
+</HorizontalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Stack/4.crow b/Samples/common/ui/Interfaces/Stack/4.crow
new file mode 100755 (executable)
index 0000000..33d57de
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <HorizontalStack Background="DimGrey" Margin="10" Width="90%" Height="20%">
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Width="100%" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+       </HorizontalStack>
+       <HorizontalStack Background="DimGrey" Margin="10" Width="Fit" Height="20%">
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Width="100%" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+               <Label Font="droid bold, 20" Text="{fps}" Margin="5" Fit="true" Background="SeaGreen"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TabItem.template b/Samples/common/ui/Interfaces/TabItem.template
new file mode 100644 (file)
index 0000000..fd0f310
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<GenericStack Orientation="Vertical" Spacing="0"
+               Background="{./Background}"
+               MouseEnter="{/caption.Foreground=White}"
+               MouseLeave="{/caption.Foreground=Grey}">
+       <HorizontalStack Left="{./TabOffset}"
+               Name="TabTitle"
+               HorizontalAlignment="Left"
+               Height="{./TabHeight}"
+               Width="{./TabWidth}">
+               <Label Name="caption" Text="{./Caption}" Foreground="Grey" Width="Stretched"/>
+               <Label Text="{./ViewIndex}" Foreground="Green"/>
+               <Label Text="{./TabOffset}" Foreground="Red"/>
+               <Border CornerRadius="5" BorderWidth="1" Foreground="Transparent"  Height="12" Width="12"
+                                       MouseEnter="{Foreground=White}" MouseLeave="{Foreground=Transparent}">
+                       <Image Focusable="true" Name="Image" Margin="0" Width="Stretched" Height="Stretched" Path="#Crow.Icons.exit2.svg"
+                                MouseClick="./butCloseTabClick"/>
+               </Border>
+       </HorizontalStack>
+       <Container Margin="20">
+               <Container Background="DimGrey" Name="Content"/>
+       </Container>
+</GenericStack>
+
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/0.crow b/Samples/common/ui/Interfaces/TemplatedContainer/0.crow
new file mode 100755 (executable)
index 0000000..5b26740
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<Expandable Fit="true" Caption="Test expandable" Background="DimGrey">
+               <VerticalStack Margin="5" >
+                       <CheckBox Name="chk1" />
+                       <CheckBox Name="chk2" IsChecked="true"/>
+                       <CheckBox Name="chk3" />
+                       <CheckBox Name="chk4" />
+                       <HorizontalStack Fit="true" Margin="2" Background="SeaGreen">
+                               <Label Name="captionFps" Text="Fps:" Width="30" TextAlignment="Right"/>
+                               <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="Fit" TextAlignment="Center" Background="SeaGreen"/>
+                       </HorizontalStack>
+               </VerticalStack>
+</Expandable>
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/6.crow b/Samples/common/ui/Interfaces/TemplatedContainer/6.crow
new file mode 100755 (executable)
index 0000000..641d58f
--- /dev/null
@@ -0,0 +1,21 @@
+<Expandable Width="Stretched"  Background="Grey">
+               <Expandable Width="Stretched" Background="LightBlue">
+                       <Expandable Width="Stretched" Background="Green">
+                               <Expandable Width="Stretched" Background="LimeGreen">
+                                       <Expandable Width="Stretched" Background="DimGrey">
+                                               <Expandable Width="Stretched" Background="Yellow">
+                                                       <Expandable Width="Stretched" Background="SeaGreen">
+                                                               <Expandable Width="Stretched" Background="Blue">
+                                                                       <Expandable Width="Stretched" Background="RoyalBlue">
+                                                                               <Expandable Width="Stretched" Background="Green">
+                                                                                       <Label Background="Red" Text="{fps}"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/7.crow b/Samples/common/ui/Interfaces/TemplatedContainer/7.crow
new file mode 100755 (executable)
index 0000000..99a7507
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<VerticalStack Height="Fit" Width="Fit">
+       <Label Width="Stretched"/>
+       <Expandable  Width="Fit" Background="Grey">
+               <Expandable Background="LightBlue">
+                       <Expandable Background="Green">
+                               <Expandable Background="LimeGreen">
+                                       <Expandable Background="DimGrey">
+                                               <Expandable Width="Stretched" Background="Yellow">
+                                                       <Expandable Background="SeaGreen">
+                                                               <Expandable Width="Stretched" Background="Blue">
+                                                                       <Expandable Width="Stretched" Background="RoyalBlue">
+                                                                               <Expandable Width="Stretched" Background="Green">
+                                                                                       <Label Background="Red" Text="{fps}"/>
+                                                                               </Expandable>
+                                                                       </Expandable>
+                                                               </Expandable>
+                                                       </Expandable>
+                                               </Expandable>
+                                       </Expandable>
+                               </Expandable>
+                       </Expandable>
+               </Expandable>
+       </Expandable>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testGroupBox.crow b/Samples/common/ui/Interfaces/TemplatedContainer/testGroupBox.crow
new file mode 100755 (executable)
index 0000000..4858180
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!--<Container Background="vgradient|0:DarkGrey|1:DimGrey">-->
+       <GroupBox Fit="true" Background="vgradient|0:SteelBlue|1:Transparent"
+               Foreground="White">
+<!--           <Label/>-->
+       </GroupBox>
+<!--</Container>-->
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testMsgBox.crow b/Samples/common/ui/Interfaces/TemplatedContainer/testMsgBox.crow
new file mode 100755 (executable)
index 0000000..d60c281
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<MessageBox Caption="message" Message="this is a message box"/>
+<!--   Ok="onMsgBoxOk"
+       Cancel="onMsgBoxCancel"/>-->
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testPopper.crow b/Samples/common/ui/Interfaces/TemplatedContainer/testPopper.crow
new file mode 100755 (executable)
index 0000000..beac873
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <Border Fit="true" Margin="10">
+               <VerticalStack Width="150" Height="Fit">
+                       <RadioButton Caption="Left" IsChecked="true" Checked="change_alignment"/>
+                       <RadioButton Caption="Right" Checked="change_alignment"/>
+                       <RadioButton Caption="Top" Checked="change_alignment"/>
+                       <RadioButton Caption="Bottom" Checked="change_alignment"/>
+               </VerticalStack>
+       </Border>
+       <Widget Height="200"/>
+       <Popper Caption="TestPopper" Width="100" Background="DimGrey" PopDirection="{alignment}">
+               <Border Fit="True" Background="SteelBlue">
+                       <Image Fit="true" Path="#Crow.Icons.crow.svg" Margin="10"/>
+                       <VerticalStack Fit="true" Margin="10" Background="CornflowerBlue">
+                               <CheckBox Name="chk1" Background="Red"/>
+                               <CheckBox Name="chk2" IsChecked="true"/>
+                               <CheckBox Name="chk3"/>
+                               <CheckBox Name="chk4"/>
+                               <HorizontalStack Fit="true" Margin="20">
+                                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" Background="SeaGreen"/>
+                               </HorizontalStack>
+                       </VerticalStack>
+               </Border>
+       </Popper>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testTabView.crow b/Samples/common/ui/Interfaces/TemplatedContainer/testTabView.crow
new file mode 100644 (file)
index 0000000..e3717c8
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Group Height="90%" Width="95%">
+<VerticalStack >
+       <HorizontalStack Height="Fit">
+               <Label Text="Selected Tab:"/>
+               <Label Text="{../../tabview1.SelectedTab}"/>
+       </HorizontalStack>
+       <TabView Name="tabview1" Background="DimGrey" Orientation="Horizontal">
+               <TabItem Name="TabItem1" Caption="tab item 1" Background="DimGrey">
+                       <VerticalStack Margin="20">
+                               <CheckBox/>
+                               <CheckBox/>
+                               <CheckBox/>
+                               <CheckBox/>
+                       </VerticalStack>
+               </TabItem>
+               <TabItem Name="TabItem2" Caption="tab item 2" Background="DimGrey">
+                       <VerticalStack Height="Fit" Margin="10">
+                               <RadioButton Fit="true"/>
+                               <RadioButton/>
+                               <RadioButton/>
+                               <RadioButton/>
+                       </VerticalStack>
+               </TabItem>
+               <TabItem Name="TabItem3" Background="DimGrey" Caption="tab item 3">
+                       <Container Margin="5" CornerRadius="2" >
+                               <TextBox Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                       </Container>
+               </TabItem>
+               <TabItem Name="TabItem4" Background="DimGrey" Caption="tab item 4" Margin="0">
+                       <TextBox/>
+               </TabItem>
+       </TabView>
+       <Button Background="vgradient|0:DimGrey|1:Black" HorizontalAlignment="Right"
+               Caption="Add new tab" Width="Fit" Height="30" MouseDown="onAddTabButClick"/>
+</VerticalStack>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testTabView2.crow b/Samples/common/ui/Interfaces/TemplatedContainer/testTabView2.crow
new file mode 100644 (file)
index 0000000..67b87b0
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<HorizontalStack Height="90%" Width="99%" Spacing="50">
+       <VerticalStack Width="40%">     
+               <HorizontalStack Height="Fit">
+                       <Label Text="Selected Tab:"/>
+                       <Label Text="{../../tabview1.SelectedTab}"/>
+               </HorizontalStack>
+               <TabView Name="tabview1" Background="DimGrey" Orientation="Horizontal" Margin="5" >
+                       <TabItem Name="TabItem1" Caption="tab-1.1" Background="DimGrey">
+                               <VerticalStack Margin="20">
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem2" Caption="tab-1.2" Background="DimGrey">
+                               <VerticalStack Height="Fit" Margin="10">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem3" Background="DimGrey" Caption="tab-1.3">
+                               <Container Margin="5" CornerRadius="2" >
+                                       <TextBox Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                               </Container>
+                       </TabItem>
+               </TabView>
+               <Button Background="vgradient|0:DimGrey|1:Black" HorizontalAlignment="Right"
+                       Caption="Add new tab" Width="Fit" Height="30" MouseDown="onAddTabButClick"/>    
+       </VerticalStack>
+       <VerticalStack Width="40%">     
+               <HorizontalStack Height="Fit">
+                       <Label Text="Selected Tab:"/>
+                       <Label Text="{../../tabview2.SelectedTab}"/>
+               </HorizontalStack>
+               <TabView Name="tabview2" Background="DimGrey" Orientation="Horizontal" >
+                       <TabItem Name="TabItem1" Caption="tab-2.1" Background="DimGrey">
+                               <VerticalStack Margin="20">
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                                       <CheckBox/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem2" Caption="tab-2.2" Background="DimGrey">
+                               <VerticalStack Height="Fit" Margin="10">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                                       <RadioButton/>
+                               </VerticalStack>
+                       </TabItem>
+                       <TabItem Name="TabItem3" Background="DimGrey" Caption="tab-2.3">
+                               <Container Margin="5" CornerRadius="2" >
+                                       <TextBox Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                               </Container>
+                       </TabItem>
+               </TabView>
+               <Button Background="vgradient|0:DimGrey|1:Black" HorizontalAlignment="Right"
+                       Caption="Add new tab" Width="Fit" Height="30" MouseDown="onAddTabButClick2"/>   
+       </VerticalStack>
+</HorizontalStack>
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testTreeView.crow b/Samples/common/ui/Interfaces/TemplatedContainer/testTreeView.crow
new file mode 100755 (executable)
index 0000000..099ce66
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Border Margin="5" Height="90%" Width="50%">
+       <DirectoryView Name="dv" CurrentDirectory="/" Margin="1"/>
+</Border>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testWindow.goml b/Samples/common/ui/Interfaces/TemplatedContainer/testWindow.goml
new file mode 100755 (executable)
index 0000000..e42a5c9
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<Window Left="10" Top="10" Caption="Test window"
+               Width="250" Height="550" >
+       <VerticalStack Name="contentVSStack" Margin="10" Spacing="10" Background="0.4,0.4,0.4,0.4">
+               <Slider Name="slider" Height="12" Width="Stretched" CornerRadius="3"/>
+               <GroupBox Caption="test"  Height="Fit" Width="Stretched" Margin="5">
+                       <VerticalStack  Height="Fit" Width="Stretched" >
+                               <RadioButton  Caption="Radio 1" Background="Red" Width="Stretched"/>
+                               <RadioButton  Caption="Radio 2" IsChecked="true" />
+                               <RadioButton  Caption="Radio 3" />
+                               <RadioButton  Caption="Radio 1" Background="SkyBlue" Width="Stretched"/>
+                       </VerticalStack>
+               </GroupBox>
+               <HorizontalStack Width="Stretched" Height="Fit" Margin="10" CornerRadius="5" Background="SkyBlue">
+                       <RadioButton Width="80" Height="Fit"  Caption="Radio 2" IsChecked="true" />
+                       <Widget Width="Stretched"/>
+                       <RadioButton Width="80" Height="Fit" Caption="Radio 3" />
+               </HorizontalStack>
+               <HorizontalStack Width="Stretched" Height="Stretched" MinimumSize="10,40" Margin="0" CornerRadius="5"
+                               Background="vgradient|0:White|0.1:SteelBlue|0.9:SteelBlue|1:Transparent">
+                       <CheckBox Height="Fit" Width="80"/>
+                       <Widget Width="Stretched"/>
+                       <CheckBox Height="Fit" Width="80" IsChecked="true"/>
+               </HorizontalStack>
+               <Border Fit="true" CornerRadius="5" BorderWidth="1" >
+                       <Container Name="MainGrp" Background="0.5,0.5,0.5,0.4" Width="120" Fit="true"
+                               Margin="10" Focusable="True" >
+                                       <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Layouting:" Width="50" TextAlignment="Right"/>
+                                                       <Label Name="labLayouting" Text="{layouting}" Font="droid,12" Width="80" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Clipping:" Width="50" TextAlignment="Right"/>
+                                                       <Label Text="{update}" Font="droid,12" Width="80" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Drawing:" Width="50" TextAlignment="Right"/>
+                                                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="80" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="Right"/>
+                                                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Min:" Width="50" TextAlignment="Right"/>
+                                                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                               <HorizontalStack Fit="true">
+                                                       <Label Text="Max:" Width="50" TextAlignment="Right"/>
+                                                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                                               Background="vgradient|0:SeaGreen|1:Black"/>
+                                               </HorizontalStack>
+                                       </VerticalStack>
+                       </Container>
+               </Border>
+               <HorizontalStack Fit="true" Background="RoyalBlue" Margin="3">
+                       <Widget Margin="10" Background="LimeGreen" Width="5" Height="5"/>
+                       <TextBox Font="droid, 16" Multiline="true" Text="this is a test\nmultiline" Margin="2"/>
+                       <Widget Margin="10" Background="LimeGreen" Width="5" Height="5"/>
+               </HorizontalStack>
+       </VerticalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testWindow2.goml b/Samples/common/ui/Interfaces/TemplatedContainer/testWindow2.goml
new file mode 100755 (executable)
index 0000000..cf88e8c
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<Window Focusable="true" Caption="Measures" Width="30%" Height="Fit" MinimumSize="100,100">
+       <VerticalStack Width="90%" Height="Fit" Spacing="1" Margin="10">
+               <HorizontalStack Height="Fit">
+                       <Label Text="Fps:" Style="FpsLabel"/>
+                       <Label Text="{fps}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Min:" Style="FpsLabel"/>
+                       <Label Text="{fpsMin}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Max:" Style="FpsLabel"/>
+                       <Label Text="{fpsMax}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Update:" Style="FpsLabel"/>
+                       <Label Text="{update}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Layouting:" Style="FpsLabel"/>
+                       <Label Text="{layouting}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Clipping:" Style="FpsLabel"/>
+                       <Label Text="{clipping}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack Height="Fit">
+                       <Label Text="Drawing:" Style="FpsLabel"/>
+                       <Label Text="{drawing}" Style="FpsDisp"/>
+               </HorizontalStack>
+       </VerticalStack>
+</Window>
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/testWindow3.goml b/Samples/common/ui/Interfaces/TemplatedContainer/testWindow3.goml
new file mode 100755 (executable)
index 0000000..869615b
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<Window Left="10" Top="10" Caption="Test window" Width="200" Height="200" Background="0.5,0.5,0.5,0.8"
+       Focusable="True"  CornerRadius="20" MinimumSize="100,100" MaximumSize="500,500">
+       <Template>
+               <Container Margin="20" Name="Content" Height="{../HeightPolicy}" Width="{../WidthPolicy}" Background="0.5,0.5,0.5,0.5"/>
+       </Template>
+<!--   <Group Background="Green">-->
+               <Widget Height="50" Width="50" Background="Red" Margin="5"/>
+<!--           <Scrollbar Orientation="Vertical" Height="Stretched" Width="10" Background="Blue" Margin="0" HorizontalAlignment="Right"/>-->
+<!--   </Group>-->
+</Window>
diff --git a/Samples/common/ui/Interfaces/TemplatedContainer/test_Listbox.crow b/Samples/common/ui/Interfaces/TemplatedContainer/test_Listbox.crow
new file mode 100755 (executable)
index 0000000..47adb8c
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!--<ListBox Data="{TestList}" Focusable="true"/>-->
+<Border Margin="50">
+       <VerticalStack >
+               <Label Text="{../ColorList.SelectedItem}" Background="DarkGreen"/>
+               <Label Text="{Hover}" Background="DarkGreen"/>
+               <Button Caption="Clear" Width="Stretched" MouseClick="OnClear"/>
+               <ListBox Name="ColorList" Data="{TestList}"  Width="200" Height="200" 
+                                        ItemTemplate="#Tests.Interfaces.colorItem.crow">                       
+               </ListBox>
+               <Button Caption="Load list" Width="Stretched" MouseClick="OnLoadList"/>
+       </VerticalStack>
+</Border>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testButton.crow b/Samples/common/ui/Interfaces/TemplatedControl/testButton.crow
new file mode 100755 (executable)
index 0000000..8911619
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Background="vgradient|0:DimGrey|1:Black">
+       <HorizontalStack Fit="True">
+               <Button Caption="but" MouseClick="onButClick"/>
+               <Button Caption="but" MouseClick="onButClick" Fit="true"/>
+               <Button Width="60" Height="40" MouseClick="onButClick"/>
+               <Button Caption="Long text button" MouseClick="onButClick"/>
+               <Button Font="droid, 20" Caption="Button"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testCheckbox.crow b/Samples/common/ui/Interfaces/TemplatedControl/testCheckbox.crow
new file mode 100755 (executable)
index 0000000..7c8438c
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="true" Margin="100" Background="DimGrey" >
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+       <CheckBox Background="Grey" MouseEnter="{Background=Red}" MouseLeave="{Background=Transparent}"/>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testCombobox.crow b/Samples/common/ui/Interfaces/TemplatedControl/testCombobox.crow
new file mode 100755 (executable)
index 0000000..4363986
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<Container Background="DimGrey" Width="300">
+       <ComboBox  Data="{TestList}" ItemTemplate="#Tests.Interfaces.colorItem.crow"/>
+</Container>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testItemTemplateTag.crow b/Samples/common/ui/Interfaces/TemplatedControl/testItemTemplateTag.crow
new file mode 100755 (executable)
index 0000000..b29be38
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<Border BorderWidth="2" Fit="true">
+       <VerticalStack Fit="true" Margin="5">
+               <ListBox Data="{TestList}" Background="0.5,0.5,0.5,0.7"
+                                        HorizontalAlignment="Center" Width="200" Height="200" Margin="5">
+                       <Template>
+                               <Border BorderWidth="1">
+                                       <HorizontalStack Margin="1">
+                                               <Scroller Name="scroller1" Margin="2">
+                                                       <VerticalStack Height="Fit" MinimumSize="10,10"
+                                                               Name="ItemsContainer" Margin="0" VerticalAlignment="Top"/>
+                                               </Scroller>
+                                               <ScrollBar Name="scrollbar1" Value="{²../scroller1.ScrollY}"
+                                                       LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30" CursorSize="{../scroller1.ChildHeightRatio}"
+                                                       Maximum="{../scroller1.MaxScrollY}" Orientation="Vertical" 
+                                                       Width="14" />
+                                       </HorizontalStack>
+                               </Border>
+                       </Template>
+                       <ItemTemplate DataType="Crow.Color">
+                               <HorizontalStack
+                                                       HorizontalAlignment="Left"
+                                                       Height="Fit" Width="200" Margin="1" Focusable="true"
+                                                       MouseEnter="{Background=hgradient|0:DarkRed|1:Transparent}"
+                                                       MouseLeave="{Background=Transparent}">
+                                       <Widget Height="12" Width="20" Background="{}" Margin="0" CornerRadius="3"/>
+                                       <Label Text="{}" Margin="0" Width="Stretched"/>
+                               </HorizontalStack>
+                       </ItemTemplate>
+               </ListBox>
+               <HorizontalStack Fit="true" HorizontalAlignment="Right">
+                       <Button Caption="Load list" MouseDown="OnLoadList"/>
+                       <Button Caption="Clear" MouseDown="OnClear"/>
+               </HorizontalStack>
+       </VerticalStack>
+</Border>
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testRadioButton.crow b/Samples/common/ui/Interfaces/TemplatedControl/testRadioButton.crow
new file mode 100755 (executable)
index 0000000..a01d904
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<VerticalStack Width="200" Height="Fit" Margin="20" Background="DimGrey">
+       <RadioButton Caption="Radio1"/>
+       <RadioButton Caption="Radio2" IsChecked="true"/>
+       <RadioButton Caption="Radio3"/>
+       <RadioButton Caption="Radio4"/>
+</VerticalStack>
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testScrollbar.crow b/Samples/common/ui/Interfaces/TemplatedControl/testScrollbar.crow
new file mode 100755 (executable)
index 0000000..f8c4a9a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<Group Name="TopContainer" Width="400" Height="400"
+       Focusable="True" Background="Grey">
+       <ScrollBar Height="16" Orientation="Horizontal" Width="Stretched" Maximum="100"/>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedControl/testSpinner.crow b/Samples/common/ui/Interfaces/TemplatedControl/testSpinner.crow
new file mode 100755 (executable)
index 0000000..bff7eab
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<VerticalStack Name="TopContainer" Width="400" Height="Fit"
+       Margin="20" Background="DarkGrey">
+
+       <HorizontalStack Fit="true" Margin="5" Background="SkyBlue">
+               <Spinner Name="sp1" Value="5" ValueChanged="onSpinnerValueChange"/>
+               <Spinner Value="5" Width="60"/>
+               <Spinner Value="5"/>
+       </HorizontalStack>
+</VerticalStack>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedGroup/0.crow b/Samples/common/ui/Interfaces/TemplatedGroup/0.crow
new file mode 100755 (executable)
index 0000000..92cd224
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="File" Width="Fit">
+               <MenuItem Caption="New" />
+               <MenuItem Caption="Open"/>
+               <MenuItem Caption="Save"/>
+               <MenuItem Caption="Quit"/>
+       </MenuItem>
+       <MenuItem Caption="Edit" Name="edit" Width="Fit">
+               <MenuItem Caption="Cut"/>
+               <MenuItem Caption="Copy"/>
+               <MenuItem Caption="Paste"/>
+               <MenuItem Caption="Special" Name="special" Width="Fit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+               </MenuItem>
+               <MenuItem Caption="Special2" Name="special" Width="Fit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+               </MenuItem>
+       </MenuItem>
+       <MenuItem Caption="Help" Width="Fit">
+               <MenuItem Caption="About"/>
+               <MenuItem Caption="Help"/>
+       </MenuItem>
+</Menu>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TemplatedGroup/1.crow b/Samples/common/ui/Interfaces/TemplatedGroup/1.crow
new file mode 100755 (executable)
index 0000000..f47e7aa
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="File">
+               <MenuItem Caption="New"/>
+               <MenuItem Caption="Open"/>
+               <MenuItem Caption="Save"/>
+               <MenuItem Caption="Quit"/>
+       </MenuItem>
+</Menu>
diff --git a/Samples/common/ui/Interfaces/TemplatedGroup/2.crow b/Samples/common/ui/Interfaces/TemplatedGroup/2.crow
new file mode 100755 (executable)
index 0000000..8d25db5
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<Menu>
+       <MenuItem Caption="Menu">
+               <MenuItem Caption="File">
+                       <MenuItem Caption="New"></MenuItem>
+                       <MenuItem Caption="Open"></MenuItem>
+                       <MenuItem Caption="Save"></MenuItem>
+                       <MenuItem Caption="Quit"></MenuItem>
+               </MenuItem>
+               <MenuItem Caption="Edit">
+                       <MenuItem Caption="Cut"/>
+                       <MenuItem Caption="Copy"/>
+                       <MenuItem Caption="Paste"/>
+                       <MenuItem Caption="Special">
+                               <MenuItem Caption="Cut"/>
+                               <MenuItem Caption="Copy"/>
+                               <MenuItem Caption="Paste"/>
+                       </MenuItem>
+               </MenuItem>
+               <MenuItem Caption="Help">
+                       <MenuItem Caption="About"/>
+                       <MenuItem Caption="Help"/>
+               </MenuItem>
+       </MenuItem>
+</Menu>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/TmpExpandable.goml b/Samples/common/ui/Interfaces/TmpExpandable.goml
new file mode 100755 (executable)
index 0000000..9dddceb
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!--<VerticalStack Height="{../HeightPolicy}" Width="{../WidthPolicy}" MouseClick="../onMouseClick">
+       <Label Text="{../../Caption}" Width="{../../WidthPolicy}"/>
+       <Container Name="Content" Visible="false" Height="{../../HeightPolicy}" Width="{../../WidthPolicy}"/>
+</VerticalStack>-->
+<Group BorderWidth="1" Foreground="LightGray" 
+               MouseClick="../onMouseClick">
+       <VerticalStack>
+               <Label Text="{../../../Caption}"/>
+               <Container Name="Content" Visible="false"/>
+       </VerticalStack>
+</Group>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Wrapper/1.1.crow b/Samples/common/ui/Interfaces/Wrapper/1.1.crow
new file mode 100755 (executable)
index 0000000..548aab3
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Vertical Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Vertical" Height="Fit" Width="90%" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Wrapper/1.crow b/Samples/common/ui/Interfaces/Wrapper/1.crow
new file mode 100755 (executable)
index 0000000..58c79ee
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Vertical Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Vertical" Height="Fit" Width="Fit" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Wrapper/2.1.crow b/Samples/common/ui/Interfaces/Wrapper/2.1.crow
new file mode 100755 (executable)
index 0000000..2a35289
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Horizontal Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Horizontal" Height="90%" Width="Fit" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Wrapper/2.2.crow b/Samples/common/ui/Interfaces/Wrapper/2.2.crow
new file mode 100755 (executable)
index 0000000..4621c14
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<Window Caption="Horizontal Wrapper" Width="50%" Height="50%">
+               <Wrapper HorizontalAlignment="Left" Orientation="Horizontal" Height="100%" Width="Fit" Margin="0" Background="MediumSeaGreen" Spacing="1" >
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50%" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50%" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50%" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50%" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50%" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50%" Background="SeaGreen"/>
+                       <Widget Width="50" Height="50" Background="SeaGreen"/>
+               </Wrapper>      
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/Wrapper/2.crow b/Samples/common/ui/Interfaces/Wrapper/2.crow
new file mode 100755 (executable)
index 0000000..c1f234e
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Window Caption="Horizontal Wrapper" Width="50%" Height="50%">
+       <Wrapper Orientation="Horizontal" Height="Fit" Width="Fit" Margin="5" Background="MediumSeaGreen" Spacing="1" >
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50%" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+               <Widget Width="50" Height="50%" Background="SeaGreen"/>
+               <Widget Width="50" Height="50" Background="SeaGreen"/>
+       </Wrapper>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/basicTests/7.crow b/Samples/common/ui/Interfaces/basicTests/7.crow
new file mode 100755 (executable)
index 0000000..21f75fe
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<Window Title="Showcase" Height="90%" Width="90%">
+       <HorizontalStack >
+               <VerticalStack Width="33%" Margin="5">
+                       <GroupBox Caption="Performance" Height="Fit">
+                               <VerticalStack Width="90%" Height="Fit" Spacing="2" >
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Fps:" Style="FpsLabel"/>
+                                               <Label Text="{fps}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Min:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMin}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Max:" Style="FpsLabel"/>
+                                               <Label Text="{fpsMax}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Update:" Style="FpsLabel"/>
+                                               <Label Text="{update}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Layouting:" Style="FpsLabel"/>
+                                               <Label Text="{layouting}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Clipping:" Style="FpsLabel"/>
+                                               <Label Text="{clipping}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                                       <HorizontalStack Height="Fit">
+                                               <Label Text="Drawing:" Style="FpsLabel"/>
+                                               <Label Text="{drawing}" Style="FpsDisp"/>
+                                       </HorizontalStack>
+                               </VerticalStack>
+                       </GroupBox>
+                       <Label Width="Stretched" Margin="3" Background="Onyx"/>
+                       <TextBox Text="TextBox" Multiline="true" Margin="3"/>
+                       <HorizontalStack Height="Fit" Margin="5" Background="Onyx" CornerRadius="10">
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                                       <CheckBox Fit="true"/>
+                               </VerticalStack>
+                               <VerticalStack Spacing="5" Width="50%">
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                                       <RadioButton Fit="true"/>
+                               </VerticalStack>
+                       </HorizontalStack>
+                       <HorizontalStack Height="Fit" Margin="5">
+                               <Label Text="MouseEvents" Width="50%" Margin="3"
+                                       Background="Onyx"
+                                       Foreground="DimGrey"
+                                       TextAlignment="Center"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGrey}"
+                                       MouseDown="{Background=DarkRed}"
+                                       MouseUp="{Background=Onyx}"/>
+                               <Label Text="MouseEvents" Width="50%" Margin="3"
+                                       Background="Onyx"
+                                       Foreground="DimGrey"
+                                       TextAlignment="Center"
+                                       MouseEnter="{Foreground=White}"
+                                       MouseLeave="{Foreground=DimGrey}"
+                                       MouseDown="{Background=Mantis}"
+                                       MouseUp="{Background=Onyx}"/>
+                       </HorizontalStack>
+                       <GroupBox Caption="Templated controls" Height="Fit" Margin="5">
+                               <HorizontalStack Height="Fit">
+                                       <VerticalStack Width="50%">
+                                               <CheckBox Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                               <CheckBox  Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                               <CheckBox  Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                               <CheckBox  Template="#Tests.Interfaces.CheckBox2.imlt" Style="CheckBox2"/>
+                                       </VerticalStack>
+                                       <Splitter/>
+                                       <VerticalStack Width="50%">
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                               <RadioButton  Template="#Tests.Interfaces.CheckBox2.imlt" Style="RadioButton2"/>
+                                       </VerticalStack>
+                               </HorizontalStack>
+                       </GroupBox>
+                       <Spinner Fit="true"/>
+               </VerticalStack>
+               <VerticalStack Width="33%" Margin="5" Spacing="5">
+                       <Expandable Background="DimGrey">
+                               <Image Path="#Crow.Icons.crow.svg"/>
+                       </Expandable>
+                       <Popper Background="DimGrey" PopDirection="Bottom">
+                               <Border Fit="True" Background="DimGrey" CornerRadius="0" BorderWidth="1">
+                                       <Image Path="#Crow.Icons.crow.svg" Width="100" Height="100" Margin="10"
+                                               MouseEnter="{Background=LightGrey}"
+                                               MouseLeave="{Background=Transparent}"/>
+                               </Border>
+                       </Popper>
+                       <Slider Height="10" Width="90%"/>
+                       <Container Height="Fit" Background="Onyx" Margin="2" CornerRadius="5">
+                               <ProgressBar Background="DimGrey" Height="10" Value="50"/>
+                       </Container>
+                       <Image Path="#Crow.Icons.crow.svg" Width="60" Height="60" Background="LightGrey" />
+                       <TabView Name="tabview1"
+                               Height="120" Orientation="Horizontal" Spacing="15">
+                               <TabItem Name="TabItem1" Caption="Tab 1" Margin="0">
+                                       <VerticalStack Fit="true">
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                               <CheckBox/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem2" Caption="Tab 2" Background="Grey">
+                                       <VerticalStack Fit="true">
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                               <RadioButton/>
+                                       </VerticalStack>
+                               </TabItem>
+                               <TabItem Name="TabItem2" Caption="Tab 3" Background="Grey">
+                                       <Container Margin="5" CornerRadius="2">
+                                               <TextBox Height="Stretched" Margin="5" Multiline="true" TextAlignment="TopLeft"/>
+                                       </Container>
+                               </TabItem>
+                       </TabView>
+                       <MessageBox Movable="false"/>
+               </VerticalStack>
+               <VerticalStack Width="33%" Margin="5">
+                       <Border Margin="5" Background="Onyx" Height="Fit">
+                               <Label Width="Stretched" Margin="1" Text="{../../dv.SelectedItem}"/>
+                       </Border>
+                       <Border Margin="5" Background="Onyx" Height="50%">
+                               <DirectoryView Name="dv" Root="./" Margin="1"/>
+                       </Border>
+                       <ListBox Data="{TestList}" Background="Onyx" Margin="5"
+                                        ItemTemplate="#Tests.Interfaces.colorItem.crow"
+                                        Template="#Crow.Templates.ScrollingListBox.goml"/>
+               </VerticalStack>
+       </HorizontalStack>
+</Window>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/colorItem.crow b/Samples/common/ui/Interfaces/colorItem.crow
new file mode 100755 (executable)
index 0000000..30bfe3d
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Border Foreground="Transparent" Focusable="true" HorizontalAlignment="Left" Height="Fit" Width="200">
+       <HorizontalStack Margin="0"
+                               MouseEnter="{Background=hgradient|0:DarkRed|1:Transparent}"
+                               MouseLeave="{Background=Transparent}">
+               <Widget Height="12" Width="20" Background="{}" Margin="0" CornerRadius="3"/>
+               <Label Text="{}" Margin="0" Width="Stretched"/>
+       </HorizontalStack>
+</Border>
+
diff --git a/Samples/common/ui/Interfaces/colorItem2.crow b/Samples/common/ui/Interfaces/colorItem2.crow
new file mode 100755 (executable)
index 0000000..83239b3
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Border Foreground="Transparent" Focusable="true" HorizontalAlignment="Left" Height="Fit">
+       <HorizontalStack Margin="0"
+                               MouseEnter="{Background=CornflowerBlue}"
+                               MouseLeave="{Background=Transparent}">
+               <Widget Height="8" Width="14" Background="{}" Margin="0" CornerRadius="2"/>
+               <Label Text="{}" Margin="0" Width="Stretched" Font="mono, 8"/>
+       </HorizontalStack>
+</Border>
+
diff --git a/Samples/common/ui/Interfaces/itemTmp.goml b/Samples/common/ui/Interfaces/itemTmp.goml
new file mode 100755 (executable)
index 0000000..fadf5e6
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Border BorderWidth="3">
+       <Label Text="{Name}" Focusable="true" Width="Stretched" Height="Fit" Margin="0"
+                       MouseEnter="{Background=Red}"
+                       MouseLeave="{Background=Transparent}"
+       />
+</Border>
+
diff --git a/Samples/common/ui/Interfaces/log.xml b/Samples/common/ui/Interfaces/log.xml
new file mode 100755 (executable)
index 0000000..882028d
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Container Name="topContainer" HorizontalAlignment="Center" VerticalAlignment="Top"
+       Margin="2"
+       Width="600" Height="-1">
+       <Border Margin="2" BorderWidth="1" Background="0,6;0,6;0,6;0,6" Height="-1">
+               <Group Width="0" Name="logs">
+                       <VerticalStack Name="VerticalStack" Width="0" Focusable="False">
+                               <Label Name="line1" Width="0" Text="Line1" Margin="0"/>
+                               <Label Name="line2" Width="0" Text="Line2" Margin="0"/>
+                               <Label Name="line3" Width="0" Text="Line3" Margin="0"/>
+                               <Label Name="line4" Width="0" Text="Line4" Margin="0"/>
+                       </VerticalStack>
+                       <Button Name="btOk" Background="Grey" Fit="True"
+                               HorizontalAlignment="Right" VerticalAlignment="Bottom"
+                               MouseClick="BtOk_MouseClick">
+                               <Label Text="Ok" Margin="3" Foreground="White" />
+                       </Button>
+               </Group>
+       </Border>
+</Container>
+
diff --git a/Samples/common/ui/Interfaces/perfMsr.crow b/Samples/common/ui/Interfaces/perfMsr.crow
new file mode 100755 (executable)
index 0000000..22a62ea
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+
+       <VerticalStack Spacing="1" Height="Fit" Width="Stretched">
+               <HorizontalStack Background="DarkSlateGrey">
+                       <Label Text="{Name}" Width="Stretched" Font="doid bold, 10" Margin="2"/>
+                       <Button Caption="Reset" MouseClick="onResetClick" Height="Fit"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Current:" Style="FpsLabel"/>
+                       <Label Text="{current}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Minimum:" Style="FpsLabel"/>
+                       <Label Text="{minimum}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Mean:" Style="FpsLabel"/>
+                       <Label Text="{mean}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Maximum:" Style="FpsLabel"/>
+                       <Label Text="{maximum}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <Border Foreground="White" Width="Stretched" Height="60">
+                       <Trend Background="Black" NewValue="{current}" Minimum="0" Maximum="100"/>
+               </Border>
+<!--           <HorizontalStack>
+                       <Label Text="Total:" Style="FpsLabel"/>
+                       <Label Text="{total}" Style="FpsDisp"/>
+               </HorizontalStack>
+               <HorizontalStack>
+                       <Label Text="Cpt:" Style="FpsLabel"/>
+                       <Label Text="{cptMeasures}" Style="FpsDisp"/>
+               </HorizontalStack>-->
+       </VerticalStack>
+
diff --git a/Samples/common/ui/Interfaces/testMeter.goml b/Samples/common/ui/Interfaces/testMeter.goml
new file mode 100755 (executable)
index 0000000..2c840a8
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<AnalogMeter Width="Fit" Height="Fit" Background="White" Foreground="Black"  Value="{fps}" Minimum="Stretched" Maximum="100"/>
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/testWindow.goml.sav b/Samples/common/ui/Interfaces/testWindow.goml.sav
new file mode 100755 (executable)
index 0000000..42b4b74
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--<Group>-->
+<Window Name="window1" Left="10" Top="10" Title="Test window" 
+               Width="250" Height="300" >
+       <VerticalStack Name="contentVSStack" Margin="10" Spacing="10">
+               <Slider Name="slider" Height="10" Width="0"/>
+
+               <HorizontalStack Width="0" Height="-1" Margin="10" Background="BlueCrayola">
+                       <Checkbox Height="-1" Width="80"/>
+                       <GraphicObject Width="0"/>
+                       <Checkbox Height="-1" Width="80"/>
+               </HorizontalStack>
+               <Groupbox Text="test"  Height="-1" Width="-1" Margin="5">
+                       <VerticalStack  Height="-1" Width="0" >
+                               <RadioButton  Caption="Radio 1" Background="Red" />
+                               <RadioButton  Caption="Radio 2" IsChecked="true" />
+                               <RadioButton  Caption="Radio 3" />
+                       </VerticalStack>
+               </Groupbox>
+<!--           <Checkbox Height="-1" Width="-1" Background="Red" Margin="0" VerticalAlignment="Center" HorizontalAlignment="Right"/>-->
+       </VerticalStack>
+</Window>
+<!--</Group>-->
+<!--           <Label Text="{fps}"  Background="DarkRed"/>
+               <Label Text="{fpsMin}"  />
+               <Label Text="{fpsMax}"  />-->
\ No newline at end of file
diff --git a/Samples/common/ui/Interfaces/tmpDirItem.goml b/Samples/common/ui/Interfaces/tmpDirItem.goml
new file mode 100755 (executable)
index 0000000..41665d1
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+       <HorizontalStack Width="Fit" Height="Fit" Focusable="true"
+                       HorizontalAlignment="Left"
+                       MouseEnter="{Background=RoyalBlue}"
+                       MouseLeave="{Background=Transparent}">
+               <Image Width="16" Height="16" Path="#Tests.image.folder1.svg" SvgSub="{Attributes}"/>
+               <Label Text="{Name}" Width="Fit" Height="Fit" Margin="0"/>
+               <Label Text="{Attributes}" Width="Fit" Height="Fit" Margin="0"/>
+               <Label Text="{Extension}" Width="Fit" Height="Fit" Margin="0"/>
+       </HorizontalStack>
+
diff --git a/Samples/common/ui/Interfaces/tmpMembers.goml b/Samples/common/ui/Interfaces/tmpMembers.goml
new file mode 100755 (executable)
index 0000000..f48d8d6
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+       <HorizontalStack Width="Stretched" Height="Fit" Focusable="true" 
+                       MouseEnter="{Background=SkyBlue}"
+                       MouseLeave="{Background=Transparent}">
+               <Image Width="8" Height="8" Path="#Crow.Images.Icons.member.svg" SvgSub="{GetIcon}"/>
+               <Label Text="{Name}" Width="Stretched" Height="Fit" Margin="1"/>
+               <Label Text="{MemberType}" Width="Fit" Height="Fit" Margin="0"/>
+       </HorizontalStack>
+
diff --git a/Samples/common/ui/Interfaces/treeList.crow b/Samples/common/ui/Interfaces/treeList.crow
new file mode 100755 (executable)
index 0000000..ca59c17
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<VerticalStack Height="Fit" Name="List"/>
\ No newline at end of file
diff --git a/Samples/main.cs b/Samples/main.cs
new file mode 100644 (file)
index 0000000..46a8903
--- /dev/null
@@ -0,0 +1,564 @@
+using System;
+using System.Numerics;
+using System.Runtime.InteropServices;
+using Glfw;
+using VK;
+using CVKL;
+using System.Threading;
+
+namespace pbrSachaWillem {
+       class Program : VkWindow, Crow.IValueChange {
+               static void Main (string[] args) {
+                       using (Program vke = new Program ()) {
+                               vke.Run ();
+                       }
+               }
+               bool isRunning;
+
+               protected override void render () {
+                       int idx = swapChain.GetNextImage ();
+
+                       lock (crow.RenderMutex) {
+                               if (idx < 0) {
+                                       OnResize ();
+                                       return;
+                               }
+
+                               presentQueue.Submit (cmds[idx], swapChain.presentComplete, drawComplete[idx]);
+                               presentQueue.Present (swapChain, drawComplete[idx]);
+                               presentQueue.WaitIdle ();
+                       }
+               }
+
+               #region crow
+
+               void crow_thread_func () {
+                       vkvgDev = new vkvg.Device (instance.Handle, phy.Handle, dev.VkDev.Handle, presentQueue.qFamIndex,
+                               vkvg.SampleCount.Sample_4, presentQueue.index);
+
+                       crow = new Crow.Interface (vkvgDev, 800, 600);
+
+                       isRunning = true;
+                       //int frameCount = 0;
+
+                       while (isRunning) {
+                               crow.Update ();
+
+                               /*if (frameCount++ > 100) {
+                                       for (int i = 0; i < crow.PerfMeasures.Count; i++) 
+                                               crow.PerfMeasures[i].NotifyChanges ();
+                                       frameCount = 0;
+                               }*/
+
+                               Thread.Sleep (2);
+                       }
+                       dev.WaitIdle ();
+                       crow.Dispose ();
+                       vkvgDev.Dispose ();
+               }
+
+               #region IValueChange implementation
+               public event EventHandler<Crow.ValueChangeEventArgs> ValueChanged;
+               public virtual void NotifyValueChanged(string MemberName, object _value)
+               {
+                       if (ValueChanged != null)
+                               ValueChanged.Invoke(this, new Crow.ValueChangeEventArgs(MemberName, _value));
+               }
+               #endregion
+
+               public float Gamma {
+                       get { return pbrPipeline.matrices.gamma; }
+                       set {
+                               if (value == pbrPipeline.matrices.gamma)
+                                       return;
+                               pbrPipeline.matrices.gamma = value;
+                               NotifyValueChanged ("Gamma", value);
+                               updateViewRequested = true;
+                       }
+               }
+               public float Exposure {
+                       get { return pbrPipeline.matrices.exposure; }
+                       set {
+                               if (value == pbrPipeline.matrices.exposure)
+                                       return;
+                               pbrPipeline.matrices.exposure = value;
+                               NotifyValueChanged ("Exposure", value);
+                               updateViewRequested = true;
+                       }
+               }
+               Crow.Interface crow;
+               #endregion
+
+               protected override void configureEnabledFeatures (VkPhysicalDeviceFeatures available_features, ref VkPhysicalDeviceFeatures features) {
+                       base.configureEnabledFeatures (available_features, ref features);
+#if PIPELINE_STATS
+                       features.pipelineStatisticsQuery = true;
+#endif
+                       features.samplerAnisotropy = true;
+               }
+
+               VkSampleCountFlags samples = VkSampleCountFlags.SampleCount4;
+
+               Framebuffer[] frameBuffers;
+               PBRPipeline pbrPipeline;
+
+               enum DebugView {
+                       none,
+                       color,
+                       normal,
+                       occlusion,
+                       emissive,
+                       metallic,
+                       roughness
+               }
+
+               DebugView currentDebugView = DebugView.none;
+
+#if PIPELINE_STATS
+               PipelineStatisticsQueryPool statPool;
+               TimestampQueryPool timestampQPool;
+               ulong[] results;
+#endif
+
+
+               bool queryUpdatePrefilCube, showDebugImg, showUI = true;
+
+
+               Image uiImage;
+
+               #region ui
+               //DescriptorSet dsDebugImg;
+               //void initDebugImg () {
+               //      dsDebugImg = descriptorPool.Allocate (descLayoutMain);
+               //      pbrPipeline.envCube.debugImg.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
+               //      DescriptorSetWrites uboUpdate = new DescriptorSetWrites (dsDebugImg, descLayoutMain);
+               //      uboUpdate.Write (dev, pbrPipeline.envCube.debugImg.Descriptor);
+               //}
+
+               vkvg.Device vkvgDev;
+
+               Pipeline uiPipeline;
+
+               void initUIPipeline () {
+                       GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.TriangleList, samples, false);
+                       cfg.RenderPass = pbrPipeline.RenderPass;
+                       cfg.Layout = pbrPipeline.Layout;
+                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/FullScreenQuad.vert.spv");
+                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/simpletexture.frag.spv");
+                       cfg.blendAttachments[0] = new VkPipelineColorBlendAttachmentState (true);
+
+                       uiPipeline = new GraphicPipeline (cfg);
+
+               }
+               void initUISurface () {
+                       lock (crow.UpdateMutex) {
+                               uiImage?.Dispose ();
+                               uiImage = new CVKL.Image (dev, new VkImage ((ulong)crow.surf.VkImage.ToInt64 ()), VkFormat.B8g8r8a8Unorm,
+                                       VkImageUsageFlags.Sampled, swapChain.Width, swapChain.Height);
+                               uiImage.SetName ("uiImage");
+                               uiImage.CreateView (VkImageViewType.ImageView2D, VkImageAspectFlags.Color);
+                               uiImage.CreateSampler (VkFilter.Nearest, VkFilter.Nearest, VkSamplerMipmapMode.Nearest, VkSamplerAddressMode.ClampToBorder);
+                               uiImage.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
+                       }
+               }
+
+
+               void recordDrawOverlay (CommandBuffer cmd) {
+                       uiPipeline.Bind (cmd);
+
+                       uiImage.SetLayout (cmd, VkImageAspectFlags.Color, VkImageLayout.ColorAttachmentOptimal, VkImageLayout.ShaderReadOnlyOptimal,
+                               VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.FragmentShader);
+
+                       cmd.Draw (3, 1, 0, 0);
+
+                       uiImage.SetLayout (cmd, VkImageAspectFlags.Color, VkImageLayout.ShaderReadOnlyOptimal, VkImageLayout.ColorAttachmentOptimal,
+                               VkPipelineStageFlags.FragmentShader, VkPipelineStageFlags.BottomOfPipe);
+
+                       //if (!showDebugImg)
+                       //      return;
+                       //const uint debugImgSize = 256;
+                       //const uint debugImgMargin = 10;
+
+                       //cmd.BindDescriptorSet (uiPipeline.Layout, dsDebugImg);
+
+                       //cmd.SetViewport (debugImgSize, debugImgSize, debugImgMargin, swapChain.Height - debugImgSize - debugImgMargin);
+                       //cmd.SetScissor (debugImgSize, debugImgSize, (int)debugImgMargin, (int)(swapChain.Height - debugImgSize - debugImgMargin));
+
+                       //cmd.Draw (3, 1, 0, 0);
+               }
+               #endregion
+
+
+               Vector4 lightPos = new Vector4 (1, 0, 0, 0);
+               BoundingBox modelAABB;
+
+               Program () {            
+                       camera.SetPosition (0, 0, 5);
+
+                       Thread crowThread = new Thread (crow_thread_func);
+                       crowThread.IsBackground = true;
+                       crowThread.Start ();
+
+                       while (crow == null)
+                               Thread.Sleep (5);
+
+                       initUISurface ();
+
+                       pbrPipeline = new PBRPipeline (presentQueue,
+                               new RenderPass (dev, swapChain.ColorFormat, dev.GetSuitableDepthFormat (), samples), uiImage);
+
+                       initUIPipeline ();
+
+                       modelAABB = pbrPipeline.model.DefaultScene.AABB;
+
+                       crow.Load ("ui/fps.crow").DataSource = this;
+                       //crow.Load ("#vkvgCrowTest.perfMeasures.crow").DataSource = crow;
+
+                       //crow.LoadIMLFragment ("<Window Height='200' Width='200' CornerRadius='5'/>").DataSource=this;
+                       //crow.LoadIMLFragment ("<Window Height='200' Width='200'/>").DataSource = this;
+                       crow.LoadIMLFragment (@"<Image Margin='1' Path='/mnt/devel/gts/vk.net/crow/Images/crow.png' Width='100' Height='100' Background='White' MouseEnter='{Background=Blue}' MouseLeave='{Background=White}'/>");
+                       //crow.LoadIMLFragment ("<Window Height='200' Width='200'/>").DataSource = this;
+                       UpdateFrequency = 20;
+               }
+
+               void buildCommandBuffers () {
+                       for (int i = 0; i < swapChain.ImageCount; ++i) {
+                               cmds[i]?.Free ();
+                               cmds[i] = cmdPool.AllocateAndStart ();
+#if PIPELINE_STATS
+                               statPool.Begin (cmds[i]);
+                               recordDraw (cmds[i], frameBuffers[i]);
+                               statPool.End (cmds[i]);
+#else
+                               recordDraw (cmds[i], frameBuffers[i]);
+#endif
+
+                               cmds[i].End ();
+                       }
+               }
+               void recordDraw (CommandBuffer cmd, Framebuffer fb) {
+                       pbrPipeline.RenderPass.Begin (cmd, fb);
+
+                       cmd.SetViewport (fb.Width, fb.Height);
+                       cmd.SetScissor (fb.Width, fb.Height);
+
+                       pbrPipeline.RecordDraw (cmd);
+
+                       if (showUI)
+                               recordDrawOverlay (cmd);
+
+                       pbrPipeline.RenderPass.End (cmd);
+               }
+
+
+               #region update
+               public override void UpdateView () {
+                       camera.AspectRatio = (float)swapChain.Width / swapChain.Height;
+
+                       pbrPipeline.matrices.lightDir = lightPos;
+                       pbrPipeline.matrices.projection = camera.Projection;
+                       pbrPipeline.matrices.view = camera.View;
+                       pbrPipeline.matrices.model = camera.Model;
+
+
+                       pbrPipeline.matrices.camPos = new Vector4 (
+                               -camera.Position.Z * (float)Math.Sin (camera.Rotation.Y) * (float)Math.Cos (camera.Rotation.X),
+                                camera.Position.Z * (float)Math.Sin (camera.Rotation.X),
+                                camera.Position.Z * (float)Math.Cos (camera.Rotation.Y) * (float)Math.Cos (camera.Rotation.X),
+                                0
+                       );
+                       pbrPipeline.matrices.debugViewInputs = (float)currentDebugView;
+
+                       pbrPipeline.uboMats.Update (pbrPipeline.matrices, (uint)Marshal.SizeOf<PBRPipeline.Matrices> ());
+
+                       updateViewRequested = false;
+               }
+
+               int frameCount = 0;
+
+               public override void Update () {
+#if PIPELINE_STATS
+                       results = statPool.GetResults ();
+#endif
+                       camera.Model *= Matrix4x4.CreateRotationY(0.05f);
+                       updateViewRequested = true;
+
+                       if (rebuildBuffers) {
+                               buildCommandBuffers ();
+                               rebuildBuffers = false;
+                       }
+
+                       if (++frameCount > 20) {
+                               NotifyValueChanged ("fps", fps);
+                               frameCount = 0;
+                       }
+               }
+               #endregion
+
+
+               protected override void OnResize () {
+                       crow.ProcessResize (new Crow.Rectangle (0,0,(int)swapChain.Width, (int)swapChain.Height));
+
+                       initUISurface ();
+
+                       uiImage.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
+                       DescriptorSetWrites uboUpdate = new DescriptorSetWrites (pbrPipeline.dsMain, pbrPipeline.Layout.DescriptorSetLayouts[0].Bindings[5]);
+                       uboUpdate.Write (dev, uiImage.Descriptor);
+
+                       UpdateView ();
+
+                       if (frameBuffers != null)
+                               for (int i = 0; i < swapChain.ImageCount; ++i)
+                                       frameBuffers[i]?.Dispose ();
+
+                       frameBuffers = new Framebuffer[swapChain.ImageCount];
+
+                       for (int i = 0; i < swapChain.ImageCount; ++i) {
+                               frameBuffers[i] = new Framebuffer (pbrPipeline.RenderPass, swapChain.Width, swapChain.Height,
+                                       (pbrPipeline.RenderPass.Samples == VkSampleCountFlags.SampleCount1) ? new Image[] {
+                                               swapChain.images[i],
+                                               null
+                                       } : new Image[] {
+                                               null,
+                                               null,
+                                               swapChain.images[i]
+                                       });
+                       }
+
+                       buildCommandBuffers ();
+               }
+
+               #region Mouse and keyboard
+               protected override void onMouseMove (double xPos, double yPos) {
+                       if (crow.ProcessMouseMove ((int)xPos, (int)yPos))
+                               return;
+
+                       double diffX = lastMouseX - xPos;
+                       double diffY = lastMouseY - yPos;
+                       if (MouseButton[0]) {
+                               camera.Rotate ((float)-diffX, (float)-diffY);
+                       } else if (MouseButton[1]) {
+                               camera.SetZoom ((float)diffY);
+                       } else
+                               return;
+
+                       updateViewRequested = true;
+               }
+               protected override void onMouseButtonDown (Glfw.MouseButton button) {
+                       if (crow.ProcessMouseButtonDown ((Crow.MouseButton)button))
+                               return;
+                       base.onMouseButtonDown (button);
+               }
+               protected override void onMouseButtonUp (Glfw.MouseButton button) {
+                       if (crow.ProcessMouseButtonUp ((Crow.MouseButton)button))
+                               return;
+                       base.onMouseButtonUp (button);
+               }
+
+               protected override void onKeyDown (Key key, int scanCode, Modifier modifiers) {
+                       switch (key) {
+                               case Key.F:
+                                       if (modifiers.HasFlag (Modifier.Shift)) {
+                                               pbrPipeline.envCube.debugFace--;
+                                               if (pbrPipeline.envCube.debugFace < 0)
+                                                       pbrPipeline.envCube.debugFace = 5;
+                                       } else {
+                                               pbrPipeline.envCube.debugFace++;
+                                               if (pbrPipeline.envCube.debugFace > 5)
+                                                       pbrPipeline.envCube.debugFace = 0;
+                                       }
+                                       queryUpdatePrefilCube = updateViewRequested = true;
+                                       break;
+                               case Key.M:
+                                       if (modifiers.HasFlag (Modifier.Shift)) {
+                                               pbrPipeline.envCube.debugMip--;
+                                               if (pbrPipeline.envCube.debugMip < 0)
+                                                       pbrPipeline.envCube.debugMip = (int)pbrPipeline.envCube.prefilterCube.CreateInfo.mipLevels - 1;
+                                       } else {
+                                               pbrPipeline.envCube.debugMip++;
+                                               if (pbrPipeline.envCube.debugMip > pbrPipeline.envCube.prefilterCube.CreateInfo.mipLevels)
+                                                       pbrPipeline.envCube.debugMip = 0;
+                                       }
+                                       queryUpdatePrefilCube = updateViewRequested = true;
+                                       break;
+                               case Key.P:
+                                       showDebugImg = !showDebugImg;
+                                       queryUpdatePrefilCube = updateViewRequested = true;
+                                       break;
+                               case Key.Keypad0:
+                                       currentDebugView = DebugView.none;
+                                       break;
+                               case Key.Keypad1:
+                                       currentDebugView = DebugView.color;
+                                       break;
+                               case Key.Keypad2:
+                                       currentDebugView = DebugView.normal;
+                                       break;
+                               case Key.Keypad3:
+                                       currentDebugView = DebugView.occlusion;
+                                       break;
+                               case Key.Keypad4:
+                                       currentDebugView = DebugView.emissive;
+                                       break;
+                               case Key.Keypad5:
+                                       currentDebugView = DebugView.metallic;
+                                       break;
+                               case Key.Keypad6:
+                                       currentDebugView = DebugView.roughness;
+                                       break;
+                               case Key.Up:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               lightPos -= Vector4.UnitZ;
+                                       else
+                                               camera.Move (0, 0, 1);
+                                       break;
+                               case Key.Down:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               lightPos += Vector4.UnitZ;
+                                       else
+                                               camera.Move (0, 0, -1);
+                                       break;
+                               case Key.Left:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               lightPos -= Vector4.UnitX;
+                                       else
+                                               camera.Move (1, 0, 0);
+                                       break;
+                               case Key.Right:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               lightPos += Vector4.UnitX;
+                                       else
+                                               camera.Move (-1, 0, 0);
+                                       break;
+                               case Key.PageUp:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               lightPos += Vector4.UnitY;
+                                       else
+                                               camera.Move (0, 1, 0);
+                                       break;
+                               case Key.PageDown:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               lightPos -= Vector4.UnitY;
+                                       else
+                                               camera.Move (0, -1, 0);
+                                       break;
+                               case Key.F1:
+                                       showUI = !showUI;
+                                       rebuildBuffers = true;
+                                       break;
+                               case Key.F2:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               pbrPipeline.matrices.exposure -= 0.3f;
+                                       else
+                                               pbrPipeline.matrices.exposure += 0.3f;
+                                       break;
+                               case Key.F3:
+                                       if (modifiers.HasFlag (Modifier.Shift))
+                                               pbrPipeline.matrices.gamma -= 0.1f;
+                                       else
+                                               pbrPipeline.matrices.gamma += 0.1f;
+                                       break;
+                               case Key.F4:
+                                       if (camera.Type == Camera.CamType.FirstPerson)
+                                               camera.Type = Camera.CamType.LookAt;
+                                       else
+                                               camera.Type = Camera.CamType.FirstPerson;
+                                       Console.WriteLine ($"camera type = {camera.Type}");
+                                       break;
+                               default:
+                                       base.onKeyDown (key, scanCode, modifiers);
+                                       return;
+                       }
+                       updateViewRequested = true;
+               }
+               #endregion
+
+               #region dispose
+               protected override void Dispose (bool disposing) {
+                       if (disposing) {
+                               if (!isDisposed) {
+                                       dev.WaitIdle ();
+
+                                       isRunning = false;
+
+                                       for (int i = 0; i < swapChain.ImageCount; ++i)
+                                               frameBuffers[i]?.Dispose ();
+
+                                       pbrPipeline.Dispose ();
+
+                                       uiPipeline.Dispose ();
+
+                                       uiImage?.Dispose ();
+                               }
+                       }
+
+                       base.Dispose (disposing);
+               }
+               #endregion
+       }
+}
+
+
+
+
+
+
+
+//             protected override void onKeyDown (Glfw.Key key, int scanCode, Modifier modifiers) {
+//                     switch (key) {
+//                             case Glfw.Key.F1:
+//                                     if (modifiers.HasFlag (Modifier.Shift))
+//                                             pbrPipeline.matrices.exposure -= 0.3f;
+//                                     else
+//                                             pbrPipeline.matrices.exposure += 0.3f;
+//                                     break;
+//                             case Glfw.Key.F2:
+//                                     if (modifiers.HasFlag (Modifier.Shift))
+//                                             pbrPipeline.matrices.gamma -= 0.1f;
+//                                     else
+//                                             pbrPipeline.matrices.gamma += 0.1f;
+//                                     break;
+//                             case Glfw.Key.F3:
+//                                     if (camera.Type == Camera.CamType.FirstPerson)
+//                                             camera.Type = Camera.CamType.LookAt;
+//                                     else
+//                                             camera.Type = Camera.CamType.FirstPerson;
+//                                     Console.WriteLine ($"camera type = {camera.Type}");
+//                                     break;
+//                             default:
+//                                     base.onKeyDown (key, scanCode, modifiers);
+//                                     return;
+//                     }
+//                     updateViewRequested = true;
+//             }
+//             #endregion
+
+//             protected override void Dispose (bool disposing) {
+//                     if (disposing) {
+//                             if (!isDisposed) {
+//                                     dev.WaitIdle ();
+//                                     for (int i = 0; i < swapChain.ImageCount; ++i)
+//                                             frameBuffers[i]?.Dispose ();
+
+//                                     pbrPipeline.Dispose ();
+
+//                                     uiPipeline.Dispose ();
+//                                     descLayoutMain.Dispose ();
+//                                     descriptorPool.Dispose ();
+
+//                                     uiImage.Dispose ();
+
+//                                     crow.Dispose ();
+
+//                                     vkvgDev.Dispose ();
+
+
+//                             }
+//                     }
+
+//                     base.Dispose (disposing);
+//             }
+
+
+//     }
+//}
diff --git a/netfx.props b/netfx.props
new file mode 100644 (file)
index 0000000..25fdbe0
--- /dev/null
@@ -0,0 +1,27 @@
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <!-- When compiling .NET SDK 2.0 projects targeting .NET 4.x on Mono using 'dotnet build' you -->
+    <!-- have to teach MSBuild where the Mono copy of the reference asssemblies is -->
+    <TargetIsMono Condition="$(TargetFramework.StartsWith('net4')) and '$(OS)' == 'Unix'">true</TargetIsMono>
+
+    <!-- Look in the standard install locations -->
+    <BaseFrameworkPathOverrideForMono Condition="'$(BaseFrameworkPathOverrideForMono)' == '' AND '$(TargetIsMono)' == 'true' AND EXISTS('/Library/Frameworks/Mono.framework/Versions/Current/lib/mono')">/Library/Frameworks/Mono.framework/Versions/Current/lib/mono</BaseFrameworkPathOverrideForMono>
+    <BaseFrameworkPathOverrideForMono Condition="'$(BaseFrameworkPathOverrideForMono)' == '' AND '$(TargetIsMono)' == 'true' AND EXISTS('/usr/lib/mono')">/usr/lib/mono</BaseFrameworkPathOverrideForMono>
+    <BaseFrameworkPathOverrideForMono Condition="'$(BaseFrameworkPathOverrideForMono)' == '' AND '$(TargetIsMono)' == 'true' AND EXISTS('/usr/local/lib/mono')">/usr/local/lib/mono</BaseFrameworkPathOverrideForMono>
+
+    <!-- If we found Mono reference assemblies, then use them -->
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net45'">$(BaseFrameworkPathOverrideForMono)/4.5-api</FrameworkPathOverride>
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net451'">$(BaseFrameworkPathOverrideForMono)/4.5.1-api</FrameworkPathOverride>
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net452'">$(BaseFrameworkPathOverrideForMono)/4.5.2-api</FrameworkPathOverride>
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net46'">$(BaseFrameworkPathOverrideForMono)/4.6-api</FrameworkPathOverride>
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net461'">$(BaseFrameworkPathOverrideForMono)/4.6.1-api</FrameworkPathOverride>
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net462'">$(BaseFrameworkPathOverrideForMono)/4.6.2-api</FrameworkPathOverride>
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net47'">$(BaseFrameworkPathOverrideForMono)/4.7-api</FrameworkPathOverride>
+    <FrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net471'">$(BaseFrameworkPathOverrideForMono)/4.7.1-api</FrameworkPathOverride>
+    <EnableFrameworkPathOverride Condition="'$(BaseFrameworkPathOverrideForMono)' != ''">true</EnableFrameworkPathOverride>
+
+    <!-- Add the Facades directory.  Not sure how else to do this. Necessary at least for .NET 4.5 -->
+    <AssemblySearchPaths Condition="'$(BaseFrameworkPathOverrideForMono)' != ''">$(FrameworkPathOverride)/Facades;$(AssemblySearchPaths)</AssemblySearchPaths>
+  </PropertyGroup>
+</Project>
+