From 839243b5f6c314dabfe4698dc69f2e9a67509263 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 9 Aug 2015 23:50:30 -0700 Subject: [PATCH] Site updated at 2015-08-10 06:50:30 UTC --- atom.xml | 166 ++++++- blog/2014/12/18/website-launched/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- blog/2015/01/13/nest-in-da-house/index.html | 12 +- blog/2015/01/24/release-notes/index.html | 12 +- .../2015/02/08/looking-at-the-past/index.html | 12 +- blog/2015/02/24/streaming-updates/index.html | 12 +- .../index.html | 12 +- blog/2015/03/08/new-logo/index.html | 12 +- blog/2015/03/11/release-notes/index.html | 12 +- blog/2015/03/22/release-notes/index.html | 12 +- blog/2015/04/25/release-notes/index.html | 8 +- .../05/09/utc-time-zone-awareness/index.html | 12 +- blog/2015/05/14/release-notes/index.html | 12 +- blog/2015/06/10/release-notes/index.html | 12 +- .../index.html | 12 +- .../index.html | 463 ++++++++++++++++++ blog/archives/index.html | 51 +- blog/categories/architecture/atom.xml | 2 +- blog/categories/architecture/index.html | 12 +- blog/categories/branding/atom.xml | 2 +- blog/categories/branding/index.html | 12 +- blog/categories/component/atom.xml | 2 +- blog/categories/component/index.html | 12 +- blog/categories/core/atom.xml | 2 +- blog/categories/core/index.html | 12 +- blog/categories/frontend/atom.xml | 2 +- blog/categories/frontend/index.html | 12 +- blog/categories/release-notes/atom.xml | 192 ++++---- blog/categories/release-notes/index.html | 49 +- blog/categories/website/atom.xml | 2 +- blog/categories/website/index.html | 12 +- blog/index.html | 166 ++++--- blog/posts/2/index.html | 74 ++- components/automation.html | 32 +- components/device_tracker.asuswrt.html | 175 +++++++ components/device_tracker.ddwrt.html | 2 + components/index.html | 62 ++- components/media_player.squeezebox.html | 174 +++++++ components/modbus.html | 6 + components/mqtt.html | 226 +++++++++ components/notify.slack.html | 173 +++++++ components/sensor.rfxtrx.html | 168 +++++++ components/sensor.temper.html | 163 ++++++ components/switch.edimax.html | 172 +++++++ components/switch.rpi_gpio.html | 172 +++++++ components/switch.wemo.html | 8 +- developers/credits.html | 4 + getting-started/index.html | 71 ++- images/supported_brands/asus.png | Bin 0 -> 4610 bytes images/supported_brands/edimax.png | Bin 0 -> 13198 bytes images/supported_brands/kodi.png | Bin 6666 -> 30939 bytes images/supported_brands/logitech.png | Bin 0 -> 1024 bytes images/supported_brands/mqtt.png | Bin 0 -> 15351 bytes .../preferences-system-sharing.png | Bin 0 -> 3015 bytes images/supported_brands/raspberry-pi.png | Bin 0 -> 18372 bytes images/supported_brands/slack.png | Bin 0 -> 5007 bytes index.html | 6 +- sitemap.xml | 243 +++++---- stylesheets/screen.css | 2 +- 62 files changed, 2876 insertions(+), 428 deletions(-) create mode 100644 blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html create mode 100644 components/device_tracker.asuswrt.html create mode 100644 components/media_player.squeezebox.html create mode 100644 components/mqtt.html create mode 100644 components/notify.slack.html create mode 100644 components/sensor.rfxtrx.html create mode 100644 components/sensor.temper.html create mode 100644 components/switch.edimax.html create mode 100644 components/switch.rpi_gpio.html create mode 100644 images/supported_brands/asus.png create mode 100644 images/supported_brands/edimax.png create mode 100644 images/supported_brands/logitech.png create mode 100644 images/supported_brands/mqtt.png create mode 100644 images/supported_brands/preferences-system-sharing.png create mode 100644 images/supported_brands/raspberry-pi.png create mode 100644 images/supported_brands/slack.png diff --git a/atom.xml b/atom.xml index f4712552bd..28a3367e4a 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ @@ -13,6 +13,170 @@ Octopress + + <![CDATA[MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported]]> + + 2015-08-09T18:01:00-07:00 + https://home-assistant.io/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support + It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + + + + +

Raspberry PI GPIO Support
+ +@gbarba has contributed support to use the general purpose input and output pins on a Raspberry PI as switches inside Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+
+ + +

ASUSWRT based routers
+ +@persandstrom has contributed support to do prescence detection using ASUSWRT based routers.

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+device_tracker:
+  platform: asuswrt
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+ + +

Logitech Squeezebox media player support
+ +@persandstrom also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+
+ + +

Slack notification support
+ +@jamespcole has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel.

+ +
1
+2
+3
+4
+5
+
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ + +

Edimax Smart Switches support
+ +@rkabadi has contributed support for integrating Edimax Smart Switches into Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+
+ + +

RFXtrx sensor support
+@danielhiversen has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz.

+ +
1
+2
+3
+4
+
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ + +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ +

TEMPer temperature sensor support
+Support for Temper temperature sensors has been contributed by @rkabadi.

+ +
1
+2
+3
+
# Example configuration.yaml entry
+sensor:
+  platform: temper
+
+ +]]>
+
+ <![CDATA[IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported]]> diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html index 83ea4a1795..5b91b1b04e 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -213,6 +213,12 @@ diff --git a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html index c10dda52b2..2fc3b2387d 100644 --- a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html +++ b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html @@ -275,6 +275,12 @@ This article will try to explain how they all relate.

diff --git a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html index cf387f94db..9e81b96069 100644 --- a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html +++ b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html @@ -257,6 +257,12 @@ diff --git a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html index 8de629a921..d1569f9b33 100644 --- a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html +++ b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html @@ -225,6 +225,12 @@ diff --git a/blog/2015/01/13/nest-in-da-house/index.html b/blog/2015/01/13/nest-in-da-house/index.html index 2a362af5d3..d57785e9e7 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -232,6 +232,12 @@ diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html index eaeaef2155..b1aa4786cd 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -237,6 +237,12 @@ Home Assistant now supports --open-ui and --demo-mode diff --git a/blog/2015/02/08/looking-at-the-past/index.html b/blog/2015/02/08/looking-at-the-past/index.html index 38ff937a59..35c86ebe11 100644 --- a/blog/2015/02/08/looking-at-the-past/index.html +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -255,6 +255,12 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D diff --git a/blog/2015/02/24/streaming-updates/index.html b/blog/2015/02/24/streaming-updates/index.html index 1aadb2f2d3..b299f97080 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -233,6 +233,12 @@ diff --git a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html index b965e88e40..a85afe8393 100644 --- a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html +++ b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html @@ -220,6 +220,12 @@ YAML allows the use of lists, which should make the configuration file a bit mor diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html index 000fb5111c..859190805e 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -221,6 +221,12 @@ The old logo, the new detailed logo and the new simple logo. diff --git a/blog/2015/03/11/release-notes/index.html b/blog/2015/03/11/release-notes/index.html index c99ae92c10..2b32b52f35 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -267,6 +267,12 @@ An initial version of voice control for Home Assistant has landed. The current i diff --git a/blog/2015/03/22/release-notes/index.html b/blog/2015/03/22/release-notes/index.html index 03362f2bb9..4129c5f70d 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -340,6 +340,12 @@ James Cole has also contributed support for the diff --git a/blog/2015/04/25/release-notes/index.html b/blog/2015/04/25/release-notes/index.html index 343a471b9e..1e1f513bfe 100644 --- a/blog/2015/04/25/release-notes/index.html +++ b/blog/2015/04/25/release-notes/index.html @@ -356,6 +356,12 @@ James has also contributed support for integrating Transmission into Home Assist diff --git a/blog/2015/05/09/utc-time-zone-awareness/index.html b/blog/2015/05/09/utc-time-zone-awareness/index.html index c398b2d4d3..7e76178308 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -245,6 +245,12 @@ diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html index 7a4090ce98..aceef46c08 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -382,6 +382,12 @@ Before diving into the newly supported devices and services, I want to highlight diff --git a/blog/2015/06/10/release-notes/index.html b/blog/2015/06/10/release-notes/index.html index 8f1d6310e5..251f47f2cd 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -461,6 +461,12 @@ This switch platform allows you to control your motion detection setting on your diff --git a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html index 0f12acc4e2..7b658d591a 100644 --- a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html +++ b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html @@ -405,6 +405,12 @@ Fabian has added support for Forecast.io to g diff --git a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html new file mode 100644 index 0000000000..a846bf6c1a --- /dev/null +++ b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html @@ -0,0 +1,463 @@ + + + + + + + + + + + + MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+
+ +

MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported

+ + + +
+ + + + + + + + + + + + + + + + + + + four minutes reading time + + + + + + + + + Comments + +
+ +
+ + + + +

It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + + + + +

Raspberry PI GPIO Support
+ +@gbarba has contributed support to use the general purpose input and output pins on a Raspberry PI as switches inside Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+
+ + +

ASUSWRT based routers
+ +@persandstrom has contributed support to do prescence detection using ASUSWRT based routers.

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+device_tracker:
+  platform: asuswrt
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+ + +

Logitech Squeezebox media player support
+ +@persandstrom also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+
+ + +

Slack notification support
+ +@jamespcole has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel.

+ +
1
+2
+3
+4
+5
+
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ + +

Edimax Smart Switches support
+ +@rkabadi has contributed support for integrating Edimax Smart Switches into Home Assistant.

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+
+ + +

RFXtrx sensor support
+@danielhiversen has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz.

+ +
1
+2
+3
+4
+
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ + +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ +

TEMPer temperature sensor support
+Support for Temper temperature sensors has been contributed by @rkabadi.

+ +
1
+2
+3
+
# Example configuration.yaml entry
+sensor:
+  platform: temper
+
+ + + +
+ + +
+

Comments

+
+
+
+ + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/archives/index.html b/blog/archives/index.html index 8fedf2a0a8..b012fee52f 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -22,7 +22,7 @@ - + @@ -115,6 +115,43 @@ + + + +
+ +
@@ -804,6 +841,12 @@ diff --git a/blog/categories/architecture/atom.xml b/blog/categories/architecture/atom.xml index 1c91f7f92f..6ed49a8d4a 100644 --- a/blog/categories/architecture/atom.xml +++ b/blog/categories/architecture/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: architecture | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/architecture/index.html b/blog/categories/architecture/index.html index 9504e0d518..abbad031a3 100644 --- a/blog/categories/architecture/index.html +++ b/blog/categories/architecture/index.html @@ -207,6 +207,12 @@ diff --git a/blog/categories/branding/atom.xml b/blog/categories/branding/atom.xml index fb34149380..a7c9912125 100644 --- a/blog/categories/branding/atom.xml +++ b/blog/categories/branding/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: branding | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/branding/index.html b/blog/categories/branding/index.html index 6eecf8a1a1..43717794ce 100644 --- a/blog/categories/branding/index.html +++ b/blog/categories/branding/index.html @@ -207,6 +207,12 @@ diff --git a/blog/categories/component/atom.xml b/blog/categories/component/atom.xml index 0f70191f6a..6cf0736afa 100644 --- a/blog/categories/component/atom.xml +++ b/blog/categories/component/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: component | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/component/index.html b/blog/categories/component/index.html index d915e5155f..094e010e9c 100644 --- a/blog/categories/component/index.html +++ b/blog/categories/component/index.html @@ -320,6 +320,12 @@ diff --git a/blog/categories/core/atom.xml b/blog/categories/core/atom.xml index f82ffd82d2..6183e10916 100644 --- a/blog/categories/core/atom.xml +++ b/blog/categories/core/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: core | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/core/index.html b/blog/categories/core/index.html index c91d35f5cc..a581d4d7ee 100644 --- a/blog/categories/core/index.html +++ b/blog/categories/core/index.html @@ -244,6 +244,12 @@ diff --git a/blog/categories/frontend/atom.xml b/blog/categories/frontend/atom.xml index 1be03cbbb9..d4daa09db7 100644 --- a/blog/categories/frontend/atom.xml +++ b/blog/categories/frontend/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: frontend | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/frontend/index.html b/blog/categories/frontend/index.html index 7bb3023097..b6159ec337 100644 --- a/blog/categories/frontend/index.html +++ b/blog/categories/frontend/index.html @@ -246,6 +246,12 @@ diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index 9de531802b..27ea6a1a0d 100644 --- a/blog/categories/release-notes/atom.xml +++ b/blog/categories/release-notes/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: release-notes | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ @@ -13,6 +13,113 @@ Octopress + + <![CDATA[MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported]]> + + 2015-08-09T18:01:00-07:00 + https://home-assistant.io/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support + It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + +

Raspberry PI GPIO Support
+ +@gbarba has contributed support to use the general purpose input and output pins on a Raspberry PI as switches inside Home Assistant.

+ +
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+
+ +

ASUSWRT based routers
+ +@persandstrom has contributed support to do prescence detection using ASUSWRT based routers.

+ +
# Example configuration.yaml entry
+device_tracker:
+  platform: asuswrt
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+ +

Logitech Squeezebox media player support
+ +@persandstrom also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant.

+ +
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+
+ +

Slack notification support
+ +@jamespcole has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel.

+ +
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ +

Edimax Smart Switches support
+ +@rkabadi has contributed support for integrating Edimax Smart Switches into Home Assistant.

+ +
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+
+ +

RFXtrx sensor support
+@danielhiversen has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz.

+ +
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ +

TEMPer temperature sensor support
+Support for Temper temperature sensors has been contributed by @rkabadi.

