From 8cb29a31e79579b1be3970eb175094e35fc76644 Mon Sep 17 00:00:00 2001
From: "Jacob Mansfield [root@Helix]"
Custom slot type for scene support.
+This example and the following requires to have the [script.json-cec](https://github.com/joshjowen/script.json-cec) plugin installed on your kodi player. It'll also expose th endpoints standy, toggle and activate without authentication on your kodi player. Use this with caution. +
### {% linkable_title Kodi services samples %} From c08e19578adbbee7019dc9aab1865a997810d329 Mon Sep 17 00:00:00 2001 From: Eirik H+The "Community" API key is limited to 10,000 calls per month. In order to leave +a buffer, the `airvisual` platform queries the API every 10 minutes. +
+ +## {% linkable_title Configuring the Platform %} + +To enable this platform, add the following lines to your `configuration.yaml` +file: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + latitude: 42.81212 + longitude: 108.12422 + radius: 500 +``` + +Configuration variables: + +- **api_key** (*Required*): your AirVisual API key +- **monitored_conditions** (*Required*): the air quality standard(s) to use +(`us` for U.S., `cn` for Chinese) +- **latitude** (*Optional*): the latitude to monitor; if excluded, the latitude +defined in `configuration.yaml` will be used +- **longitude** (*Optional*): the longitude to monitor; if excluded, the longitude +defined in `configuration.yaml` will be used +- **radius** (*Optional*): the radius (in meters) around the latitude/longitude to +search for the nearest city; defaults to `1000` + +## {% linkable_title Sensor Types %} + +When configured, the platform will create three sensors for each configured +air quality standard: + +### Air Quality Index + +**Description:** This sensor displays a numeric air quality index (AQI), a metric +for the overall "health" of the air. + +**Example Sensor Name:** `sensor.chinese_air_quality_index` + +**Example Sensor Value:** `32` + +**Explanation:** + +AQI | Status | Description +------- | :----------------: | ---------- +0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk +51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution +101 - 150 | **Unhealthy for Sensitive Groups** | Members of sensitive groups may experience health effects. The general public is not likely to be affected +151 - 200 | **Unhealthy** | Everyone may begin to experience health effects; members of sensitive groups may experience more serious health effects +201 - 300 | **Very unhealthy** | Health warnings of emergency conditions. The entire population is more likely to be affected +301+ | **Hazardous** | Health alert: everyone may experience more serious health effects + +### Air Polution Level + +**Description:** This sensor displays the associated `Status` (from the above +table) for the current AQI. + +**Sample Sensor Name:** `sensor.us_air_pollution_level` + +**Example Sensor Value:** `Moderate` + +### Main Pollutant + +**Description:** This sensor displays the pollutant whose value is currently +highest. + +**Sample Sensor Name:** `sensor.us_main_pollutant` + +**Example Sensor Value:** `PM2.5` + +**Explanation:** + +Pollutant | Symbol | More Info +------- | :----------------: | ---------- +Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) +Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) +Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) diff --git a/source/images/supported_brands/airvisual.jpg b/source/images/supported_brands/airvisual.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddce6892ae7b2fcaf936bdb680833892ffceab87 GIT binary patch literal 17694 zcmb5WcT`hN*FGEzpeRkMKtM!9rHS+sxG92kk=~KsdkI}Yij+h^Kq*0Kp#+fL0*I7| z2$6&udY9gN`yITWx2$)4|9oLB)=6^CoH;Xl_P%EC>&nIO#T1BASwTqwbmhtw&X^cGt9qGdFaC%*e8`~*vyyShVQX#Y6#wtERFb)_cAPc4v?t) zZ}YXLibavA0`dqB&1#=31w_Qzh(3ueqSnT~#rMfM8!kbi=8jvQS_sK>a&T(Oj?#`l z*#2*t>5#7`hHJhwAm}F*k6_z%k9&KR{?W^S%Rw#<2hc89y`xaAO>F-tbHix+9-V)I zW8ueJ?XKMqzuoQRk7Bh6pc|#9%&Up*#NlkFQ%iT0CZtM&kd9L|6Mu@i9^Xgh$NaNo zo*de`wld|v)$SXSo>=MMW8srR%=Mg)uF93dWYjtjF{vSRB@U;=WJVSDx-r+voY$p~ zUx03Xc}Xa(eW-E?U{c)}5c>_;-m*+S*{L(a=jsShF2Yur)Kod}b8 z>zy+{f5tSt`QGUjT5=mJ5c;buGRMeiU~bgTYN;+r@L+M$&o=hv*B2zBLV3OSK+lvU z->0VRzY7ez02M7S|Cx>dPy(TO9)B(O+7be%uEB!hO;w3;w~QHWgbyyn9pw+KZV2Xg zmmd67b|Ac)%FfRGvc}t;%Oe@>$_tqf^mM-s&3B|ix3Oz{-(EnO+S+9epsQ*SU+}s$ zFGoMh380U_9orHmy^t27yq>g?k{(+*Bp$D!t}Nlb9R%cg!?8v-&F4Y`Hi`5$hzb0S z)+sAV)8K1eUXl_NQL$+O-AOaYaC+$nK4lu%o;MMQ{`z~#vZMf);=dsSAVm2~mCSzx z)H=iWa|+X9N=b|KJ}$EbSjEr&sbdaHqOv2r_=MV^Ftr;!WlUA?8(Z4EUD6&$a#~M9 zBJ$(pYyIjll6IkD>FIo2Rcu>>8Rx*?oSow+?}u~jvVegK%UZ*fYTUPJ=8Q2c8j9#> z>a*Rl?}kic9e2;^)a}-|%ghONbd735O6@kvBBDFY DL##ezD>areZ$uLt}x0E*z>-FSSvz6RvnLCWY z+nFKyL$;L8xF#Q_PaPemVb7Y2xAK3tKngBEGfBr T_=qQ0PI)&8R3thC^I~I=K{P`Us zJKIO-hJywr<|Ag)gFB0&I}f%vytb;mqUZ$#0OsWUeX;)!vj8~g`Imeyz$`3Rjr7SR zf`pHkM4Xe?$v7}?Uu`=!hRy}TU$qUIZ*ld2r$1%)L-pos?frG^jrsxT`rfMnqk&&` zmez7E+VhubV*WVG9KKKo4Sd#I=h4g6@ns7e2~?Z;p6JM!A 9>qclg@)}xAEp@q)X?WA+K86Jp5Zvjp%bPKw0Tc zIHu>74zUTJbF8B_h_GRzZ^F(0d5BKu^2v*JXnHLA%GRersJOGX`nxHVyH5!FhNe z<=A-pZc7F$^R0x%Bt>`|N08f0jbq1?!)1XXqKEr_4vQux1+Iw$+O8TVdXL%+1rnh` zCE$!VCLCPG+VimAa~`HgWx|L`K4qsB6~#QSU9Vm;Z>LGFS6hSUtz%*o0)zEux_;Q8 zQ*@?!tQuorV6*4=2W}ffU>eBTN;uj |n^J zCmJAhS*=LZ?Kvo{Y)cH1 @4nT?++4_seUhfBD40IH5yG#w8JiY`y-24{nE2w8E zmpBHl4{3I^&$?}c _HYn0?Z;Ra+<5CX;n;+hh972heM2-zWv0 z hJqd@qY2w? zs*gau=MEWl4G*Fr(V%Q!)KhiaOi#V_++ZakXBkmGfK73)>2o-^0J)r QcuvX51|eN<~Ut0q#UlmrT3^ znL852?VCUL+N uk}*|_pPje=r~{|nlAdKn{M9o#?e5IMXQPtp-G)$qm8h2|*HC-g zYi1CevhOhEfJs}tT=o_calSEm0-@}T6cqX_^w}H)l=OhQ^JieF7&jcmk0B8C6Yr9> z#0_?6Lc3P@E}XE+V%s9En3I9WhWM@zY>@?;|7|SmLBjTrBaVP9_Abwi*~A&Y!~or6 zc9-`H4*}W}s3=i$4iHfTN=rZhqx^-4std^O0<3!3g1^!fKxKV-3@B3I6EQ{pPYQ|( z76NIhM5V+S+!heOwLiux;72TMD$&0FoHhX(`Tb-u ?3aW4vq|{=4oh z!`&9`OH|%kmUbd0-lkVDU5(zcT#`bl$p!WuoUmu`3KykxN)K3yzre1EuoG(Z_ZYSV zDh90Z)|d^Q0WD*PKfRBO9UlK!hS>^?kskMOxokDg(pLwl_j-#ME`Mp%aVyGTDSX1b z;r^Im1^k64ad1OgZ`>MBU) }3K&XX#K0#iCm>R)h H HfSBldy;%Z8`K`;m)|IpW0|F_-qGicSJ`2|y*gJWNM=P1gLUjAd1r#LC>kbZ4 z%*PBZ)#`~@{K}e!EvNo*ZBxpYYt!$V(g8hM9f{@-wxW=?o+Nc8I$NX6Yjz{G`O0%J zhu)1QXuzevA;D-l)DB1pX$vM%4?W=VZRgVrP_&0;c-2DPkd;P{Gr(#tId5TgQ;xw` z47&U_9y1hzvsr`bqxvo}B-r}=#QCcxV{x^y*VY;3Y^vnG5V~vAOch#|;*;xgWQ|o7 zT0pP%`ENMT9`td5KP$;Ni#fvFxpUC)G>NEB%SM^Pk#%Rqdnw_1?PcjB7@Sna5PKNb z;b+0+F6!kYKt2xWye?(sG @LZp(24hlf>vcUl6Rk-d_A=8pK03|DcVyQL4K41izxjTNzLtl zV=}`aO7Sd^4nsi}y^ kduv^EtR47%sR>#=Ey0E}kjKfFc%__LnsqkOL zie}<|m*i09{0^V%Cz< W(D38!p9#clR1 zyT8geIy^KQ^&?rKLk(%`%!J0O)#y$B*64KjNUM~!wU$auW>H%gswb(bCFkygRC?-E z7ONdDwwOyc3Xxu7*bSKS7r>+*(fB3)-;w >9#r(*s$re88 hl1l6`%>QoYVxIR$l!7CIC9@#cu!r literal 0 HcmV?d00001 From e2a6ff4c9314148db1602a51b6357815146a7fc9 Mon Sep 17 00:00:00 2001 From: runningman84 Date: Sat, 9 Sep 2017 09:39:40 +0200 Subject: [PATCH 13/15] Added docs for DWD WarnApp Sensor (#3062) * Added docs for dwdwarnapp * Updated documentation As suggested by Landrash --- source/_components/sensor.dwdwarnapp.markdown | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 source/_components/sensor.dwdwarnapp.markdown diff --git a/source/_components/sensor.dwdwarnapp.markdown b/source/_components/sensor.dwdwarnapp.markdown new file mode 100644 index 00000000000..618794ea4cb --- /dev/null +++ b/source/_components/sensor.dwdwarnapp.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "DWD Warn Weather" +description: "Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant." +date: 2017-07-26 22:00 +sidebar: true +comments: false +sharing: true +footer: true +#logo: dwdwarnapp.png +ha_category: Weather +ha_release: 0.51 +ha_iot_class: "Cloud Polling" +--- + +The `dwdwarnapp` sensor platform uses the [Deutsche Wetter Dienst (DWD)](http://www.dwd.de) as a source for current and advance warnings. + +- A name is optional but if multiple regions are used a name will be required. +- The sensor checks for new data every 15 minutes. + +To add the DWD WarnApp sensor to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: dwdwarnapp + region_name: Hansestadt Hamburg +``` + +To get the region name: +- Find your region here: `https://www.dwd.de/DE/wetter/warnungen_landkreise/warnWetter_node.html?ort=Hamburg` +- Verify if you find any warning for your region here: `https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json?jsonp=loadWarnings` + +The warning level is between 0 (no danger) and 4 (warnings of extreme weather): +- Warnungen vor extremem Unwetter (Stufe 4) +- Unwetterwarnungen (Stufe 3) +- Warnungen vor markantem Wetter (Stufe 2) +- Wetterwarnungen (Stufe 1) + +Configuration variables: + +- **region_name** (*Optional*): The region name string as identified from the DWD website. If not given, defaults to Hansestadt Hamburg. +- **name** (*Optional*): The name you would like to give to the warnapp sensor. From 3ea0f18dc2bc119c16a75eebb33c97a046434fa1 Mon Sep 17 00:00:00 2001 From: Philipp Schmitt Date: Sat, 9 Sep 2017 09:48:33 +0200 Subject: [PATCH 14/15] Add missing text node (#3109) --- source/_components/apiai.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/apiai.markdown b/source/_components/apiai.markdown index 4e96645e498..664540b6a1c 100644 --- a/source/_components/apiai.markdown +++ b/source/_components/apiai.markdown @@ -70,7 +70,7 @@ apiai: intent_script: Temperature: - speech: + speech: text: The temperature at home is {{ states('sensor.home_temp') }} degrees LocateIntent: speech: From d55564cc6e430f23459d0e34135d817dec66fd3f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 9 Sep 2017 00:50:01 -0700 Subject: [PATCH 15/15] Add blog post --- _config.yml | 8 +- ...=> media_player.yamaha_musiccast.markdown} | 0 source/_components/sensor.season.markdown | 29 ++ source/_posts/2017-09-09-release-53.markdown | 451 ++++++++++++++++++ .../images/blog/2017-09-0.53/components.png | Bin 0 -> 34150 bytes .../blog/2017-09-0.53/customize-editor.png | Bin 0 -> 24615 bytes 6 files changed, 484 insertions(+), 4 deletions(-) rename source/_components/{media_player.yamaha_multicast.markdown => media_player.yamaha_musiccast.markdown} (100%) create mode 100644 source/_components/sensor.season.markdown create mode 100644 source/_posts/2017-09-09-release-53.markdown create mode 100644 source/images/blog/2017-09-0.53/components.png create mode 100644 source/images/blog/2017-09-0.53/customize-editor.png diff --git a/_config.yml b/_config.yml index ff5e1e7a0dc..df6d10b5780 100644 --- a/_config.yml +++ b/_config.yml @@ -139,12 +139,12 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 52 -current_patch_version: 1 -date_released: 2017-08-28 +current_minor_version: 53 +current_patch_version: 0 +date_released: 2017-09-9 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0521---august-28" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): diff --git a/source/_components/media_player.yamaha_multicast.markdown b/source/_components/media_player.yamaha_musiccast.markdown similarity index 100% rename from source/_components/media_player.yamaha_multicast.markdown rename to source/_components/media_player.yamaha_musiccast.markdown diff --git a/source/_components/sensor.season.markdown b/source/_components/sensor.season.markdown new file mode 100644 index 00000000000..a2d21e35235 --- /dev/null +++ b/source/_components/sensor.season.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "Season Sensor" +description: "Instructions how to add season sensors into Home Assistant." +date: 2017-07-04 07:00:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.53 +--- + +This sensor will display the current astronomical or meteorological season (Spring, Summer, Autumn, Winter) based on the users setting in the config file. + +All information about how the seasons work was taken from Wikipedia: + + - [https://en.wikipedia.org/wiki/Season#Astronomical](https://en.wikipedia.org/wiki/Season#Astronomical) + - [https://en.wikipedia.org/wiki/Equinox](https://en.wikipedia.org/wiki/Equinox) + - [https://en.wikipedia.org/wiki/Solstice](https://en.wikipedia.org/wiki/Solstice) + + +```yaml +# Example configuration.yaml entry +sensor: + - platform: season + type: astronomical (optional, will default to astronomical) +``` diff --git a/source/_posts/2017-09-09-release-53.markdown b/source/_posts/2017-09-09-release-53.markdown new file mode 100644 index 00000000000..f056fc6ead6 --- /dev/null +++ b/source/_posts/2017-09-09-release-53.markdown @@ -0,0 +1,451 @@ +--- +layout: post +title: "0.53: Tesla, Customize editor, and super fast KNX rewrite" +description: "Also now supports a text input UI component, Mopar and Geofency." +date: 2017-09-09 00:11:05 +date_formatted: "September 9, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-09-0.53/components.png +--- + + + +The Home Assistant community has been super busy in the last two weeks to bring you this amazing release. 60 different contributors have done over a 100 PRs filled with new features, bug fixes and performance improvements. + +9 days away from our 4th birthday, we've just accomplished a couple of great milestones that I would love to share with you. We've hit over 8000 stars 🌟 on GitHub and starting this release we now ship over 800 platforms and components! + +## Customize editor + +Another step in making Home Assistant configurable via the frontend has been contributed by @andrey-git: a customization editor! You are now able to inspect all (possible) customizations of an entity and update them with just a few taps. Want to change the name or icon of an entity? All possible in mere seconds. + +
+
+ +New Home Assistant configurations will be created correctly automatically. If you are an existing user, make sure you have the config screen enabled and that you include customizations from `customize.yaml`. + +```yaml +# Example configuration.yaml entry +homeassistant: + # Include the customizations. + customize: !include customize.yaml + +# Enable the config screen +config: +``` + +## Tesla + +Thanks to the contribution by @zabuldon, you will now be able to control your Tesla car from Home Assistant. You're able to check the temperature inside and outside your car, control your AC and unlock the car. + +## Input text + +This release introduces a new input component: `input_text` contributed by @BioSehnsucht. With this component you will be able to set free form from the UI and then let that be used by your automations or templates. + +## KNX + +This release ships a new KNX implementation thanks to @Julius2342. It will instantly show all changed states of KNX devices within Home Assistant. Additionally it brings support for HVAC devices and notification services. It also adds a service for direct communication with the KNX bus. You can connect to KNX/IP routing and tunnelling devices. In the background it uses asyncio communication. Check the climate integration in action [here](https://www.youtube.com/watch?v=JI0VJzlGpx4) and see the lights in action below: + ++Screenshot of the new customize editor. +
+ ++ +## New Platforms + +- Xiaomi Philips Lights integration ([@syssi] - [#9087]) ([light.xiaomi_philipslight docs]) (new-platform) +- Mycroft notify/component ([@btotharye] - [#9173]) ([mycroft docs]) ([notify.mycroft docs]) (new-platform) +- Add counter component ([@fabaff] - [#9146]) ([counter docs]) (new-platform) +- Support for season sensor ([@w1ll1am23] - [#8958]) ([sensor.season docs]) (new-platform) +- Abode push events and lock, cover, and switch components ([@1091741+MisterWil] - [#9095]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) ([cover.abode docs]) ([lock.abode docs]) ([switch.abode docs]) (new-platform) +- Bayesian Binary Sensor ([@jlmcgehee21] - [#8810]) ([binary_sensor.bayesian docs]) (new-platform) +- Add Tank Utility sensor ([@krismolendyke] - [#9132]) ([sensor.tank_utility docs]) (new-platform) +- Tesla platform ([@zabuldon] - [#9211]) ([tesla docs]) ([binary_sensor.tesla docs]) ([climate.tesla docs]) ([device_tracker.tesla docs]) ([lock.tesla docs]) ([sensor.tesla docs]) (new-platform) +- mopar sensor ([@happyleavesaoc] - [#9136]) ([sensor.mopar docs]) (new-platform) +- Add Geofency device tracker ([@gunnarhelgason] - [#9106]) ([device_tracker.geofency docs]) (new-platform) +- Added DWD WarnApp Sensor ([@runningman84] - [#8657]) ([sensor.dwd_warnapp docs]) (new-platform) +- Add input_text component ([@BioSehnsucht] - [#9112]) ([input_text docs]) (new-platform) +- Introducing a media_player component for Yamaha Multicast devices ([@jalmeroth] - [#9258]) ([media_player.yamaha_musiccast docs]) (new-platform) +- Stable and asynchronous KNX library. ([@Julius2342] - [#8725]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) (new-platform) +- Adds the AirVisual air quality sensor platform ([@bachya] - [#9320]) ([sensor.airvisual docs]) (new-platform) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + + +## Breaking Changes + +- The new customize editor is using the file `customize.yaml` in your config folder. If you are using this file today for other config, make sure to rename it before using the new customize UI editor. ([@andrey-git] - [#9134]) ([config docs]) (breaking change) (new-platform) +- The frontend component now supports loading custom html files when Home Assistant front end starts ([@andrey-git] - [#9150]) (breaking change). It could be Javascript, CSS or custom Web Components. Along there was a breaking change in the way Custom UI is used: + * `custom_ui_state_card` now specifies the exact element name and not a suffix after `state-card`. So if you had `state_card_custom_ui: custom-ui` in your config, you should change it to `state_card_custom_ui: state-card-custom-ui` + * `custom_ui_state_card` no longer makes the html fetch, you should make it separately: + +``` +frontend: + extra_html_url: + - /local/custom_ui/state-card-custom-ui.html +``` + +- The Egardia alarm control panel now defaults to port 52010 instead of 85. ([@jeroenterheerdt] - [#9225]) ([alarm_control_panel.egardia docs]) (breaking change) +- The Homematic `delay` option has been dropped because it is no longer necessary ([@pvizeli] - [#9058]) ([homematic docs]) ([binary_sensor.homematic docs]) ([climate.homematic docs]) ([cover.homematic docs]) ([light.homematic docs]) ([sensor.homematic docs]) ([switch.homematic docs]) (breaking change) +- Switch - Dlink: Remove spaces and capital letters from attribute names for consistency ([@emlt] - [#9277]) ([switch.dlink docs]) (breaking change) + +## All changes + +- Xiaomi Philips Lights integration ([@syssi] - [#9087]) ([light.xiaomi_philipslight docs]) (new-platform) +- Backend changes for customize config panel. ([@andrey-git] - [#9134]) ([config docs]) (breaking change) +- Upgrade async_timeout to 1.3.0 ([@fabaff] - [#9156]) +- Remove links to gitter ([@fabaff] - [#9155]) +- Upgrade sphinx-autodoc-typehints to 1.2.3 ([@fabaff] - [#9151]) +- Upgrade uber_rides to 0.5.2 ([@fabaff] - [#9149]) ([sensor.uber docs]) +- Allow specifying custom html urls to load. ([@andrey-git] - [#9150]) (breaking change) +- Allow getting number of available states in template ([@balloob] - [#9158]) +- upgrade xiaomi lib to 0.3.1 to supprt water sensor ([@danielhiversen] - [#9168]) ([xiaomi docs]) +- Use node_modules gulp in script/build_frontend ([@armills] - [#9170]) +- Mysensors nodes can be renamed in config file ([@EmitKiwi] - [#9123]) ([mysensors docs]) +- Xiaomi gateway: Device support for the Aqara Water Leak Sensor (sensor_wleak.aq1) ([@syssi] - [#9172]) ([xiaomi docs]) ([binary_sensor.xiaomi docs]) +- "TypeError: write_to_hub() takes 2 positional arguments but 4 were given" fixed. ([@syssi] - [#9174]) ([cover.xiaomi docs]) +- Mycroft notify/component ([@btotharye] - [#9173]) ([mycroft docs]) ([notify.mycroft docs]) (new-platform) +- Fix dht22 when no data was read initially #8976 ([@maweki] - [#9198]) ([sensor.dht docs]) +- Update pushbullet.py ([@bobnwk] - [#9200]) ([notify.pushbullet docs]) +- fix worldtidesinfo #9184 ([@aetolus] - [#9201]) ([sensor.worldtidesinfo docs]) +- Add "status" to Sonarr sensor ([@tboyce021] - [#9204]) ([sensor.radarr docs]) ([sensor.sonarr docs]) +- Prevent error when no forecast data was available ([@mjj4791] - [#9176]) ([sensor.buienradar docs]) +- Fix and optimize digitalloggers platform ([@dale3h] - [#9203]) ([switch.digitalloggers docs]) +- Add counter component ([@fabaff] - [#9146]) ([counter docs]) (new-platform) +- Support for season sensor ([@w1ll1am23] - [#8958]) ([sensor.season docs]) (new-platform) +- Issue #6893 in rfxtrx ([@danielhiversen] - [#9130]) ([rfxtrx docs]) +- Refactor rfxtrx ([@danielhiversen] - [#9117]) ([rfxtrx docs]) ([cover.rfxtrx docs]) ([light.rfxtrx docs]) ([switch.rfxtrx docs]) +- Upgrade pymysensors to 0.11.1 ([@MartinHjelmare] - [#9212]) ([mysensors docs]) +- Abode push events and lock, cover, and switch components ([@1091741+MisterWil] - [#9095]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) ([cover.abode docs]) ([lock.abode docs]) ([switch.abode docs]) (new-platform) +- Add cloud auth support ([@balloob] - [#9208]) +- Bayesian Binary Sensor ([@jlmcgehee21] - [#8810]) ([binary_sensor.bayesian docs]) (new-platform) +- directv: extended discovery via REST api, bug fix ([@sielicki] - [#8800]) ([media_player.directv docs]) +- Upgrade pyasn1 to 0.3.3 and pyasn1-modules to 0.1.1 ([@fabaff] - [#9216]) ([notify.xmpp docs]) +- Upgrade sendgrid to 5.0.1 ([@fabaff] - [#9215]) ([notify.sendgrid docs]) +- Fix fitbit error when trying to access token after upgrade. ([@tchellomello] - [#9183]) ([sensor.fitbit docs]) +- Allow sonos to select album as a source ([@commento] - [#9221]) ([media_player.sonos docs]) +- Add max_age to statistics sensor ([@tinloaf] - [#8790]) ([sensor.statistics docs]) +- Egardia package to .19 and change in port number for egardiaserver ([@jeroenterheerdt] - [#9225]) ([alarm_control_panel.egardia docs]) (breaking change) +- pushbullet, send a file from url ([@danielhiversen] - [#9189]) ([notify.pushbullet docs]) +- Add Tank Utility sensor ([@krismolendyke] - [#9132]) ([sensor.tank_utility docs]) (new-platform) +- Upgrade shodan to 1.7.5 ([@fabaff] - [#9228]) ([sensor.shodan docs]) +- Tesla platform ([@zabuldon] - [#9211]) ([tesla docs]) ([binary_sensor.tesla docs]) ([climate.tesla docs]) ([device_tracker.tesla docs]) ([lock.tesla docs]) ([sensor.tesla docs]) (new-platform) +- [light.tradfri] Full range of white spectrum lightbulbs support ([@matemaciek] - [#9224]) ([tradfri docs]) ([light.tradfri docs]) +- Allow panels with external URL ([@andrey-git] - [#9214]) +- Use ZCL mandatory attribute to determine ZHA light capabilities ([@jkl1337] - [#9232]) ([light.zha docs]) +- A bugfix for pushbullet ([@danielhiversen] - [#9237]) ([notify.pushbullet docs]) +- mopar sensor ([@happyleavesaoc] - [#9136]) ([sensor.mopar docs]) (new-platform) +- Upgrade discord.py to 0.16.11 ([@fabaff] - [#9239]) ([notify.discord docs]) +- Skip automatic events older than latest data ([@armills] - [#9230]) ([device_tracker.automatic docs]) +- title and message was swapped in pushbullet ([@danielhiversen] - [#9241]) ([notify.pushbullet docs]) +- Fix possible KeyError ([@MartinHjelmare] - [#9242]) ([mysensors docs]) +- WIP: Homematic improvments with new hass interfaces ([@pvizeli] - [#9058]) ([homematic docs]) ([binary_sensor.homematic docs]) ([climate.homematic docs]) ([cover.homematic docs]) ([light.homematic docs]) ([sensor.homematic docs]) ([switch.homematic docs]) (breaking change) +- Add available to sonos ([@pvizeli] - [#9243]) ([media_player.sonos docs]) +- Make sure Ring binary_sensor state will update only if device_id matches ([@tchellomello] - [#9247]) ([binary_sensor.ring docs]) +- Added configurable timeout for receiver HTTP requests | Additional AV… ([@scarface-4711] - [#9244]) ([media_player.denonavr docs]) +- upgrade xiaomi lib ([@danielhiversen] - [#9250]) ([xiaomi docs]) +- Fix nello.io login ([@pschmitt] - [#9251]) ([lock.nello docs]) +- This is to fix #6386: Manual Alarm not re-arm after 2nd trigger ([@snjoetw] - [#9249]) ([alarm_control_panel.manual docs]) +- Version bump of DLink switch to v0.6.0 ([@LinuxChristian] - [#9252]) ([switch.dlink docs]) +- Upgrade sendgrid to 5.2.0 ([@fabaff] - [#9254]) ([notify.sendgrid docs]) +- Upgrade psutil to 5.3.0 ([@fabaff] - [#9253]) ([sensor.systemmonitor docs]) +- Adding ZWave CentralScene activation handler. ([@sirmalloc] - [#9178]) ([zwave docs]) +- Add Geofency device tracker ([@gunnarhelgason] - [#9106]) ([device_tracker.geofency docs]) (new-platform) +- flux: fix for when stop_time is after midnight ([@abmantis] - [#8932]) +- Change attribute names ([@emlt] - [#9277]) ([switch.dlink docs]) (breaking change) +- insteon_plm: fix typo in attributes ([@drkp] - [#9284]) ([insteon_plm docs]) +- discovery: If unknown NetDisco service discovered, log about it. ([@pfalcon] - [#9280]) +- Upgrade youtube_dl to 2017.9.2 ([@fabaff] - [#9279]) ([media_extractor docs]) +- Upgrade python-telegram-bot to 8.0.0 ([@fabaff] - [#9282]) ([telegram_bot docs]) ([switch.rest docs]) +- rfxtrx lib upgrade ([@danielhiversen] - [#9288]) ([rfxtrx docs]) +- Fixing bug when using egardiaserver - package requirement updated to 1.0.20. ([@jeroenterheerdt] - [#9294]) ([alarm_control_panel.egardia docs]) +- Added intent_type to exception log ([@andreasjacobsen93] - [#9289]) ([snips docs]) +- Handle spotify failing to refresh access_token ([@Tommatheussen] - [#9295]) ([media_player.spotify docs]) +- Core track same state for a period / Allow on platforms ([@pvizeli] - [#9273]) +- Improved Lutron Caseta shade support ([@30200174+upsert] - [#9302]) ([lutron_caseta docs]) ([cover.lutron_caseta docs]) ([light.lutron_caseta docs]) ([switch.lutron_caseta docs]) +- Upgrade mycroftapi to 2.0 ([@btotharye] - [#9309]) ([mycroft docs]) +- Fix for Honeywell Round thermostats ([@dansarginson] - [#9308]) ([climate.honeywell docs]) +- Update jinja to 2.9.6 ([@pvizeli] - [#9306]) +- Ensure display-name does not exceed 12 characters for CecAdapter. ([@gollo] - [#9268]) ([hdmi_cec docs]) +- Expose hue group 0 ([@filcole] - [#8663]) ([light.hue docs]) +- Added DWD WarnApp Sensor ([@runningman84] - [#8657]) ([sensor.dwd_warnapp docs]) (new-platform) +- Add input_text component ([@BioSehnsucht] - [#9112]) ([input_text docs]) (new-platform) +- Introducing a media_player component for Yamaha Multicast devices ([@jalmeroth] - [#9258]) ([media_player.yamaha_musiccast docs]) (new-platform) +- Handle the case where no registration number is available (instead display VIN (vehicle identification number)). ([@molobrakos] - [#9073]) ([volvooncall docs]) ([device_tracker.volvooncall docs]) +- Add post_pending_state attribute to manual alarm_control_panel ([@snjoetw] - [#9291]) ([alarm_control_panel.manual docs]) +- Add new config variable to MQTT light ([@belyalov] - [#9304]) ([light.mqtt docs]) +- Follow Twitter guidelines for media upload by conforming to the "STATUS" phase, when required, and by providing "media_category" information. These will, for example, allow users to upload videos that exceed the basic 30 second limit. ([@MikeChristianson] - [#9261]) ([notify.twitter docs]) +- Optionally disable ssl certificate validity check. ([@1868995+ohmer1] - [#9181]) ([notify.xmpp docs]) +- Version bump dlib to 1.0.0 ([@arsaboo] - [#9316]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) +- Fixed bug with devices not being discovered correctly. ([@1091741+MisterWil] - [#9311]) ([abode docs]) +- Platform not ready behavior fixed. ([@syssi] - [#9325]) ([light.xiaomi_philipslight docs]) +- Stable and asynchronous KNX library. ([@Julius2342] - [#8725]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) (new-platform) +- Fix for potential issue with tesla initialization ([@zabuldon] - [#9307]) ([tesla docs]) +- Adds the AirVisual air quality sensor platform ([@bachya] - [#9320]) ([sensor.airvisual docs]) (new-platform) +- Cleanup input_text ([@balloob] - [#9326]) ([input_text docs]) +- Bump pyHik version to add IO support ([@mezz64] - [#9341]) ([binary_sensor.hikvision docs]) + +[#8657]: https://github.com/home-assistant/home-assistant/pull/8657 +[#8663]: https://github.com/home-assistant/home-assistant/pull/8663 +[#8725]: https://github.com/home-assistant/home-assistant/pull/8725 +[#8790]: https://github.com/home-assistant/home-assistant/pull/8790 +[#8800]: https://github.com/home-assistant/home-assistant/pull/8800 +[#8810]: https://github.com/home-assistant/home-assistant/pull/8810 +[#8932]: https://github.com/home-assistant/home-assistant/pull/8932 +[#8958]: https://github.com/home-assistant/home-assistant/pull/8958 +[#9058]: https://github.com/home-assistant/home-assistant/pull/9058 +[#9073]: https://github.com/home-assistant/home-assistant/pull/9073 +[#9087]: https://github.com/home-assistant/home-assistant/pull/9087 +[#9095]: https://github.com/home-assistant/home-assistant/pull/9095 +[#9106]: https://github.com/home-assistant/home-assistant/pull/9106 +[#9112]: https://github.com/home-assistant/home-assistant/pull/9112 +[#9117]: https://github.com/home-assistant/home-assistant/pull/9117 +[#9123]: https://github.com/home-assistant/home-assistant/pull/9123 +[#9130]: https://github.com/home-assistant/home-assistant/pull/9130 +[#9132]: https://github.com/home-assistant/home-assistant/pull/9132 +[#9134]: https://github.com/home-assistant/home-assistant/pull/9134 +[#9136]: https://github.com/home-assistant/home-assistant/pull/9136 +[#9146]: https://github.com/home-assistant/home-assistant/pull/9146 +[#9149]: https://github.com/home-assistant/home-assistant/pull/9149 +[#9150]: https://github.com/home-assistant/home-assistant/pull/9150 +[#9151]: https://github.com/home-assistant/home-assistant/pull/9151 +[#9155]: https://github.com/home-assistant/home-assistant/pull/9155 +[#9156]: https://github.com/home-assistant/home-assistant/pull/9156 +[#9158]: https://github.com/home-assistant/home-assistant/pull/9158 +[#9168]: https://github.com/home-assistant/home-assistant/pull/9168 +[#9170]: https://github.com/home-assistant/home-assistant/pull/9170 +[#9172]: https://github.com/home-assistant/home-assistant/pull/9172 +[#9173]: https://github.com/home-assistant/home-assistant/pull/9173 +[#9174]: https://github.com/home-assistant/home-assistant/pull/9174 +[#9176]: https://github.com/home-assistant/home-assistant/pull/9176 +[#9178]: https://github.com/home-assistant/home-assistant/pull/9178 +[#9181]: https://github.com/home-assistant/home-assistant/pull/9181 +[#9183]: https://github.com/home-assistant/home-assistant/pull/9183 +[#9189]: https://github.com/home-assistant/home-assistant/pull/9189 +[#9198]: https://github.com/home-assistant/home-assistant/pull/9198 +[#9200]: https://github.com/home-assistant/home-assistant/pull/9200 +[#9201]: https://github.com/home-assistant/home-assistant/pull/9201 +[#9203]: https://github.com/home-assistant/home-assistant/pull/9203 +[#9204]: https://github.com/home-assistant/home-assistant/pull/9204 +[#9208]: https://github.com/home-assistant/home-assistant/pull/9208 +[#9211]: https://github.com/home-assistant/home-assistant/pull/9211 +[#9212]: https://github.com/home-assistant/home-assistant/pull/9212 +[#9214]: https://github.com/home-assistant/home-assistant/pull/9214 +[#9215]: https://github.com/home-assistant/home-assistant/pull/9215 +[#9216]: https://github.com/home-assistant/home-assistant/pull/9216 +[#9221]: https://github.com/home-assistant/home-assistant/pull/9221 +[#9224]: https://github.com/home-assistant/home-assistant/pull/9224 +[#9225]: https://github.com/home-assistant/home-assistant/pull/9225 +[#9228]: https://github.com/home-assistant/home-assistant/pull/9228 +[#9230]: https://github.com/home-assistant/home-assistant/pull/9230 +[#9232]: https://github.com/home-assistant/home-assistant/pull/9232 +[#9237]: https://github.com/home-assistant/home-assistant/pull/9237 +[#9239]: https://github.com/home-assistant/home-assistant/pull/9239 +[#9241]: https://github.com/home-assistant/home-assistant/pull/9241 +[#9242]: https://github.com/home-assistant/home-assistant/pull/9242 +[#9243]: https://github.com/home-assistant/home-assistant/pull/9243 +[#9244]: https://github.com/home-assistant/home-assistant/pull/9244 +[#9247]: https://github.com/home-assistant/home-assistant/pull/9247 +[#9249]: https://github.com/home-assistant/home-assistant/pull/9249 +[#9250]: https://github.com/home-assistant/home-assistant/pull/9250 +[#9251]: https://github.com/home-assistant/home-assistant/pull/9251 +[#9252]: https://github.com/home-assistant/home-assistant/pull/9252 +[#9253]: https://github.com/home-assistant/home-assistant/pull/9253 +[#9254]: https://github.com/home-assistant/home-assistant/pull/9254 +[#9258]: https://github.com/home-assistant/home-assistant/pull/9258 +[#9261]: https://github.com/home-assistant/home-assistant/pull/9261 +[#9268]: https://github.com/home-assistant/home-assistant/pull/9268 +[#9273]: https://github.com/home-assistant/home-assistant/pull/9273 +[#9277]: https://github.com/home-assistant/home-assistant/pull/9277 +[#9279]: https://github.com/home-assistant/home-assistant/pull/9279 +[#9280]: https://github.com/home-assistant/home-assistant/pull/9280 +[#9282]: https://github.com/home-assistant/home-assistant/pull/9282 +[#9284]: https://github.com/home-assistant/home-assistant/pull/9284 +[#9288]: https://github.com/home-assistant/home-assistant/pull/9288 +[#9289]: https://github.com/home-assistant/home-assistant/pull/9289 +[#9291]: https://github.com/home-assistant/home-assistant/pull/9291 +[#9294]: https://github.com/home-assistant/home-assistant/pull/9294 +[#9295]: https://github.com/home-assistant/home-assistant/pull/9295 +[#9302]: https://github.com/home-assistant/home-assistant/pull/9302 +[#9304]: https://github.com/home-assistant/home-assistant/pull/9304 +[#9306]: https://github.com/home-assistant/home-assistant/pull/9306 +[#9307]: https://github.com/home-assistant/home-assistant/pull/9307 +[#9308]: https://github.com/home-assistant/home-assistant/pull/9308 +[#9309]: https://github.com/home-assistant/home-assistant/pull/9309 +[#9311]: https://github.com/home-assistant/home-assistant/pull/9311 +[#9316]: https://github.com/home-assistant/home-assistant/pull/9316 +[#9320]: https://github.com/home-assistant/home-assistant/pull/9320 +[#9325]: https://github.com/home-assistant/home-assistant/pull/9325 +[#9326]: https://github.com/home-assistant/home-assistant/pull/9326 +[#9341]: https://github.com/home-assistant/home-assistant/pull/9341 +[@1091741+MisterWil]: https://github.com/1091741+MisterWil +[@1868995+ohmer1]: https://github.com/1868995+ohmer1 +[@30200174+upsert]: https://github.com/30200174+upsert +[@BioSehnsucht]: https://github.com/BioSehnsucht +[@EmitKiwi]: https://github.com/EmitKiwi +[@Julius2342]: https://github.com/Julius2342 +[@LinuxChristian]: https://github.com/LinuxChristian +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MikeChristianson]: https://github.com/MikeChristianson +[@Tommatheussen]: https://github.com/Tommatheussen +[@abmantis]: https://github.com/abmantis +[@aetolus]: https://github.com/aetolus +[@andreasjacobsen93]: https://github.com/andreasjacobsen93 +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@belyalov]: https://github.com/belyalov +[@bobnwk]: https://github.com/bobnwk +[@btotharye]: https://github.com/btotharye +[@commento]: https://github.com/commento +[@dale3h]: https://github.com/dale3h +[@danielhiversen]: https://github.com/danielhiversen +[@dansarginson]: https://github.com/dansarginson +[@drkp]: https://github.com/drkp +[@emlt]: https://github.com/emlt +[@fabaff]: https://github.com/fabaff +[@filcole]: https://github.com/filcole +[@gollo]: https://github.com/gollo +[@gunnarhelgason]: https://github.com/gunnarhelgason +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@jalmeroth]: https://github.com/jalmeroth +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@jkl1337]: https://github.com/jkl1337 +[@jlmcgehee21]: https://github.com/jlmcgehee21 +[@krismolendyke]: https://github.com/krismolendyke +[@matemaciek]: https://github.com/matemaciek +[@maweki]: https://github.com/maweki +[@mezz64]: https://github.com/mezz64 +[@mjj4791]: https://github.com/mjj4791 +[@molobrakos]: https://github.com/molobrakos +[@pfalcon]: https://github.com/pfalcon +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@runningman84]: https://github.com/runningman84 +[@scarface-4711]: https://github.com/scarface-4711 +[@sielicki]: https://github.com/sielicki +[@sirmalloc]: https://github.com/sirmalloc +[@snjoetw]: https://github.com/snjoetw +[@syssi]: https://github.com/syssi +[@tboyce021]: https://github.com/tboyce021 +[@tchellomello]: https://github.com/tchellomello +[@tinloaf]: https://github.com/tinloaf +[@w1ll1am23]: https://github.com/w1ll1am23 +[@zabuldon]: https://github.com/zabuldon +[abode docs]: https://home-assistant.io/components/abode/ +[alarm_control_panel.abode docs]: https://home-assistant.io/components/alarm_control_panel.abode/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alarm_control_panel.manual docs]: https://home-assistant.io/components/alarm_control_panel.manual/ +[binary_sensor.abode docs]: https://home-assistant.io/components/binary_sensor.abode/ +[binary_sensor.bayesian docs]: https://home-assistant.io/components/binary_sensor.bayesian/ +[binary_sensor.hikvision docs]: https://home-assistant.io/components/binary_sensor.hikvision/ +[binary_sensor.homematic docs]: https://home-assistant.io/components/binary_sensor.homematic/ +[binary_sensor.ring docs]: https://home-assistant.io/components/binary_sensor.ring/ +[binary_sensor.tesla docs]: https://home-assistant.io/components/binary_sensor.tesla/ +[binary_sensor.xiaomi docs]: https://home-assistant.io/components/binary_sensor.xiaomi/ +[binary_sensor.knx docs]: https://home-assistant.io/components/binary_sensor.knx/ +[climate.homematic docs]: https://home-assistant.io/components/climate.homematic/ +[climate.honeywell docs]: https://home-assistant.io/components/climate.honeywell/ +[climate.tesla docs]: https://home-assistant.io/components/climate.tesla/ +[climate.knx docs]: https://home-assistant.io/components/climate.knx/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.cloud_api docs]: https://home-assistant.io/components/cloud.cloud_api/ +[cloud.const docs]: https://home-assistant.io/components/cloud.const/ +[cloud.http_api docs]: https://home-assistant.io/components/cloud.http_api/ +[cloud.util docs]: https://home-assistant.io/components/cloud.util/ +[config docs]: https://home-assistant.io/components/config/ +[config.customize docs]: https://home-assistant.io/components/config.customize/ +[counter docs]: https://home-assistant.io/components/counter/ +[cover.abode docs]: https://home-assistant.io/components/cover.abode/ +[cover.homematic docs]: https://home-assistant.io/components/cover.homematic/ +[cover.lutron_caseta docs]: https://home-assistant.io/components/cover.lutron_caseta/ +[cover.rfxtrx docs]: https://home-assistant.io/components/cover.rfxtrx/ +[cover.xiaomi docs]: https://home-assistant.io/components/cover.xiaomi/ +[cover.knx docs]: https://home-assistant.io/components/cover.knx/ +[device_tracker.automatic docs]: https://home-assistant.io/components/device_tracker.automatic/ +[device_tracker.geofency docs]: https://home-assistant.io/components/device_tracker.geofency/ +[device_tracker.tesla docs]: https://home-assistant.io/components/device_tracker.tesla/ +[device_tracker.volvooncall docs]: https://home-assistant.io/components/device_tracker.volvooncall/ +[hdmi_cec docs]: https://home-assistant.io/components/hdmi_cec/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[image_processing.dlib_face_detect docs]: https://home-assistant.io/components/image_processing.dlib_face_detect/ +[image_processing.dlib_face_identify docs]: https://home-assistant.io/components/image_processing.dlib_face_identify/ +[input_text docs]: https://home-assistant.io/components/input_text/ +[input_text docs]: https://home-assistant.io/components/input_text/ +[insteon_plm docs]: https://home-assistant.io/components/insteon_plm/ +[light.homematic docs]: https://home-assistant.io/components/light.homematic/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.lutron_caseta docs]: https://home-assistant.io/components/light.lutron_caseta/ +[light.mqtt docs]: https://home-assistant.io/components/light.mqtt/ +[light.xiaomi_philipslight docs]: https://home-assistant.io/components/light.xiaomi_philipslight/ +[light.rfxtrx docs]: https://home-assistant.io/components/light.rfxtrx/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[light.xiaomi_philipslight docs]: https://home-assistant.io/components/light.xiaomi_philipslight/ +[light.knx docs]: https://home-assistant.io/components/light.knx/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[lock.abode docs]: https://home-assistant.io/components/lock.abode/ +[lock.nello docs]: https://home-assistant.io/components/lock.nello/ +[lock.tesla docs]: https://home-assistant.io/components/lock.tesla/ +[lutron_caseta docs]: https://home-assistant.io/components/lutron_caseta/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[media_player.directv docs]: https://home-assistant.io/components/media_player.directv/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.spotify docs]: https://home-assistant.io/components/media_player.spotify/ +[media_player.yamaha_musiccast docs]: https://home-assistant.io/components/media_player.yamaha_musiccast/ +[mycroft docs]: https://home-assistant.io/components/mycroft/ +[mysensors docs]: https://home-assistant.io/components/mysensors/ +[notify.discord docs]: https://home-assistant.io/components/notify.discord/ +[notify.mycroft docs]: https://home-assistant.io/components/notify.mycroft/ +[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/ +[notify.sendgrid docs]: https://home-assistant.io/components/notify.sendgrid/ +[notify.twitter docs]: https://home-assistant.io/components/notify.twitter/ +[notify.xmpp docs]: https://home-assistant.io/components/notify.xmpp/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/ +[sensor.buienradar docs]: https://home-assistant.io/components/sensor.buienradar/ +[sensor.dht docs]: https://home-assistant.io/components/sensor.dht/ +[sensor.dwd_warnapp docs]: https://home-assistant.io/components/sensor.dwd_warnapp/ +[sensor.fitbit docs]: https://home-assistant.io/components/sensor.fitbit/ +[sensor.homematic docs]: https://home-assistant.io/components/sensor.homematic/ +[sensor.mopar docs]: https://home-assistant.io/components/sensor.mopar/ +[sensor.radarr docs]: https://home-assistant.io/components/sensor.radarr/ +[sensor.season docs]: https://home-assistant.io/components/sensor.season/ +[sensor.shodan docs]: https://home-assistant.io/components/sensor.shodan/ +[sensor.sonarr docs]: https://home-assistant.io/components/sensor.sonarr/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tank_utility docs]: https://home-assistant.io/components/sensor.tank_utility/ +[sensor.tesla docs]: https://home-assistant.io/components/sensor.tesla/ +[sensor.uber docs]: https://home-assistant.io/components/sensor.uber/ +[sensor.worldtidesinfo docs]: https://home-assistant.io/components/sensor.worldtidesinfo/ +[sensor.knx docs]: https://home-assistant.io/components/sensor.knx/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.abode docs]: https://home-assistant.io/components/switch.abode/ +[switch.digitalloggers docs]: https://home-assistant.io/components/switch.digitalloggers/ +[switch.dlink docs]: https://home-assistant.io/components/switch.dlink/ +[switch.homematic docs]: https://home-assistant.io/components/switch.homematic/ +[switch.lutron_caseta docs]: https://home-assistant.io/components/switch.lutron_caseta/ +[switch.rest docs]: https://home-assistant.io/components/switch.rest/ +[switch.rfxtrx docs]: https://home-assistant.io/components/switch.rfxtrx/ +[switch.knx docs]: https://home-assistant.io/components/switch.knx/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[tesla docs]: https://home-assistant.io/components/tesla/ +[tradfri docs]: https://home-assistant.io/components/tradfri/ +[volvooncall docs]: https://home-assistant.io/components/volvooncall/ +[xiaomi docs]: https://home-assistant.io/components/xiaomi/ +[knx docs]: https://home-assistant.io/components/knx/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/images/blog/2017-09-0.53/components.png b/source/images/blog/2017-09-0.53/components.png new file mode 100644 index 0000000000000000000000000000000000000000..6cbcb055f2e3442f2c27f4a94c95ddf4ce00beb6 GIT binary patch literal 34150 zcmb@tWmH^I(=OOR1C2NC&`7Wl9D+lm4G9|D-GjRX=*A^98r%aR5Zr@nLvSa!1_-VJ zLNa;Z@7|febJxtDvsRs5Rr{%3YoGP3y`K}Ssjf_bOM?pl00>lI3fcew5DEaG3xP2H zy%`J}uKs5{X};D`{PX9}&CSi#)z#VA+2_xn(a_Ki4-ePZ*Do$Ej*pM`_xI=L=exVR zF_hAn%g=s4Jz*#{JUl!;{{Br^tM>jw9<=jDxAy|grFr@L%H7@FmoHz)$;q{QuKN1= zWjn5>r>F1l?^9D!WLi&aYim0@J4Z%FxOw?RMMYg*T@8CLGb`DhXt=t&SM0cIZ*NyuQ#b9uQ13j;%E}%b9P$qcP;Nh+n4EYaDEjm6Y5C}CXJ=>r z^ufl)M!M-pUtd2uI;OFyDJ10G;^N}z)vw`Ulup-KTKWg7H#uBf&l3|9y}f<-MWtLu zZ&_GarD}JilwQlKYKqAzmz0*m;Rs E{+a#ih87}9hC_3E9G2ax zeZD+Z=PvKNsP) 7SFDy#dFCHU{hJ@_OPVX-*B3q04cWS;JwsiF6H_a$FALs-(z~_s$t`7q9mb|_! znitJ knDKQ}GGRDj@;IV&MWgk{ z(Bw+iYJ-H^pqY0@e0Dt@EIhnrF}Jd(wqu-1!s+hrpyOct%TAAmU8H1}vufa|cWkAM zNr)qI7Wrij=91|%uqR@Iytv#IFP}AvoPZ)rtU7k-^M)wkc?@qu!A%>ON}3cI5fB4Q zpDN#c007Raq5#$L|9-s0uih_9ra0}EWHZ?cRZrLP$5_WCC{`iYYJ-i_ECF(ctPPX@ zq=GOA*xFh=woVTYDXqzgr`;NEj5mTPiDl0LrK|lttpnocfZcM2W(S2hk7sB=BH2+X zmo3nn_Pes$H~<_Qvd5se7xbO>hMx!He~s>EVzD$>8YuvJF_4}_mDUako@y~yvj5vW zO7Jut{a?P9nAC}$)}wCnVVh{Mw&;1LCZ#r!$N ({`H&Tv>2ZYg!0si+K z* v<_`#G6BoG?Pfniw_e^{7<378SX SS#Q~b0hXcRey;l{3c@G_6)?vR<9%r%LmOP$lsPVa6 zqM|eNdcl*%#}Z%NwAGuK7`1c$`)2uHY#>C51NM?Y4of%d<5G!iT|EtJ?0c%O5N{^- z2IXh^g|UQGl0;zCl%!or7s2CMf@DG0b5_+bf4_%&6#W@r?o=y*k6uhK2EPI{#&tj0 zs-mR7jH;Lvix>7l6<%AF%_eSfF1d;!e?=QTX3z4IWwNBsKu1%RO0kDGKdI`mUhM|~ zL2K+Sl_Xf6EaJe9;qKE8BzinBJ}bGxx@TxS3p?QQ+5%&_=K&5H0;k&)mnOrwtgc;O z8yOJ2zL#rm>ZK{yNKr6OppW6lmGc%P$`B95Us5J4#=zo5UDlx&*^OsKd%3#1vlu^) zRNuRW WqZ%~_bDvkY9;Z&uNCrhx1 zInJmA5*3P=dmuJZuLHx*@MfAMbFccbUoYpsON<*)z}R5l5bAo(rIH!Pp|R-1vY)3Q zflnU;#ht;%+6oXUV1sFbST8pqqDT|)4A+@Xo)bADcSN0ls7CkY3LaW0+|lOp;e!I+ z2BounS-pLXFO@hLL00+=t8EE4X;;#k{n*<*l!$%C6W!Jf(KwEAhhPIedOEpbH;wd{ zVg-mc>9Kg4CiK#k#QyxyOd6<4WP&YU#z1ny=MBN)g!vJ8))7FES>G4!Z|}elZeZLy z49JH!5>wzxDx02`;$;il3z{+6Y#4XI+aDG 0oRva6)9o%jY`O)|)p=!t-~y)aQF6sXHn^&HvPPDq#y=1$IkR(Fqv#LgHCJKS zb+cN7`hWn|;a9l#GNeQt%w3$~+m6(J6Dgzz3Px6F$qbKSIgViT5)8T4km(AWhZl37 zot_+C@zp?s!< 9ejFRPDsNV5zKnDAzJgj!$}gF%zF+ zKH%Z2%($P_kCo89W7t?r_F%A`rDfIJYk!A}p2qO^54nHa15;6>x*UUZ|7#~O23ct| z7BmJ<4N@t4!@$!(mnKHuZ6)&8hVI;8bq8FZ0WGA!#P%-k3-V0Q64*uv0f{%(28qaX zquU6!(Mf+ P$lSZ#!K2mua}RpJeEy(R`68PykkE4b@xJQ%sL;CWH-YKhnx)i0yWTwPRN=t z%0Dk#mhUw~z;0R`__fNB1>(2DPG&rt2uvQ*k&7e2cUn8f)HKE{cIrD95OMVh%gPL~ z U2sWLil`lL!yHmoP@k(wA6UOTnv$)%|4tL zjzWmgIKa+V+oUz5jWY6S-V^@T1) z&~5DjKCqTJaMvUWNTnGN*(Z`h_TX5}Ciy#mc0#_ecntbx32i68Oj;g$i+sle)4=cR z#|K*UU9?!T7g8$((GW&cvxB4lCfCJ4^O>5dsxgaAJM_Tp`w${KU&cQsFD;!A36ZX^ z;0%r-473B?HzzACC%jfaFII~9Q)x?U@McUAk{E1k6F-_n?XH}-NL@uxC01fG-yDqY zF~VO<2H9C567(^)mWq7`BkPR_1=KKc>__j>cLv5zodYuGA?un4M{@B@1J70*#~~{{ z(KeM(wwfq8vwy_^Fb|udvJjm=CpdJ<$%=H_^P*l3U^W((2z|pQ! z_- z_R7&s2Is)mS2cMkT#VsTb4Rq6&lLo;GD4UTm>Pjg#7m94K0}APbO|m^V~)V=yph$} z%a9N=WcP92csz+E-7vjzU=buvyfr$OEzYbkLp3_zg<0^qt(Q|s4i91(uaTcht8Sqg zBA=3i(ox{D+Y~NN^*)~Jd;@+W*P3eDaLYHztN(IRC^&f?Fw`6pD0$q%TkurzC}4#s zlr_sa-DOQwAOK@^1jW$+*B?BH%v*{BF(YeT!N H8|S1a0X2|cBC YKuNCqx}WW{5xzlm1SA~4-ag$-UM(8o%pkD3gD0#*Fw-%DO{Bn|Duw0G zUr8Zk8Gv^}R=JlRvQ5{q;AR5!zZ*U@sC4Fw4|Bdkn#YvD1Sgnw_%B^Xtl~v!S%!uL zn%$n}x2e(Z@}VTd3ttow!C8S _AYYk?v};sSboSNB zW3fi&FtvYDN4)vRjdN>ci^cWR!)BuW#%NimhGf0f=Og;aPt({Oq$jvx)HAV4E9I@) zI-fkuaKg%?mPBCt_K02PMKuK7mqw$cizC)|(#e*q5D{L~0RhRc^NQu)pMvnhO`p{m zfs09g2on^SKz-9&pP!eXI!nG4$thTm%zOzVC@t#8c7v^d=dp5cgly{nig+`1BhEzP zm%QIw4`pL#zZ4skJ34wX3o&n&?pSte+Ww;VGE19#_mVU o%g%2qz}@o$n}rz+&3>Ly>iw?EGB3zt2JfYBcy=z$k<) +NWQ`nvLB* zi8#*6G=Q1wa U1 znrv`JVs66ciM(2RA&bq@OT=l2*;z3i)P2OBg4GZ7o<``gDUzQG$cQS0b_D9ac*PhC z=17}@+?c{Qc`Jk~KIdSCO9J!lL$UZV91k*;4PPt@!HN `_dg0gT6&XVR=n9D%;$4ScPyj3wJE?qG7$% Q (;Z?U5ye!O+KRE8#2wRB8%zbZPmC|RxQC26uaHfKa>Lu0adx^ A5V>`dL zPC#xsQJMHwl5L`>RH7mcf}aa3Sy|vS8U(233u6cinZT)$?|OqPQuvJ(H`XGX!3Sm> zGEAO-rwttkJZ2-Pk5tTkFC?0V1o4%zw~_FKLuc)ckYBgn$orbB@p1}2B1-Dra@lP2 zZo+Q}TSS#KWN3;J#9^a;ic{LMc~q&8FNj$m%X87=G|5LtA0v+|z<@a4C&DpI$wCI< zqpLnyLj L~}<%G6PzN zAO~~LiURmtz?0de_piv@(NknHa0y9aM}0lejy;X43;e<5aM6 ~y@O|U9whj9)<@LmA zSN-}GZLS$I Uw#qJL}|H-RUNpTf=}1(SbG;8F4%C)f*Ew!fv; z>BFlG&fgN11S^x-q+u-^Urt_rvt2O%{_~!mkQcSy9O^6B%`Gzduu`>OmoJeu9&z=J zC3hr$cZqH^R|}~{WAilB+#K5GaPo{zCz=vSQ~Wg9UySr-B{6$1!<>9gg6-C-U#B%7_&$e;@2p*>mIXaCv}P=u04+;UKNj(&DCwLOAWS_%K6nU57iv2<~Sm z7}xX<0MqNOz=>6l?M}yW#u%T`d#Fvv#8~Iu*NyvqjrESFn^VW%fnT{aQ(eIn3fBhj zk(Ge~b4MCMoxD=ae>4YP9JzgWOB}taBu7gLhKg)Je!d0|jmr@DeUwUZ1<&-8OJ%tG z<@s*8d_QYpDBCE=C;vWiimRByi`u7EcoySs4<_C%I7-&Al_n!%Z&Po*G#%?F0QW`%kWKxm4i!$DTeIK?bj(_krl1u&@!n4Ui->cA2L&xFAb zVxU3_L>R;a3M2~3_{B_tR51{?6o|MLnBf0g>MC| pvX z(v@q#ey^8%6eID|#PgSqSj&gH#COKzOD<++NuwxxrtEV-o7SBG!QWg;@>0z%p8~&C z5{jzGd7PB~%p*+6bh>xJe1vRNg2j2W7#r_0ys4&dNGy;NtB#WA!}^1+0S}pZsc-lc z9_UzTD)Tm!6fRLRKNK+!E&7Ar)3&z`nAiVm^Z^n(!;tg?6W-!)O)p0Sd6OZ=F)vQT zf0(hcBo^$wCt(aR%KjBI3#4KldS?05Ktk}F^I@MsR}P1ZiVGoz!_V1dFD-46&GZo2 z_xBx FmT>yq zs28LBKp;seI#W$CP|Oi)P&-3JfEqL+ZuuBpXm$zNEhHi9pY?D4xW9z2?q`rJbn-QX zD);*<91`|7L|+?|)HZzc@J%{uD2X68Eo8v*Eno2+IW~?X)91znIzQ4mE`3*^g#w~G z{_B Kwo*>Wog%@D1@r9#8yqe_?gJt z6bMuldM&W2;)>l{&aL1>COqWIr>goK-k2JD+aeY8z61}C?576!Ydn*WgHm_v#`$XG zDgfti8ci-EN=Ji2ga0GHz)SCa96ftf#~*9BkmL E;_uGLQV1B=M_e=B_G zpP@uQ3ehll{bBgbFDlDEuuK<=<#^VFyoh)ATbC0ZKNT4-Y}*G~61PB#HGl3|*9Dr1 zUfKnJXfItw6X1qc1(qfR{4L0Y7adwktXIDqLvQW;wMOOt#wPfCq;Wt#9=m#9^k2Q_ zzooDTzI?w!xpO4{Phkh!i(WR>hRjVfbD{}r7OXLPKvoS?-K)DU5 vB2-LBD~ z4e*muy7cii;8B*&eJj1SuX|RRutRM7-LP_Q&_CYg?(m2$T+3z*^Zx4H;dREjPs%x{ z582o^yQg{(Ek4+m_y0Q9Cvde_O Br4rFxgKSa`Fv)VQQnO<|u{!+=%dkjrP4)?&ze)>*2j2o2`@DxizM3wBt{6 z=dUdL3FgDwU)~RtYq`(vrDe`G&cp+?C>O@07nV$PbIj)(9E2&RRCs*|aDx&C-gQ%z z#mLW0w;jdw^Fdur&y^YlRZugS)9Jax9cte%WgYY1elzxikHPqMDzM@Kdf0W<&tj@g z-v8e0tv|xEwaD5f!`~YOQSk!%ehww*y+zH3Ml96<;^>GOPK>aK0=E)N*FI)%wk>K~ z4j!M^>j?t%t&I+YL{#2G{uN0*_sdo8URd7Mft$o;3yTGM%^W6TwV218-zO()Cxt_@ zV~$2w@k-H2cD?Kq2ynUKAenxyoR4QVO>A2oxnQgQ45gFBLOI`yEi$Ihy`lE9%yR7+ zN*HW!gXnAv+|4>~bFvJ7;n&%7R8;KMH=K9}xm1t4VgEiS^VZML@vF)69wbY0tDIz1 z9!L6OF2pt3YTExZ=fD~IHjqF4&5P_KRqE6MGJNVI{}I=nsz-X~c!#35 K?0$1|XA7CvTyMlGJ~EcR&S8at)xlrzKMl&n=soJa0`Fl7{wr$JErO)D`SkB# z!n+1PpXW{(TK+=$4k_^0HLnp%wMLl46u!_wJmN2}I1@J$XX4>OrUw}QS{-S=jD=@Y z*atf|xv%X~_z!tsS;uV*y23;za^1SFZ0$UqqGL`dA<@e2UfKbG17v29&uhDyxID>@ zV-^v>TQUs)cR%u4je$q%<^)p7*excQMSTRdXrW)RaCJpvGFP7$J3X@FfeGdI7)Hvh z&qMYY!0P}~uZ5x0Mtu(UvHs-Ierhwb=C{cm4S}DuvR9{kH5ksUGT4Wjl4&a?MCZ~F zuzl}whbla~84g&V#iuS$q(fpyYwuFFsVI#bM{ @w09|@ zu^VQ}y69FB0u}*&;=ryW^9f$Wgco|CKpwN=zt-q#V;MLS8YP8fV)Av4Trly5O8Z}K zTI_B?(g!v*g1b$UE3@_ew+5j5?Ag 4qMxiQrQTkxr1XNdZkRES*Sf>%4>8hz26i4P;n2 3H8-%pBfR!fWS^m`>aweVfx odv^>;uruub0r4Q&9C_Osn*9|qwmDU(Mp$$L zup{`+XnQp6Xf&3&;Bd^Pvo1>rFA;tDDcoEF70-?B0YGp6p<1FP{9-f4b@aa56Z>n~ ziE{g!_I`T$Eelk;rIE+tl_!`M`LPwhxGVYTe2{P=f{87Qu(-j@8~YGhp=^+hus9Wj zJA3IMd0*K{=i4P(#tAx+lV0r71xY?j-3F)ZLF8% X-{W@?-o~p5QF(ULyKk%~UV-UunKzNgh%U^B5tY0w<$% z>$ME3aK?-L=jT{j9%h_}5UTM!ck0RSfCL>CC3QkMg&xg7W|L&n2d!}3r2Im1rqnb9 z#9sWTq93xHh?#0YShM4~s3-B+@gcsXVDW)EpR8-0?Y3dFia02Up5Oxgh3Nmne6D)v z!;(^ksY>98t-==mX{jU$Rl+v!$Cj!RuWFoqaE=|F{s@?&q|F9=IoNC;s5HOOC0L(s zXp=D7L5+yTjBqpdRN6^^u8o&up99ELZ|O=0um!`cRo2V1^_I}RC7vyQ3;`E3uM(1e zNRl*g@&X6f`xxiy%UH-vdw0C6@Rko8pM+uoYCn5Q(?`$alVzBDRcKeqFHHMn) 98K{&ngLxG}}Heo~5D_duljSDElEJ%;uH6s-oUtPp4S0tmCzy*?YTCe_;57 zfz7|j#jm`3C=F@<@+I@FapNh-@^<%;awr5cM$hJ??c8vF`$XIyEXNKurYfTwpgp7Z zK!`X7{X&Qq%D6=s;n1m;<{QvgmRZjg#O4Q19^p?vpvN$9z2E2yvh=*pdOEM^T8qfP zG`uC1`2J#V2QtQ>oI$L+m$XAzZ;4us;F!*O{6( }?c+>~vg)m3=SDX5{$w(^Q)P z_oaJnBWvx#wTWVt!<)X+yY#=GKT9S4SV$Whs{N##s^Am2oIm>6)3vi91?Mo^mpXKT z`__+Rg>AS%7{M7+=40Te&f?mass4={Bg%Guo2c2jEwmr(RjFR7rCKZ8L^6!^4L%Vl zf}6${2O3r )!3 zVnoZ!c+IWu7|)AFN|z##h+N@6tI)A|DYbkC(jRl)OoD7fkx6f|$a0Z?r=WBI1F7oX zf;Y36W0|Zx!KF6ZE^_d2)(M9gd^$ 7zVf`Q9ZuR0Wmxc+Yn3O8U!6h zaAQyhMnLwU8R7U+a>z@_H`yo#CRhN{79yVnE|o+HAd8ei+6*?-s3{g8=l|<)>+<)G z|FlHlsC&QhaiK;MiatSP$$t{ HdpjQuh6S zao9tY|BK`QF#P|w`RmNFo)h+Il6B52H*D4VgqO?8t#kw7r8>@L#-77@_YHlH+V0 z*3zc84I4j(@MiCv$bX >%k?1S z%vTGU->+oFaTgc)Cx->4dxo9qw4eV@X9aBF`SRNQL<^V%;@E!F2D}YvzpR~07oyl! zavTXMJmm2yYQ^aJ;e(F1qm4_1aX+<=4kg>w{iq7)q!OP5bhU4_fM;o5)YgPW$T?{- zcTp2Ku*k5dG|9Lcu9HA^- oR%q=Gi(l~Ql7~wv)H#%Qv;7_ z#)tm!*K7)1S`YLb_p)H*G@Arx#bq((p1ezU{wXSqhdEoGm3Y5tqcWYs#=Maq^mll$ z>&Nc;Uf=f-y4QU5pj29fH{~Dk!aPDzhEFOgXltxq6SKrf^V@L;-M0`>zx5@l8Z&pG zErnc!X$=JvlC~GG2L6jgI^1pQ!`YY}ZBw&>>Z`>RM)m8=HOKuNneHYj_6Oi$!!lH~ z5k*4qMn_m&T>h-ZTu306ME`V(OC|jtG^y)|t^D#Jzy}SN$A&VVL0QS83Kx;*X;RXT zwx`LGc>F$~1jtd@p~zwpvuj{LC(wkE9cS82hFG1$bPt%>X4b4;VY&7-&@Ty4a$gq- zPU+(80~)fmA=X_1ojDS|L&XTQPQu62R4JBE0tnkdS-VK;4Qm~uRF$6@>K4jr!BnjY zy8iK|tn@Wsd-E1(4LJQ^^%Qo(4~_z`YaHzh`Dj}hva)cxvePkUK^|^U99N( VlW! z^64};Ymt8n1B00sND@29{NTaG&_8DIv<-F?L)ame+(CtfJeA3zgTYfAZY5gl^TN&y zB2pQNTEd` Gp6~(KnO W90%E?rxczMQ6c;^Cj+=54AQS zLKU8;ZJ+8!3GzBl$9#U1&E9){R;CX9?^>wBHxIr_NwdfFMmZ32ciqeZI5=Y*(=i$d z7rwf_RF{lAe_ceq6#hxz(>yyHEb%*nGo6$|8Hmt~ey2EEtUHON5}x&Iv`QIK^ 2h`r9@3Ro7?6Z} C18y#^I>#v$Pkd!kk zeKRQ@D+86DhJ-RfCjfzX2VYErap`lX(ehHgR1PX;q H3&2}~^T>RH`i0+tc!hfJ@^a~kgO%XFdVRLK-bPWk z9QiEy73dTliY;6EsX>(sn*dd%NQ$tW@C^gSwq6^`QNYRHg*p-0MGWk?|BXl8eI_X9 zA-=}@D?@G_ACpl%1x_rT6V1mAi!8W<+wMs2?Wg_$N+|=^ZwXCl6DpB39&7w=r8c$g zSnqX-KxGLLs!HrE_7e&cE;a{te4x-e7rYnOebJl5;qo*gaBnP&5-*l$BwCp9Z;OB6 zG}mzxQu;pcWh?CX;=Mw!TqmP h@lOtah|YcH_U8RX>f_ z-hY%dU=CXUQu;kcyYuqOc%f!amrnMNJmUA)jZ=NEzk;^JoHH93_qvKG`E`=NENWP> zTu^O*hnkfDDh-kfm1c*24y0a&upxdsGF+`B{P`b`?O7XS>@aZGkHn^6inZA0j6eV_ z%m20PyFBb?=F4BLSE8(_;);`WAaB&Oy}S93F;|1ocKTmA{N>*UsXDd8h!56@3C;TB zrmKx9Z%)4VjsHh5*%7_^&7*s5L+|X}O48sOK3Ebk5`>aG+WIXTQnhyIAwB0Vi1AO9 zdC5@kvH14!@%zb&=+W5!xH*J12AXt!- Qhyj%#!hSUT)H~ Y;txo #GJwt67wG^XaG?_8rMU0hP&W@W0{g}2Pf!P0Ql%ou(utQ_j)7$#?zZptLHUN z wy-~k%CnWS*T20YKYvGg)=B3?Vu?bIR9r3yVi@pO=m& 3!X=)}V;#&> *<3z}P9KxHpaBG488c=k`6@g%L;p zu2r{Om~cwL2SMR!K{aLe>AMpj9=S)~zPrC{`w?KS(g6qi2N;~A*KJcr3_J&ge~8B9 z1wYS+!v608xpXK1yjYc|!J}Lf6~5r={9RTnDabMz(;@@j4BveHOF{I-S}KLYpT8;Y zx(s2=ZBiBvefRKIymEYWnCk*ti4t4tq(=GdjFjJU(C7Ih_ocH&>|t$#U8E_RBNqsg zL5W#WImT<$Ufp8krFim@RC1Un4<2+0u<$B^*SJ$b@umE+JXRs#w45JNl9#jEZNK{l z)?SfT=roHD&}apT&=h@w08ENsPT7|a8jQJt !D>zmY+Yy}N(o|y^dwy(9QB(%$x!iJf_NBQ>9f-3wP0pDABykC7 zysIO*kphSKc*~9m>`)J=ARyE$)<$e>L=p(9Ss1SIu7STzN_i;++;gS;t&~WcSx~Wu z#P--jkwJ4~_zxfHn)LUgKBjzVt^f#_lZsW>x Q;vr2W8x$o|rLdvB1)hYcQvs1CIh%(i*D+F~nKJAZoMTq;n<_Tp3Jx3~h`MG? z{GU)_+R10@e}*OUvFX5%uX?XTUbfu-U~>K^S95h+7u30+!wN4n5zP3YxXoc%b|1_( z+mj&lW$pAjT0WRIb&y+ArMZSxF<+F}T??v*wR9bP+*0!C&VP|MV*G8+e$vYeRMs*( zqq>1zgJC6P!`0P|Jh>>=o)3gd9byhiyUZFo@YHr5HSV?G1IvOiH6cCq+{1Vy`QlUG zpSYS)=BY4cwM_Ft9xl{p2v113hO7&xnV;gqe9H QA@9%Y`kiI+A#QsbN(9Z5Nyr}jFco?KGwBMhr1v0ZjeSm4VW0p zcYKc=3D8&jALL#$L`m&JxC8n*S?AI6l|YF$kBIgDm8E-l6;ACI1%qsc4(x++0)hG- z8v9o*MyLa}jC2K(2rv4E;7|NA7p6++pPQZM_5z@YP&3m(u_*L^$EvsdZ__;JLaR+5 znx7@z!K~a=TX7qxX6(i_Wd+)?^u%%A=Efq2dK~c2hnbn?Qe5x~eX?=WIbGgUFB@o6 zQ{xp{*4jn^vYDJ%vr#5Cp`T)T 2@WF)=I1) z4j3*nMpSq2aeAaL$Q|L{c9^Z0dS=QBBBl~xR3kRL!?|R{{MmKZ%@RQ0scVBFU{rGv z7Ieyv1!Lwu4b^t9a>aK;d9tB)x-BApUw$MQwt9E}%jbFH(=SpsRQbFGhQkd=-~!F8 z8+PsyU
MshD-7FWf|2mO)snOU;W zi5o>lZq|h@`LAXMmp@4;^a6W5R*jWOe|hXI1ZYv9#{U4Lt~Ey3%BzR*F#Nj53~5H3 zy=`6^kTQK%9k03q)^$F8JL~Rv8?Ux~qz{r!V^}m(gBQlus1My=oQ%})YJ`!e{+u@? zmakT$XhXtr;3ii;NaHN38O3H8TSV8Tq_YgTuC6?mM_LGhZ7H=n#Lv GP%dO+%h&lZv~J9ao*K1tUe z>RtD`4bALR@VZ!UVqoR?_fWGY}#(kc>t7Zd2p0t&0H$g#3V-3KhEuVj+~r2}XgPo*L; zn!jokh TuD7ouk2-jE>52rg&v< >_eCB? zh~vU)Wpf72l*;0Y)ejJ1P39X)DW#&@^GxzX|fX)RMs z%tvr8r~N`LL*|seQ$MrwLad lJ09G6s-8`#dzsje`5D+qApr NE+YO|Z7cc6Zgf$7@ z`D&y(C-6_Ltpr&v0jz;IWy07G4!Y)7%SEV<`?4(PvBeisy8#sW(5NuiXY43@({S0% z_(?O?xBWb`6nJWXD9^-%1q3{uFmx8ba6mz_>$}>h>J;)Z8jx=2`%Wf>C0sEpT^i_T z#i+sQKVrZPHV|^|?DpGJwX-@>iUdAaP%nKa`*d&x0s)z5r~*#g*s)6|NO~Mamsb5p z&WNyBlIxVpKIRBLCD%zOfZpC|nvWGy5$4ZZz^-qUe)lqkvQm9wj&Z~-BOp@zEw6?j zmL0~}g6cHIS4NgIzw7=BA9e3NOHyFYWXDJ1e$KfliHbT;?DxLT-$%s-YA5$DEtJhO zh%oR-RaFQaRUSuQ_)+weYS4xDVx?q^T39l{)P)pZEK~~cwUn PAd9PBpUswSBb#)$F# e{;aD5KF|E-PnAu|A+vZK`pup|R!Pke zZ>A-@wb uX%;KyO_Ik`13vo*0CL?TKw9$l!IbIUg zx7-~Ga2 ^-VFR`+8b+qI=C59bcn>SR@saz25kMgQ|Aar=JwT-92#@Gv< zTk#>nph{oqCy`;eEV6ZDM{MMeJP{7?Lb-hf?C9u$Zs3Qf#t=6i#fIBcZQ)1z68%M| zbt0hA2Rlb6H-ukg0h=GnoQy|tiL*K|#q 8?T>wDCW zhG;@iV-c-6iFd>19zzzjD;F{tf6DC(cdvA@5{G0<_f?KQ^N@Jw;1SQ`06jPpAPbz+ zeY-;*Mj4Q)XFMP7+Xzt(i8!9BW0B#{mw;_|05GWnpB!sGGDrgth;v)F+URimSl-5# z_<^0KFU>;V+hU2WKF0DqlmNnI3h|eVth<<_QpQ?Zrp;CQy|EDX7tWJqfIqvJbRkEX z;Gh={X=}2B61dvs^wa5kyvJpIW^ly6NWuQd(sGZxUBMf5+@bv*63}Ew=4g{fuE`Jg zcX|^8A=THoG|D9Ys^2Y5J*)3g?@jm;C%d^}yI0^fk@CFI>PRAQc6JDF*|Iec2LWmf zhm!qgniBH9q}b_$eKPmIpD@~EATMq8T%6UxD%y`vlSR>(qzZD#hvXmXGOV|)LpYwj zeKJm>OK*3B%A;Yt ekYg7uHwp%DIBdF(qA~|~E zcLcTJAdus9EY>$qTIkg3@P%soWRi*`4s%#*VIOF_4@g|@k0J%C#o~AZQ4UWaxm8Fx zHWp#nAn5X({1~Ld{UwzhR44UY4IhAS)}TZD-hx( B3YL3FOM5G@FH_h-B_*1dz@i&*Jyo!hJ|?+5c;A^*wiHM_ zXH&EbLU(zy2#hcpFiwp{>ofH~v^JqFX$%H0-bjcrK-G%`F-pEtK10dtvtF!D|43y5 z;cS0Lt2L*}jsk3}e w3^cKg0 zDydD^9Z8VKQ>|7OZ&?8?x$mhvrr%R(q2M2h7nM&g0~*QVtz^QLwBeBKy)z43sis4+ zewl=iiYo#96;LD&I#|7rL j^i1jZCL%0Jkfp8p7$`GqOSl4SH)VF>7(|q$ywG 7Ao8fHp2V***)RceKM}RceL6m6 1mn2RT=qL@ LH=adiibLV zJ^$RIu0`qF-}SEgFWPXMOx#xD=U3!J*+CuYT7`Vr&sz?FKh(amkb~f?6reN~m{DP3 zqyP}D)|FxwzSyMyRy)juMH;+EtUwaqrh7*;ZSwQ3f+pTjQG<)(i1tXth$nfMs5h01 zqc=6~AAd;6pZjbUig##A38(V4iyqe^*oLWnF{Z?{+_U(U5f6wKU!}$YYMpSPgrjLZ zi#05ayo{~+iiOR7^d3BA1z<|iKMOegjdbeIr`Lv;28oL*qpGu0-fKb)%fj(#)Axiu zh<4&)-h@G_fDjOhWOtx8FPQ}-JB*4`T>3DEt0;|h#$96ss^wFrx04y};cN%qImGQF zxLLAuB%v{QtV_aDLpSloZL+inRtmtPs3*z@2UlayX_HR@T(Ch<{X!+xnpv)?Ue3=O zUw1mrSYPKngx%`e){CKLrRos~Q;e%}Z(&<=dBiK8k49e4t-AT0H*w$wVNZ}~Vgg%G z-?LnPZzYk_9ch&lRblv&0)QzNQV(QeGL?Fv47L~?h+)~yRQq-NG0A)opv4T`e0)+? zB!3jSuevQRPy`0NO!w6OkfW8s3WZTDFBh?iEG)=Y2Z?5u?c?;>r{R2~x?!fa{qQ@a zB^k}>_dDUm`0oqfQv+)Osl}}}XU&qzqT!IO?QGL846Em^#H0~xTSC@VI@%y^Rj?zs zQU+wk;5FBGh&CP&MH=y`Ezv7d_Hi4Cb}--i@}_B-lUTM2%#jLFc7>757tujYQt|-% zZz}3tmkm!;h$D6z9-mgXBfmNQV8+c`lb?ktfD7Yon-Gfi-&J({so)B_H%d`$;3$uS zI@q^t64shwI!~8btpq1$6_^~-NVy`rnDB#eCUzbS0;{{Vu+3y`wu*2KhRaej#>j#z z(2evmAb@dmQu_Qy?Nv_n|Es#U42rwy9z?N$!3TF32=4ASI3Z{tKp+rcAUMI@2KNDi zI{|`g2$0}9xFrN9xI=J<<$2!!Zf(`Aduz9D?T7u=)4%Q`-RGQ^>2ppnKPF18A-#rO zlN<%C6)Zh>bZ^YAcg53G&us|PEmmZ(Sv+7)aqqI?lHdR0`!H%-M;EF)Bc;f`PwoI# zaZ!1;yh4iKxj1o)%u8N8GNTp?pu@WAR8}Yn(dMvi<#BygiL`cUF(J`sDg_vy-G7Et zd!(|c%ueo&^dYecFw~x4!k~U&LYRvDcdb-#=fzE*sN6NrZ hD}d?fK>zYCZ! zVU@0H-QTHriYD;nIkcB*$aLlaFv0kDe*#(eu&|c#tG@?Yvqo0jT^PFu3IIe;em%$+ zea~xnP5F?fTNl&M=Z9P4P^1G;nGA&gyfkwI{(7j;1bIZD%6G}R9#p_Vy>)4yQA`HB zn)vysiUxv_358Rp-mepFRMd>M(SKzD!(XU0hzgMm5~AsjW0gdZgQJ;%WwQzU%$N8) zil7Q&;U;@o6RZU@gvyz^zbVzQ$S?mKzHJ{hCr_%#C}B56PjdeHI-2nJi$&H%9^`9u zzuAnT3xE3+ZP?-9Zvs`Gl_FJPuuN{6j-H9PpwPjts+W&BmQy|Eu }e&UqpsWYQ5qCoGuzKXhI<@O-Ts{O!VKm r7oW=jC% E zJswq%kB;B<=IGu}@k6r|&$lz#H2bJ*g(*gTKrT+bH>?y?q1Ltiwd4@%Q6&bTcD*nn zO2gMw7J;=p{Xz@|55i%qU%!}#3cX6ftbes?(F6!;_4Tun0e)S3{UyF%yrZf3XVmKo zzj@R#>jC#iwnCB@z?{{dRT7KJz0qtmi1=cPsB%%W9NFjo)J4iJ^g6Gcu;-`kyCzMY zC34$7)#gRwH^I0=L<&{A(GrT{?i1i=JMoZBPA`|k{qi4_zm~))C3vpx$e^EFzO@*& zQn;Ke=_IBTi#hL21WGz%$r-yzj06!+4)vLzr-W>MG$D@D%ZO(L>KLUa9`~C1iPaSh zj&RkUIp_t{8QqxzyHmxpDdgOpJoZ2vV-;yO&$C2R D|69W>@QHG4H;VqVSD zD(fi&To5j&l(ShSgm2}< >x|w(LdD-zBuSMOK|#K9k=Pr~6+5g|R1dKBroOxVtwDlCWv8)8 zFs4Ifa?>vJlZ9rEP{~*UkV6Gzp-TQk$nQu}v)V8oy!Ji4yseM^EPuPU_QFQpjYgrO zDU5nINdNn|g=QxBrkiCUrlFCT0nl@ktL5;|P>7IP!6hO2wr^!sTrINvIJb&Jt*beN zm=S@P1KGzN++)W<)yFl;7u=6m?RxjCS5CPyD^G2bLch% lBq$T6+%ZRIUCR95_oAN!A)pj}d%UoP!$qQ({w*oJcV?wFyxY3SCU^A> zO@&23oxRE>Ma->S3FB6ET%^V&f@&ILPZ-<_r^cxxH&~4bS`i;ByGTN4jl-!3@_K~= z3iv>;|MC^wGP+sCX)*iN;=K^}E@D#Iaj97kccbxg9r^i&&Y8hG(T#w~c8*9PZTbBX zo5d-OX!!8B-37!G6(fOGS=nJ$AyGqZFkdXociYf2Va_)_iZsSs<<{`4 {=I3sJ?X)eI&EM!RRnj(6+Wo!i$9vx-GVo${)Bcj;lpLdj1r5 zmU$oq%qQsu(BM>rGnmO2q%l%`DS3WM@a+$Fvg;rf$=~aH0{<+&nm6b15H0?n^tK zyu)&@nh!9$-@f!?x w z`bB6#zl(w*j5&hElxvns2(X;HW`CtIY0|^mF=b?~xmfY8VLGkL#kWyH?>^MxD|5|j zgNKRv=$FdQb>lfH>&C~{M=kiw+{psXVZFM*XB8lyqSs@9ywCZg&~~{jL?9PUY(&=6 z;s1n%IXGcO(~o-8BI7Lp{gc7L_LbN0Gp3x=D4Q;Ftq@BN>_kJ&XX`RsN62EOJ)waT zZu`5s=RSRJ$~879naS=;_*MwB#I(CC{CjQpr!*#aApwd*iD%z6Tb gw^qOPfY3dN_k9kaLXfwJ1x`5)MsJq^58R3$T)O4ACa4Cm6LL zCtEU>i9!Um*fWidIGm8>KmT(!{Hgq@56#TZ$8TQ+v~~?%CA+O~b?QguPjje8L)H>l z Ev)t9u{Y&5*xxU+Ahe z$B-bhb+@J Z>l;Z>~W4Jii<0Uf1xvlFeYJf^! ze*SP{ktl?o^3tLSMB&Dc>PWDw7dr-Wm=j{B*<~y@*I}=aV!mE12xi0qDbg7{$$)_k zpF7Q_zMw#m8f0hqrm!*;V1n3akhowbOqBi5oYa~VHn8Gx8)JDw9lHyxwBeK=_xWG5 ziWU9WRwJc|7wmRCoK?Ijidj_@;rEp7hCUO-hg=*BHfF)GGsj`UzO &oW1aB>r?YIf35Fj zLeqjxq}yGq=JB{&>IxZF*vR@_gOS};LRQ@o70;|uY?kPjzKJ8duaArd7#Nq9#ZgK; zPp808@%53ZZsX{yoILLnHVk^x4PZ)XH;!OKEdoL&EVW- HARE=S`+ zOZp}{;hR4e^j$n>9r!aAm%rq&heFBgb9r$5@bovi#}Xn)4j>OQprW4&mv*?m&TkFN zL7~c#6H;~L5M4QzrJ0|tK*;;X+RzqJHulgujc8$whgL*+E2jB4_f<-SQDbqtOU=!0 zbogKC@Pg9V6S(hvJE4eGSVL>iJ88%Ava-Q5$-_=GHs>EpDKvLE>`IC}@o@J*GqB{} z5eA&Hz@49tmOSr;B_V4sX<$eyDEub@Z~M`^%&AayV2szY++z#yB8{uUqA62nA~YhX zuU+%ZMl+AE5k9kuLn^x6ia-7I_4Jiu8ehoK<=qiC-N1aH2s2{3`Q&`bGvabj;Bwcd zHeF{mELfjcUYJ2f81vZ~1bN49imTVn(gB22w!5_eTw_op&n3j IiVWX=os~WYd=^Wxe5R6#Vrh*23yF1FwjHXn+@ptr9 z$|!>aV%V5W$RqJ0fAe2lW$U;hStWz_-5t3nd%K&QqGJx8&(ryq*P)-lwcJOj8Ju$b zVf gADmeDIAemSi~?k?&JBUl2_M1|(q zz=Ux;KwIs^hq;=zeoVS~P1G{PU>cce%&t@)LFmhxT5#!tnX*=6)6#o;u9)(|pY2i+ zo~~dAJ3M*H)My6^p_^th!*BWr73_<3y1mkRCgi}X547Z+7(b7+KcdVrLuTOM_g1Uy zUur%u3fRET&))tK!Jf2<%f_oH?iaNawU1TpLHcMPkV>Y?_(OeX_I^7rkhV?Qw5Sym zR+t^6?J)(KvezwQ>P!;6sfl!&;=~1^sIj>}kL6{ySS=)#Ckri+9 M)f?F$m*4bpo0Lo=TxGCd02Sv_xxHNy4vU z;J^k?rHUvHXL34=r^#M9m71>wv-z~oULBm)Cvvdr2%Xq}ygI@z*NjOnk$tp%41I2q z{3HB>{96S~t*CR#q )#Xa6WwT2qjK6!6ldEL`Rt7K zv}+@RM{+{%yD&qUGVIm-h;Lx~)K?#!);@bH@?8XZ@@m4$NHq}lDe@LaG!QiEw_L=p zW}x-Q;B}!9`mMqX3aVM}%DgJscFqC|1>FADjwn_us)N-?ZGRJf)wswjZim(~<)NZx z=E4p?GoqX&EFA`bG QlL*YfPNFl rf;E8TuH60~fWK z%FsFvLW$6eD*3Xr^9dyj)8&4m^Icxm>u#Iaxcm~DiOO~gzB^HK-MnqFy2G~n8lsIH z9qP7;t0OYa`Ce$6D}2tSrIo($#6=7 |z`}dr1L+F)g4jZ;oz-tMUs3a~Khe_m%>)j9 zYZ{}U9wnMq{Z>=103ZJ58M4-0q;9xf!txzG!Wh9&U2T>|CHdX|h$13i7~PlUK{M_8 zMY|?V%6^fcG3Wl7J_)kkw*a}~A&E&<59bBa_Ri&fG-rE}CLzeDCoUEiA~d6&i@M~7 zMF!M%@wQfWR4*CpPhKCqW)I0O_EG4 sUwW4jOM*z&8~&Mb2!!8f~R`0_wJtk zX`=XJC1L$5CnYc8d)b|{A81}$zb9GOk;7NFK7XaZOdC%=xBVv@#d9-*&U{Unfp_g? zwy=$`;tTTHMle1AF}t6vH4FxzZdnx7>R*kg(?;80hsZ*i^g`@@65lhaI#dRALM@5n zh=KK3p%yR64GqEsYcPN6!m>etoGQ%1` 6C5evgQU)=l2am?Y9>WBw1PYW@y)a%82qhc z-Yc7KQJUUE+W2(6Jp4SxAz{{LyTS#$G_FXLLJTT^kf0W61^?D*j?A?LFOGh)v>_~A z$4i7Ym5Gm1fU5lKglAqORPPikYKpON;d5G>3S2&&A|8(qZ-Tr)i=L=RP0+Kc#{AP0 z0qvgRrMNNTPljxED7|AVU{1D$pr5|b_u+dpMPNj<+Ng)Qbn_kBZq(HCI<`YW_m(L# zFuZ0_*ZY+l173u4ZB9buyeiY+Mc7XlDo FP|$pEKLs87sC7V+{;kWtc$-go-Ji60n6v^{vv{M};PV-|pu-HqQBw52Dl z_UJaXF;0qw+;qT^IH8f5i+3|5aY;t9u83K#+mzW`?3EJ-Um68(6HQRRLd{`NZtq!E z$VD<6NGe6@Yd>)|BT-`KO!Zw#X~K9&k+1`qTh3xUQD{jhe}oP)Pa+GE!r0CcPRa>C zPjt^+)VEpuF3SsIo#8_i?Hs;bwbe1)(_AxwkI5}xh$aSiKT{4{^xPn6WLBB^K* z-1W66!-v!T?-m!sze3YlZCM{F)&r&(hS}g^x+F=~W^5NFqKke*{#<-yIHCm3me#?o z3d>e_985B04y|=h!9cKHDKY7JFTVoK?VmAv-(~q9%e ^{873! z!(YIGtocVx5&HQi4t>6EXLoTGA>(giWQ)idaAsr=8G`U*++cVHcmnAQ87u3-BDe#W zy7P`tY0@uOJ|=}XS~kVHmY?v|$6y(bo){A_;l^k|{T=cdM5k5_s({zdL(e4J2g6j7 zc5JCfq~=Xum@ooamucer_;tC(-ZDUfh64m3=&I}^*8RdCZ%-(kQ=2zA=MOJ`i#u8W z=CUAZV5M(1nd1hGo5PGa2VgKA BH98FL(JA>efwANa_SIzQxXE+xpUSlt!0)hRc z=#jJYDc6;4=Sl=K2*3F7GT1IMym)Dy3s19~klIlbv>0luobYqG4YDj`|M%BbL~~4j zaX->tNgOmGyX`8e&w<#3?;%J$j~C*`mQFSq8@HRCfl27d9QoABg1PptfO669)dsbK z8k~3DuloJ!9qHnOIE2?!MygjUnKOVp{SRy>G*3bTW7yKK=v^Agk7Tie^4lQ~wrBd$ zRRrd& 9lo2>alU*?a(N*;XC+B@)_0F>S-54RQK}#fM^G)qF?2nkv zJE2L7L~t?`d3_1AWXB#t;mrFzlv`4Ip=%B3@e zOXt&2MT_Nq6p=!*+^yvvHjx)E>SXXM5Kj`(v4Q&AB6S=cFt9b}dWLZ2U`G#z10va% z3oj)dK4tkH8t p&LK8BYyG3};nc#(PoBWSCskrIl|*H&hgJy~`8cVoyKq0x2g65GUX zU-wTveOLTqepFP=apPjb48KJ82y|3t5-}ofd4B# 23 4eYP?Oc;?7#lfv9bqTb#*9Q4jf3W~}6z*&6i9iy;vD8F6> zNfmd2k12$AtT7n!Nfx_s+j=e10!{-Y6gVgg4@j7@JQum*P&4a9W;Lb0z3ggbR-{Gk z!<@v&!lNK8>L;9cUCWj@J#SQZ^WcfRXHpTP7<9(;oRk;)U{L6XY~*U26;S=C4sN~_ zxetu}{F}%AFWIW*V#fCTY1MRL=o^fxm(8~h!0BqcCKXoeSv>QA_`uJV=J+(1!XX>z zjlLm%g6#rsl46zUpe`MsX3{_|+ro4|W~ozGapNrd4+5wkto3JkRFc7|c6axU=^vhu zzvxz_`d@ND58dqJbL7f&5o~I6PqnTC?6@Ij `NXP3>i z%Ml!E+Nd`kBKIOUHPL?GpU@nI*Xbk#Xc3mC@QRCpzm#pfintrrPpvtZ$nrc0FOPlo z=_lUxV9sx8evsRh_5hAUCKW?eG3#7BQwH&1GU&& )0DIb&tUxCe;bv_~&i&EGmwi$v pyf5-`vs1@`>)Jy6u7#Q8Q9-1Xj`3HC?n DB#MIAL5;5btG0|xaWW;X zQ<9#;glUMPW(z9Vy^2sy#SIvg0KYJq9|*^_`k*S8+L=U&7M>?d(5nIsGd;sYM5bM? zV&wg&ldF(QVPW?tZ!|SH#b;>(c76$mh4~-QpL<`~kRs tbUV(1Ca$!* 1@ae;O2gW5)WLc9V$lEUDU*BN^E-{`ru zPL3N=qGlfG4RS^SL{gQ8Ihq8k{_;L)o uzTM|2v^+g~5FhE&Jxn7mQ_dUv07^e*QOb{`b z`>D?S(tntM>33}eegcKU7_rfyP{~Ib@D`4?av^l$-AqW%Bqso*#T+f(Ki+)Y<8pWD zUGRNDvQeKPNNMJwt+<#Vz1y9B7$3ojTe$uxcn`CjF7D}gjwq%uqCNYYu^NMsiLIh@ zKL0Cx?)?WrwRSpvHeoN=owQG=6&R=I$LMR{#=QZixxpkp=8q p~XC#}CZ+K6mxlKDD zsdR8ds-iv0*W^n0xUftNuB-I^lOSrN_wEe-qnb!`+M=^9qjH0_)BP8wHgFR69_+Or zqeQB7vW$BDz@SK!SF5e?O$_J^x(%zoth`SG?pm_$KM;VUr4kR(6hYAuU1Qc(=8>_* z*BrR8> IZPl+ScX(<&pppiDz_(0n! zXwtcyj+5Xnu1CK>hRrE9|tAYJj--6c2a{sg^(7%WcdLGUE6h<|= zYe7cK5Y=q5`um`Ji|u$lN?;)`){5_kj739$Dj8Z-*x{we8^Tk CM}ARgxq3we*IAQjhWdZY(Q1_gXje_>l- -(xrne$TJC-3M2Q4xnHFrt_a z)Piuj=~%=GQH|J_0h7hjqP0u`T7J-le|Gy5M7*O-ANg~p9(;QFHI0@Ujv~d5cEfc6 zd&LZ@W1|DXCPKguQoWMuKMZ+~OEyYgf_y+l9TDkaCx7q7E0^}q%y6vA(F!mix4w~? z1EY`EAAdOF4?Hk`FJp)7K;VzGg*PpZp3R0$J=`)s|9f3hNRepuyH~?EV4xImYDM0K z;HuW+sD$D_J?e>rxq)){u=6Vr% nPL^CIMd|8JpJ|ja~$>xmdw_YL9kJQk-%q7fE^{m?LS-e-U^M)=NVS> zNE7uVkf-jBDGLD$0+>MzK-qO*0BKP-EI$muRtqK}MdRXB2?mrsH#UP{ajJv?x+Hu( z&oldJkUrl3wpX3ET8&VqOA1R2t+F#Co2!F}+=9Blj}a_DOy87KR5o`>scbWq@(${- zkIausl85oKmX1VNP|}4mBcdD>$Rn!@iNo`|HXvH0r(_35R}zP1Ov_nS_wD!&8V^i| zA#_Ip9j0Re1Q22Z$ae-9{8kZ7TLEo18Ys6%Mxa1IP{hFiEHhOADJsCLBf&-g2O8q$ zfI%pub9E EN-^?JQXlSL>MpfoBFZ qh`lsVM`~9mbDI zw)&n8osRB%b~Imoyc$!Cb2C33Y+Ir`UTX2X+d56L^Yr+j)KmkL#x(&Un*IA-j4SQW z#a6W-a%l8zxv-$JebdGEdOwHVD S&pWmu&4@ yFw&TpS_2h;&(+DM~@c(TXR*hg4^}YO&&7Y4s?#l znRSFdw(#-o^}*rXoWEUB0B5hi_-q*tUgwy_CVjOX@Q7sK0ppVPGX7a8mfu4 FR7IN)!U8 zo-^loL)Xt@En)zYjSCF0aND|UMwk0|GG$%SQGy)m+Tdwr#m$w6;ZKzhj{W?m!S73f z67yx-o2)|#qk=z80rr>&1F#G8Wz4s`XsM(YpP3`$rP%zkU1Bi)dc*qFDc4@9!J9Ku z1qK?Eusz<69idbiA7Wher%L^8F*)I9w@+6Xk7$(TUU?i#Hp3+dJx9kz=`=cabb7w; zKMQR9Ad`w@d%2u5t|a?}&JsChP@%4F*Ds7(@k{A50oBQy_=NpF*suM#oBb4d5%_fY zXtGY#RUO|;wTP{+ZYnJ!$u9QubEHKN`SextJcTC(a-j6-Ceu&98vzh}b~J+5K>1?a zDu|nj^0T~6!jQZ?Nb|Satu;$cLaq}rQvz^ag8B^_a;IZC4JyMHW5}Migq4I}Q*hhz z=wZ$L(p%8joIw3JK_SE%8pM59q$?QPj_ZQN((DT`10;A+PibBPyF+n!OgH?B!I`uW z@?ZyShUTc}u{MII`A=s`wp|FLg{ZZGKYg~6k`Uo1;gIydJlKtSnu-}a31?N|FOVs{ zu6pyNQS7f>n1cLA9ifCwQ+JK%X>fq>mpDTHf}dXvw!yq~4ioMBaew86G|MMf?R>%~ zgs40#`)QT-Vgy+i(rcbb< ~AWYpdp^^lQ6Y0u7I5WG(ooH)_nfC zu|HE6CVjJK#6 @aIk|`vOhDsfNl@ds$aiLp92sN(|AT7k|+!mB$lz# z?!IP<6bOkI(7yQ;36!HGgmk{RH{wsT>dM#Q0lE?Y-rmA{?Z^6aHij!UWxB;BW7|7M zD7nn1Dk0&Gb*41yfl=$|N&GOm@P bzhJxo|SMLi( Nr8(?~`x2?UavqFS}piY1+=N>(+n=n|l^HBKsq^70&1- z`75*=K67R(JmI7T)#R+f|K+N^+Y`OzGjhnwHgIkaFw|1|MfzHcRwU2u)fdu4aPVx{ zEwYr2Xc_Sy2GjnQQjx8#dfOT%Fs+B%-z;(uT+iy%AH!?I7`5DY{w!$I&OOis@LO-F za9Za|u(m56EX{n@Z$6%<{8=8%2sWxDtl752$qn`ZCzyOdd;#Mg2}?Ij2Kv5V7jg0h zR#A$XOd(wX#<7x))zrko{rWM|K~p88J5p3bFH}e9v1GERr`IIj=EW)7w1&N71KPon zc(HAu3R&pHFB04~lCL@Y%Rp!k`P(;s(gPk?3_B-Ea8b%$EXseyee%!q^#?wBst+U< z7rQ9b`n=h^(Z1J}URv+uvDM75={n1&VMqDne%IvW&`W0vdM%q#O>!~GV9LVD78O!< zD+9xZ9>k>Aj4oRwy;&OX9{^OYULGU~7-se}gW}V;cmlhbMcJHVbwH8Z4$1wzxi2?! z6hKpOAj(#8U;2_}XQvL2N{cAq%MDa;C`Z>kD{B`tPUm 4XR8&Q`IGF2c` H;B@eZn47jv_hvFzIGy%WL;RgGx^09T3^V(;b*3cSg=CMOR1y<26L3 z9NZ`OhUV^ZL^9i@#qYo)2>$lz=01xoDWt#HDAaf+sH@lnzSfN(|01%WD4#?@|M4X8 zcfDzBiFt+0!MkQHwyLjaY`$5Rz>h~ip&Y4a!QW7?x#e6>U)gCa&`0iXI$dDXz;=u| z1El0P&rhuy+hGWqP>uak!Q6?_=gr7J_R-hydmD%xx>sY)+)lNQgWfRbxQ#Zv_ojgm z+pD6{puk&q1)D(*4i5g62IH+x+a{t%&)+!QyOor0IXETtC i>ttKJa+jSfWv(O3yldrv!Fn=o7f*M>v? 8FExFwk135@lke1Y r$fC!uY%Q~OU<~l!r24*XLST#KhEqV90xxSBS_i8-C5gj zxS_I(8cPsoOQB@zLiv8C+d1l8*(^H-As8dBbI+s?V -HtDH9)B|IKVJ!R7kt;YRg~wwug&`*T%xZGV|-t+fmH7+R{H-Q?nw5qI504is6#n zLA<`?f2k9PX|e%{j;W*4oNw< !2fb#Xq k*q2ZQU!4?Z|W$?fT?pE4WizzNw4*EaBBDQZmB$5 ADpacMW%^^N8`^HPN%0Gw2`aoj+%2c?QahNwPUr z8d 8PlRPbrFr*EnbkY9OFtrMoq1{`7jd*qe3hWdhVZW<7b zCuN1P^k|qn^Go9Ezs8yWWEn_qy$3*k @}L% z=?)iHAVU*R$jXXMG59Trf7sJQAFFVb!|B@|V!~@<7dB#PD9Ab}d# Gy%*Kjy>L z;}20;IRJSR!|2VkxzNcC`H6+WC0iNRhJlYqFRBiDhu0A$AP(NzvT0p^&H{4dXzpF5 z1M(JWrQbv|FCnI7)B1wNP_sfVipBn|2TS~4sKFr^3T@!&UpZV^qi-Y=0c?>lFH49< z^f$SUuD2=3U$E9lcT$N|0Dhm$@^wIdZRYr|UqTioV;apij1t~!l6z%>OF-e_5g?wC zKM>k~q$2`cBmYcgZui&>;3-U{E%c4)-c<1`nw%hNvhuLDoJJUCHaE~jtIJ4s{)f zNo@3#Za=#{A8zMiMiO=eM3V17tURT&uBVm2M^1?!78-28<=?q3sGGKqqR|~1o{O!l zW`!CH+ExeD=hXQ8*9bA-ZlK55c5xgydYwm`Qk}I2kJgr3wM+-{0+)?*4Faurv$&^? z8S_5tGo%p0MM5|ca$SL8QIHlyDn+pmsU_Sio=DbZ_u}y44Gh}g*~ywyNS?Jyh+6f> z8}vQP5y_g4K&w|nFAIfe(NFe{Esm_N_We>9_VxD87+p4gM?E%j$k@@|VPN)g1x$me zg2YcHC}x?YR$Xy&8a*KJmp|9CPJ-7|%V}t?sVxP8?Vc(^wVU2&`77W*AHIvV{AR;p z7=j&x`T2Oe1T0;kcwFxpdBvaIwke7T(UBLd1m{AVx)c}!zX?3&oy>4(RkixYmJ+K} z^Pq)gnu!