diff --git a/.analysis_options b/.analysis_options
index 064bef2..7ef324b 100644
--- a/.analysis_options
+++ b/.analysis_options
@@ -1,3 +1,8 @@
+# Analyzer options:
+# https://www.dartlang.org/guides/language/analysis-options
+#
analyzer:
+ strong-mode: true
+
exclude:
- - 'samples/**'
\ No newline at end of file
+ - 'tool/templates/**'
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..36f0d34
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+.buildlog
+.DS_Store
+.idea
+.pub/
+build/
+packages
+pubspec.lock
+.sass-cache
+lib/sass/*/*.css
+.bs
+*.css.map
+example/*/*.css
+example/**/*.css
+*.applescript
+syncsite
+
+site/downloads/
+web/downloads
diff --git a/.sitegen/html/_content/index.html b/.sitegen/html/_content/index.html
new file mode 100644
index 0000000..32525d5
--- /dev/null
+++ b/.sitegen/html/_content/index.html
@@ -0,0 +1,2 @@
+title: Material Design Lite / Dart
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/.sitegen/html/_data/downloads.json b/.sitegen/html/_data/downloads.json
new file mode 100644
index 0000000..beff2e2
--- /dev/null
+++ b/.sitegen/html/_data/downloads.json
@@ -0,0 +1,59 @@
+[
+{ "name" : "mdl_animation" },
+ { "name" : "mdl_badge" },
+ { "name" : "mdl_button" },
+ { "name" : "mdl_card" },
+ { "name" : "mdl_checkbox" },
+ { "name" : "mdl_data-table" },
+ { "name" : "mdl_footer" },
+ { "name" : "mdl_grid" },
+ { "name" : "mdl_icon-toggle" },
+ { "name" : "mdl_layout" },
+ { "name" : "mdl_menu" },
+ { "name" : "mdl_palette" },
+ { "name" : "mdl_progress" },
+ { "name" : "mdl_radio" },
+ { "name" : "mdl_shadow" },
+ { "name" : "mdl_slider" },
+ { "name" : "mdl_spinner" },
+ { "name" : "mdl_switch" },
+ { "name" : "mdl_tabs" },
+ { "name" : "mdl_textfield" },
+ { "name" : "mdl_tooltip" },
+ { "name" : "mdl_typography" },
+ { "name" : "mdld_attribute" },
+ { "name" : "mdld_class" },
+ { "name" : "mdld_formatter" },
+ { "name" : "mdld_model" },
+ { "name" : "mdld_observe" },
+ { "name" : "mdld_repeat" },
+ { "name" : "mdld_repeat_callback" },
+ { "name" : "mdld_repeat_data-table" },
+ { "name" : "mdlo_icons" },
+ { "name" : "mdlo_list" },
+ { "name" : "mdlx_accordion" },
+ { "name" : "mdlx_data-table2" },
+ { "name" : "mdlx_dialog" },
+ { "name" : "mdlx_dnd" },
+ { "name" : "mdlx_forms" },
+ { "name" : "mdlx_nav-pills" },
+ { "name" : "mdlx_notification" },
+ { "name" : "mdlx_panel" },
+ { "name" : "mdlx_snackbar" },
+ { "name" : "spa_chartjs" },
+ { "name" : "spa_plotly" },
+ { "name" : "spa_content" },
+ { "name" : "spa_include" },
+ { "name" : "spa_inplace" },
+ { "name" : "spa_todo" },
+ { "name" : "styleguide" },
+ { "name" : "template_android-dot-com" },
+ { "name" : "template_article" },
+ { "name" : "template_blog" },
+ { "name" : "template_dashboard" },
+ { "name" : "template_fixed-header" },
+ { "name" : "template_spa" },
+ { "name" : "template_sticky-footer" },
+ { "name" : "template_text-only" }
+
+]
\ No newline at end of file
diff --git a/.sitegen/html/_templates/default.html b/.sitegen/html/_templates/default.html
new file mode 100644
index 0000000..9e47a02
--- /dev/null
+++ b/.sitegen/html/_templates/default.html
@@ -0,0 +1,770 @@
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.sitegen/site.yaml b/.sitegen/site.yaml
new file mode 100644
index 0000000..71b0913
--- /dev/null
+++ b/.sitegen/site.yaml
@@ -0,0 +1,25 @@
+# template_dir: ../_templates
+# assets_dir: ../_assets
+# watchfolder1: ../../lib/assets/styles/connections
+
+# Turne it off while developing
+#autoprefixer: false
+
+# Usage: _site.
+# Sample: _site.site_name
+site_options:
+ name: Mike
+ site_name: MDL/Dart + SiteGen Sample
+ author: Mike Mitterer
+
+ # Logo
+ # Usage:
+ mdl-dart-logo: packages/mdl/assets/images/mdl-dart-logo.svg
+
+
+# SASS_PATH wird nur durch "sass" unterstützt
+# Usage: sitegen -c
+sasscompiler: sass
+sass_path:
+ - "package:mdl"
+
diff --git a/.stagedive/_templates/sample/.sitegen/html/_content/index.html b/.stagedive/_templates/sample/.sitegen/html/_content/index.html
new file mode 100644
index 0000000..6024981
--- /dev/null
+++ b/.stagedive/_templates/sample/.sitegen/html/_content/index.html
@@ -0,0 +1,7 @@
+title: <%= title %>
+samplename: <%= package %>
+sampleurl: https://github.com/MikeMitterer/dart-material-design-lite/tree/mdl/example/<%= basename %>/web
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ <<%= tag %>><%= tag %>>
+
diff --git a/samples/mdlo_list/.sitegen/site.yaml b/.stagedive/_templates/sample/.sitegen/site.yaml
similarity index 100%
rename from samples/mdlo_list/.sitegen/site.yaml
rename to .stagedive/_templates/sample/.sitegen/site.yaml
diff --git a/.stagedive/_templates/sample/manifest.yaml b/.stagedive/_templates/sample/manifest.yaml
new file mode 100644
index 0000000..37339a5
--- /dev/null
+++ b/.stagedive/_templates/sample/manifest.yaml
@@ -0,0 +1,28 @@
+# templatename is not optional!
+templatename: MDL Sample Template (private)
+keeptemplateprivate: true
+
+prompts:
+ package:
+ type: lowercasee
+ question: "Enter the sample-name:"
+ hint: "This is the 'name: ' in your pubspec.yaml. [ name: mdl_<%= package %>_sample ]"
+
+ sample:
+ type: input
+ question: "Sample description:"
+ hint: "Description in pubspec.yaml. [ description: Material Design Lite '<%= sample %>' Sample ]"
+
+ title:
+ type: uppercase
+ question: "Title for HTML file:"
+
+ prefix:
+ type: lowercase
+ question: "Prefix for sample:"
+ hint: "mdl_, mdlx_, spa_ - Used for sempleurl in index.html"
+
+ tag:
+ type: lowercase
+ question: "TAG you want to test:"
+ hint: "Used in index.html. [ Your sample works ]"
diff --git a/.stagedive/_templates/sample/pubspec.yaml b/.stagedive/_templates/sample/pubspec.yaml
new file mode 100644
index 0000000..dae0c7d
--- /dev/null
+++ b/.stagedive/_templates/sample/pubspec.yaml
@@ -0,0 +1,33 @@
+name: mdl_<%= package %>_sample
+description: Material Design Lite '<%= sample %>' Sample
+version: 0.1.0
+author: Mike Mitterer
+homepage: https://github.com/MikeMitterer/dart-material-design-lite
+
+dependencies:
+ browser: any
+
+ intl: any
+ args: any
+ validate: any
+ browser_detect: any
+
+ logging: any
+ logging_handlers: any
+ console_log_handler: any
+ # path: /Volumes/Daten/DevLocal/DevDart/ConsoleLogHandler
+
+ mdl:
+ path: /Volumes/Daten/DevLocal/DevDart/MaterialDesignLite
+
+ di: any
+
+transformers:
+ - di
+
+# - $dart2js:
+# minify: false
+# sourceMaps: true
+
+
+
diff --git a/.stagedive/_templates/sample/web/demo.scss b/.stagedive/_templates/sample/web/demo.scss
new file mode 100644
index 0000000..a62de17
--- /dev/null
+++ b/.stagedive/_templates/sample/web/demo.scss
@@ -0,0 +1,5 @@
+//@import "packages/mdl/assets/styles/material-design-lite";
+
+.demo-page--<%= package %>, .demo-section--<%= package %> {
+
+}
diff --git a/.stagedive/_templates/sample/web/main.dart b/.stagedive/_templates/sample/web/main.dart
new file mode 100644
index 0000000..b5b59bb
--- /dev/null
+++ b/.stagedive/_templates/sample/web/main.dart
@@ -0,0 +1,48 @@
+import "dart:html" as dom;
+import "dart:async";
+import "dart:math" as Math;
+
+import 'package:logging/logging.dart';
+import 'package:console_log_handler/console_log_handler.dart';
+import 'package:di/di.dart' as di;
+
+import 'package:mdl/mdl.dart';
+import 'package:mdl/mdlobservable.dart';
+
+@MdlComponentModel @di.Injectable()
+class Application extends MaterialApplication {
+ final Logger _logger = new Logger('main.Application');
+
+ Application() {
+ }
+
+ @override
+ void run() {
+ }
+
+ //- private -----------------------------------------------------------------------------------
+
+}
+
+main() async {
+ final Logger _logger = new Logger('main.<%= sample %>');
+
+ configLogging();
+
+ registerMdl();
+
+ final MaterialApplication application = await componentFactory().
+ rootContext(Application).run(enableVisualDebugging: true);
+
+ application.run();
+}
+
+
+void configLogging() {
+ hierarchicalLoggingEnabled = false; // set this to true - its part of Logging SDK
+
+ // now control the logging.
+ // Turn off all logging first
+ Logger.root.level = Level.INFO;
+ Logger.root.onRecord.listen(new LogConsoleHandler());
+}
\ No newline at end of file
diff --git a/.stagedive/_templates/sample/web/styles.css b/.stagedive/_templates/sample/web/styles.css
new file mode 100644
index 0000000..e8c8de8
--- /dev/null
+++ b/.stagedive/_templates/sample/web/styles.css
@@ -0,0 +1,94 @@
+html, body {
+ margin: 0;
+ padding: 0;
+}
+
+h1, h2 {
+ font-family: 'Roboto','Helvetica','Arial',sans-serif;
+ font-weight: 400;
+}
+
+h2 {
+ font-size: 24px;
+ line-height: 1.35;
+
+ margin-top: 0.66em;
+ margin-bottom: 0.66em;
+}
+
+
+.ribbon {
+ width: 100%;
+ height: 30vh;
+}
+
+.demo-page > .mdl-layout__container > .mdl-layout > * {
+ flex-shrink: 0;
+}
+
+.demo-page > .mdl-layout__container > .mdl-layout > main.mdl-layout__content.mdl-layout__content {
+ margin-top: -25vh;
+}
+
+/*header.mdl-layout__header {*/
+ /*display: flex !important;*/
+/*}*/
+
+.container {
+ max-width: 1600px;
+ width: 100%;
+ margin: 0 auto;
+}
+
+.content {
+ border-radius: 2px;
+ padding: 24px;
+}
+
+.mdl-layout__content .demo-section { min-height: 500px; }
+
+.mdl-mini-footer {
+ padding-top: 12px;
+ padding-bottom: 12px;
+}
+
+#view-source {
+ position: fixed;
+ display: block;
+ right: 0;
+ top: 37px;
+ margin-right: 40px;
+ z-index: 900;
+}
+
+.sitegen-link, .mm-link { margin-bottom: 0; }
+.is-small-screen .sitegen-link .additional-info { display: none; }
+.mm-link { font-size: 12px; }
+
+/*
+ Solves bug in grid...
+*/
+
+@media (max-width: 479px) {
+ .mdl-grid {
+ padding: 0;
+ }
+}
+
+@media (max-width: 640px) {
+ .mm-link {
+ display: none;
+ }
+}
+
+@media (max-width: 839px) and (min-width: 480px) {
+ .mdl-grid {
+ padding: 0;
+ }
+}
+
+@media (max-width: 850px) {
+ #view-source {
+ top: 29px;
+ }
+}
diff --git a/.stagedive/config.yaml b/.stagedive/config.yaml
new file mode 100644
index 0000000..4b2ecf5
--- /dev/null
+++ b/.stagedive/config.yaml
@@ -0,0 +1 @@
+templatefolder: .stagedive/_templates
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..8c1fd91
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,34 @@
+# Change Log for mdl_site
+Material Design Lite WebSite
+
+## [v1.17.6](http://github.com/mikemitterer/dart-material-design-lite-site/compare/v1.17.6) - 2016-10-11
+
+### Feature
+* Filter-Sample for Div-Data-Table [f51437b](https://github.com/mikemitterer/dart-material-design-lite-site/commit/f51437bb1a1310eef13fe8cc78287226e3e274fe)
+* DataTable2 can now scroll its data-section [47135b2](https://github.com/mikemitterer/dart-material-design-lite-site/commit/47135b26cefb67bfe8814ea05b7cba3ae73a632c)
+* Improved Form-Sample (with labelfield) [4d9b794](https://github.com/mikemitterer/dart-material-design-lite-site/commit/4d9b794eb5d555a62a727da424f5c6f43d5db7b5)
+* properties--sticky works [94244d3](https://github.com/mikemitterer/dart-material-design-lite-site/commit/94244d313976346e9edebd3348c71471bd74ca85)
+* All samples can be downloaded, new Logo [8adb901](https://github.com/mikemitterer/dart-material-design-lite-site/commit/8adb90152528d2d61b7664e4376efd866e49c7d6)
+
+### Fixes
+* Wrong Theming-URL [6af54af](https://github.com/mikemitterer/dart-material-design-lite-site/commit/6af54af43f22a46d7d31f64ae8b59675c222f853)
+
+### Bugs
+* Links were broken [e22f023](https://github.com/mikemitterer/dart-material-design-lite-site/commit/e22f023bee587a9638c7deaf651de5d0d2f05ac4)
+* Mustache-lib has a problem if a class overwrites ==operator [513c028](https://github.com/mikemitterer/dart-material-design-lite-site/commit/513c028905f73551b2d9e7e0c71903b279fd0197)
+
+### Docs
+* Updated all the samples (+site) according to mdl v1.17.6 [6b40829](https://github.com/mikemitterer/dart-material-design-lite-site/commit/6b40829923200799b35ab88ed31c80d8150206bf)
+* Updated site after MDL 1.17.4 update [5994042](https://github.com/mikemitterer/dart-material-design-lite-site/commit/59940423f301a85ed7310a490771a495b4b20ca6)
+* Styleguide - Formatter-Sample integrated [f1e8e33](https://github.com/mikemitterer/dart-material-design-lite-site/commit/f1e8e334fedeea6837daf8d75a51179b351836b5)
+* Form-Labels - sample improved [42c2834](https://github.com/mikemitterer/dart-material-design-lite-site/commit/42c2834aef5ec9c6e36b184e9d512af78f60fbef)
+* Inplace- + Form-Sample improved [78ca550](https://github.com/mikemitterer/dart-material-design-lite-site/commit/78ca550f2646e9fb893f7a6e2b7befca9658a9a7)
+* InplaceEdit-Sample added [96f6c7c](https://github.com/mikemitterer/dart-material-design-lite-site/commit/96f6c7cde13ddb79cd99ddb5269a86855099e7c9)
+* Updated samples and 'Getting started' [9b9791f](https://github.com/mikemitterer/dart-material-design-lite-site/commit/9b9791f526af5505bf1ed97e764bc2a28e859434)
+* New mdl-list sample [4196aaf](https://github.com/mikemitterer/dart-material-design-lite-site/commit/4196aafdaf38a0763baefb1ab5414c01feaa509b)
+* ListSample updated, Styleguide got the latest ToDo (MDL-Flux) sample [b802e90](https://github.com/mikemitterer/dart-material-design-lite-site/commit/b802e90f4beec1e6d47f26282294d84ea6b93013)
+* Grinder builds Site + Samples [97dbc59](https://github.com/mikemitterer/dart-material-design-lite-site/commit/97dbc594b8bdb9c7bc0954ec01ac9d99b6213591)
+* ToDo-Sample is now mdlFlux-based [50c6607](https://github.com/mikemitterer/dart-material-design-lite-site/commit/50c6607f2c551c66980f93c3cb9929c7fae30de3)
+
+
+This CHANGELOG.md was generated with [**Changelog for Dart**](https://pub.dartlang.org/packages/changelog)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1851e31
--- /dev/null
+++ b/README.md
@@ -0,0 +1,27 @@
+# SITE for MaterialDesignLite
+> The goal is to illustrate implementing a real-world-looking site with **Material Design Lite**.
+
+###License###
+
+ Copyright 2016 Michael Mitterer (office@mikemitterer.at),
+ IT-Consulting and Development Limited, Austrian Branch
+
+ __ ___ ____ __ __ __ ____ __
+ / |/ // __ \ / / / // / / __ \ ____ _ _____ / /_
+ / /|_/ // / / // / / // /_ / / / // __ `// ___// __/
+ / / / // /_/ // /___/__ __// /_/ // /_/ // / / /_
+ /_/ /_//_____//_____/ /_/ /_____/ \__,_//_/ \__/
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ either express or implied. See the License for the specific language
+ governing permissions and limitations under the License.
+
+
diff --git a/build.jenkins b/build.jenkins
new file mode 100644
index 0000000..aaab9ca
--- /dev/null
+++ b/build.jenkins
@@ -0,0 +1,48 @@
+pipeline {
+ agent {
+ label 'linux'
+ }
+ stages {
+ stage('Preparation') {
+ steps {
+ timeout(time: 15, unit: 'MINUTES') {
+ ansiColor('xterm') {
+ sh 'pub update'
+ sh 'pub global activate grinder'
+ }
+ }
+ }
+ }
+ stage('Analyze') {
+ steps {
+ ansiColor('xterm') {
+ sh 'grind analyze-site'
+ sh 'grind analyze-samples'
+ }
+ }
+ }
+
+ stage('Samples') {
+ steps {
+ ansiColor('xterm') {
+ sh 'grind gen-samples'
+ sh 'grind gen-styleguide'
+ sh 'grind run-site-gen-for-samples'
+ sh 'grind build-samples'
+ }
+ }
+ }
+
+ stage('Site') {
+ steps {
+ ansiColor('xterm') {
+ sh 'grind run-site-gen'
+ sh 'grind analyze-site'
+ sh 'pub build'
+ sh './tgzsample --genall'
+ }
+ }
+ }
+ }
+}
+
\ No newline at end of file
diff --git a/deploy-samples.sh b/deploy-samples.sh
new file mode 100755
index 0000000..5d81ac0
--- /dev/null
+++ b/deploy-samples.sh
@@ -0,0 +1,121 @@
+#!/usr/bin/env bash
+# -----------------------------------------------------------------------------
+# Deploys sample to LightSail II
+#
+# rsync-destination must be defined in a .rsync-file for each sample
+# -----------------------------------------------------------------------------
+
+# Vars die in .bashrc gesetzt werden. ~ (DEV_DOCKER, DEV_SEC, DEV_LOCAL) ~~~~~~
+# [] müssen entfernt werden (IJ Bug https://goo.gl/WJQGMa)
+if [ -z ${DEV_DOCKER+set} ]; then echo "Var 'DEV_DOCKER' nicht gesetzt!"; exit 1; fi
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Abbruch bei Problemen (https://goo.gl/hEEJCj)
+#
+# Wenn ein Fehler nicht automatisch zu einem exit führen soll dann
+# kann 'command || true' verwendet werden
+#
+# Für die $1, $2 Abfragen kann 'CMDLINE=${1:-}' verwendet werden
+#
+# -e Any subsequent(*) commands which fail will cause the shell script to exit immediately
+# -o pipefail sets the exit code of a pipeline to that of the rightmost command
+# -u treat unset variables as an error and exit
+# -x print each command before executing it
+set -eou pipefail
+
+APPNAME="`basename $0`"
+
+SCRIPT=`realpath $0`
+SCRIPTPATH=`dirname ${SCRIPT}`
+
+#------------------------------------------------------------------------------
+# Einbinden der globalen Build-Lib
+# Hier sind z.B. Farben, generell globale VARs und Funktionen definiert
+#
+
+GLOBAL_DIR="${DEV_DOCKER}/_global"
+LIB_DIR="${GLOBAL_DIR}/lib"
+
+SAMPLES_LIB="samples.lib.sh"
+
+if [[ ! -f "${LIB_DIR}/${SAMPLES_LIB}" ]]
+then
+ echo "Samples-lib ${LIB_DIR}/${SAMPLES_LIB} existiert nicht!"
+ exit 1
+fi
+
+. "${LIB_DIR}/${SAMPLES_LIB}"
+
+
+#------------------------------------------------------------------------------
+# BASIS
+
+#------------------------------------------------------------------------------
+# Functions
+#
+
+#------------------------------------------------------------------------------
+# Options
+#
+
+#------------------------------------------------------------------------------
+# Options
+#
+
+usage() {
+ echo
+ echo "Usage: ${APPNAME} [ options ]"
+ echo -e "\t-l | --list [example_name] Lists all examples from '${YELLOW}${EXAMPLE_FOLDER}'${NC}-folder"
+ echo -e "\t-d | --deploy [example_name] Creates 'deploy'-dir for Dart"
+ echo -e "\t-p | --publish [example_name] [--force] Publish samples to AWS/S3 (only on day ${PUBLISH_ONLY_ON_DAY})"
+ echo -e "\t use --force to ignore Monday as publishing day"
+}
+
+CMDLINE=${1:-}
+OPTION1=${2:-}
+OPTION2=${3:-}
+
+case "${CMDLINE}" in
+ -l|list|-list|--list)
+ if [ -n "${OPTION1+set}" -a "${OPTION1}" != "" ]; then
+ listSamples "${EXAMPLE_FOLDER}/${OPTION1}"
+ else
+ listSamples "${EXAMPLES[@]}"
+ fi
+ ;;
+
+ -d|deploy|-deploy|--deploy)
+ if [ -n "${OPTION1+set}" -a "${OPTION1}" != "" ]; then
+ deploySamples "${EXAMPLE_FOLDER}/${OPTION1}"
+ else
+ deploySamples "${EXAMPLES[@]}"
+ fi
+ ;;
+
+ -p|publish|-publish|--publish)
+ if [ -n "${OPTION1+set}" -a "${OPTION1}" != "--force" ]; then
+ publishSamples "${EXAMPLE_FOLDER}/${OPTION1}"
+ else
+ publishSamples "${EXAMPLES[@]}"
+ fi
+ ;;
+
+
+ -g|generate|-generate|--generate)
+ if [ -n "${OPTION1+set}" -a "${OPTION1}" != "--force" -a "${OPTION1}" != "" ]; then
+ generateRsyncSetting "${EXAMPLE_FOLDER}/${OPTION1}"
+ else
+ generateRsyncSetting "${EXAMPLES[@]}"
+ fi
+ ;;
+
+ -h|-help|--help|*)
+ usage
+ ;;
+
+esac
+
+#------------------------------------------------------------------------------
+# Alles OK...
+
+exit 0
diff --git a/doc/logo/mdl-dart-logo-500px.png b/doc/logo/mdl-dart-logo-500px.png
new file mode 100644
index 0000000..7eec38e
Binary files /dev/null and b/doc/logo/mdl-dart-logo-500px.png differ
diff --git a/doc/logo/mdl-dart-logo-800px.png b/doc/logo/mdl-dart-logo-800px.png
new file mode 100644
index 0000000..2905dbb
Binary files /dev/null and b/doc/logo/mdl-dart-logo-800px.png differ
diff --git a/doc/logo/mdl-dart-logo.ai b/doc/logo/mdl-dart-logo.ai
new file mode 100644
index 0000000..600cc25
--- /dev/null
+++ b/doc/logo/mdl-dart-logo.ai
@@ -0,0 +1,411 @@
+%PDF-1.5
%
+1 0 obj
<>/OCGs[13 0 R 16 0 R]>>/Type/Catalog>>
endobj
30 0 obj
<>stream
+
+
+
+
+ application/pdf
+
+
+ mdl-dart-logo
+
+
+
+
+ Adobe Illustrator CS3
+ 2016-01-18T11:18:59+01:00
+ 2016-01-18T11:18:59+01:00
+ 2016-01-18T11:18:59+01:00
+
+
+
+ 256
+ 96
+ JPEG
+ /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAYAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq8
s83+Y72+jttZ07mr6XJ9etIGHF629UvLaShPWM8/9X55t9NhEJHHLlIV8/pLzWbXynMEchvHvuP1
xPw39z0CHX7W4ttKu7cepaaqVEUtacecRkWo33PHjSua2WIxJB5xd3LVAcBHKZr7Cf0I6K6tZZHj
imSSSOnqIrBitenIA7dMrILfHLGRIBBIfOH5q3XnbVvz6tfKOi+Z9Q0S3v7eEJ9XuJ0hRhC8jN6U
ckYJbhgbEL5wsfz0/KVIPMQ81y+YtH9ZYrhbuSWdQW6LLFOzlUelOUb1+W2KvVtW/PbynpHkPRfN
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
wKyoAkbKTG7FjLyoqhA3I/D29/A5M4y4kO0ccj1Gw6Hrewq/x7imVvcQ3EKzQtyjf7JoR0NDUGhB
ByBFOZjyCY4hyVMDN2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVj3m7yyNahiCqrEhoLlG
NOVvKKPvv8S/aXwOX4Mxxm3W6/RnKYyjzGx84nn+xNNE039F6Raad673ItIliE8tObBBQVp7ZDLk
45GVVbnYsfBERu6RuVtiXXWg2Vzdi6lL+oJEkIBAU8ABwO32TQEj2yYmQKcPLoYTnxG7sH5dPchh
5TsBLBJ60x+rNG8SkxmjRNyUglOQr3AIBw+KWn+S8dg3L01XLp8PnTj5U04zJKzM7pt+8SCSq8y4
X44mpQsdxQ++Pilf5Mx2D3d4iet9Y/durS+XrSSJI/VlTgjIrKVrRpVlNaqQfiTuKUwDIWyWggQB
Z2FdO8S7vJdpmg2enOrwM5KrIoDcAtJWVm2VVA3TamMpkstPoYYjcb693Wj0A7nJoUKsFe4mltlm
a4W1f0/TEjOZP2UVyA7VALY8aBoh1lIx4uLh2q7vuvn5oaPyjpkcDwoWVGpSkdvUBTUAn0vjH/GT
l9+S8UtMeysQiYjl7o/8Tv8A51rZfLhtoozprsLiOgWR5RHxAVlNKRSrvy6cflTEZL5ol2fwAeH9
Q866H+jL7vdSvp/l6G2tIYpJGeRDBI7CgBeBQBSorQ0wSyWW3BoBCABO44T8YomXTS9613FdTW7u
iRyJGIirLGWK19RHP7Z6HIiW1U3S09z4xKUSQBtw9L7we9ByeVNOkjWNnkKKsYVWETisRbi1HRgT
SRhuKe2S8UuPLszGRVnp3Hle+48z5eSZ2VpFaWsdtFThGCBRUTqak8Y1RRuewyBNm3Nw4hjiIjkP
cPuAH2K2BsdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//Z
+
+
+
+
+
+ uuid:30A085F765BFE511A3C0D00742C31621
+ uuid:ef22d05d-09f1-0a47-b5cb-7facf55b59bd
+
+ uuid:2FA085F765BFE511A3C0D00742C31621
+ uuid:2EA085F765BFE511A3C0D00742C31621
+
+
+
+ 1
+ False
+ False
+
+ 800.000000
+ 600.000000
+ Pixels
+
+
+
+
+ ArialMT
+ Arial
+ Regular
+ Open Type
+ Version 5.01.2x
+ False
+ Arial.ttf
+
+
+
+
+
+ Cyan
+ Magenta
+ Yellow
+ Black
+
+
+
+
+
+ Default Swatch Group
+ 0
+
+
+
+
+
+ Document
+
+
+ Adobe PDF library 8.00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
endstream
endobj
2 0 obj
<>
endobj
13 0 obj
<>
endobj
16 0 obj
<>
endobj
17 0 obj
[/View/Design]
endobj
18 0 obj
<>>>
endobj
14 0 obj
[/View/Design]
endobj
15 0 obj
<>>>
endobj
12 0 obj
[16 0 R 13 0 R]
endobj
5 0 obj
<>/ArtBox[285.197 321.238 466.638 366.238]/MediaBox[0.0 0.0 800.0 600.0]/Thumb 29 0 R/TrimBox[0.0 0.0 800.0 600.0]/Resources<>/Properties<>/ExtGState<>>>/Type/Page/LastModified(D:20160118111859+01'00')>>
endobj
24 0 obj
<>stream
+HW˒
WLޏ(Y'aK?HT.EwmTW@">?>z[8Z;~ǿ6N8~ǟoy>k?ShxϷxΒtP68r6Џ;qVi4aP{