+ +
# Example configuration.yaml entry
+sensor:
+  platform: temper
+
+]]>
+
+ <![CDATA[IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported]]> @@ -521,89 +628,6 @@ switch: 2: name: My other switch -]]> - - - - <![CDATA[Release notes for March 22, 2015]]> - - 2015-03-22T00:21:00-08:00 - https://home-assistant.io/blog/2015/03/22/release-notes - A new version of Home Assistant has just been pushed out. It contains bugfixes contributed by jamespcole, andythigpen, trainman419 and me. It also adds a bunch of great new features:

- -

Script
-Andythigpen has contributed a script component. This allows users to create a sequence of service calls and delays. Scripts can be started using the service script/turn_on and interrupted using the service script/turn_off. A separate page has been added to the frontend to see the status of your scripts.

- -
# Example configuration.yaml entry
-script:
-  # Turns on the bedroom lights and then the living room lights 1 minute later
-  wakeup:
-    alias: Wake Up
-    sequence:
-      - alias: Bedroom lights on
-        execute_service: light.turn_on
-        service_data:
-          entity_id: group.bedroom
-      - delay:
-          # supports seconds, milliseconds, minutes, hours, etc.
-          minutes: 1
-      - alias: Living room lights on
-        execute_service: light.turn_on
-        service_data:
-          entity_id: group.living_room
-
- - - - -

Scene
-I (Paulus) have contributed a scene component. A user can create scenes that capture the states you want certain entities to be. For example a scene can contain that light A should be turned on and light B should be bright red. Deactivating a scene will restore the previous state from before the scene was activated. Just like scripts, scenes have their own separate page to see which scenes are on.

- -
# Example configuration.yaml entry
-scene:
-  - name: Romantic
-    entities:
-      light.tv_back_light: on
-      light.ceiling:
-        state: on
-        color: [0.33, 0.66]
-        brightness: 200
-
- -

-SABnzbd
- -James Cole has contributed support to integrate SABnzbd. This will allow you to monitor your downloads from within Home Assistant and setup automation based on the information.

- -
# Example configuration.yaml entry
-sensor:
-  - platform: sabnzbd
-    name: SAB
-    api_key: YOUR_API_KEY
-    # Example: http://192.168.1.32:8124/
-    base_url: YOUR_SABNZBD_BASE_URL
-    monitored_variables:
-        - type: 'current_status'
-        - type: 'speed'
-        - type: 'queue_size'
-        - type: 'queue_remaining'
-        - type: 'disk_size'
-        - type: 'disk_free'
-
- -

-PushOver
- -James Cole has also contributed support for the PushOver service as a platform for the notify component. This allows components to send messages to the user using PushOver.

- -
# Example configuration.yaml entry
-notify:
-    platform: pushover
-    # Get this by registering a new application on https://pushover.net
-    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
-    # Get this by logging into your account on https://pushover.net
-    user_key: ABCDEFGHJKLMNOPQRSTUVXYZ
-
]]>
diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index 15d3c6d2a1..d0c1d5b55a 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -115,6 +115,43 @@ + + + +
+ +
@@ -429,6 +466,12 @@ diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index af32386bba..e045099c74 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: website | Home Assistant]]> - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index f453ced5f5..3fd7444408 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -207,6 +207,12 @@ diff --git a/blog/index.html b/blog/index.html index 92540f630a..c86a65005b 100644 --- a/blog/index.html +++ b/blog/index.html @@ -22,7 +22,7 @@ - + @@ -97,6 +97,98 @@ +
+
+ +

+ MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported +

+ + + +
+ + + + + + + + + + + + + + + + + + + four minutes reading time + + + + + + + + + Comments + +
+ +
+ + + + +
+

It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

+ +

MQTT Support
+ +The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + + + Read on → +
+ +
+
+ +
@@ -906,78 +998,6 @@ YAML allows the use of lists, which should make the configuration file a bit mor

- -
-
- -

- Streaming updates -

- - - -
- - - - - - - - - - - - - - - - - - - 1 minute reading time - - - - - - - - - Comments - -
- -
- - - - -
-

Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen.

- -

A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.

- -

- - - - - - Read on → -
- -
-
- -

Setting up triggers

+

Setting up triggers

-

Time-based automation

+

Time-based automation

This allows you to trigger actions whenever the time matches your filter. You can setup filters to match on hours, minutes and seconds. Any filter that you omit will match all values.

@@ -167,7 +167,7 @@ time_seconds: 0
-

State-based automation

+

State-based automation

This allows you to trigger actions based on state changes of any entity within Home Assistant. You can omit the state_from and state_to to match all.

@@ -214,7 +214,29 @@

-

Setting up the action

+

MQTT-based automation

+ +

This allows you to trigger actions based on messages on an MQTT topic. You can specify an optional payload to match as well.

+ +
1
+2
+3
+4
+5
+6
+7
+8
+
  # Match any changes to bathroom light
+  platform: mqtt
+  mqtt_topic: home/bathroom/light
+
+  # Match only if bathroom light is turned on
+  platform: mqtt
+  mqtt_topic: home/bathroom/light
+  mqtt_payload: 'on'
+ + +

Setting up the action

Currently the only supported action is calling a service. Services are what devices expose to be controlled, so this will allow us to control anything that Home Assistant can control.

@@ -244,7 +266,7 @@ service_data: {"message":"YAY"}
-

Putting it all together

+

Putting it all together

For every combination of a trigger and an action we will have to combine the configuration lines and add it to an automation component entry in configuration.yaml. You can add an optional alias key to the configuration to make the logs more understandable. To setup multiple entries, append 2, 3 etc to the section name. An example of a configuration.yaml file:

diff --git a/components/device_tracker.asuswrt.html b/components/device_tracker.asuswrt.html new file mode 100644 index 0000000000..ffc31c8182 --- /dev/null +++ b/components/device_tracker.asuswrt.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + ASUSWRT support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ ASUSWRT Support +

+
+
+ + +

+This platform offers presence detection by looking at connected devices to a ASUSWRT based router.

+ +

To use an ASUSWRT router in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+device_tracker:
+  platform: asuswrt
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+ + +

This device tracker needs telnet to be enabled on the router.

+ +

See the device tracker component page for instructions how to configure the people to be tracked.

+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/device_tracker.ddwrt.html b/components/device_tracker.ddwrt.html index 4749d8de5a..ceaced86e8 100644 --- a/components/device_tracker.ddwrt.html +++ b/components/device_tracker.ddwrt.html @@ -108,6 +108,8 @@

This platform offers presence detection by looking at connected devices to a DD-WRT based router.

+

To use a DD-WRRT router in your installation, add the following to your configuration.yaml file:

+
+ + + + + + + + + + + + @@ -222,6 +234,12 @@ + + + + + + @@ -240,6 +258,18 @@ + + + + + + + + + + + + @@ -264,6 +294,12 @@ + + + + + + @@ -307,13 +343,13 @@ the manufacturers of these devices.

Home Assistant integrates with a variety of third party Home Automation hubs and networks. It allows you to control the connected switches, lights and sensors via Home Assistant. Click on the following logos for setup instructions:

-

- - - - - -

+

Zwave +Tellstick +Vera +Wink +ISY994 +Modbus +Arduino

Support for these devices is provided by the Home Assistant community and not @@ -378,6 +414,12 @@ the manufacturers of these devices.

+ + + + + + @@ -443,6 +485,12 @@ the manufacturers of these devices. + + + + + +
1
 2
 3
diff --git a/components/index.html b/components/index.html
index e8efd8f779..1d7fa9c4ca 100644
--- a/components/index.html
+++ b/components/index.html
@@ -159,6 +159,18 @@
   
Integrate MySensors sensors.
TEMPer sensorsIntegrate TEMPer sensors to get the current temperature.
ASUSWRT routersOffers presence detection by looking at connected devices.
DD-WRT routersTrack what is being played and control playback.
SqueezeboxTrack what is being played and control playback.
Command line SwitchControl the motion detection setting on your Hikvision camera.
Edimax switchesControl the state of your Edimax switches.
Raspberry PI GPIOControl the GPIO of a Raspberry Pi.
Insteon DevicesMonitors home energy use as measured by an Efergy engage hub.
RFXtrx sensorsMonitors values from RFXtrx sensors.
Generic IP cameras Allow sending messages using PushOver.
SlackAllow sending messages over Slack.
E-MailTime & Date Displays the time and the date.
MQTTAllow sending and recieving MQTT messages.
diff --git a/components/media_player.squeezebox.html b/components/media_player.squeezebox.html new file mode 100644 index 0000000000..5147973d3a --- /dev/null +++ b/components/media_player.squeezebox.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + Logitech Squeezebox support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Logitech Squeezebox Support +

+
+
+ + +

+The squeezebox platform allows you to control a Logitech Squeezebox multimedia system from Home Assistant.

+ +

To add your Squeezebox to your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+ + + + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/modbus.html b/components/modbus.html index ad0f232ccc..d95c021695 100644 --- a/components/modbus.html +++ b/components/modbus.html @@ -144,6 +144,9 @@ 32 33 34 +35 +36 +37
# Example configuration.yaml entry
 modbus:
   type: serial
@@ -167,6 +170,9 @@
           name: My boolean sensor
         2:
           name: My other boolean sensor
+    coils:
+        0:
+            name: My coil switch
 
 switch:
   platform: modbus
diff --git a/components/mqtt.html b/components/mqtt.html
new file mode 100644
index 0000000000..1be64b309b
--- /dev/null
+++ b/components/mqtt.html
@@ -0,0 +1,226 @@
+
+  
+  
+  
+    
+
+  
+    
+  
+    
+    
+    MQTT - Home Assistant
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+
+
+  
+
+    
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ MQTT +

+
+
+ + +

+MQTT (aka MQ Telemetry Transport) is a machine-to-machine or “Internet of Things” connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport.

+ +

The MQTT component needs an MQTT broker like Mosquitto or Mosca. The Eclipse Foundation is running a public MQTT broker at iot.eclipse.org or the Mosquitto Project under test.mosquitto.org. If you prefer to use a public, keep in mind to adjust the topic and that your messages may be publicly accessible.

+ +

To integrate MQTT into Home Assistant, add the following section to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+7
+8
+9
+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+ + + + +

+The MQTT component has no TLS support at the moment. This means that only plain-text communication is possible. +

+ + +

Building on top of MQTT

+ +

There are two ways to integrate MQTT into your process. One is by using the MQTT-automation rule. The other one is by integrating it into a component. See the MQTT example component how to do this.

+ +

Testing

+ +

For debugging purposes mosquitto is shipping commandline tools to send and recieve MQTT messages. For sending test messages to a broker running on localhost:

+ +
1
+
mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON"
+
+ + +

Another way to send MQTT messages by hand is to use the “Developer Tools” in the Frontend. Choose “Call Service” and then mqtt/mqtt_send under “Available Services”. Enter something similar to the example below into the “Service Data” field.

+ +
1
+2
+3
+4
+
{
+   "topic":"home-assistant/switch/1/on",
+   "payload":"Switch is ON"
+}
+
+ + +

The message should appear on the bus:

+ +
1
+
... [homeassistant] Bus:Handling <Event MQTT_MESSAGE_RECEIVED[L]: topic=home-assistant/switch/1/on, qos=0, payload=Switch is ON>
+
+ + +

For reading all messages sent on the topic home-assistant to a broker running on localhost:

+ +
1
+
mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#"
+
+ + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/notify.slack.html b/components/notify.slack.html new file mode 100644 index 0000000000..814fe7c072 --- /dev/null +++ b/components/notify.slack.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + Slack notification support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Slack Notification Support +

+
+
+ + +

+The slack platform allows you to deliver notifications from Home Assistant to Slack.

+ +

You need to obtain the Slack API token to be able to send notifications.

+ +

To enable the slack notification in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+ + + + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.rfxtrx.html b/components/sensor.rfxtrx.html new file mode 100644 index 0000000000..539d336205 --- /dev/null +++ b/components/sensor.rfxtrx.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + RFXtrx sensors support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ RFXtrx Sensors Support +

+
+
+ + +

The rfxtrx platform support sensors that communicate in the frequency range of 433.92 MHz.

+ +

To enable the RFXtrx sensors in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+ + +

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.temper.html b/components/sensor.temper.html new file mode 100644 index 0000000000..72a58ce94b --- /dev/null +++ b/components/sensor.temper.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + TEMPer sensors support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ TEMPer Sensors Support +

+
+
+ + +

This temper sensor platform allows you to get the current temperature from a TEMPer device.

+ +

To use your TEMPer sensor in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+
# Example configuration.yaml entry
+sensor:
+  platform: temper
+ + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.edimax.html b/components/switch.edimax.html new file mode 100644 index 0000000000..bae08f736e --- /dev/null +++ b/components/switch.edimax.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + Edimax switches support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Edimax Switches Support +

+
+
+ + +

+This edimax switch platform allows you to control the state of your Edimax switches.

+ +

To use your Edimax switch in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+7
+
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+ + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.rpi_gpio.html b/components/switch.rpi_gpio.html new file mode 100644 index 0000000000..9b13cfd115 --- /dev/null +++ b/components/switch.rpi_gpio.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + Raspberry PI GPIO support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+ +
+ + +
+ + +
+

+ Raspberry PI GPIO Support +

+
+
+ + +

+The rpi_gpio switch platform allows you to control the GPIOs of your Raspberry Pi.

+ +

To use your Raspberry Pi’s GPIO in your installation, add the following to your configuration.yaml file:

+ +
1
+2
+3
+4
+5
+6
+
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+ + +

For more details about the GPIO layout, visit the Wikipedia article about the Raspberry Pi.

+ + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.wemo.html b/components/switch.wemo.html index 6e6b1ea3ad..378f6ddc02 100644 --- a/components/switch.wemo.html +++ b/components/switch.wemo.html @@ -106,14 +106,16 @@

-The wemo platform allows you to control your Belkin WeMo switches from within Home Assistant.

+The wemo platform allows you to control your Belkin WeMo switches from within Home Assistant.

To add Wemo switches to your installation, add the following to your configuration.yaml file:

1
 2
-
switch:
-  platform: wemo
+3
+
# Example configuration.yaml entry
+switch:
+  - platform: wemo
 
diff --git a/developers/credits.html b/developers/credits.html index 64e3b70bb7..368488c688 100644 --- a/developers/credits.html +++ b/developers/credits.html @@ -122,12 +122,14 @@
  • andythigpen
  • Austin
  • Azelphur
  • +
  • Daniel Iversen
  • Edwin Smulders
  • ettisan
  • Fabian Affolter
  • Finbarr Brady
  • Geoff Norton
  • gottsman
  • +
  • Guillem Barba
  • Gustav Ahlberg
  • Issac Kelly
  • James Cole
  • @@ -141,8 +143,10 @@
  • miniconfig
  • Piratonym
  • Rev Michael Greb
  • +
  • rkabadi
  • Ryan Kraus
  • Theodor Lindquist
  • +
  • vitorespindola
  • wind-rider
  • diff --git a/getting-started/index.html b/getting-started/index.html index f528963729..fec1bc769e 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -114,8 +114,77 @@
    +

    Preparation

    + +
    + + + + + + + + +
    Installing and running Home Assistant on your local machine is easy. Make sure you have Python 3.4 and git installed and execute the following code in a console: + +
    + +
    +

    The preparation of a Fedora 22 host will only take a couple of minutes. First install Python 3.4, git and the other needed packages out of the Fedora Package Collection. This ensure that you receive updates in the future.

    + +

    +It’s assumed that your user has an entry in the sudoers file. Otherwise, run the commands which needs more privileges as root. +

    + +
    1
    +
    sudo dnf -y install python3 python3-devel git gcc
    +
    + +
    + +
    + +

    CentOS is providing longtime support and often not shipping the latest release of a software component. To run, Python 3.x on CentOS Software Collections needs to be activated.

    + +
    Step 1. Install the tools for the Software Collection
    + +
    1
    +
    sudo yum -y install scl-utils
    +
    + +
    Step 2. Make the repository available.
    + +
    1
    +
    sudo yum -y install rhscl-rh-python34-*.noarch.rpm
    +
    + +
    Step 3. Install Python 3.x
    + +
    1
    +
    sudo yum -y install rh-python34
    +
    + +
    Step 4. Start using software collections:
    + +
    1
    +
    sudo scl enable rh-python34 bash
    +
    + +
    + +
    + +
    + + + + + + +

    Installation

    +

    1
     2
    @@ -189,7 +258,7 @@ When using boot2docker on OS X you are unable to map the local time to your Dock
     eval "$(pyenv virtualenv-init -)"
     
    -

    Step 2. Install requirements

    +
    Step 2. Install requirements
    1
     2
    diff --git a/images/supported_brands/asus.png b/images/supported_brands/asus.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..8aa3e48ac7b5f517760f5905e89b83a4f6408825
    GIT binary patch
    literal 4610
    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

    y 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 B56u7o literal 6666 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 U)VtNN@Bjb+07*qoM6N<$f}cRg?f?J) diff --git a/images/supported_brands/logitech.png b/images/supported_brands/logitech.png new file mode 100644 index 0000000000000000000000000000000000000000..1992dad2f9e71d548e4498c03d5a7a309b069a21 GIT binary patch literal 1024 zcmeAS@N?(olHy`uVBq!ia0vp^PC#tK!VDx8f(o;M6mzkYX9x!e$L)vy4}e^Q0G|-o z|Ns93nZyJAy9=s;ss&1d{DK(-m5g0N)5<$$uG)R(?z{hGQyE2pa-0Pok;M!Q+(IDC zcIQ+eo=O@f^)F(jB9Qnr;32oITxiS zmSpDVDTHL^rZQOQo9i1`-eX&=4D+mjo2SPP~z@8N0S z;Ffx58tZ-{{u-aq`Enof{louB*?GSnxRK{9$(6JrOPeYh1ox z`n_JjeaFEor;``lw>%^ua(i0SOXI0)oShh(H7XtN8_6G(dv;C8mo1RTVJEApWZR)@ z;_vU>+rD)3W-p!Z>MIUdhSkkd_OiS1snE$tpnNaWkCW>+DqOOPvR=@{6eF|cdd{B*7Wbbr zEGX?2RC=^^g>ZssbLSfKGtZn3ax68k(b5bqf88uEBe>yLeyzdAX$2=&bL?-_Qb)0qlb|HR=zQ)6eTN#yl4t&1TXOh?c z#m>QaKHJvCI^jw^9(6mHPI~*Q_m7Xo_2u_0m-8$uij$C*yp+HEnTFycwKGSIIX5wK zo>$7$5qj@bF^%J_>ZJw2huYIipR;_MBs9bQ^pkblJ{hcgtG`HI)3KYYK5X@oK$EUn zy_=$zXk9eQRkr)`?OTen*`fY-JpP%XN^=fJ8ONF(+TAldFXY{(4u-GA|0|~M5Vv0E z;;LGd`Z7U?(=)gG;MKdqzE7`x^X_pdpVpu8Noiur4_jfq1*b1h|JYNwu%x!fLZn+( zxNTly``zc}XFLLxzOuAVzAJI>jo5jihljM(b9Anlp1M3id-4kJB_&H^#1(?JJ*xQe ahuMyweM|qL=l_7&g~8L+&t;ucLK6V&)2gum literal 0 HcmV?d00001 diff --git a/images/supported_brands/mqtt.png b/images/supported_brands/mqtt.png new file mode 100644 index 0000000000000000000000000000000000000000..1e649faf345e8e14cf1a125fadbe34580ee8d0bc GIT binary patch literal 15351 zcmY*gWmFwake!FSC%C)2+ruG{1P$))5ZoW`65KTbLU4C?C%C)21&8H3yMOk~shR2i zHQm!)UH8_laK$e&s7M4z005xM$x12%00`#&T@nHA{ccVx|M&d?a#EHN2g=8Z4&NJa zM)ER}z}tUUZd*~pdk><6tfmtHpnUnyKz?pfl<%GJ&T^ln;Fl2y&@h3m_F5YNAOqwi z#Z=vwPJPT%b=1@LyvCdI>~<&l|I7|oQ;mqDedmE&#*69#v2|s4)olA`^%)zu8^D`| z8Yb)ZkFr3IbjR6*5MRV+IVRfj4-Yf{rmp*WmMl;-e7RO5de$`C@aIp9T?0jpPxij6 zn~U12L$}x3`AhpXu|XA6a$mK^#}Okx*Zn~OgF0OLVn7RsxyYR`xiV7wcai&lZfxKnL43}a0&rwz9U+0u$$%*Q~|c$b8>Onvnc3*11bUtH(&?nkamD4 z27sm@Cn(?M#0mcT9&EX-&1rJxi|4>yFhTUhWyOT-VLDHN`UMTef`e9@81tR{JZS(W zObiSDf(SBzK%Q`2eC`R{L1|FKMZg�{X$8_1V`y-M<{C`N3|OipzdS1Fj-nZ9mNG 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 H1_A#Au}A3` literal 0 HcmV?d00001 diff --git a/images/supported_brands/preferences-system-sharing.png b/images/supported_brands/preferences-system-sharing.png new file mode 100644 index 0000000000000000000000000000000000000000..966181e2635c066c39d7bdde0b5e67ecc63e3148 GIT binary patch literal 3015 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 JPDHLkV1g8!X(a#v literal 0 HcmV?d00001 diff --git a/images/supported_brands/raspberry-pi.png b/images/supported_brands/raspberry-pi.png new file mode 100644 index 0000000000000000000000000000000000000000..36439abc0d7dcd27f5a97d7320473fcccf86ec72 GIT binary patch literal 18372 zcmXtA18}5W(~XmjZET#0ZEQBSZQHgswr$(CH{RH`ZGH3pRew!Q%~VZ2==*e^KIinU z373}@Lx9DF1pxs;kPsJE1b+4a-#0K&|9zv_3IKjU8A^!>gM9z@%Ihvo1OfR8A|WiO z?4EU*?be2G^4fcyetGzi2%dazZgXEyp9EL$xex^24c^b`n^31>ZBrUTo> zigSk73%7z;1)}?_ITy7n{mLX74<9C`uCC0cF_vnlc%DEEx?0Gknxe(=#`OXU!o2Ha0xm8Ui~hQ$3&Gh z=f;FVX|f{En8^K6o@K+4zF0P$H=+BFM;m=uQ)w4kZ{r=XGv%F)CRE_tHDeW=r2`eavvee>1Mzi$#C()!%Y{Ta|=!EZ&kZpK=3yI>n)dx@b zaS_U;Klb$^IFGnrm(#O%@%hsN+$XBN?|URbsF-Q}dNRqsuW;{%y$_f7>(@kbUR_wS zqlI$w7i)YaBEGhTk?hIO@OiYPMRd%G%AY|xmB?@jzlci+b%xTn%S`qYKy_ay#Cp}# z;)5G&YE1TabwS>E3^)8P5kc^6<4O5drcrXKN3T$k@Egr^{3(5xSPwL~_%P2(JIXT8 z3S1Ks3z+fjzAF=LCS)=jM&*s5YQerk&mb3MxRtUU`ZD`W-oLKI_wh4W?O=BSjm%~S z03$Q6G#|+yaMR`b5AYmUs5Ic&Okkg=$wmaq(Jq9X)4TPIr(q-|_!`1)PDv5mJW8<& zdcuJqk4l?S*@p(p86dN9@L;r@rGayncr0?%`K@e{ZuesI1qqToku?w<=Bf6MeM9&aj9|pZ)hF@s534a}ewv{T^b$vg{qmOMQ!RBW3a`xdxsNeL>Dj z+S*>0m=>fzPTJS-N$|FD^vB~xyq`v9rPGdw4e_{jeQ&IhE_nu(V;mU2Cmm(GiXwvb zYE-vj<~Nd**EBv#Ra^W{W)AL&q9EA_9eC{_&kWs5w}PT$UR?DNDndm$hLhPT7^n&g zwqoY31S0?t(0hNN$UHR*o37#Kw{hN2N`zmId=hVxG()qc;tgirfI;i5;P2I4p2;G| z(x}@E3gq-sPAj=_DDm}=rK>G^JBNWWe3mD>*j0$`(YM%7fhVqZ(hVsI*iqoeMR^|x zfNc+StzKa%l*SDbg+Zwp5oo*Lo0AZy_j=1ULks%P_o@y83yg3@E`o;F@!pmi7eC9# z<&v=wDohNc%GE~c)G8JQK|(p&iDIM2B|X;6Z{Bg|8xn;Y2prP(irN-~D#rafRWbej zpyAVeDD1r)aW^u_e?ZPIj3RTgT?GF6X#Wu`goZ&7m*$$28gy=b;^z+^K@fDUx|y%% zsj^rIgxNoGPtcS9nLi8uUsCT<8X+UD(ZbZ7;5CaU42+P2qpPfdlx1G*1!m&9e@s)5 zS_M=pZ2wU!@C;<$h1~&FmP@Ax-nI9Yn2|k}Rvnj#aAb!q_sWT2wws>wIrfGK=9B?r z`fN~#t|ItlIH0CZLD$ag!+?-t`dN{KYb+14%DX%bpuIEiKD%4^XWEiVBd|^@t~9@&H2xBU+=Xp-p*-fW;Fe@FX%>A|D`u9TS1kV zq^73LenM^(LBp5Fb2z=BL3(1Z^2;i?mG0&KA@us3kD4oZ;lqXb!cA(vCvu3sTSQpO zP-(*ogf*gzmPB#(y{~-iX1UkRI9$X)9S2w+F#L~eBrhayz#`g$n%DdE%}utz9!(L} zLq-tp#;h~`Byas6Iw|Ndu|+&b42`yfQX@cZW2r;?$NVPhVQ;S$*Ntg3go(`YZ(eFj z=h}jpkA7i1C?n^J#G5}xrtMtc&vsxpdkN;W%j%V!XElJxHXEfUKB}Q!S47@FIui$ zkCp8HA42EJbr?YxpygUlG77Q#9PM-e3F*_?y;ESeL@0)I8en#HddBN$6#BDoWwnCHXI6!6L0Y`4jd#I)|C%5?if|#g zntqVuZ2BR;rz3Q>i)*MVQ7VyM6A^=A^3l*KLRvu8C6&7yQ*_3;are@&@)nplo$%sD&Zh5ZYkM z_+7+=Dlo5P6by`f)df59`(Q%Q_IBwQnL@_T8U9NKVj$n79(lu^cDa9$6q;awcmXwT zDUdO(ez`YlT9is2TzX|o!5a6kxe6o|yrYCrH1rriR&Kg><0{ZyO|)InL^@4RwD*G> z2F~(UjM?@#!Z_K%OQaY^ml|!RwYQl+;bn6YNLIzOwkX24?E;t8Z*&}f@BGmn01`0- z=e`vibRg3YPS9p3VwC1SwN_`pagVhb!+rhCet&~|lY zY@UOOhX>JefYl&_v5C+u$a9ouUG!-a=vIFL@S$ z;nK*>a&YUu4dL*)4{e#Iv|gTtmPTeign#Nk6`(HF{EI) zu@nu3iwEXGXtwJ3IF=Wh4L?F!81<+DXitqx&OUtwzCteE0?2%c8}!Ooe(o&G29Tbx z?wfxGI!%Ore8c(ubB?)Oa^fewnv~sH506>xWE*SH={-te`iwOvc^QwKZ*_wqP!r02dvzX|Uzh z5SdD3K6qMhKW?HDm3!WA$o33=p-HfF>E~*0(*wt*n1fE5at4hn|2ZoJ1nLZq;51ih z6xGgl(Nnrc=KCSkiV-f2drKm_ufm`w9fJ${_y$WaLA>BWoBUQf(c_#ykqx(HC~G|a z8sV;-w+Z8c&$D8K%y?T@$A{2s?m*;{th~%}vLR@cr5+mxSzJWl73j63z?9$&-UvIx zk!qJ`wFFX6OIGh!HneQ*hrwA+-c_nYNc85R%WA(0;`0JnJSWT)`<2t;F-54m@hux- z!cT<(4U)3LPnNzqZ=2B30gmfT^}6_*ni3cqtmlT)O;F$(g;?0izB;O?`jurzqY(BM z#_R8asKRq%zR1tCM`@a4Hy_=03FCcsJGfT=V7BPt;F(7O6^(Xfe12dChRAmg2Fwoq z!#&-%b)zKZb+{{Nd1V8mb!MXeuRnTA_^d_05P6!DB*f6w(X|6~tiZb7Qe7XXI$5L@ zf|FTlstykrRCehmwi@kLQTN7jIZ*B_Fd;s{n?b~}PT{BYC?%%M@))K|o}sY$2D6)? zi8UdB94OsK5>Q_!{XPwI**Q?e=>**wkDp)S`{+Wl#4wC`?UZ(M4d~Ub z7kl{uxnt!wFW2=m0m4|7dwwVe!xJI4g-B$dL1~KPhDf13hKYqFPgwPYH}CU0CZ8fB zvn7bU8Zsc8m}{3&nPYf34aauPHRK00888^G$ekEVd;49w!qxhL87rjb`E8WKQu1*) zKl8&+;5CmLUq3;WSvi3%xap{5uq^jzx^h-bh?z$B;&AZ$5&6l_c?MyAGwW;7QZ#z{ z3Pu1M2%aC>4Ei&~uU| z*J)((ByT?1_55ga?c?p-=a0k445pviY15sOAoTn%L>Q16>`>_r-u0*SGNfUc0Zc5L z(mW+;TP;*RHkLZSR~YJT(qpHtk#^`>6%}&ViOhk}=+$~Ab(rSo>LE*0UX(Tvf#vCO zm4oS8^*|(!ha$}Bt$=f^v;6ClOl>Q=r;%yE>DfF&l`pD-qBPPO-jAk2t@LdNfjC!q zA_aLqhK`-j+yEU&zHum%Hm=R*T0zrrX1`u%1 znbeqFnzA+SRB~?LJQ~^e8b+lUdipSVFOlvbE;y-h2(mR-A7%8b^O#0pZgymnD#yC* zKA5`YFU_NxjKcZ^N{Z!Z1xWEUucBvgKzcmoV5-tzk)wY6)iQJn%epJ3mi_jWQQb@w z#XgC+eaVh~>Dbfk+z9MBYXL8Mcg|EO#^+BqH`3FJN|_=q!B>_ z$UK@7BngP^Ik`HbveG>zMNKNt+#6r}Y_a}PZ`Itx^_3M&{$sdlGOw3(Wbb{={X94O z#VZtd?gYn{zRQGl|JW0jf@EtQ_pm;f9RUTOCydhn8i&u0VsJdP?Cl8+)dv40s(xQc zATgGfI&C8(ff@+;x*;UxD2tx~HX^F`(M!Fvv7JNA!WsW)fzR+@a zDcFtheDBrkd2W-JHF)5(+5U;mCCl4FWog@6bOi|cMgle@|7yABp7TU|6VE!yNap1{ zP%OC&e+Po2cB(HRLDDtnhRtv8g zfg)BS#cTuH5KFJ6={fT@quiX-^qW+mt;J4X(!Hyd5 z>00*y&3g}FoV+AghE_|3UZQ}SCZ_i!MQ@#Y1IaNyufi&yYNAS=JktU+!O4s6TB@5f zy)_rCRrM;c`PhlB=3ksYZ{G$9x}KI@!Jvz!fdzoZuQyguX$fbUv^|rd_73wfQr{`e zTdZoFF5HaZx zI;9!YZLciozV=YJ7p$xM=491ygfH;hhSnxc8ljhn&F#2I7!R0dGS>(@bj^xvsicc4lFkR#~RxwUkMy zixmB>^9j!FX`uqjFwr4%CE)75wClQ7Bf@9Wi!+H#)e?oV*v3FB3{nMsqRM?Yq;Iu6 zK(;`27`}AuOY?42T6_fbaLR3O4gh%)>a;UnNqaj`L352Ium$xzVat7Xh1*OdLcK2) zN^YLOMUnNv530$(^9TC}n@K??**O@{g>?~AheP_lY=p?<^#5LXXzOKVB1NK_N-p25nqajb0|7cukua+8P z%|Q`W-BB}t&Zmu3gFZ$XVsfKAPf2NXx^I=6!slDYCiDPk`lH=*5SWoEu3p#Tm08P_s*)qU zJifNNh2{_tfA;;ztvx7WP&K)Tn1Tcz1>{P*z@~R%(d9sbgUgqeYu5_K`LW|yg?r5V zvs#CDTy*f^pjsamK_q0E(9&#C>PPYK1=rRUCzy7kpbQ4cdJt)!nZFgtDz|a?O{}{3YPGmW(TcL z3D6Wen|!u02LiPBQHSRUQHd0P!_OZNqaH`gbeez-ErsPo93$7i^rC?z82&Lj20#*t z%`%b3Qx|8Rb~JK@zS_-x$)>VY$0bbPRvu8_C{{DuYK?GvFq4^RVZ1dX582Vgv<}t^ zURpRiWt7Jfu190XKNs&l zRWKKv;bg~2Ooy_H?Wrf!-Tz0{NJCZVWj*B`K;0VsH%G=LQRi<%LJwz6I1E^po6ct# z{%LXAz**}1%XK$h)1|oOjKjiSX|$;h58f+;m;X#2CX_j><(1kH?&8kQ%1pE(q@WnG zh)M8nf(kknt_t>Z0T!U-W*3f6Q)C~S6nxom4&6*(HN(0UgaM>9uHf3-{+A)puAAw5%DfktTAfLGh87)iiWD)1;x?jsvwgDJVO-cLJ3X*; zd1XO$etAmK;yPaA7M-E`n6+fAa6DAI0I%VFAu1$hOIY8;&#xNEY35d90lGD}bGhpYCh$kWK!)ff$3XWY zUR}^vqvHGZ9NJyw(QKzqvcvy{X$AqF>Tr)UBYXr3Zs-6bk!AvA} zw*@SUOr&nC^ z$mxtTgGq%EX^ad~;}aG)Prcl)JLy;6+aVNzAXpnk6=djOUt65(DX%MU0kI`Ag57pw z0-)QISJ{WUc<0aN&fotAEYYxeMh8C{$M4Q6ziwU$x7>vr;l%p&ox-%;orH9QG=Nr$ z(V*7n#U>_m$H^B6+n`$RohsA;x7&`$&p>La0;}J>eu(Zb>4&d?2vz;l#?7ur^WCEp zc+nK}7Wzj8zW#E_;^P1yzgm>)){MSxdVxNx`bkNA>rFP*1^$87Jh5G6{JaBbc05b1 zRAiHx#*OzMx_@r5G&RAbR@63_=c$NvdVqJE9?l2S;zNS>%rDzd-UATj!4y;e-7CA4<2fl z;Z9D!$C2nsT z_nO~~9^FE)pd-_FjPD1i6htbp^HIvt^Nd{2BUHhLFL|cUUqP(%RKS(d z{@7*x*vkFuz9cUvp;ZVrRLgh+A8G&C1BY)@#-h0gzq}+`Fz3s} zslr!ztPM#efua^YVK->aesAW)dIHh1e6uQ1lJh7qBKG4mLUS8#=Q0p^j+qsyp*u`J!189hz%Fs-iXY ztREmVh^)B-)+9r%B^PyS%!O3A-@SV5$WVeUUvziqS)IAy5a7Tf@td^|u!VxidCI|H zVQCDzKPcyhpz8;wuq6B7%C?PkKOQyF3w9ZPJzkl!XHlU;?67(vsI^hZ1CC_zoTa?| z1%g`|>2=lFKqXGVdt@-F%jb&Y;J3jxB0A3GXaxF+!&t*?acONUL@0*?qYe8*#IWDy z!ieXoLsw{mS7<`b69VC>MoRMc>2zyc5Og z&Gi$Q7%pXn9{^EA#~+wS8WWrYs{P(tI4%V|)ktK8_SJTfT6=FDA~}a;`7q8X= zJxIN%$8z~Lv@uN-o3+wSP8r=Hp0gs^Ck4}c1(MDrh@OV9u;7wepj;tx;j>hbt8~yS zbg!$p&p3qmtSdpdjUL-kiN#XH*k9T^y}yFCz)LhExn^ej#-6CHDUuQN_TL$ccfBBJ z1a72{-L-Zxyt;5~j@9~Qgjo}|de1WcVr5C3`zI9S)sbHrd30qK*V}Fe{ed#rvFa;K z&mu#+qqA_Ou7D4xm*SpN?U%_(_g-bo3CFCZf6gOZ8hw8;b9bBb*$52o?7mO4qv1Hr zFlCwEGpQ&}Bd?b&g1DL?nH`aEmEqe?f`N%bCBQeO+gFO=j%igRA^ArO9gY(#rV((j zaDUaPX;>!0kMNDUWAW3Zvm1~?VtY4zpm@wlE#j2<7eMtf)SF`~!b7@5AGUGI7qzM? zlb#otH@#;V)11U%bU7H+s{rd*<%51m!PmG>9am=Opxm#pSQ=x%Nx?trW& zA?xhkA=XwqzEv&jVs6FovWhmU1Hr^NZ4!I&(K7mQ)&hb`z6tjmWOBy@Z zq)gA^pV^eUO7!fFtMuq%`L}gE{g~z`wSsDhvz?;VzOsHy(9clYb}GB z^X9s%_j+IKYn&DvjjGUn>*S=c)p#ps7);p~wb^RnRf^NA-Jf8`AhAZjN74AOCNNq- z#mLrooxKp2J4z96=`v-M<6kZG`Klc)ZL*9mBuoV0a+EH^kMH@(N2b2m9{#S z^myUwImfU#ssnBqxv=A$*!GAZKcdMTg1D9xZSSX&azrsE~t ztp%_erTLd?gJ5N7UEy<$)7Ob4*@JwQ+oBbHC#KJ{Kx0X$Yn*SaOznal9)fkA7%Svk zL^(Bi1OaAaFI^%&j?csXM=%fAxd&bNIx`BCXnCLrO+sfbMm?b|T-8}Pxz_*h1(>L~ z)k1DtWJ$#R4EGi(TW!}MT@SH?_RX*ky(d7BZZ)kP5fLNuk6`DTQ#i`Jb&0x3-vlx0Gvufia-NN|uNkrQ6AtlTj?@OeQvpPDtAdyBJt-hS4uYO;E7GMHEe?RK?AOtAy4K;Yw^Yi2v->yr`f+BmO+m>5lEu}t)IKg_*>?S^lS#)0n?5gj#f>oJXA66l+UsDIL%McL| zo6RDrU>XuJ<0Wcl{5NRT(QE~g=X~>xdmZ@lh8rh(Qz7ntBgbb71ur4o!otoi8w2FV*8)v<5mW`m^ zs4vOqn1tt3$s&_UFhDcQe)Ypvl#p0t8*l&fgS(CEa^Fn~)b^ovIwSX+B?gML@QZx4 zEz~;t1YXY}BO@ohA6S_J zceP{g`D>*^?mSEVC@qeXB2Fr)mw{n&;paZ2%Y~R#nYdF^OJM?`WSep^^|8!%k;}sk z>Kxnm)svR2jw)TLG;gVQo>1o@*2IN3*EfW=ch&4RF@@N7l6Vxeb_V}Xe-OI)e;yp;vmGwU4 zz=0{YX8UGL8#ACai#RRfDw%kJ)GzW1)JzLKM|M^#hy-CvO3kj4$@n12EFN$?^%S${ z^yXXsrMGt~OzSN3+CBAksw2&bhJ^1q8Zix=YXg(2)MrDT4xb0pJP@Q{*9O4W3|&t8 zU=q!oK~A-_%D9{ifDv3h_g3UNKAPB)*D`eQPu8{h4z8PN0@tSFpLMYF73+fI5o!Fu z;PMm_Q!S}<{afaxz5M>Yx$MZIynpne7Ae13#{_YULGboIFA_c=chzvsZtY9m5ZQ24 zhsUV0wp;)B_Y@>gD6nwI5aW@4Jrv&0) zm4v_(3B)MX=VIK9q(Ws9p~w^eOXWNk?+n}KG-3PY@k1qe6d8|!p2(8;OC;vYiysCaMkg~Q<&&i8DOr4$H_+)z@itJ^SL zL7u7^0@2F+&0F`E%z8D3&O#XdMxY2AGWy#g6`y3%rlP(uRq|9ziepP*45M;?em1T`vJ>2K_aZ;$JWIEtn-Xs(E)efRwb>81N242w zD3>vb8Xj!E0%*)%T_g?i;%^O4#ItYK7}9{HwgCmeG3Vw?n*{7#GN?{DCoGV&019Q< zfgUs?*K7!|-TDFesSkg+N`d;KZ48ybceASsPdh9)}9=K3W;fdgo}6ojzX3)uxaWa_UOR;am-WY@oOBc&&;W-iBjlMue7i71W9G@H)>9|5tZuivWg*~7%R=?H6#1m zb(T5?u=pTJzAa;>S|_2STuWw@H<7QJU=3z!6!S)DBZwwa&P5$0SBJUQ z`niR+F*zS^$}MA$^&c@7+e+5}U-~J{e`YZ`Dvi1?7WD*fses=0 zNSeiqt#YjF^wua?#mT(L^nhh3o{DkLu9mD(h!Tf?t``!Gda-FP>i&8U2CD>@(>Zk+ zSR;s&$1@)< zT76QWf!HvS$6=LpvQt?Tu6=?%1#k63YpPWE`WPepIYjF>c_-=L@p9;r*h|1Js z61t9gS!!YE?^<*Idz-@rO>ODTV|4S>K~d6IvAmMi-h4AN;1+@(&B=1(9-^Q8-S1BL zkI>`iK=7tquLMF{x@!DGDZWcqe10mK-jD*kg}d((Q${_-c?)R$01i4BO^idB2>%illEX~0LJ zV!I#A$}UXLw4_*)$4DK-ZwgUufa;JxE!+W2O-eG2k6d88-70t$ja(xFJ1Sn2sNMaB zU34iA2hl#lok8NAPo(}yWK_wh=mK8WPHoEJI!#_2xG5h;sq`4=&CRG~H18WIDB|!KX^L^3q;EeaGUTOSw+Gi1q~5E7uZKSDPG*(tGb+={uNf z4KTFC`lUQP{{!CtRIt);MDR*l@QF~%5lYvG{7{9R-u^F!# z1L7s;tbW|cUub@lKd+6=RJaCPWzqmtYYEbs#e(^|0^NB1{pBqW<+Duc$iC};b+^VL z0)#KR4J^6)Wpb79HQLT6DJwin>i;l1&kugHLvVyJfoT zvkC)dDA(d9-)u!M#pB}~Fp;($DXRc-;ULPe;;rOXOU33 z-MFDy-N~4KrfzizqvnT%*9&3~!UDw~p??hH)Ko(%!BhvAJh_(JF|6yXRf=DT zF#EHM&_?c675|6%BkI4^XGttoi0-RLi9T~|%a>uYQ_}=m*i^*wo(13oy~oU1)psD{ z6KSp^xm9f%Jm?(b)4Yo_SY?y1|Gp8p;%|-$_P-26BPuMO_QD?s~kjivu} zd1|;@l2%4ho@s8-G^ z8N8@lY=&Z=ixSF(K@rAhyuH%BKC*%NA+_m3nj~w|kLBk+Q#O-^g~8VMqD`Aggc>~L z0^i}Rnf7Asl*t?ulc%!v`t$2d*uW1P35EIetRNB)Vx?meZgPMRKE9!7`!4jU5T=FR9FQ_HpIHjXkc z`dOVYV_$kVIv5Q})Z@pyVXnDdY5V|C@IBGXyf2ya^dM`}a)I+5)%` z+^;udFT58Ka`H{Cv-@~V)spzbG@Gq(7e_VypxsvW64omgUlv11(|>@_cD}mlI?|!4 zk`<^fzw>_o-AtFD^LgG_un*e0S@|D&Ego!ZBLrWML-$3&jcSOu)d3iQ&%@Ocz3^M1 zZ%t3*{dy?UyVEg7{aif#vRylf%LZ%~c)wcwaVq5bQsLKlKZGydnP-dz<-ksGJQ=q~ z+~Lxpwz1ZX(YvI7OMuYV8aqgy`G+yLiTJ3`S3wbG#Y6VV8=*2EOSA^2t=wBMH;pQu z!hJ!P;H@34WQ9953J8qwTxj+idvmpZh$J8%M_%iH_NHNLByQ|~b0^wn&Y!vTs-Hx? zO&RTYMEnI?hpBA#rJn;{Ldi{%H>81bzFP)gQOEr0|GrB7+P2jik?U@DtgPr|(-o^% z!nH|_aUtE{nQjayP_NrXsd9f-K?shAp+*%Xp9YFM*D zoqeiBfU;E*C-Z-ThN@{E-EMnM9ZPRA@4G*fX|sHL!k-=6_T?MWcA@K66Q9i>5|zW! z$Yf^ZRosU*TV2+5N2#ffdW#a`ed|AZ-SC!EcG1qC%-fpN4lR-~b;;){pWMI1<5#e+ zkF(V&uZKIFz3hQeqgfmko6|&IG`WpF1#K|=<&77%=}H6?aajG(p*`8?3nH#rUr zL<~88%Elf)eIM>Pv!j>`+7z+D*XkeEC+yG9+4=FT^~-@vEYDc5Y^zSI)JRA(YWP>^ zAl^F{g&&jBb+FNmYISL!;7^6OP-{~pTT)Y5M{=uCKALcU9;kxRxRg< zw}Ju6o#n#I56TVWihiUc%V%T$%n;`(mUvTNqJ^w{qDk7Psav!|2YwK5ne)F^8%mr4 z(J|hwFUx7nqsza4?Lc^uV{wX_EnsW>HV~-_O)aSILc3h(cF#7VJA|9A$2X|_Ynkqy ziN7~yk2WLrg!@FHfs$rOX9~1-e_%2+7erdlhHKUBpwkX1oTL^y(ZsQ$ zE(f7A>o{j*D0C#-;RPD1*pbwy)FWoIwUIo>gYfpOw0<_Q0f|t?CgIzNGqwmJ-Vc90 zI~|=90-b`Q>cH0}M+%L|gr48em08uX&y5sY6LaRR#4}3KCwp2~WBA!dT=zgtp(n)S zPQI2he{P!i9)ZQU`m1=ma+ci}Wu?sR*-HL>7i^8KB~pTf?LRZw4EMzU4rl`rP8uCF z3)d-FIVg~<*u!EPMo5dtpD2C-l#SOc?D+PU+u94H4?aZ zZ}Z74_W%vKN^oExjn0MaoLoD;bEu^4p=2T7zwCKN*F;a}{zXwU&xmS1Y-lf?s2M(t zPC5B;L%?ygl{zK#%QCL+ka=M!Rf%kz>GA9hn_`J+w*NA#obUbPie0|r=`SdXv{qrk z6EFk%gS>*|?*k1}%woR&Bk<|B8jbLQvoJQH1=!=7~Zg6|xRt8=DGoOE%kP8)=c`LyS0J^b2|0^RA3Gx7+If$#LYH zfa6PQ$q~+_$pbXHOnX$;#eCfCNwttr#;kyLFVI?-Zpol*G-M|Mqgb@xAU5Bb`*Bnw?ZSJy=l%#qa0 zm3!U5IyLnG<9K!l?q2mWB{2W^2M}wU?adH1I!_bnn+Rt=ap3Ypda-FBhyc!Bo~BK6 znxjC;M+64F+^IK`?v*#K4Tjd`sj8x%9lGsQbWxXM8dV&_ovLgfyZu$qgxAb~r+}1aS4oti=y-2&g`i!iWS}halaG(9GhB~$xKplKXbLtcm}*MB z^cK8&w6|#R;#nMhpU#*tNdu|)XpRO>ari~4TFl*Wz%#Q-`3v>UvN8|O53Ux_>OQl% z?n03#%`5th305nIIoB(oN&+rB+NDa?e$^mAeTCxH=?lEApCxDwzl6^$C|s4HR(M@{ zv3z3&Xd(38P0wT4&jB5-f5f3I7QW9&JENYithiRd?e4LzLu!d0OU(Zb7dB3Z0P38R znj@<*++^r2qn}(FbuxAC?Q_NDg*=9JKam9ulgAFjkGaoY^c~a^7cRBmn8*Dr-8s*X+T+@zSM4MN%bF*7kY&=>5tUnwBw^Ffit$2mG!dW?F3f#bb=DKTC~Xt^>bROuJ7E zvm_#OgK%sd?%(%bOZ;%4*2bf-o!P~t!ovEduF~-{Nn33*2n)zXU1dja)|nX3W?G6L z&ljUH;_-M{+J=UfubmU|HZj1IXooGP?jd*Hb1bs-XTCZt1zZXu9gPUw2l^sK5yjnH z?)18OWG4rd5A-2+fWw8J^Bl`@lA5o)t^^^_RDFrc?D^JBB?JtD^kMVaf3&+Y3Ff^N zBszmcDM#fZA}M6_s1CqBP2^=}F!k>xQdHkFkT3$i0$ckCf2LhSJ@+(Ul$1^bd=vcE zcaH5trfj$q06?9xAx();| zig|nc6@1y&=y_R88 zPsN3EQDrhxfflQ$o9U~vDXQ?Y7RO;8?B!Bo#P#H3W(_2F z#k?K#XtNBZ_>8$C(JLjvI3eG?#(1shVO?R60W{8@9-2k^f~^bEp-7417P*IIiwpH* zSk>jZ-*D+!+wg4Ohb5z8eD8+rMa9D`U=mf6h7CoWE3&t@`5{Wtyj>?jNd>j-XcB$*B5yuXN+x< z`J;J^y(aQG-8p@dYfd%4Qb@cL{|G!$6YDS$sO1zBM&@6~hb2N{D0c9~cV(o5H9~Tm z4$e2tOC?gr@Ig5z6iThO1wvbnyDJS!cyTP|oQ+~o3AmOYmxE#uGo@I%Lo`CZne*D= zw<%svsq^SJN>?jgUMn+;e%8k9jKG0QMo|t#XRKqbTCqqTO<;0oK$tewLEgh}izVpg z2PQnYWLg2~3Y_&}$J3{kxtZV)$=vSO&QsCXjkbz1PQFr1(U~IQZyD(c7?yctEXwsV zS9n@{*+mWMEjqCm5BkWBCim3aF-7KxV<-zj<7NG^&g?$@?N!;X1M z;13mt``~yA8=?_UckYd>#doGeQ@~%Mz_AH(%$0FC+XT}5li3B2l_;xpiW>-xQK}K zBU^7{UK)%6yF0~;ub21t3e<9^(QLDc_B^2Ccu_5NCWGnQ zm@%L~$^PM&FUd+NENHW)LN(cpi$2Uc2gJz>p>-Z*$Z!4Lxf*zd6+WqIg+o$_TLKWKi|`?b{y zDqZj_h^YCsd<{erSo^eokCxRgberO3b-Q9>ajO4JZ{I4oSbg9)#HfP#w*MmT132xQ z{>&$^NOj4vsAZ9v=SRzd=eUz5E6!|#K3SK1JVE_9K>DxdEL)Y1Nyku}2I2Y9)<0E37#lOQkeqsvn6<9TVLIS+Xnn_& z@45nykyz1-ah3IhU3uzGDe>|_uqx7G3H6Nj^_2H+TO5uLC+Y^-dm^SEe>{VgF z%K&Q(luI-b-?$b1Zw2i{b&f`saqalpYhu0B-M!B?HJ>CVL7%lEr{o;@`m{EVOGhL8 zzo;}}jP&)7^R`tM(o(&!sNY^OUCa*XK%w!3?jI=B!)pl~GJgE+h0;4CY6kO8q{ZPg z9<6j@z=mmN|a8)XQ}bf=$_R{rk$ z#J=HDMp?;5*ja+G!PKHiA7^KPswr)7lYqMb_7Nu}VRT69vjZ-n&-YCy{+ScVjQ zN0I54BXr3TI^-}tN|a_Pm^JBghahskV>A~!M^kFBZBvgN<-J%ZFGgF_(Hji`SCXQJ zBU|L#@Btct2Z2SIoTNmsQ7t<04r)CVQ6yUBP*Rm(v#<*y6D?jQS&EosDPp3<%Xo{| zG|yD09A=LcWT)h3tK?%L<%a~*-Vzk9gg=jyJz1k~BX_v#a$U(No zeQcEa*&I))f1|}V;BwMv7H$@WVEFs_9B>~{cr|evREbWGvQ==Dt%7;hG8{SVBBG$M zL-MmS*2}xGPCZ&Qg@6Ry3EV}Fr#1&uNQMtE7Wgw6j{e!iEm%3tUd>sKIwt3!m8o8u zq#%oSNE6g^+qv73p)Cfd2Z%qN2%^&Tm}Y+EU{ zI(lUlGCgvXANki1F=r|CGVo~%+)b&MLt(@pOaRrhFcEkJ(#xPyfV=z~=orDN%K;_M zkNj)QNMu`yDiN~?)t!7ua43!VgXu?2cYX(T4bWip1YsnW#5y_JK8j)!^3`*RUx{;_ zZ)K*7+D709z%`5jzr0ZnwGsbdUPE<#p0MxlhUk#P+~`|H+Xx!@!-~XD1M4&CL$D3C z1aLg?03&qqnu><=2`o~vdf=>+p zV7`FbPEwZ}XSTJJYuuBWl;cXQekI03p`H9MvKQIdRQz7xyBy;4cRhS!_`^9DRnbdV z+Yk|fh4yMb=NyxDo&P>1$`j!xo{KaSGOh{qE7VG;kG;{uCx)-ZBH*7SQFu^ zLa0-lte0ng!p8#_a64+yC*Q`c_2&s7H^TRy@Ui0v)TU(lHuAxL)}p?ZKH(Fx&P>$& zpBVWw_}75rv;9Fo;S&-u75FJ?>TWKKy$4lh@kBmxPJBWEAOOdr28vdpDnOWJ?7LAF zrO!jnFZzTG`DDb%9#z0X;4su|(24v0n=HQ}idyBg9W^h06KV&UZCSn3k0GBJetvMG kdWrTE2MlGJeL`mZf9k36N=2;2B>(^b07*qoM6N<$f>4P2!~g&Q literal 0 HcmV?d00001 diff --git a/images/supported_brands/slack.png b/images/supported_brands/slack.png new file mode 100644 index 0000000000000000000000000000000000000000..07654fbc9f825964d01ea877ab9716be535bc9a9 GIT binary patch literal 5007 zcmY*dbyyVMwxwf+1_>nxq+uw@A*7K;QgUGE?ifOb4vCR&=@L*%KvL+bJ(d7|^f&%doeGDBfJ)rbHjt)-lqCVoF ze-NUN@!vEUME?)O!(JSuuc|>Wa%cQE$^Y=kTDn`f*}8bx zIy=$-<%OC%dwPh2K!1h)JO16LhppBBDml6T$JV1k@ZTFSFEwr1ue4`_`s<9sZpfNF+zu zRg32?^<1YrB0?rrBC8*LOR%kN&uwJg60tsJmU@1BmZ_{xkaemTK;a=Yb43_RR%n~G z$8AqB9kg5hN+!0uu+w>5q}>$frIC>0oGyQ{IE}?lp0TOEhJvY~Uqx~M0~RXY1Mb(R zJ=oZ1=lE7HcyC@sKsP#)*BC)`PQ<&4ur)nKZbg_RFc^e#%Vi`XbLq?uE1~GD8dt2Y znd>xWSi5+0lS`I~dRzBI{mHGR?I|g@Z*;}C@+;|#W3StDNvTQAb4n47IepL}#gaT7 zL$C9Y+?=p&Vq|5cXxZpVEGiX+p7}wFeROo4?S$1ZF>>68)u_?cb*X0W*kIRqJFiwv zdnHr-K1AM+&AKwux8Cg`Q{7lHL7gZ%iK)?!$5#{shN7&euO-7`>U-F5Ay`7y9e? zv}>E+q)RNW;(jkumsc(2;WBR)A{OpUmdZO)x=3Ssf#!*+?G(k5o=_pFUj*3&%I`>A6Kn z%W59=yKx(J=zp>QLMs}Ti-LRAULQOTFw@W+_D%hHdTPDhd|%z+OFa{Ve=auo)Mz;n zVJDH|W2W*(fo8%duFkPCCaA_4qG*3mU8*WrNj9{PC*OoFOiWDB*(iNxliRP#&m0O}=;MJ$EBRtuEL7Z@Y99~>@-)k{ zAwG5=4h|hZ6c==#PIiXOM`$COnlMF>m*|o2!0760pXyoFs5W>FF|+K~KVYKHv19ZE&rUw+87 zH?JT;wwMlGpk;4#or`Pk1rKDTE2z<_lu2kPb;dc7c&)F8v#ON5QU5U;!z>&s+%e9~ z1%=r5zb?C(bmAG#6P|59gAuCQ+~nDf#_BXafALUsKejOlCwHfyDVO(xlJ^9`)?_R4 zIRR<&7|clpV{uhVL?hHN`W}}!<&QNFtyNyzdm+%!H{aIpC~NdMC~*L{$?)SnbZ-30 zd#q`tc%G-JS|h#N2R>VrrNW$Lxn!R!jNGDt&sWLh_3bW@^bxLcx8zyJ#D9%{6g(2i!k>Urb!h znavK-q-K#HezGf_*wMfcJ9W6sDNZR6ILO!DGG>^-L*JUnyZn^CqSUD_UMo+Tl+$73 zPu;VApETd73h9{sV;9=8++@cv>#u6zN-(yAlL#>bHu$UOoh1Op_~DxDRcIV$;ruQ7 zmj;bNHE(#I*=Bi;o7pb!F{s@(kyn>GaB}SG@=TnbDqMEW5#~L~tf5uorRIu>ZVi(SjB~}oXoe?Kl(Y?b9figkPrFrSZR$}4<@Dct0z8%aAvS(CJvkHf zNg$b{Fm|E){THIwc_d0dDtXX~nXSAIBI4M4gJ@_=q=XrD&<9$`&@duJZOvGt_;7y9 zS&#DsP3F9X;k#Jp5kEm{seB^EUJcLaV1ZkFkhNiN>?}3`ac%%n05_t3lRnKhFhISR zzIwJJY2wK zJcRLQx>BZk&vmQ2d>8#m3%@%cXVb{Edg!IL{`(ce>9zfroA~>K1EjxGjK!REW1snsrUS8{ z>BGbO)UJh0jQ2oSM`KC}chEyFa7%phgXb-^!cyo$Fl8UtLWQt8A(ea^aBsRyC@CPi zrap88$1XTX;$)TTdT>qo;yttut9H2)sYp?VB{o`RwpB!63d#Bqqfy`yI~tS>%=0P(FLwpORpO zfWTQZ;4!n>(eJb~9zhKriry@tST$=fli_4wJ|-^#yr-$8NjzXD=jb;5HY<=orLbsn zkg>$xwPZk3S_{)EF_G<_d|0x=yDxq}$79W*^ZZF~4kTroR`k^e!CBWAI72kExe8ds zNZAxrcz=YKe#Tb)nAEbx`QqmDbNZ84yy>HaJxkFS97is}l;{!`I?{$VY)iks@#o2E zacb1lA$Uhvh`Q;QXUQC%UDXCt;TYlH<6Z_9hyHAoD)n^oN7wJ3fAUI%z=`e}xk#b# zt06igF=HM;ummJ;3w;3vbPA0qbo8|H@Qd9bTZ7*M()ZF=RD2CD? zWCT*aoMj{C$*0tsj)ODG>?QbKG{|i2QOuRC8!#g@Ew9u3YMwnqjqKOO>b-ViWMitD^KIEk1m*Gm5I(8?E8&Kmap{l-_k6ZCTEIOsh? zU5d}*lCXv%fb2DMuQckI6FOr{wg>?zCvld%4LrSIlUq>nsppBQ8OhR%wM%@SV|c=o z78-$UFS0&d-C328t9wR9#%~i8ZCkSE`yTTOuLI;r)iN)3iqDSkJ{BH!D&3u(#g4qs ziT7XVl{u2HdG|#_s(45l>$#MGW1K!2L6nQQO@La|8$cR;h6*&OFSMTbrqBMauG<*= z#@%^*3+!TOnwH*T1H{`Dqg^QjV)Qf;wQ^fo->@*?wdmV67`}z~-2jBqnPpbU@WvHr zQh2dz=vt11KlZ;oStO)g5dM5T|b|1;E5%<^r_~n4s zjDmqY1VE+9vd|YkT&L=;uQ2#QH`gowz1bgDyxqo3mZP8JZ#DeVi$-Dz#~kz<5^Kz8 zc}B%vm0b3((7*7y%l6`1*^dnYi!ubje$TcWoSuTiKHj&Pvs3ShOCP~itmsCEMCSVX zoEf1IbQTW}S&aeHexj~9+Tz|Wz$X1+PYPo?+H(*c-soY+rJk!+95kH`y7~+2o3$t+ zHcaZ=cG?g6tWWL8BaKU?J1q2+t{}kP+;E%d^toX}5@|=on4RdzjgYI}oF*M>fNJXn zS03t5#FAD^?d?=$Ru=?k`!E?)iVbfEGm5p7Yu2C#rR43DEJAR}uU|5J)KS`Z*y%zF z&Xs$Dyd#RlafIFm5z0>DX6|Ut%a6G>{@^u#&3B~*;gc}7j;d`Xlf<yR>h4_f{4 z>+QBh%0LmS6WVQ;xSh&=hXJNN^xpNW{ERDWqytg5r<&hePZ8T=Swv{7UxrHBL$hmsvVSy5H~D#o=Q`qqtET4a|6(*SsVx~9GU(*FdgIz!_VhMjqk zTB3~y)I2im3wG+b{T9vrVzfwojJ*4b4K2IH^2b^lw|@pI1;|5ga}7*|MV9P@HZs4$ z9amOOz$#c;f%$Qp*6jM|g`FT0h)I(_Q(ClIsnX$2$zEnbge!~uf^w(`>)p&wX&f$_GOL5v1G~|Rb>+qtYhjUB((RK3Q@s1b?D7#_@N9-7%!>m^0U^Seb z23Uf5$WK@*vurNK&GQG`jyM?F+Ow|<>vE;#3n^*nCk_axPGr1^g8NMB+TSNO77{(( z?cIut>IjiMHLK4^m@lswj2js-=0mk$Clhi2rkcszc7}QHjuK7gwFXXig^l`fdIlsI zEW^s({X`^VmEDVQd@HUk)$y)A*Bn`!!*&NgW+KY&vUMgeN<`d&Rfu_gM1`j7@W>?1 z(O{fL0sE8SvYfA0?8pmYD+n>mVALeZQ3S-fmcZ}ZgwpkQV%RX1Du^*mnypRziQYkm zIwy$Ud+JVZ(E4epGQUyME4FUm#6UjFDJs#8(Ju{4#KmG4(gF9>E)J1m0ZSkB2s(Hm zq2Cq=rgW&nCyE`Nk5y@peYUHI0% zoF?EzCd-g8q_IWJz$t@=&k^$!jurx9lAHTCZ#eVMCtdC(mTGAB?uZ - + + - - -

    Browse all »

    diff --git a/sitemap.xml b/sitemap.xml index ab8c016283..3457de6a43 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,5 +1,10 @@ + + https://home-assistant.io/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/ + 2015-08-09T18:01:00-07:00 + 0.8 + https://home-assistant.io/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/ 2015-07-11T01:37:00-07:00 @@ -87,505 +92,553 @@ https://home-assistant.io/developers/add_new_platform.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/getting-started/android.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/api.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/architecture.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/arduino.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/automation.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/browser.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/camera.generic.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/getting-started/configuration.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/configurator.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/conversation.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/creating_components.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/credits.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_sun_light_trigger.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.asuswrt.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.ddwrt.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.luci.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.netgear.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.nmap_scanner.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.tomato.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/device_tracker.tplink.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/discovery.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/downloader.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/frontend.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/group.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/history.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/blog/archives/ + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 1.0 - - https://home-assistant.io/blog/archives/ - 2015-08-05T16:49:05-07:00 - weekly - 0.7 - https://home-assistant.io/blog/ - 2015-08-05T16:49:05-07:00 - weekly - 0.7 - - - https://home-assistant.io/developers/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 - https://home-assistant.io/getting-started/ - 2015-08-05T16:49:05-07:00 + https://home-assistant.io/developers/ + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/help/ - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/getting-started/ + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/isy994.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/keyboard.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/light.hue.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/light.limitlessled.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/light.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/logbook.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.cast.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.kodi.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/media_player.mpd.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.squeezebox.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/modbus.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/mqtt.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.file.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.instapush.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.nma.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.pushbullet.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.pushover.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.slack.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.smtp.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.syslog.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/notify.xmpp.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/python_api.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/rest_api.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/scene.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/scheduler.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/script.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.bitcoin.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.efergy.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.forecast.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.mysensors.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.openweathermap.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.rfxtrx.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.sabnzbd.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.swiss_public_transport.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.systemmonitor.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.temper.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.time_date.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sensor.transmission.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/simple_alarm.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/sun.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.command_switch.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.edimax.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.hikvision.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.rpi_gpio.html + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.transmission.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/switch.wemo.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/tellstick.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.heat_control.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/thermostat.nest.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/getting-started/troubleshooting.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/vera.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/developers/website.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/wink.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 https://home-assistant.io/components/zwave.html - 2015-08-05T16:49:05-07:00 + 2015-08-09T23:50:11-07:00 weekly 0.7 diff --git a/stylesheets/screen.css b/stylesheets/screen.css index 29ef68ef94..82c000abc2 100644 --- a/stylesheets/screen.css +++ b/stylesheets/screen.css @@ -26,4 +26,4 @@ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com - */@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.33333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.14286em;text-align:right;padding-right:0.28571em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.42857em}.icons-ul{margin-left:2.14286em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.14286em;width:2.14286em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}body,html{background-color:#f5f5f5;color:#222;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;height:100%}a{color:#049cdb;text-decoration:none}a:visited{color:#0378a9}.menu a{color:#049cdb}.gist{font-size:0.75em}@media only screen and (max-width: 480px){.title.indent::before{display:none}}.title.indent::before{content:"// ";color:#049cdb}.divider,.usp hr,.hero hr{border:none;border-bottom:2px solid #049cdb;clear:both;margin:2em 0}article.post img,article.page img,article.listing img{border:5px solid #fff;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,0.25)}article.post img.right,article.page img.right,article.listing img.right{float:right;margin:0 0 10px 20px}article.post img.left,article.page img.left,article.listing img.left{float:left;margin:0 20px 10px 0}.grid-wrapper{margin:auto;max-width:1100px;padding:0 25px}.grid-center{text-align:center}.grid-center>.grid__item{text-align:left}body>header{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-bottom:2em}body>header .site-title{color:#222;font-size:1.7em;font-weight:bold;line-height:2.5em}body{-webkit-animation:bugfix infinite 1s}@-webkit-keyframes bugfix{from{padding:0}to{padding:0}}.header{position:relative}#toggle,.toggle{display:none}.menu li{list-style:none;float:left}@media only screen and (max-width: 790px){.menu{display:none;opacity:0;width:100%;position:absolute;right:0}.menu li{display:block;width:100%;margin:0}.menu li a{display:block;width:100%;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.toggle{display:block;position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#toggle:checked ~ .menu{display:block;opacity:1;z-index:999}}ul.menu li{position:relative}ul.menu li:hover ul{display:block}ul.menu li ul{display:none;z-index:10;position:absolute;top:68px;margin-left:0;background-color:white}ul.menu li ul li{white-space:nowrap;float:none}ul.menu li ul li a{display:block;padding:20px 10px}ul.menu li ul li a:hover,ul.menu li ul li a:focus{background:#eee}header .grid{height:68px}.menu{margin:0;top:68px}.menu li a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.25s linear;-moz-transition:all 0.25s linear;-o-transition:all 0.25s linear;transition:all 0.25s linear;display:block;padding:32px 20px;text-decoration:none;font-weight:normal;font-size:16px;line-height:1}.menu>li>a:hover,.menu>li>a:focus{background:#f5f5f5;box-shadow:inset 0px 5px #049cdb;color:#049cdb;padding:40px 20px 24px}.toggle{z-index:20}@media only screen and (max-width: 790px){.menu{background:#fff;border-top:1px solid #049cdb;border-bottom:4px solid #049cdb}.menu,.menu li,.menu li a{height:auto}.menu li a{padding:15px 15px !important}.menu li a:hover,.menu li a:focus{background:#eee;box-shadow:inset 5px 0px #049cdb;padding:15px 15px 15px 25px}.toggle{position:absolute;top:17px;right:10px}.toggle::after{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.5s linear;-moz-transition:all 0.5s linear;-o-transition:all 0.5s linear;transition:all 0.5s linear;font-family:"FontAwesome";content:"\f0c9";display:inline-block;width:100%;padding:10px 15px;background:#049cdb;text-align:center;font-size:12px;color:#fff;white-space:nowrap}.toggle:hover::after{background:#0383b8}#toggle:checked+.toggle::after{content:attr(data-close)}ul.menu li ul{display:block;position:relative;top:0}}#page-wrap{min-height:100%;margin-bottom:-100px}#page-wrap::after{content:"";display:block;height:100px}body>footer{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-top:3em}.copyright{margin:0;padding:20px 0;text-align:center}article blockquote{border-left:2px solid #049cdb;color:#484848;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.25em;font-style:italic;padding-left:15px}article blockquote footer{float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8em}article blockquote footer strong::after{content:" \2014 "}article blockquote footer a{text-decoration:underline}article .pullquote-left::before,article .pullquote-right::before{border:medium none;color:#049cdb;content:"\201C" attr(data-pullquote) "\201D";float:right;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.4em;font-style:italic;line-height:1.45em;margin:0.3em 0 1em 1.5em;padding:0;position:relative;top:7px;width:45%}@media only screen and (max-width: 480px){article .pullquote-left::before,article .pullquote-right::before{border-top:1px dotted #049cdb;border-bottom:1px dotted #049cdb;padding:0 10px;width:100%}}article .tags{display:inline}article .tags li{margin-right:2px}article .tags li::after{content:","}article .tags li:last-child::after{content:""}article .tags li a{color:#555;text-decoration:none}article .tags li a:hover{text-decoration:underline}article .meta{font-size:12px;padding:0 0 5px}article .meta>*{margin-right:15px;white-space:nowrap}article .meta>*:last-child{margin-right:0}article .meta .comments::before{content:"\f075";font-family:"FontAwesome";padding-right:3px}article.listing{margin-bottom:20px}article.listing h1{margin-bottom:0}article.listing h1 a{color:#049cdb;text-decoration:none}article.listing .entry-content{margin:10px 0}article.listing+hr{border:none;border-bottom:1px solid #049cdb}@media only screen and (max-width: 480px){article.post .tags{clear:both;margin-top:7px}}article.post h1{margin-bottom:0}article.post .meta{border-bottom:1px solid #049cdb;margin-bottom:20px}#archive-list article h1{margin-bottom:0}.sans,html .gist .gist-file .gist-meta{font-family:"Helvetica Neue",Arial,sans-serif}.mono,pre,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}.highlight table{margin-bottom:0}.highlight .gutter,.highlight .code{padding:0}.highlight .gutter .line-number{display:block}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/images/noise.png?1419195603') top left !important;border-right:1px solid #00232c !important;-webkit-box-shadow:#083e4b -1px 0 inset;-moz-box-shadow:#083e4b -1px 0 inset;-ms-box-shadow:#083e4b -1px 0 inset;-o-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-ms-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-o-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/images/noise.png?1419195603') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#75878b !important}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#049cdb !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/images/noise.png?1419195603') top left;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/images/noise.png?1419195603') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372c34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d33 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1a412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/images/code_bg.png?1419195603') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}@media only screen and (min-width: 1024px){.aside-module:first-child .title{margin-top:0}}.aside-module .title{border-bottom:1px solid #049cdb;color:#333;margin:1em 0 0.5em;padding-bottom:5px}.aside-module .title .btn{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:5px 10px;text-decoration:none}.aside-module .loading{display:block;font-size:2em;text-align:center}#github-repos li p{font-size:0.6em;margin-bottom:0}#pinboard .pin-item>p{margin-bottom:0}#pinboard .pin-item>p a:hover{text-decoration:underline}#pinboard .pin-item>p a::after{content:","}#pinboard .pin-item>p a:last-child::after{content:""}@media only screen and (min-width: 481px){.social ul{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px}}.social a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#e8e8e8;border:1px solid #dcdcdc;border-radius:4px;color:#222;display:inline-block;font-size:0.8em;margin-bottom:7px;padding:1em;padding-right:0.5em;position:relative;text-decoration:none;width:100%;z-index:5;-webkit-transition:box-shadow 200ms,color 400ms,transform 400ms;-moz-transition:box-shadow 200ms,color 400ms,transform 400ms;-o-transition:box-shadow 200ms,color 400ms,transform 400ms;transition:box-shadow 200ms,color 400ms,transform 400ms}.social a:hover{color:#fff !important;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25);z-index:7}.social a:hover::before{border:1px solid #000;height:100%;top:0;width:100%}.social a::before{background-color:#222;border-radius:4px;content:"";height:1px;position:absolute;top:50%;left:0%;width:0;z-index:-1;-webkit-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-moz-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-o-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms}.social a i{font-size:2em;line-height:0.8em;margin-right:0.35em}.social a.adn{color:#4a484c}.social a.adn::before{background-color:#4a484c;border-color:#3d3c3f}.social a.dribbble{color:#ea4c89}.social a.dribbble::before{background-color:#ea4c89;border-color:#e7357a}.social a.facebook{color:#3b5998}.social a.facebook::before{background-color:#3b5998;border-color:#344e86}.social a.github{color:#333}.social a.github::before{background-color:#333;border-color:#262626}.social a.gplus{color:#db4a39}.social a.gplus::before{background-color:#db4a39;border-color:#d43927}.social a.linkedin{color:#4875b4}.social a.linkedin::before{background-color:#4875b4;border-color:#4169a2}.social a.pinterest{color:#cc2127}.social a.pinterest::before{background-color:#cc2127;border-color:#b61d23}.social a.stackoverflow{color:#fe7a15}.social a.stackoverflow::before{background-color:#fe7a15;border-color:#f86c01}.social a.twitter{color:#00a0d1}.social a.twitter::before{background-color:#00a0d1;border-color:#008cb7}.social a.youtube{color:#cc181e}.social a.youtube::before{background-color:#cc181e;border-color:#b5151b}.usp{text-align:center}@media only screen and (min-width: 481px) and (max-width: 1023px){.usp{margin-bottom:25px}}.usp .icon i{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;border:10px solid #049cdb;color:#222;display:inline-block;font-size:6em;height:1.85em;line-height:normal;padding:0.3em;width:1.85em}.usp .title{color:#222;font-size:1.1em;line-height:3em;margin:0;text-align:center;text-transform:capitalize}.usp .title+hr{margin:0;margin-bottom:1em}.usp hr{margin-bottom:1em}.usp p{text-align:left}.hero{background-color:#0b6b94;background-position:0 50%;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;border-bottom:1px solid #fff;color:#fff;font-weight:bold;margin-top:-2em;margin-bottom:1.5em;padding:50px 0;position:relative}.hero>.grid-wrapper{position:relative;z-index:7}.hero .credit{font-size:0.75em;font-style:italic;position:absolute;bottom:0;right:10px;z-index:7}.hero .credit a{border-bottom:1px solid;color:#fff;text-decoration:none}.hero .credit .licence{border:none}.hero .avatar{text-align:center}@media only screen and (max-width: 1023px){.hero .avatar{margin-bottom:30px}}.hero .avatar img{-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;border:10px solid #049cdb}.hero h1{font-size:3.5em;line-height:1em;text-shadow:2px 2px 0 rgba(0,0,0,0.75)}.hero hr{box-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p{text-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p small{color:#eee;font-size:.65em}.pull-left{float:left}.pull-right{float:right}.clearfix,article blockquote{*zoom:1}.clearfix::before,article blockquote::before,.clearfix::after,article blockquote::after{display:table;content:"";line-height:0}.clearfix::after,article blockquote::after{clear:both}ul.unstyled,ul.inline,article ul.tags,ul.divided,ol.unstyled,ol.inline,article ol.tags,ol.divided{list-style-type:none;margin:0}ul.inline,article ul.tags,ol.inline,article ol.tags{list-style-type:none}ul.inline>li,article ul.tags>li,ol.inline>li,article ol.tags>li{display:inline}ul.divided>li,ol.divided>li{border-top:1px solid #fff;border-bottom:1px solid #e8e8e8;padding:0.5em 0}ul.divided>li:first-child,ol.divided>li:first-child{border-top:none;padding-top:0}ul.divided>li:last-child,ol.divided>li:last-child{border-bottom:none}.btn{background-color:#0494d1;background-image:-moz-linear-gradient(top, #049cdb, #048ac2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#049cdb), to(#048ac2));background-image:-webkit-linear-gradient(top, #049cdb, #048ac2);background-image:-o-linear-gradient(top, #049cdb, #048ac2);background-image:linear-gradient(to bottom, #049cdb,#048ac2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF049CDB', endColorstr='#FF048AC2', GradientType=0);-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);border-radius:3px;color:#fff;display:inline-block;padding:7px 15px;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25)}.btn:hover{text-decoration:underline}.btn:visited{color:#fff}.grid{letter-spacing:-1rem}.opera:-o-prefocus,.grid{word-spacing:-1rem}.grid__item{letter-spacing:normal;word-spacing:normal}@media only screen and (min-width: 481px){.flex{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-moz-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-box-align:start;-moz-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.flex__item{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0;-webkit-box-flex:0;-moz-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}}.supported-brands{text-align:center}.supported-brands img{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand.overview{max-width:100px}h1:hover a.title-link,h2:hover a.title-link,h3:hover a.title-link,h4:hover a.title-link,h5:hover a.title-link,h6:hover a.title-link{position:relative}h1:hover a.title-link::before,h2:hover a.title-link::before,h3:hover a.title-link::before,h4:hover a.title-link::before,h5:hover a.title-link::before,h6:hover a.title-link::before{position:absolute;left:-50px;padding-right:40px;font-family:"FontAwesome";content:"\f0c1"}.ha-title{white-space:nowrap}.ha-title img{width:40px;vertical-align:middle}.usp ul{text-align:left;margin-left:27px;margin-top:-18px}.usp .icon i{border:none !important}.hero-buttons a{margin:0 30px 10px 0}.hero-buttons a:last-child{margin:0}article.post img,article.post table,article.page img,article.page table,article.listing img,article.listing table{border-radius:3px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post img.no-shadow,article.page img.no-shadow,article.listing img.no-shadow{border:0;box-shadow:none}article.post>table,article.page>table,article.listing>table{background-color:#F3FCF5}article.post p.img,article.page p.img,article.listing p.img{background-color:#FFF;border-radius:5px;text-align:center;padding-bottom:3px;font-size:.9rem;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post p.img img,article.page p.img img,article.listing p.img img{display:block;box-shadow:none;margin:0 auto}article.post li,article.page li,article.listing li{margin-bottom:10px}article.post li>p,article.page li>p,article.listing li>p{margin-bottom:0}article.post li:last-child,article.page li:last-child,article.listing li:last-child{margin-bottom:0}p.note{position:relative;background:#e7f2fa;padding:40px 12px 6px 12px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}p.note::before{font-family:"FontAwesome";content:"\f05a" " Note " attr(data-title);background-color:#6ab0de;color:white;font-weight:bold;border-top-left-radius:3px;border-top-right-radius:3px;padding:6px 14px;line-height:1.5em;position:absolute;top:0;left:0;right:0}p.note.warning{background-color:#F7F9E1}p.note.warning::before{background-color:#bbb90d;content:"\f071" " Warning " attr(data-title)}.install-instructions-container #normal-install,.install-instructions-container #raspberry-install,.install-instructions-container #docker-install,.install-instructions-container .install-instructions{display:none}.install-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.install-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.install-instructions-container #normal-install:checked ~ .menu-selector.normal,.install-instructions-container #raspberry-install:checked ~ .menu-selector.raspberry,.install-instructions-container #docker-install:checked ~ .menu-selector.docker{border-bottom-color:#049cdb}.install-instructions-container #normal-install:checked ~ .install-instructions.normal,.install-instructions-container #raspberry-install:checked ~ .install-instructions.raspberry,.install-instructions-container #docker-install:checked ~ .install-instructions.docker{display:block}.install-instructions-container .install-instructions{margin-top:30px} + */@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.33333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.14286em;text-align:right;padding-right:0.28571em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.42857em}.icons-ul{margin-left:2.14286em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.14286em;width:2.14286em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}body,html{background-color:#f5f5f5;color:#222;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;height:100%}a{color:#049cdb;text-decoration:none}a:visited{color:#0378a9}.menu a{color:#049cdb}.gist{font-size:0.75em}@media only screen and (max-width: 480px){.title.indent::before{display:none}}.title.indent::before{content:"// ";color:#049cdb}.divider,.usp hr,.hero hr{border:none;border-bottom:2px solid #049cdb;clear:both;margin:2em 0}article.post img,article.page img,article.listing img{border:5px solid #fff;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,0.25)}article.post img.right,article.page img.right,article.listing img.right{float:right;margin:0 0 10px 20px}article.post img.left,article.page img.left,article.listing img.left{float:left;margin:0 20px 10px 0}.grid-wrapper{margin:auto;max-width:1100px;padding:0 25px}.grid-center{text-align:center}.grid-center>.grid__item{text-align:left}body>header{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-bottom:2em}body>header .site-title{color:#222;font-size:1.7em;font-weight:bold;line-height:2.5em}body{-webkit-animation:bugfix infinite 1s}@-webkit-keyframes bugfix{from{padding:0}to{padding:0}}.header{position:relative}#toggle,.toggle{display:none}.menu li{list-style:none;float:left}@media only screen and (max-width: 790px){.menu{display:none;opacity:0;width:100%;position:absolute;right:0}.menu li{display:block;width:100%;margin:0}.menu li a{display:block;width:100%;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.toggle{display:block;position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#toggle:checked ~ .menu{display:block;opacity:1;z-index:999}}ul.menu li{position:relative}ul.menu li:hover ul{display:block}ul.menu li ul{display:none;z-index:10;position:absolute;top:68px;margin-left:0;background-color:white}ul.menu li ul li{white-space:nowrap;float:none}ul.menu li ul li a{display:block;padding:20px 10px}ul.menu li ul li a:hover,ul.menu li ul li a:focus{background:#eee}header .grid{height:68px}.menu{margin:0;top:68px}.menu li a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.25s linear;-moz-transition:all 0.25s linear;-o-transition:all 0.25s linear;transition:all 0.25s linear;display:block;padding:32px 20px;text-decoration:none;font-weight:normal;font-size:16px;line-height:1}.menu>li>a:hover,.menu>li>a:focus{background:#f5f5f5;box-shadow:inset 0px 5px #049cdb;color:#049cdb;padding:40px 20px 24px}.toggle{z-index:20}@media only screen and (max-width: 790px){.menu{background:#fff;border-top:1px solid #049cdb;border-bottom:4px solid #049cdb}.menu,.menu li,.menu li a{height:auto}.menu li a{padding:15px 15px !important}.menu li a:hover,.menu li a:focus{background:#eee;box-shadow:inset 5px 0px #049cdb;padding:15px 15px 15px 25px}.toggle{position:absolute;top:17px;right:10px}.toggle::after{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.5s linear;-moz-transition:all 0.5s linear;-o-transition:all 0.5s linear;transition:all 0.5s linear;font-family:"FontAwesome";content:"\f0c9";display:inline-block;width:100%;padding:10px 15px;background:#049cdb;text-align:center;font-size:12px;color:#fff;white-space:nowrap}.toggle:hover::after{background:#0383b8}#toggle:checked+.toggle::after{content:attr(data-close)}ul.menu li ul{display:block;position:relative;top:0}}#page-wrap{min-height:100%;margin-bottom:-100px}#page-wrap::after{content:"";display:block;height:100px}body>footer{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-top:3em}.copyright{margin:0;padding:20px 0;text-align:center}article blockquote{border-left:2px solid #049cdb;color:#484848;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.25em;font-style:italic;padding-left:15px}article blockquote footer{float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8em}article blockquote footer strong::after{content:" \2014 "}article blockquote footer a{text-decoration:underline}article .pullquote-left::before,article .pullquote-right::before{border:medium none;color:#049cdb;content:"\201C" attr(data-pullquote) "\201D";float:right;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.4em;font-style:italic;line-height:1.45em;margin:0.3em 0 1em 1.5em;padding:0;position:relative;top:7px;width:45%}@media only screen and (max-width: 480px){article .pullquote-left::before,article .pullquote-right::before{border-top:1px dotted #049cdb;border-bottom:1px dotted #049cdb;padding:0 10px;width:100%}}article .tags{display:inline}article .tags li{margin-right:2px}article .tags li::after{content:","}article .tags li:last-child::after{content:""}article .tags li a{color:#555;text-decoration:none}article .tags li a:hover{text-decoration:underline}article .meta{font-size:12px;padding:0 0 5px}article .meta>*{margin-right:15px;white-space:nowrap}article .meta>*:last-child{margin-right:0}article .meta .comments::before{content:"\f075";font-family:"FontAwesome";padding-right:3px}article.listing{margin-bottom:20px}article.listing h1{margin-bottom:0}article.listing h1 a{color:#049cdb;text-decoration:none}article.listing .entry-content{margin:10px 0}article.listing+hr{border:none;border-bottom:1px solid #049cdb}@media only screen and (max-width: 480px){article.post .tags{clear:both;margin-top:7px}}article.post h1{margin-bottom:0}article.post .meta{border-bottom:1px solid #049cdb;margin-bottom:20px}#archive-list article h1{margin-bottom:0}.sans,html .gist .gist-file .gist-meta{font-family:"Helvetica Neue",Arial,sans-serif}.mono,pre,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}.highlight table{margin-bottom:0}.highlight .gutter,.highlight .code{padding:0}.highlight .gutter .line-number{display:block}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/images/noise.png?1419195603') top left !important;border-right:1px solid #00232c !important;-webkit-box-shadow:#083e4b -1px 0 inset;-moz-box-shadow:#083e4b -1px 0 inset;-ms-box-shadow:#083e4b -1px 0 inset;-o-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-ms-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-o-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/images/noise.png?1419195603') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#75878b !important}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#049cdb !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/images/noise.png?1419195603') top left;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/images/noise.png?1419195603') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372c34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d33 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1a412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/images/code_bg.png?1419195603') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}@media only screen and (min-width: 1024px){.aside-module:first-child .title{margin-top:0}}.aside-module .title{border-bottom:1px solid #049cdb;color:#333;margin:1em 0 0.5em;padding-bottom:5px}.aside-module .title .btn{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:5px 10px;text-decoration:none}.aside-module .loading{display:block;font-size:2em;text-align:center}#github-repos li p{font-size:0.6em;margin-bottom:0}#pinboard .pin-item>p{margin-bottom:0}#pinboard .pin-item>p a:hover{text-decoration:underline}#pinboard .pin-item>p a::after{content:","}#pinboard .pin-item>p a:last-child::after{content:""}@media only screen and (min-width: 481px){.social ul{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px}}.social a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#e8e8e8;border:1px solid #dcdcdc;border-radius:4px;color:#222;display:inline-block;font-size:0.8em;margin-bottom:7px;padding:1em;padding-right:0.5em;position:relative;text-decoration:none;width:100%;z-index:5;-webkit-transition:box-shadow 200ms,color 400ms,transform 400ms;-moz-transition:box-shadow 200ms,color 400ms,transform 400ms;-o-transition:box-shadow 200ms,color 400ms,transform 400ms;transition:box-shadow 200ms,color 400ms,transform 400ms}.social a:hover{color:#fff !important;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25);z-index:7}.social a:hover::before{border:1px solid #000;height:100%;top:0;width:100%}.social a::before{background-color:#222;border-radius:4px;content:"";height:1px;position:absolute;top:50%;left:0%;width:0;z-index:-1;-webkit-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-moz-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-o-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms}.social a i{font-size:2em;line-height:0.8em;margin-right:0.35em}.social a.adn{color:#4a484c}.social a.adn::before{background-color:#4a484c;border-color:#3d3c3f}.social a.dribbble{color:#ea4c89}.social a.dribbble::before{background-color:#ea4c89;border-color:#e7357a}.social a.facebook{color:#3b5998}.social a.facebook::before{background-color:#3b5998;border-color:#344e86}.social a.github{color:#333}.social a.github::before{background-color:#333;border-color:#262626}.social a.gplus{color:#db4a39}.social a.gplus::before{background-color:#db4a39;border-color:#d43927}.social a.linkedin{color:#4875b4}.social a.linkedin::before{background-color:#4875b4;border-color:#4169a2}.social a.pinterest{color:#cc2127}.social a.pinterest::before{background-color:#cc2127;border-color:#b61d23}.social a.stackoverflow{color:#fe7a15}.social a.stackoverflow::before{background-color:#fe7a15;border-color:#f86c01}.social a.twitter{color:#00a0d1}.social a.twitter::before{background-color:#00a0d1;border-color:#008cb7}.social a.youtube{color:#cc181e}.social a.youtube::before{background-color:#cc181e;border-color:#b5151b}.usp{text-align:center}@media only screen and (min-width: 481px) and (max-width: 1023px){.usp{margin-bottom:25px}}.usp .icon i{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;border:10px solid #049cdb;color:#222;display:inline-block;font-size:6em;height:1.85em;line-height:normal;padding:0.3em;width:1.85em}.usp .title{color:#222;font-size:1.1em;line-height:3em;margin:0;text-align:center;text-transform:capitalize}.usp .title+hr{margin:0;margin-bottom:1em}.usp hr{margin-bottom:1em}.usp p{text-align:left}.hero{background-color:#0b6b94;background-position:0 50%;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;border-bottom:1px solid #fff;color:#fff;font-weight:bold;margin-top:-2em;margin-bottom:1.5em;padding:50px 0;position:relative}.hero>.grid-wrapper{position:relative;z-index:7}.hero .credit{font-size:0.75em;font-style:italic;position:absolute;bottom:0;right:10px;z-index:7}.hero .credit a{border-bottom:1px solid;color:#fff;text-decoration:none}.hero .credit .licence{border:none}.hero .avatar{text-align:center}@media only screen and (max-width: 1023px){.hero .avatar{margin-bottom:30px}}.hero .avatar img{-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;border:10px solid #049cdb}.hero h1{font-size:3.5em;line-height:1em;text-shadow:2px 2px 0 rgba(0,0,0,0.75)}.hero hr{box-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p{text-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p small{color:#eee;font-size:.65em}.pull-left{float:left}.pull-right{float:right}.clearfix,article blockquote{*zoom:1}.clearfix::before,article blockquote::before,.clearfix::after,article blockquote::after{display:table;content:"";line-height:0}.clearfix::after,article blockquote::after{clear:both}ul.unstyled,ul.inline,article ul.tags,ul.divided,ol.unstyled,ol.inline,article ol.tags,ol.divided{list-style-type:none;margin:0}ul.inline,article ul.tags,ol.inline,article ol.tags{list-style-type:none}ul.inline>li,article ul.tags>li,ol.inline>li,article ol.tags>li{display:inline}ul.divided>li,ol.divided>li{border-top:1px solid #fff;border-bottom:1px solid #e8e8e8;padding:0.5em 0}ul.divided>li:first-child,ol.divided>li:first-child{border-top:none;padding-top:0}ul.divided>li:last-child,ol.divided>li:last-child{border-bottom:none}.btn{background-color:#0494d1;background-image:-moz-linear-gradient(top, #049cdb, #048ac2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#049cdb), to(#048ac2));background-image:-webkit-linear-gradient(top, #049cdb, #048ac2);background-image:-o-linear-gradient(top, #049cdb, #048ac2);background-image:linear-gradient(to bottom, #049cdb,#048ac2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF049CDB', endColorstr='#FF048AC2', GradientType=0);-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);border-radius:3px;color:#fff;display:inline-block;padding:7px 15px;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25)}.btn:hover{text-decoration:underline}.btn:visited{color:#fff}.grid{letter-spacing:-1rem}.opera:-o-prefocus,.grid{word-spacing:-1rem}.grid__item{letter-spacing:normal;word-spacing:normal}@media only screen and (min-width: 481px){.flex{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-moz-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-box-align:start;-moz-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.flex__item{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0;-webkit-box-flex:0;-moz-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}}.supported-brands{text-align:center}.supported-brands img{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand.overview{max-width:100px}h1:hover a.title-link,h2:hover a.title-link,h3:hover a.title-link,h4:hover a.title-link,h5:hover a.title-link,h6:hover a.title-link{position:relative}h1:hover a.title-link::before,h2:hover a.title-link::before,h3:hover a.title-link::before,h4:hover a.title-link::before,h5:hover a.title-link::before,h6:hover a.title-link::before{position:absolute;left:-50px;padding-right:40px;font-family:"FontAwesome";content:"\f0c1"}.ha-title{white-space:nowrap}.ha-title img{width:40px;vertical-align:middle}.usp ul{text-align:left;margin-left:27px;margin-top:-18px}.usp .icon i{border:none !important}.hero-buttons a{margin:0 30px 10px 0}.hero-buttons a:last-child{margin:0}article.post img,article.post table,article.page img,article.page table,article.listing img,article.listing table{border-radius:3px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post img.no-shadow,article.page img.no-shadow,article.listing img.no-shadow{border:0;box-shadow:none}article.post>table,article.page>table,article.listing>table{background-color:#F3FCF5}article.post p.img,article.page p.img,article.listing p.img{background-color:#FFF;border-radius:5px;text-align:center;padding-bottom:3px;font-size:.9rem;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post p.img img,article.page p.img img,article.listing p.img img{display:block;box-shadow:none;margin:0 auto}article.post li,article.page li,article.listing li{margin-bottom:10px}article.post li>p,article.page li>p,article.listing li>p{margin-bottom:0}article.post li:last-child,article.page li:last-child,article.listing li:last-child{margin-bottom:0}p.note{position:relative;background:#e7f2fa;padding:40px 12px 6px 12px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}p.note::before{font-family:"FontAwesome";content:"\f05a" " Note " attr(data-title);background-color:#6ab0de;color:white;font-weight:bold;border-top-left-radius:3px;border-top-right-radius:3px;padding:6px 14px;line-height:1.5em;position:absolute;top:0;left:0;right:0}p.note.warning{background-color:#F7F9E1}p.note.warning::before{background-color:#bbb90d;content:"\f071" " Warning " attr(data-title)}.install-instructions-container #normal-install,.install-instructions-container #raspberry-install,.install-instructions-container #docker-install,.install-instructions-container .install-instructions{display:none}.install-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.install-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.install-instructions-container #normal-install:checked ~ .menu-selector.normal,.install-instructions-container #raspberry-install:checked ~ .menu-selector.raspberry,.install-instructions-container #docker-install:checked ~ .menu-selector.docker{border-bottom-color:#049cdb}.install-instructions-container #normal-install:checked ~ .install-instructions.normal,.install-instructions-container #raspberry-install:checked ~ .install-instructions.raspberry,.install-instructions-container #docker-install:checked ~ .install-instructions.docker{display:block}.install-instructions-container .install-instructions{margin-top:30px}.prep-instructions-container #generic-prep,.prep-instructions-container #fedora-prep,.prep-instructions-container #centos-prep,.prep-instructions-container .prep-instructions{display:none}.prep-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:10px;white-space:nowrap;border-bottom:2px solid #999;transition:border-bottom-color .5s}.prep-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.prep-instructions-container #generic-prep:checked ~ .menu-selector.generic,.prep-instructions-container #fedora-prep:checked ~ .menu-selector.fedora,.prep-instructions-container #centos-prep:checked ~ .menu-selector.centos{border-bottom-color:#049cdb}.prep-instructions-container #generic-prep:checked ~ .prep-instructions.generic,.prep-instructions-container #fedora-prep:checked ~ .prep-instructions.fedora,.prep-instructions-container #centos-prep:checked ~ .prep-instructions.centos{display:block}.prep-instructions-container .prep-instructions{margin-top:20px}