arry
trenner
text
to
subject
id
user
val
alexa_instanz_0
alexa_instanz_1
ueberschrift_nachrichten_Batterien_Status
anzahl_Batterien_Status_aktiv
uebnerschrift_nachrichten_Batterien_volt
anzahl_Batterien_volt_gesamt
uebnerschrift_nachrichten_Steckdosen
anzahl_Steckdosen_aktiv
uebnerschrift_nachrichten_Lichter
anzahl_Lichter_aktiv
uebnerschrift_nachrichten_Bewegungsmelder
anzahl_Bewegungsmelder_aktiv
gekippt
anzahl_fenster_gekippt
anzahl_tueren_gekippt
uebnerschrift_nachrichten_Temperaturen
liste_temperaturen_gesamt
anzahl_Batterien_Status_inaktiv
liste_Batterien_volt_gesamt_text
anzahl_Steckdosen_inaktiv
anzahl_Lichter_inaktiv
anzahl_Bewegungsmelder_inaktiv
geoffnet
anzahl_fenster_offen
anzahl_tueren_offen
liste_temperaturen_html
angesprochener_echo_instanz_0
angesprochener_echo_instanz_1
emoji_π
Batterien
timeout
anzahl_Batterien_Status_gesamt
etage
timeout2
liste_Batterien_volt_html
emoji_π
Steckdosen
timeout3
anzahl_Steckdosen_gesamt
emoji_π‘
Licht
timeout4
anzahl_Lichter_gesamt
emoji_π
Bewegungsmelder
timeout5
anzahl_Bewegungsmelder_gesamt
emoji_π
uebnerschrift_nachrichten_Fenster
anzahl_fenster_geschlossen
uebnerschrift_nachrichten_Tueren
anzahl_tueren_geschlossen
emoji_π‘οΈ
Temperaturen
timeout8
liste_temperaturen_emojis
speak_volume_instanz_0
Ansage_Button_Batterien_Status_eDP
speak_volume_instanz_1
Ansage_Button_Batterien_Volt_eDP
Ansage_Button_Steckdosen_eDP
liste_Batterien_Status_aktiv
nachrichten_ausgabe_Batterien_volt
Ansage_Button_Lichter_eDP
htmlText
Batterien_Status_verwenden
Anzahl_Batterien_Status_gesamt_eDP
Ansage_Button_Bewegungsmelder_eDP
liste_Steckdosen_aktiv
Ansage_Button_Fenster_eDP
liste_Lichter_aktiv
Ansage_Button_Tueren_eDP
liste_Bewegungsmelder_aktiv
emoji_βοΈ
Ansage_Button_Temperaturen_eDP
anzahl_fenster_gesamt
Fenster
anzahl_tueren_gesamt
nachrichten_ausgabe_Temperaturen
angesprochener_echo_instanz_0_neu
angesprochener_echo_instanz_1_neu
nachrichten_ausgabe_Batterien_Status
liste_Batterien_Status_inaktiv
Batterie_Volt
Anzahl_Batterien_Status_aktiv_eDP
Logmeldung_Batterien_Ansage_Status
nachrichten_ausgabe_Steckdosen
liste_Steckdosen_inaktiv
nachrichten_ausgabe_Lichter
liste_Lichter_inaktiv
nachrichten_ausgabe_Bewegungsmelder
liste_Bewegungsmelder_inaktiv
emoji_π₯
timeout6
liste_fenster_offen
emoji_πͺ
Tueren
timeout7
liste_tueren_offen
temperaturen_suchen
speak_volume_instanz_0_neu
Ansagelautstaerke
speak_volume_instanz_1_neu
liste_Batterien_Status_aktiv_html
Liste_Batterien_aktiv_emojis_Volt_eDP
selektor_Batterien_Volt
anlegen_in
pfad_geraete_zaehlen
Liste_Batterien_Status_aktiv_eDP
Alexa_Ansage_verwenden
Ansage_Einleitungssatz_Batterien_Status
liste_Steckdosen_aktiv_html
liste_Lichter_aktiv_html
liste_Bewegungsmelder_aktiv_html
liste_fenster_gekippt
liste_tueren_gekippt
Liste_Temperaturen_emojis_eDP
selektor_Temperaturen
eine
einzahl_Batterie
liste_Batterien_Status_inaktiv_html
Anzahl_Batterien_volt_gesamt_eDP
Liste_Batterien_Status_gesamt_eDP
Batterien_volt_verwenden
einzahl_Steckdose
liste_Steckdosen_inaktiv_html
ein
einzahl_Licht
liste_Lichter_inaktiv_html
einzahl_Bewegungsmelder
liste_Bewegungsmelder_inaktiv_html
nachrichten_ausgabe_Fenster
liste_fenster_geschlossen
nachrichten_ausgabe_Tueren
liste_tueren_geschlossen
gesamte_Temperaturen_Liste_eDP
Ansage_Einleitungssatz_Batterien_volt
emoji_βοΈ
Liste_Batterien_Status_aktiv_emojis_eDP
gesamte_Batterien_volt_Liste_eDP
Liste_Batterien_Status_html_eDP
Logmeldung_Batterie_Ansage_volt
emoji_β‘οΈ
Liste_Steckdosen_aktiv_emojis_eDP
Liste_Lichter_aktiv_emojis_eDP
Liste_Bewegungsmelder_aktiv_emojis_eDP
Ansage_Einleitungssatz_Temperaturen
liste_fenster_offen_gesamt
liste_tueren_offen_gesamt
Liste_Temperaturen_html_eDP
mehrzahl_Batterien
emoji_β
Ansage_Einleitungssatz_Steckdosen
Logmeldung_Steckdosen_Ansage
Batterien_Status_aktiv
Ansage_Einleitungssatz_Lichter
Logmeldung_Lichter_Ansage
Liste_Batterien_volt_html_eDP
pfad_geraete_ansagen
Ansage_Einleitungssatz_Bewegungsmelder
Logmeldung_Bewegungsmelder_Ansage
Steckdosen_aktiv
Ansage_Einleitungssatz_Fenster
Logmeldung_Fenster_Ansage
Lichter_aktiv
Ansage_Einleitungssatz_Tueren
Logmeldung_Tueren_Ansage
Bewegungsmelder_aktiv
Logmeldung_Temperaturen_Ansage
liste_fenster_offen_html
einzahl_Tuer
liste_tueren_offen_html
Anzahl_Steckdosen_aktiv_eDP
selektor_Batterien_Status
Batterien_Status_inaktiv
Anzahl_Lichter_aktiv_eDP
Steckdosen_verwenden
Anzahl_Steckdosen_gesamt_eDP
Anzahl_Bewegungsmelder_aktiv_eDP
selektor_Steckdosen
Steckdosen_inaktiv
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
selektor_Lichter
Lichter_inaktiv
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
selektor_Bewegungsmelder
Bewegungsmelder_inaktiv
Anzahl_Fenster_offen_eDP
Anzahl_Fenster_gekippt_eDP
liste_fenster_gekippt_html
Anzahl_Tueren_offen_eDP
Anzahl_Tueren_gekippt_eDP
liste_tueren_gekippt_html
Liste_Steckdosen_aktiv_eDP
Liste_Lichter_aktiv_eDP
blockly_start_batterien_status_zaehlen_einlesen
Liste_Bewegungsmelder_aktiv_eDP
offene_gekippte_Fenster_Liste_eDP
offene_gekippte_Tueren_Liste_eDP
liste_fenster_geschlossen_html
liste_tueren_geschlossen_html
formatierte_ausgabe_batterien_status_zum_start
blockly_start_batterien_volt_zaehlen_einlesen
Anzahl_Lichter_gesamt_eDP
Anzahl_Bewegungsmelder_gesamt_eDP
formatierte_ausgabe_batterien_volt_zum_start
Liste_Steckdosen_gesamt_eDP
Lichter_verwenden
fenster_offen
pfad_geraete_benachrichtigungen
tueren_offen
Liste_Steckdosen_html_eDP
selektor_Fenster
fenster_gekippt
selektor_Tueren
tueren_gekippt
wert
fenster_geschlossen
tueren_geschlossen
Liste_Lichter_gesamt_eDP
Bewegungsmelder_verwenden
Liste_Bewegungsmelder_gesamt_eDP
offene_gekippte_Fenster_Liste_emojis_eDP
offene_gekippte_Tueren_Liste_emojis_eDP
blockly_start_steckdosen_zaehlen_einlesen
Liste_Lichter_html_eDP
emoji_π
emoji_π
Liste_Bewegungsmelder_html_eDP
formatierte_ausgabe_steckdosen_zum_start
Fenster_verwenden
Anzahl_Fenster_geschlossen_eDP
Anzahl_Tueren_geschlossen_eDP
blockly_start_lichter_zaehlen_einlesen
Anzahl_Fenster_gesamt_eDP
Anzahl_Tueren_gesamt_eDP
formatierte_ausgabe_lichter_zum_start
Tueren_verwenden
Telegram_verwenden
blockly_start_bwm_zaehlen_einlesen
gesamte_Fenster_Liste_eDP
Email_verwenden
gesamte_Tueren_Liste_eDP
formatierte_ausgabe_bwm_zum_start
Liste_Fenster_html_eDP
Liste_Tueren_html_eDP
Temperaturen_verwenden
telegram_versand_an_aus_Batterien_Status
blockly_start_fenster_zaehlen_einlesen
blockly_start_temperaturen_einlesen
telegram_direkt_versenden_Batterien_Status
telegram_versand_an_aus_Batterien_volt
formatierte_ausgabe_fenster_zum_start
formatierte_ausgabe_temperaturen_zum_start
telegram_direkt_versenden_Batterien_volt
telegram_versand_an_aus_Steckdosen
telegram_direkt_versenden_Steckdosen
telegram_versand_an_aus_Lichter
blockly_start_tueren_zaehlen_einlesen
telegram_direkt_versenden_Lichter
telegram_versand_an_aus_Bewegungsmelder
formatierte_ausgabe_tueren_zum_start
Telegram_Empfaenger
telegram_direkt_versenden_Bewegungsmelder
telegram_versand_an_aus_Fenster
telegram
telegram_direkt_versenden_Fenster
telegram_versand_an_aus_Tueren
telegram8
telegram_direkt_versenden_Tueren
telegram_versand_an_aus_Temperaturen
telegram2
telegram_direkt_versenden_Temperaturen
telegram3
email_versand_an_aus_Batterien_Status
telegram4
email_direkt_versenden_Batterien_Status
email_versand_an_aus_Batterien_volt
EMail_Empfaenger
telegram5
email_direkt_versenden_Batterien_volt
email_versand_an_aus_Steckdosen
telegram6
email_direkt_versenden_Steckdosen
email_versand_an_aus_Lichter
telegram7
Betreff
email_direkt_versenden_Lichter
email_versand_an_aus_Bewegungsmelder
email_direkt_versenden_Bewegungsmelder
email_versand_an_aus_Fenster
email_direkt_versenden_Fenster
email_versand_an_aus_Tueren
email
email_direkt_versenden_Tueren
email_versand_an_aus_Temperaturen
email8
email_direkt_versenden_Temperaturen
email2
email3
email4
email5
emoji_β
email6
email7
emoji_π§―
emoji_π
einzahl_Fenster
mehrzahl_Fenster
mehrzahl_Tueren
mehrzahl_Steckdosen
mehrzahl_Licht
mehrzahl_Bewegungsmelder
arry, trenner
cmV0dXJuIGFycnkuam9pbih0cmVubmVyKTs=
Beschreibe diese Funktion β¦
EMail_Batterien_Status
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfQmF0dGVyaWVuX1N0YXR1cywKICAgICB0bzogRU1haWxfRW1wZmFlbmdlciwKICAgICBzdWJqZWN0OiBCZXRyZWZmCiAgfSk7
Beschreibe diese Funktion β¦
getParentName
aWYoZXhpc3RzT2JqZWN0KGlkKSkgcmV0dXJuIGdldE9iamVjdChpZCkuY29tbW9uLm5hbWU7DQoNCmVsc2UgcmV0dXJuICdHZXJhZXQgdW5iZWthbm50Jzs=
Beschreibe diese Funktion β¦
EMail_Batterien_volt
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfQmF0dGVyaWVuX3ZvbHQsCiAgICAgdG86IEVNYWlsX0VtcGZhZW5nZXIsCiAgICAgc3ViamVjdDogQmV0cmVmZgogIH0pOw==
Beschreibe diese Funktion β¦
Telegram_Batterien_Status
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9CYXR0ZXJpZW5fU3RhdHVzLAogICAgdXNlcjogVGVsZWdyYW1fRW1wZmFlbmdlciwKICAgIHBhcnNlX21vZGU6ICJNYXJrZG93biIsCn0pOw==
Beschreibe diese Funktion β¦
EMail_Steckdosen
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfU3RlY2tkb3NlbiwKICAgICB0bzogRU1haWxfRW1wZmFlbmdlciwKICAgICBzdWJqZWN0OiBCZXRyZWZmCiAgfSk7
Beschreibe diese Funktion β¦
getParentName2
aWYoZXhpc3RzT2JqZWN0KGlkKSkgcmV0dXJuIGdldE9iamVjdChpZCkudmFsOw0KDQplbHNlIHJldHVybiAnR2VyYWV0IHVuYmVrYW5udCc7
Beschreibe diese Funktion β¦
Telegram_Batterien_volt
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9CYXR0ZXJpZW5fdm9sdCwKICAgIHVzZXI6IFRlbGVncmFtX0VtcGZhZW5nZXIsCiAgICBwYXJzZV9tb2RlOiAiTWFya2Rvd24iLAp9KTs=
Beschreibe diese Funktion β¦
EMail_Lichter
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfTGljaHRlciwKICAgICB0bzogRU1haWxfRW1wZmFlbmdlciwKICAgICBzdWJqZWN0OiBCZXRyZWZmCiAgfSk7
Beschreibe diese Funktion β¦
Batterien_Status_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Batterien_Status_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
EQ
val
Anzahl_Batterien_Status_aktiv_eDP
0
Ansage_Einleitungssatz_Batterien_Status
, alle
mehrzahl_Batterien
sind voll.
NEQ
val
Anzahl_Batterien_Status_aktiv_eDP
0
Ansage_Einleitungssatz_Batterien_Status
val
Liste_Batterien_Status_aktiv_eDP
, alle anderen
mehrzahl_Batterien
sind voll.
0
log
Logmeldung_Batterien_Ansage_Status
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Telegram_Steckdosen
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9TdGVja2Rvc2VuLAogICAgdXNlcjogVGVsZWdyYW1fRW1wZmFlbmdlciwKICAgIHBhcnNlX21vZGU6ICJNYXJrZG93biIsCn0pOw==
Beschreibe diese Funktion β¦
EMail_BWM
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfQmV3ZWd1bmdzbWVsZGVyLAogICAgIHRvOiBFTWFpbF9FbXBmYWVuZ2VyLAogICAgIHN1YmplY3Q6IEJldHJlZmYKICB9KTs=
Beschreibe diese Funktion β¦
Batterien_voll_leer_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Batterien_Status_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
EQ
val
Anzahl_Batterien_Status_aktiv_eDP
0
Ansage_Einleitungssatz_Batterien_Status
, alle
mehrzahl_Batterien
sind voll.
NEQ
val
Anzahl_Batterien_Status_aktiv_eDP
0
Ansage_Einleitungssatz_Batterien_Status
val
Liste_Batterien_Status_aktiv_eDP
, alle anderen
mehrzahl_Batterien
sind voll.
0
log
Logmeldung_Batterien_Ansage_Status
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
stateText
Ly9pZihnZXRPYmplY3QoaWQpLmNvbW1vbi5zdGF0ZXMpIHJldHVybiBnZXRPYmplY3QoaWQpLmNvbW1vbi5zdGF0ZXNbdmFsXTsKLy9yZXR1cm4gaWQgKyAnIGhhdCBrZWluZW4gWnVzdGFuZHN0ZXh0JzsKaWYoZ2V0T2JqZWN0KGlkKS5jb21tb24uc3RhdGVzKSByZXR1cm4gKGdldE9iamVjdChpZCkuY29tbW9uLnN0YXRlc1t2YWxdKTsKZWxzZSAKcmV0dXJuIGdldFN0YXRlKGlkKS52YWw7
Beschreibe diese Funktion β¦
Batterien_volt_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Batterien_Volt_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
Ansage_Einleitungssatz_Batterien_volt
Es werden
val
Anzahl_Batterien_volt_gesamt_eDP
Batterien
angesagt;
val
gesamte_Batterien_volt_Liste_eDP
; das wΓ€re dann alles.
0
log
Logmeldung_Batterie_Ansage_volt
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Telegram_Lichter
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9MaWNodGVyLAogICAgdXNlcjogVGVsZWdyYW1fRW1wZmFlbmdlciwKICAgIHBhcnNlX21vZGU6ICJNYXJrZG93biIsCn0pOw==
Beschreibe diese Funktion β¦
EMail_Fenster
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfRmVuc3RlciwKICAgICB0bzogRU1haWxfRW1wZmFlbmdlciwKICAgICBzdWJqZWN0OiBCZXRyZWZmCiAgfSk7
Beschreibe diese Funktion β¦
Batterien_volt_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Batterien_Volt_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
Ansage_Einleitungssatz_Batterien_volt
Es werden
val
Anzahl_Batterien_volt_gesamt_eDP
Batterien
angesagt;
val
gesamte_Batterien_volt_Liste_eDP
; das wΓ€re dann alles.
0
log
Logmeldung_Batterie_Ansage_volt
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
Batterien_Status_vor_versand_pruefen
Beschreibe diese Funktion β¦
ueberschrift_nachrichten_Batterien_Status
emoji_π
*
Batterien
status
*
\n
timeout
timeout
1000
ms
EQ
anzahl_Batterien_Status_aktiv
1
nachrichten_ausgabe_Batterien_Status
ueberschrift_nachrichten_Batterien_Status
Es ist
eine
einzahl_Batterie
leer
emoji_βοΈ
\n
\n
TEXT
1
liste_Batterien_Status_aktiv
\n
GT
anzahl_Batterien_Status_aktiv
1
nachrichten_ausgabe_Batterien_Status
ueberschrift_nachrichten_Batterien_Status
Es sind
anzahl_Batterien_Status_aktiv
Batterien
leer
emoji_βοΈ
\n
\n
TEXT
1
liste_Batterien_Status_aktiv
\n
EQ
anzahl_Batterien_Status_aktiv
0
nachrichten_ausgabe_Batterien_Status
ueberschrift_nachrichten_Batterien_Status
Aktuell gibt es keine leeren
Batterien
emoji_β
true
FALSE
Object ID
Liste_Batterien_Status_aktiv_emojis_eDP
TRUE
nachrichten_ausgabe_Batterien_Status
0
Steckdosen_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Steckdosen_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
EQ
val
Anzahl_Steckdosen_aktiv_eDP
0
Ansage_Einleitungssatz_Steckdosen
, alle
Steckdosen
sind ausgeschaltet.
NEQ
val
Anzahl_Steckdosen_aktiv_eDP
0
Ansage_Einleitungssatz_Steckdosen
val
Liste_Steckdosen_aktiv_eDP
, alle anderen
Steckdosen
sind ausgeschaltet.
0
log
Logmeldung_Steckdosen_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Telegram_BWM
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9CZXdlZ3VuZ3NtZWxkZXIsCiAgICB1c2VyOiBUZWxlZ3JhbV9FbXBmYWVuZ2VyLAogICAgcGFyc2VfbW9kZTogIk1hcmtkb3duIiwKfSk7
Beschreibe diese Funktion β¦
EMail_Tueren
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfVHVlcmVuLAogICAgIHRvOiBFTWFpbF9FbXBmYWVuZ2VyLAogICAgIHN1YmplY3Q6IEJldHJlZmYKICB9KTs=
Beschreibe diese Funktion β¦
Batterien_Status_zaehlen
Beschreibe diese Funktion β¦
anzahl_Batterien_Status_aktiv
0
anzahl_Batterien_Status_inaktiv
0
anzahl_Batterien_Status_gesamt
0
liste_Batterien_Status_aktiv
liste_Batterien_Status_inaktiv
liste_Batterien_Status_aktiv_html
liste_Batterien_Status_inaktiv_html
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Batterien
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Batterien
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Batterien
etage
   </td><td>Status</td></tr>
<tr><td>
Batterien_Status_aktiv
selektor_Batterien_Status
anzahl_Batterien_Status_gesamt
1
OR
val
Batterien_Status_aktiv
GT
val
Batterien_Status_aktiv
0
anzahl_Batterien_Status_aktiv
1
INSERT
LAST
liste_Batterien_Status_aktiv
Batterien_Status_aktiv
leer
INSERT
LAST
liste_Batterien_Status_aktiv_html
Batterien_Status_aktiv
<td><span style="color:#FF0000">
leer
emoji_βοΈ
</span>
Batterien_Status_inaktiv
selektor_Batterien_Status
OR
val
Batterien_Status_inaktiv
EQ
val
Batterien_Status_inaktiv
0
anzahl_Batterien_Status_inaktiv
1
INSERT
LAST
liste_Batterien_Status_inaktiv
Batterien_Status_inaktiv
voll
INSERT
LAST
liste_Batterien_Status_inaktiv_html
Batterien_Status_inaktiv
<td>
voll
emoji_β
true
FALSE
Object ID
Anzahl_Batterien_Status_gesamt_eDP
TRUE
anzahl_Batterien_Status_gesamt
0
true
FALSE
Object ID
Anzahl_Batterien_Status_aktiv_eDP
TRUE
anzahl_Batterien_Status_aktiv
0
EQ
anzahl_Batterien_Status_aktiv
0
true
FALSE
Object ID
Liste_Batterien_Status_aktiv_eDP
TRUE
Batterien
Aktuell gibt es keine leeren
Batterien
0
true
FALSE
Object ID
Liste_Batterien_Status_gesamt_eDP
TRUE
TEXT
1
liste_Batterien_Status_inaktiv
,
0
true
FALSE
Object ID
Liste_Batterien_Status_html_eDP
TRUE
htmlText
TEXT
1
liste_Batterien_Status_inaktiv_html
<tr><td>
</table></body>
0
true
FALSE
Object ID
Liste_Batterien_Status_aktiv_eDP
TRUE
GT
ADD
1
abc
TEXT
1
liste_Batterien_Status_aktiv
;
1
abc
Ansage_Einleitungssatz_Batterien_Status
, alle anderen
mehrzahl_Batterien
sind voll.
250
TEXT
1
liste_Batterien_Status_aktiv
;
TEXT
1
liste_Batterien_Status_aktiv
,
0
true
FALSE
Object ID
Liste_Batterien_Status_gesamt_eDP
TRUE
TEXT
1
liste_Batterien_Status_aktiv
,
,
TEXT
1
liste_Batterien_Status_inaktiv
,
0
true
FALSE
Object ID
Liste_Batterien_Status_html_eDP
TRUE
EQ
anzahl_Batterien_Status_aktiv
anzahl_Batterien_Status_gesamt
htmlText
TEXT
1
liste_Batterien_Status_aktiv_html
<tr><td>
</table></body>
htmlText
TEXT
1
liste_Batterien_Status_aktiv_html
<tr><td>
<tr><td>
TEXT
1
liste_Batterien_Status_inaktiv_html
<tr><td>
</table></body>
0
Steckdosen_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Steckdosen_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
EQ
val
Anzahl_Steckdosen_aktiv_eDP
0
Ansage_Einleitungssatz_Steckdosen
, alle
Steckdosen
sind ausgeschaltet.
NEQ
val
Anzahl_Steckdosen_aktiv_eDP
0
Ansage_Einleitungssatz_Steckdosen
val
Liste_Steckdosen_aktiv_eDP
, alle anderen
Steckdosen
sind ausgeschaltet.
0
log
Logmeldung_Batterien_Ansage_Status
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
existiert_DP
cmV0dXJuIGV4aXN0c1N0YXRlKGlkKTs=
Beschreibe diese Funktion β¦
Batterien_volt_vor_versand_pruefen
Beschreibe diese Funktion β¦
uebnerschrift_nachrichten_Batterien_volt
emoji_π
*
etage
Batterien
volt Status
*
\n
timeout2
timeout2
1000
ms
nachrichten_ausgabe_Batterien_volt
GT
anzahl_Batterien_volt_gesamt
1
uebnerschrift_nachrichten_Batterien_volt
Es gibt
anzahl_Batterien_volt_gesamt
Batterien
\n
\n
TEXT
1
liste_Batterien_volt_gesamt_text
\n
uebnerschrift_nachrichten_Batterien_volt
Es gibt
eine
Batterien
\n
\n
TEXT
1
liste_Batterien_volt_gesamt_text
\n
true
FALSE
Object ID
Liste_Batterien_aktiv_emojis_Volt_eDP
TRUE
nachrichten_ausgabe_Batterien_volt
0
Lichter_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Lichter_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
EQ
val
Anzahl_Lichter_aktiv_eDP
0
Ansage_Einleitungssatz_Lichter
, alle
Licht
sind ausgeschaltet.
NEQ
val
Anzahl_Lichter_aktiv_eDP
0
Ansage_Einleitungssatz_Lichter
val
Liste_Lichter_aktiv_eDP
,alle anderen
Licht
sind ausgeschaltet.
0
log
Logmeldung_Lichter_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Telegram_Fenster
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9GZW5zdGVyLAogICAgdXNlcjogVGVsZWdyYW1fRW1wZmFlbmdlciwKICAgIHBhcnNlX21vZGU6ICJNYXJrZG93biIsCn0pOw==
Beschreibe diese Funktion β¦
EMail_Temperaturen
c2VuZFRvKCJlbWFpbCIsICJzZW5kIiwgewogICAgIHRleHQ6IG5hY2hyaWNodGVuX2F1c2dhYmVfVGVtcGVyYXR1cmVuLAogICAgIHRvOiBFTWFpbF9FbXBmYWVuZ2VyLAogICAgIHN1YmplY3Q6IEJldHJlZmYKICB9KTs=
Beschreibe diese Funktion β¦
Batterien_volt_zaehlen
Beschreibe diese Funktion β¦
anzahl_Batterien_volt_gesamt
0
liste_Batterien_volt_gesamt_text
liste_Batterien_volt_html
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Batterien
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Batterien
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Status
   </td><td>
Batterien
etage
</td></tr>
<tr><td>
Batterie_Volt
selektor_Batterien_Volt
anzahl_Batterien_volt_gesamt
1
INSERT
LAST
liste_Batterien_volt_gesamt_text
Batterie_Volt
val
Batterie_Volt
Volt
Batterie_Volt
INSERT
LAST
liste_Batterien_volt_html
Batterie_Volt
val
Batterie_Volt
Volt
</span><td>
Batterie_Volt
true
FALSE
Object ID
Anzahl_Batterien_volt_gesamt_eDP
TRUE
anzahl_Batterien_volt_gesamt
0
true
FALSE
Object ID
gesamte_Batterien_volt_Liste_eDP
TRUE
TEXT
1
liste_Batterien_volt_gesamt_text
;
0
true
FALSE
Object ID
Liste_Batterien_volt_html_eDP
TRUE
htmlText
TEXT
1
liste_Batterien_volt_html
<tr><td>
</table></body>
0
Lichter_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Lichter_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
EQ
val
Anzahl_Lichter_aktiv_eDP
0
Ansage_Einleitungssatz_Lichter
, alle
Licht
sind ausgeschaltet.
NEQ
val
Anzahl_Lichter_aktiv_eDP
0
Ansage_Einleitungssatz_Lichter
val
Liste_Lichter_aktiv_eDP
,alle anderen
Licht
sind ausgeschaltet.
0
log
Logmeldung_Lichter_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
main
Beschreibe diese Funktion β¦
main
Batterien voll leer
Batterien_Status_verwenden
Anzahl_Batterien_Status_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Status.
etage
Anzahl_
Batterien
_gesamt
Anzahl_Batterien_Status_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Status.
etage
Anzahl_
Batterien
_aktiv
Liste_Batterien_Status_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Status.
etage
aktive_
Batterien
_Liste
Liste_Batterien_Status_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Status.
etage
gesamte_
Batterien
_Liste
Liste_Batterien_Status_html_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Status.
etage
html_
Batterien
_Liste
Liste_Batterien_Status_aktiv_emojis_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Status.
etage
aktive_
Batterien
_Liste_mit_Emojis
ne
default
selektor_Batterien_Status
blockly_start_batterien_status_zaehlen_einlesen
2
sec
formatierte_ausgabe_batterien_status_zum_start
4
sec
AND
Batterien_Status_verwenden
Alexa_Ansage_verwenden
Logmeldung_Batterien_Ansage_Status
Die
etage
Batterien
ansage wurde vom ECHO
Ansage_Einleitungssatz_Batterien_Status
Hier der
etage
Batterien
status fΓΌr Dich.
Ansage_Button_Batterien_Status_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Batterien
statusansage
Batterien Volt
Batterien_volt_verwenden
Anzahl_Batterien_volt_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Volt.
etage
Anzahl_
Batterien
_gesamt
gesamte_Batterien_volt_Liste_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Volt.
etage
gesamte_
Batterien
_Liste
Liste_Batterien_volt_html_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Volt.
etage
html_
Batterien
_Liste
Liste_Batterien_aktiv_emojis_Volt_eDP
anlegen_in
pfad_geraete_zaehlen
Batterien
_Volt.
etage
aktive_
Batterien
_Liste_mit_Emojis
ne
default
selektor_Batterien_Volt
blockly_start_batterien_volt_zaehlen_einlesen
2
sec
formatierte_ausgabe_batterien_volt_zum_start
4
sec
AND
Batterien_volt_verwenden
Alexa_Ansage_verwenden
Logmeldung_Batterie_Ansage_volt
Die
etage
Batterien
voltansage wurde vom ECHO
Ansage_Einleitungssatz_Batterien_volt
Hier der
etage
Batterien
Volt Status fΓΌr Dich.
Ansage_Button_Batterien_Volt_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Batterien
voltansage
Steckdosen
Steckdosen_verwenden
Anzahl_Steckdosen_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Steckdosen
etage
.Anzahl_
Steckdosen
_gesamt
Anzahl_Steckdosen_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Steckdosen
etage
.Anzahl_
Steckdosen
_aktiv
Liste_Steckdosen_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Steckdosen
etage
.aktive_
Steckdosen
_Liste
Liste_Steckdosen_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Steckdosen
etage
.gesamte_
Steckdosen
_Liste
Liste_Steckdosen_html_eDP
anlegen_in
pfad_geraete_zaehlen
Steckdosen
etage
.html_
Steckdosen
_Liste
Liste_Steckdosen_aktiv_emojis_eDP
anlegen_in
pfad_geraete_zaehlen
Steckdosen
etage
.aktive_
Steckdosen
_Liste_mit_Emojis
ne
default
selektor_Steckdosen
blockly_start_steckdosen_zaehlen_einlesen
2
sec
formatierte_ausgabe_steckdosen_zum_start
4
sec
AND
Steckdosen_verwenden
Alexa_Ansage_verwenden
Logmeldung_Steckdosen_Ansage
Die
etage
Steckdosen
ansage wurde vom ECHO
Ansage_Einleitungssatz_Steckdosen
Hier der
etage
Steckdosen
status fΓΌr Dich.
Ansage_Button_Steckdosen_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Steckdosen
ansage
Licht
Lichter_verwenden
Anzahl_Lichter_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Licht
etage
.Anzahl_
Licht
_gesamt
Anzahl_Lichter_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Licht
etage
.Anzahl_
Licht
_aktiv
Liste_Lichter_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Licht
etage
.aktive_
Licht
_Liste
Liste_Lichter_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Licht
etage
.gesamte_
Licht
_Liste
Liste_Lichter_html_eDP
anlegen_in
pfad_geraete_zaehlen
Licht
etage
.html_
Licht
_Liste
Liste_Lichter_aktiv_emojis_eDP
anlegen_in
pfad_geraete_zaehlen
Licht
etage
.aktive_
Licht
_Liste_mit_Emojis
ne
default
selektor_Lichter
blockly_start_lichter_zaehlen_einlesen
2
sec
formatierte_ausgabe_lichter_zum_start
4
sec
AND
Lichter_verwenden
Alexa_Ansage_verwenden
Logmeldung_Lichter_Ansage
Die
etage
Licht
ansage wurde vom ECHO
Ansage_Einleitungssatz_Lichter
Hier der
etage
Licht
status fΓΌr Dich.
Ansage_Button_Lichter_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Licht
ansage
Bewegungsmelder
Bewegungsmelder_verwenden
Anzahl_Bewegungsmelder_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Bewegungsmelder
etage
.Anzahl_
Bewegungsmelder
_gesamt
Anzahl_Bewegungsmelder_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Bewegungsmelder
etage
.Anzahl_
Bewegungsmelder
_aktiv
Liste_Bewegungsmelder_aktiv_eDP
anlegen_in
pfad_geraete_zaehlen
Bewegungsmelder
etage
.aktive_
Bewegungsmelder
_Liste
Liste_Bewegungsmelder_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Bewegungsmelder
etage
.gesamte_
Bewegungsmelder
_Liste
Liste_Bewegungsmelder_html_eDP
anlegen_in
pfad_geraete_zaehlen
Bewegungsmelder
etage
.html_
Bewegungsmelder
_Liste
Liste_Bewegungsmelder_aktiv_emojis_eDP
anlegen_in
pfad_geraete_zaehlen
Bewegungsmelder
etage
.aktive_
Bewegungsmelder
_Liste_mit_Emojis
ne
default
selektor_Bewegungsmelder
blockly_start_bwm_zaehlen_einlesen
2
sec
formatierte_ausgabe_bwm_zum_start
4
sec
AND
Bewegungsmelder_verwenden
Alexa_Ansage_verwenden
Logmeldung_Bewegungsmelder_Ansage
Die
etage
Bewegungsmelder
ansage wurde vom ECHO
Ansage_Einleitungssatz_Bewegungsmelder
Hier der
etage
Bewegungsmelder
status fΓΌr Dich.
Ansage_Button_Bewegungsmelder_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Bewegungsmelder
ansage
Fenster
Fenster_verwenden
Anzahl_Fenster_gekippt_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.Anzahl_
Fenster
_gekippt
Anzahl_Fenster_offen_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.Anzahl_
Fenster
_offen
Anzahl_Fenster_geschlossen_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.Anzahl_
Fenster
_geschlossen
Anzahl_Fenster_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.Anzahl_
Fenster
_gesamt
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.Anzahl_
Fenster
_geoeffnet_und_gekippt_gesamt
offene_gekippte_Fenster_Liste_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.offene_gekippte_
Fenster
_Liste
gesamte_Fenster_Liste_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.gesamte_
Fenster
_Liste
Liste_Fenster_html_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.html_
Fenster
_Liste
offene_gekippte_Fenster_Liste_emojis_eDP
anlegen_in
pfad_geraete_zaehlen
Fenster
etage
.offene_gekippte_
Fenster
_Liste_mit_Emojis
ne
default
selektor_Fenster
blockly_start_fenster_zaehlen_einlesen
2
sec
formatierte_ausgabe_fenster_zum_start
4
sec
AND
Fenster_verwenden
Alexa_Ansage_verwenden
Logmeldung_Fenster_Ansage
Die
etage
Fenster
ansage wurde vom ECHO
Ansage_Einleitungssatz_Fenster
Hier der
etage
Fenster
status fΓΌr Dich.
Ansage_Button_Fenster_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Fenster
ansage
Tueren
Tueren_verwenden
Anzahl_Tueren_gekippt_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.Anzahl_
Tueren
_gekippt
Anzahl_Tueren_offen_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.Anzahl_
Tueren
_offen
Anzahl_Tueren_geschlossen_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.Anzahl_
Tueren
_geschlossen
Anzahl_Tueren_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.Anzahl_
Tueren
_gesamt
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.Anzahl_
Tueren
_geoeffnet_und_gekippt_gesamt
offene_gekippte_Tueren_Liste_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.offene_gekippte_
Tueren
_Liste
gesamte_Tueren_Liste_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.gesamte_
Tueren
_Liste
Liste_Tueren_html_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.html_
Tueren
_Liste
offene_gekippte_Tueren_Liste_emojis_eDP
anlegen_in
pfad_geraete_zaehlen
Tueren
etage
.offene_gekippte_
Tueren
_Liste_mit_Emojis
ne
default
selektor_Tueren
blockly_start_tueren_zaehlen_einlesen
2
sec
formatierte_ausgabe_tueren_zum_start
4
sec
AND
Tueren_verwenden
Alexa_Ansage_verwenden
Logmeldung_Tueren_Ansage
Die
etage
Tueren
ansage wurde vom ECHO
Ansage_Einleitungssatz_Tueren
Hier der
etage
Tueren
status fΓΌr Dich.
Ansage_Button_Tueren_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Tueren
ansage
Temperaturen
Temperaturen_verwenden
gesamte_Temperaturen_Liste_eDP
anlegen_in
pfad_geraete_zaehlen
Temperaturen
etage
.gesamte_
Temperaturen
_Liste
Liste_Temperaturen_html_eDP
anlegen_in
pfad_geraete_zaehlen
Temperaturen
etage
.html_
Temperaturen
_Liste
Liste_Temperaturen_emojis_eDP
anlegen_in
pfad_geraete_zaehlen
Temperaturen
etage
.aktive_
Temperaturen
_Liste_mit_Emojis
ne
default
selektor_Temperaturen
blockly_start_temperaturen_einlesen
2
sec
formatierte_ausgabe_temperaturen_zum_start
4
sec
AND
Temperaturen_verwenden
Alexa_Ansage_verwenden
Logmeldung_Temperaturen_Ansage
Die
etage
Temperaturen
ansage wurde vom ECHO
Ansage_Einleitungssatz_Temperaturen
Hier der
etage
Temperaturen
status fΓΌr Dich.
Ansage_Button_Temperaturen_eDP
anlegen_in
pfad_geraete_ansagen
Ansagen.
etage
Temperaturen
ansage
Telegram
AND
Batterien_Status_verwenden
Telegram_verwenden
telegram_versand_an_aus_Batterien_Status
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Batterien
statusversand
telegram_direkt_versenden_Batterien_Status
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Batterien
status
ne
default
Anzahl_Batterien_Status_aktiv_eDP
val
telegram_versand_an_aus_Batterien_Status
telegram
telegram
1
sec
nachrichten_ausgabe_Batterien_Status
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Batterien_Status
nachrichten_ausgabe_Batterien_Status
Telegram_Empfaenger
AND
Batterien_volt_verwenden
Telegram_verwenden
telegram_versand_an_aus_Batterien_volt
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Batterien
voltversand
telegram_direkt_versenden_Batterien_volt
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Batterien
voltstatus
ne
default
Liste_Batterien_volt_html_eDP
val
telegram_versand_an_aus_Batterien_volt
telegram8
telegram8
1
sec
nachrichten_ausgabe_Batterien_volt
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Batterien_volt
nachrichten_ausgabe_Batterien_volt
Telegram_Empfaenger
AND
Steckdosen_verwenden
Telegram_verwenden
telegram_versand_an_aus_Steckdosen
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Steckdosen
versand
telegram_direkt_versenden_Steckdosen
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Steckdosen
status
ne
default
Anzahl_Steckdosen_aktiv_eDP
val
telegram_versand_an_aus_Steckdosen
telegram2
telegram2
1
sec
nachrichten_ausgabe_Steckdosen
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Steckdosen
nachrichten_ausgabe_Steckdosen
Telegram_Empfaenger
AND
Lichter_verwenden
Telegram_verwenden
telegram_versand_an_aus_Lichter
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Licht
versand
telegram_direkt_versenden_Lichter
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Licht
status
ne
default
Anzahl_Lichter_aktiv_eDP
val
telegram_versand_an_aus_Lichter
telegram3
telegram3
1
sec
nachrichten_ausgabe_Lichter
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Lichter
nachrichten_ausgabe_Lichter
Telegram_Empfaenger
AND
Bewegungsmelder_verwenden
Telegram_verwenden
telegram_versand_an_aus_Bewegungsmelder
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Bewegungsmelder
versand
telegram_direkt_versenden_Bewegungsmelder
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Bewegungsmelder
status
ne
default
Anzahl_Bewegungsmelder_aktiv_eDP
val
telegram_versand_an_aus_Bewegungsmelder
telegram4
telegram4
1
sec
nachrichten_ausgabe_Bewegungsmelder
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Bewegungsmelder
nachrichten_ausgabe_Bewegungsmelder
Telegram_Empfaenger
AND
Fenster_verwenden
Telegram_verwenden
telegram_versand_an_aus_Fenster
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Fenster
versand
telegram_direkt_versenden_Fenster
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Fenster
status
ne
default
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
val
telegram_versand_an_aus_Fenster
telegram5
telegram5
1
sec
nachrichten_ausgabe_Fenster
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Fenster
nachrichten_ausgabe_Fenster
Telegram_Empfaenger
AND
Tueren_verwenden
Telegram_verwenden
telegram_versand_an_aus_Tueren
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Tueren
versand
telegram_direkt_versenden_Tueren
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Tueren
status
ne
default
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
val
telegram_versand_an_aus_Tueren
telegram6
telegram6
1
sec
nachrichten_ausgabe_Tueren
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Tueren
nachrichten_ausgabe_Tueren
Telegram_Empfaenger
AND
Temperaturen_verwenden
Telegram_verwenden
telegram_versand_an_aus_Temperaturen
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Temperaturen
versand
telegram_direkt_versenden_Temperaturen
anlegen_in
pfad_geraete_benachrichtigungen
Telegram.TVersand_
etage
Temperaturen
status
ne
default
gesamte_Temperaturen_Liste_eDP
val
telegram_versand_an_aus_Temperaturen
telegram7
telegram7
1
sec
nachrichten_ausgabe_Temperaturen
Telegram_Empfaenger
any
default
telegram_direkt_versenden_Temperaturen
nachrichten_ausgabe_Temperaturen
Telegram_Empfaenger
EMail
AND
Batterien_Status_verwenden
Email_verwenden
email_versand_an_aus_Batterien_Status
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Batterien
statusversand
email_direkt_versenden_Batterien_Status
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Batterien
status
ne
default
Anzahl_Batterien_Status_aktiv_eDP
EQ
val
email_versand_an_aus_Batterien_Status
TRUE
Betreff
etage
Batterien
Status
email
email
1
sec
nachrichten_ausgabe_Batterien_Status
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Batterien_Status
Betreff
etage
Batterien
Status
nachrichten_ausgabe_Batterien_Status
EMail_Empfaenger
Betreff
AND
Batterien_volt_verwenden
Email_verwenden
email_versand_an_aus_Batterien_volt
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Batterien
voltversand
email_direkt_versenden_Batterien_volt
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Batterien
voltstatus
ne
default
Liste_Batterien_volt_html_eDP
EQ
val
email_versand_an_aus_Batterien_volt
TRUE
Betreff
etage
Batterien
Voltstatus
email8
email8
1
sec
nachrichten_ausgabe_Batterien_volt
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Batterien_volt
Betreff
etage
Batterien
Voltstatus
nachrichten_ausgabe_Batterien_volt
EMail_Empfaenger
Betreff
AND
Steckdosen_verwenden
Email_verwenden
email_versand_an_aus_Steckdosen
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Steckdosen
versand
email_direkt_versenden_Steckdosen
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Steckdosen
status
ne
default
Anzahl_Steckdosen_aktiv_eDP
EQ
val
email_versand_an_aus_Steckdosen
TRUE
Betreff
etage
Steckdosen
Status
email2
email2
1
sec
nachrichten_ausgabe_Steckdosen
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Steckdosen
Betreff
etage
Steckdosen
Status
nachrichten_ausgabe_Steckdosen
EMail_Empfaenger
Betreff
AND
Lichter_verwenden
Email_verwenden
email_versand_an_aus_Lichter
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Licht
versand
email_direkt_versenden_Lichter
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Licht
status
ne
default
Anzahl_Lichter_aktiv_eDP
EQ
val
email_versand_an_aus_Lichter
TRUE
Betreff
etage
Licht
Status
email3
email3
1
sec
nachrichten_ausgabe_Lichter
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Lichter
Betreff
etage
Licht
Status
nachrichten_ausgabe_Lichter
EMail_Empfaenger
Betreff
AND
Bewegungsmelder_verwenden
Email_verwenden
email_versand_an_aus_Bewegungsmelder
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Bewegungsmelder
versand
email_direkt_versenden_Bewegungsmelder
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Bewegungsmelder
status
ne
default
Anzahl_Bewegungsmelder_aktiv_eDP
EQ
val
email_versand_an_aus_Bewegungsmelder
TRUE
Betreff
etage
Bewegungsmelder
Status
email4
email4
1
sec
nachrichten_ausgabe_Bewegungsmelder
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Bewegungsmelder
Betreff
etage
Bewegungsmelder
Status
nachrichten_ausgabe_Bewegungsmelder
EMail_Empfaenger
Betreff
AND
Fenster_verwenden
Email_verwenden
email_versand_an_aus_Fenster
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Fenster
versand
email_direkt_versenden_Fenster
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Fenster
status
ne
default
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
EQ
val
email_versand_an_aus_Fenster
TRUE
Betreff
etage
Fenster
Status
email5
email5
1
sec
nachrichten_ausgabe_Fenster
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Fenster
Betreff
etage
Fenster
Status
nachrichten_ausgabe_Fenster
EMail_Empfaenger
Betreff
AND
Tueren_verwenden
Email_verwenden
email_versand_an_aus_Tueren
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Tueren
versand
email_direkt_versenden_Tueren
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Tueren
status
ne
default
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
EQ
val
email_versand_an_aus_Tueren
TRUE
Betreff
etage
Tueren
Status
email6
email6
1
sec
nachrichten_ausgabe_Tueren
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Tueren
Betreff
etage
Tueren
Status
nachrichten_ausgabe_Tueren
EMail_Empfaenger
Betreff
AND
Temperaturen_verwenden
Email_verwenden
email_versand_an_aus_Temperaturen
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Temperaturen
versand
email_direkt_versenden_Temperaturen
anlegen_in
pfad_geraete_benachrichtigungen
EMail.EVersand_
etage
Temperaturen
status
ne
default
gesamte_Temperaturen_Liste_eDP
EQ
val
email_versand_an_aus_Temperaturen
TRUE
Betreff
etage
Temperaturen
Status
email7
email7
1
sec
nachrichten_ausgabe_Temperaturen
EMail_Empfaenger
Betreff
any
default
email_direkt_versenden_Temperaturen
Betreff
etage
Temperaturen
Status
nachrichten_ausgabe_Temperaturen
EMail_Empfaenger
Betreff
Steckdosen_vor_versand_pruefen
Beschreibe diese Funktion β¦
uebnerschrift_nachrichten_Steckdosen
emoji_π
*
etage
Steckdosen
status
*
\n
timeout3
timeout3
1000
ms
EQ
anzahl_Steckdosen_aktiv
1
nachrichten_ausgabe_Steckdosen
uebnerschrift_nachrichten_Steckdosen
Es ist
eine
einzahl_Steckdose
an
emoji_β‘οΈ
\n
\n
TEXT
1
liste_Steckdosen_aktiv
\n
GT
anzahl_Steckdosen_aktiv
1
nachrichten_ausgabe_Steckdosen
uebnerschrift_nachrichten_Steckdosen
Es sind
anzahl_Steckdosen_aktiv
Steckdosen
an
emoji_β‘οΈ
\n
\n
TEXT
1
liste_Steckdosen_aktiv
\n
EQ
anzahl_Steckdosen_aktiv
0
nachrichten_ausgabe_Steckdosen
uebnerschrift_nachrichten_Steckdosen
Alle
Steckdosen
sind ausgeschaltet
emoji_β
true
FALSE
Object ID
Liste_Steckdosen_aktiv_emojis_eDP
TRUE
nachrichten_ausgabe_Steckdosen
0
Bewegungsmelder_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Bewegungsmelder_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
EQ
val
Anzahl_Bewegungsmelder_aktiv_eDP
0
Ansage_Einleitungssatz_Bewegungsmelder
, alle
Bewegungsmelder
sind inaktiv.
NEQ
val
Anzahl_Bewegungsmelder_aktiv_eDP
0
Ansage_Einleitungssatz_Bewegungsmelder
val
Liste_Bewegungsmelder_aktiv_eDP
, alle anderen
Bewegungsmelder
sind inaktiv.
0
log
Logmeldung_Bewegungsmelder_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Telegram_Tueren
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9UdWVyZW4sCiAgICB1c2VyOiBUZWxlZ3JhbV9FbXBmYWVuZ2VyLAogICAgcGFyc2VfbW9kZTogIk1hcmtkb3duIiwKfSk7
Beschreibe diese Funktion β¦
Steckdosen_zaehlen
Beschreibe diese Funktion β¦
anzahl_Steckdosen_aktiv
0
anzahl_Steckdosen_inaktiv
0
anzahl_Steckdosen_gesamt
0
liste_Steckdosen_aktiv
liste_Steckdosen_inaktiv
liste_Steckdosen_aktiv_html
liste_Steckdosen_inaktiv_html
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Steckdosen
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Steckdosen
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Steckdosen
etage
   </td><td>Status</td></tr>
<tr><td>
Steckdosen_aktiv
selektor_Steckdosen
anzahl_Steckdosen_gesamt
1
OR
val
Steckdosen_aktiv
GT
val
Steckdosen_aktiv
0
anzahl_Steckdosen_aktiv
1
INSERT
LAST
liste_Steckdosen_aktiv
Steckdosen_aktiv
eingeschaltet
INSERT
LAST
liste_Steckdosen_aktiv_html
Steckdosen_aktiv
<td><span style="color:#FF0000">
emoji_π
an
</span>
Steckdosen_inaktiv
selektor_Steckdosen
OR
val
Steckdosen_inaktiv
EQ
val
Steckdosen_inaktiv
0
anzahl_Steckdosen_inaktiv
1
INSERT
LAST
liste_Steckdosen_inaktiv
Steckdosen_inaktiv
ausgeschaltet
INSERT
LAST
liste_Steckdosen_inaktiv_html
Steckdosen_inaktiv
<td>
aus
emoji_β
true
FALSE
Object ID
Anzahl_Steckdosen_gesamt_eDP
TRUE
anzahl_Steckdosen_gesamt
0
true
FALSE
Object ID
Anzahl_Steckdosen_aktiv_eDP
TRUE
anzahl_Steckdosen_aktiv
0
EQ
anzahl_Steckdosen_aktiv
0
true
FALSE
Object ID
Liste_Steckdosen_aktiv_eDP
TRUE
Steckdosen
Aktuell sind alle
Steckdosen
ausgeschaltet
emoji_β
0
true
FALSE
Object ID
Liste_Steckdosen_gesamt_eDP
TRUE
TEXT
1
liste_Steckdosen_inaktiv
,
0
true
FALSE
Object ID
Liste_Steckdosen_html_eDP
TRUE
htmlText
TEXT
1
liste_Steckdosen_inaktiv_html
<tr><td>
</table></body>
0
true
FALSE
Object ID
Liste_Steckdosen_aktiv_eDP
TRUE
GT
ADD
1
abc
TEXT
1
liste_Steckdosen_aktiv
;
1
abc
Ansage_Einleitungssatz_Steckdosen
, alle anderen
Steckdosen
sind ausgeschaltet.
250
TEXT
1
liste_Steckdosen_aktiv
;
TEXT
1
liste_Steckdosen_aktiv
,
0
true
FALSE
Object ID
Liste_Steckdosen_gesamt_eDP
TRUE
TEXT
1
liste_Steckdosen_aktiv
,
,
TEXT
1
liste_Steckdosen_inaktiv
,
0
true
FALSE
Object ID
Liste_Steckdosen_html_eDP
TRUE
EQ
anzahl_Steckdosen_aktiv
anzahl_Steckdosen_gesamt
htmlText
TEXT
1
liste_Steckdosen_aktiv_html
<tr><td>
</table></body>
htmlText
TEXT
1
liste_Steckdosen_aktiv_html
<tr><td>
<tr><td>
TEXT
1
liste_Steckdosen_inaktiv_html
<tr><td>
</table></body>
0
Bewegungsmelder_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Bewegungsmelder_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
EQ
val
Anzahl_Bewegungsmelder_aktiv_eDP
0
Ansage_Einleitungssatz_Bewegungsmelder
, alle
Bewegungsmelder
sind inaktiv.
NEQ
val
Anzahl_Bewegungsmelder_aktiv_eDP
0
Ansage_Einleitungssatz_Bewegungsmelder
val
Liste_Bewegungsmelder_aktiv_eDP
, alle anderen
Bewegungsmelder
sind inaktiv.
0
log
Logmeldung_Bewegungsmelder_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
echo_name
aWYoZXhpc3RzT2JqZWN0KGlkKSkgcmV0dXJuIGdldE9iamVjdChpZCkuY29tbW9uLm5hbWU7
Beschreibe diese Funktion β¦
Lichter_vor_versand_pruefen
Beschreibe diese Funktion β¦
uebnerschrift_nachrichten_Lichter
emoji_π‘
*
etage
Licht
status
*
\n
timeout4
timeout4
1000
ms
EQ
anzahl_Lichter_aktiv
1
nachrichten_ausgabe_Lichter
uebnerschrift_nachrichten_Lichter
Es ist
ein
einzahl_Licht
an
emoji_π‘
\n
\n
TEXT
1
liste_Lichter_aktiv
\n
GT
anzahl_Lichter_aktiv
1
nachrichten_ausgabe_Lichter
uebnerschrift_nachrichten_Lichter
Es sind
anzahl_Lichter_aktiv
Licht
an
emoji_π‘
\n
\n
TEXT
1
liste_Lichter_aktiv
\n
EQ
anzahl_Lichter_aktiv
0
nachrichten_ausgabe_Lichter
uebnerschrift_nachrichten_Lichter
Alle
Licht
sind ausgeschaltet
emoji_β
true
FALSE
Object ID
Liste_Lichter_aktiv_emojis_eDP
TRUE
nachrichten_ausgabe_Lichter
0
Fenster_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Fenster_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
EQ
val
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Fenster
, alle
Fenster
sind geschlossen.
NEQ
val
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Fenster
val
offene_gekippte_Fenster_Liste_eDP
, alle anderen
Fenster
sind geschlossen.
0
log
Logmeldung_Fenster_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Telegram_Temperaturen
c2VuZFRvKCJ0ZWxlZ3JhbSIsICJzZW5kIiwgewogICAgdGV4dDogbmFjaHJpY2h0ZW5fYXVzZ2FiZV9UZW1wZXJhdHVyZW4sCiAgICB1c2VyOiBUZWxlZ3JhbV9FbXBmYWVuZ2VyLAogICAgcGFyc2VfbW9kZTogIk1hcmtkb3duIiwKfSk7
Beschreibe diese Funktion β¦
Lichter_zaehlen
Beschreibe diese Funktion β¦
anzahl_Lichter_aktiv
0
anzahl_Lichter_inaktiv
0
anzahl_Lichter_gesamt
0
liste_Lichter_aktiv
liste_Lichter_inaktiv
liste_Lichter_aktiv_html
liste_Lichter_inaktiv_html
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Licht
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Licht
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Licht
etage
   </td><td>Status</td></tr>
<tr><td>
Lichter_aktiv
selektor_Lichter
anzahl_Lichter_gesamt
1
OR
val
Lichter_aktiv
GT
val
Lichter_aktiv
0
anzahl_Lichter_aktiv
1
INSERT
LAST
liste_Lichter_aktiv
Lichter_aktiv
ist eingeschaltet
INSERT
LAST
liste_Lichter_aktiv_html
Lichter_aktiv
<td><span style="color:#FF0000">
emoji_π‘
an
</span>
Lichter_inaktiv
selektor_Lichter
OR
val
Lichter_inaktiv
EQ
val
Lichter_inaktiv
0
anzahl_Lichter_inaktiv
1
INSERT
LAST
liste_Lichter_inaktiv
Lichter_inaktiv
ist ausgeschaltet
INSERT
LAST
liste_Lichter_inaktiv_html
Lichter_inaktiv
<td>
aus
emoji_π
true
FALSE
Object ID
Anzahl_Lichter_gesamt_eDP
TRUE
anzahl_Lichter_gesamt
0
true
FALSE
Object ID
Anzahl_Lichter_aktiv_eDP
TRUE
anzahl_Lichter_aktiv
0
EQ
anzahl_Lichter_aktiv
0
true
FALSE
Object ID
Liste_Lichter_aktiv_eDP
TRUE
Licht
Aktuell sind alle
Licht
ausgeschaltet
0
true
FALSE
Object ID
Liste_Lichter_gesamt_eDP
TRUE
TEXT
1
liste_Lichter_inaktiv
,
0
true
FALSE
Object ID
Liste_Lichter_html_eDP
TRUE
htmlText
TEXT
1
liste_Lichter_inaktiv_html
<tr><td>
</table></body>
0
true
FALSE
Object ID
Liste_Lichter_aktiv_eDP
TRUE
GT
ADD
1
abc
TEXT
1
liste_Lichter_aktiv
;
1
abc
Ansage_Einleitungssatz_Lichter
,alle anderen
Licht
sind ausgeschaltet.
250
TEXT
1
liste_Lichter_aktiv
;
TEXT
1
liste_Lichter_aktiv
,
0
true
FALSE
Object ID
Liste_Lichter_gesamt_eDP
TRUE
TEXT
1
liste_Lichter_aktiv
,
,
TEXT
1
liste_Lichter_inaktiv
,
0
true
FALSE
Object ID
Liste_Lichter_html_eDP
TRUE
EQ
anzahl_Lichter_aktiv
anzahl_Lichter_gesamt
htmlText
TEXT
1
liste_Lichter_aktiv_html
<tr><td>
</table></body>
htmlText
TEXT
1
liste_Lichter_aktiv_html
<tr><td>
<tr><td>
TEXT
1
liste_Lichter_inaktiv_html
<tr><td>
</table></body>
0
Fenster_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Fenster_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
EQ
val
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Fenster
, alle
Fenster
sind geschlossen.
NEQ
val
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Fenster
val
offene_gekippte_Fenster_Liste_eDP
, alle anderen
Fenster
sind geschlossen.
0
log
Logmeldung_Fenster_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
Bewegungsmelder_vor_versand_pruefen
Beschreibe diese Funktion β¦
uebnerschrift_nachrichten_Bewegungsmelder
emoji_π
*
etage
Bewegungsmelder
status
*
\n
timeout5
timeout5
1000
ms
EQ
anzahl_Bewegungsmelder_aktiv
1
nachrichten_ausgabe_Bewegungsmelder
uebnerschrift_nachrichten_Bewegungsmelder
Es ist
ein
einzahl_Bewegungsmelder
aktiv
emoji_π
\n
\n
TEXT
1
liste_Bewegungsmelder_aktiv
\n
GT
anzahl_Bewegungsmelder_aktiv
1
nachrichten_ausgabe_Bewegungsmelder
uebnerschrift_nachrichten_Bewegungsmelder
Es sind
anzahl_Bewegungsmelder_aktiv
Bewegungsmelder
an
emoji_π
\n
\n
TEXT
1
liste_Bewegungsmelder_aktiv
\n
EQ
anzahl_Bewegungsmelder_aktiv
0
nachrichten_ausgabe_Bewegungsmelder
uebnerschrift_nachrichten_Bewegungsmelder
Alle
Bewegungsmelder
sind inaktiv
emoji_β
true
FALSE
Object ID
Liste_Bewegungsmelder_aktiv_emojis_eDP
TRUE
nachrichten_ausgabe_Bewegungsmelder
0
Tueren_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Tueren_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
EQ
val
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Tueren
, alle
Tueren
sind geschlossen.
NEQ
val
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Tueren
val
offene_gekippte_Tueren_Liste_eDP
, alle anderen
Tueren
sind geschlossen.
0
log
Logmeldung_Tueren_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Bewegungsmelder_zaehlen
Beschreibe diese Funktion β¦
anzahl_Bewegungsmelder_aktiv
0
anzahl_Bewegungsmelder_inaktiv
0
anzahl_Bewegungsmelder_gesamt
0
liste_Bewegungsmelder_aktiv
liste_Bewegungsmelder_inaktiv
liste_Bewegungsmelder_aktiv_html
liste_Bewegungsmelder_inaktiv_html
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Bewegungsmelder
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Bewegungsmelder
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Bewegungsmelder
etage
   </td><td>Status</td></tr>
<tr><td>
Bewegungsmelder_aktiv
selektor_Bewegungsmelder
anzahl_Bewegungsmelder_gesamt
1
OR
val
Bewegungsmelder_aktiv
GT
val
Bewegungsmelder_aktiv
0
anzahl_Bewegungsmelder_aktiv
1
INSERT
LAST
liste_Bewegungsmelder_aktiv
Bewegungsmelder_aktiv
aktiv
INSERT
LAST
liste_Bewegungsmelder_aktiv_html
Bewegungsmelder_aktiv
<td><span style="color:#FF0000">
emoji_π
aktiv
</span>
Bewegungsmelder_inaktiv
selektor_Bewegungsmelder
OR
val
Bewegungsmelder_inaktiv
EQ
val
Bewegungsmelder_inaktiv
0
anzahl_Bewegungsmelder_inaktiv
1
INSERT
LAST
liste_Bewegungsmelder_inaktiv
Bewegungsmelder_inaktiv
inaktiv
INSERT
LAST
liste_Bewegungsmelder_inaktiv_html
Bewegungsmelder_inaktiv
<td>
inaktiv
emoji_π
true
FALSE
Object ID
Anzahl_Bewegungsmelder_gesamt_eDP
TRUE
anzahl_Bewegungsmelder_gesamt
0
true
FALSE
Object ID
Anzahl_Bewegungsmelder_aktiv_eDP
TRUE
anzahl_Bewegungsmelder_aktiv
0
EQ
anzahl_Bewegungsmelder_aktiv
0
true
FALSE
Object ID
Liste_Bewegungsmelder_aktiv_eDP
TRUE
Bewegungsmelder
Aktuell sind alle
Bewegungsmelder
inaktiv
0
true
FALSE
Object ID
Liste_Bewegungsmelder_gesamt_eDP
TRUE
TEXT
1
liste_Bewegungsmelder_inaktiv
,
0
true
FALSE
Object ID
Liste_Bewegungsmelder_html_eDP
TRUE
htmlText
TEXT
1
liste_Bewegungsmelder_inaktiv_html
<tr><td>
</table></body>
0
true
FALSE
Object ID
Liste_Bewegungsmelder_aktiv_eDP
TRUE
GT
ADD
1
abc
Ansage_Einleitungssatz_Bewegungsmelder
, alle anderen
Bewegungsmelder
sind inaktiv.
1
abc
TEXT
1
liste_Bewegungsmelder_inaktiv
,
250
TEXT
1
liste_Bewegungsmelder_inaktiv
;
TEXT
1
liste_Bewegungsmelder_inaktiv
,
0
true
FALSE
Object ID
Liste_Bewegungsmelder_gesamt_eDP
TRUE
TEXT
1
liste_Bewegungsmelder_aktiv
,
,
TEXT
1
liste_Bewegungsmelder_inaktiv
,
0
true
FALSE
Object ID
Liste_Bewegungsmelder_html_eDP
TRUE
EQ
anzahl_Bewegungsmelder_aktiv
anzahl_Bewegungsmelder_gesamt
htmlText
TEXT
1
liste_Bewegungsmelder_aktiv_html
<tr><td>
</table></body>
htmlText
TEXT
1
liste_Bewegungsmelder_aktiv_html
<tr><td>
<tr><td>
TEXT
1
liste_Bewegungsmelder_inaktiv_html
<tr><td>
</table></body>
0
Datenpunkte_anlegen
LyoqDQogKiBDcmVhdGUgc3RhdGVzIHVuZGVyIDBfdXNlcmRhdGEuMCBvciBqYXZhc2NyaXB0LngNCiAqIEN1cnJlbnQgVmVyc2lvbjogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzDQogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8NCiAqIEF1dG9yOiAgICAgICAgICAgICAgIE1pYyAoaW9Ccm9rZXIpIHwgTWljLU0gKGdpdGh1YikNCiAqIFZlcnNpb246ICAgICAgICAgICAgIDEuMSAoMjYgSmFudWFyeSAyMDIwKQ0KICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogUExFQVNFIE5PVEU6IFBlciBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc0LCB0aGUgdXNlZCBmdW5jdGlvbiBzZXRPYmplY3QoKSANCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogQHBhcmFtIHtzdHJpbmd9IHdoZXJlICAgICAgICAgIFdoZXJlIHRvIGNyZWF0ZSB0aGUgc3RhdGU6ICcwX3VzZXJkYXRhLjAnIG9yICdqYXZhc2NyaXB0LngnLg0KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4NCiAqIEBwYXJhbSB7YXJyYXl9IHN0YXRlc1RvQ3JlYXRlICBTdGF0ZShzKSB0byBjcmVhdGUuIHNpbmdsZSBhcnJheSBvciBhcnJheSBvZiBhcnJheXMNCiAqIEBwYXJhbSB7b2JqZWN0fSBbY2FsbGJhY2tdICAgICBPcHRpb25hbDogYSBjYWxsYmFjayBmdW5jdGlvbiAtLSBUaGlzIHByb3ZpZGVkIGZ1bmN0aW9uIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHN0YXRlcyBhcmUgY3JlYXRlZC4NCiAqLw0KDQoNCmZ1bmN0aW9uIGNyZWF0ZVVzZXJTdGF0ZXMod2hlcmUsIGZvcmNlLCBzdGF0ZXNUb0NyZWF0ZSwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsNCiANCiAgICBjb25zdCBXQVJOID0gZmFsc2U7IC8vIE9ubHkgZm9yIDBfdXNlcmRhdGEuMDogVGhyb3dzIHdhcm5pbmcgaW4gbG9nLCBpZiBzdGF0ZSBpcyBhbHJlYWR5IGV4aXN0aW5nIGFuZCBmb3JjZT1mYWxzZS4gRGVmYXVsdCBpcyBmYWxzZSwgc28gbm8gd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGV4aXN0cy4NCiAgICBjb25zdCBMT0dfREVCVUcgPSBmYWxzZTsgLy8gVG8gZGVidWcgdGhpcyBmdW5jdGlvbiwgc2V0IHRvIHRydWUNCiAgICAvLyBQZXIgaXNzdWUgIzQ3NCAoaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCksIHRoZSB1c2VkIGZ1bmN0aW9uIHNldE9iamVjdCgpIGV4ZWN1dGVzIHRoZSBjYWxsYmFjayANCiAgICAvLyBiZWZvcmUgdGhlIHN0YXRlIGlzIGFjdHVhbCBjcmVhdGVkLiBUaGVyZWZvcmUsIHdlIHVzZSBhIHNldFRpbWVvdXQgYW5kIGNvdW50ZXIgYXMgYSB3b3JrYXJvdW5kLg0KICAgIGNvbnN0IERFTEFZID0gNTA7IC8vIERlbGF5IGluIG1pbGxpc2Vjb25kcyAobXMpLiBJbmNyZWFzZSB0aGlzIHRvIDEwMCwgaWYgaXQgaXMgbm90IHdvcmtpbmcuDQoNCiAgICAvLyBWYWxpZGF0ZSAid2hlcmUiDQogICAgaWYgKHdoZXJlLmVuZHNXaXRoKCcuJykpIHdoZXJlID0gd2hlcmUuc2xpY2UoMCwgLTEpOyAvLyBSZW1vdmUgdHJhaWxpbmcgZG90DQogICAgaWYgKCAod2hlcmUubWF0Y2goL14oKGphdmFzY3JpcHRcLihbMS05XVswLTldfFswLTldKSkkfDBfdXNlcmRhdGFcLjAkKS8pID09IG51bGwpICkgew0KICAgICAgICBsb2coJ1RoaXMgc2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgdG8gY3JlYXRlIHN0YXRlcyB1bmRlciBbJyArIHdoZXJlICsgJ10nLCAnZXJyb3InKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIC8vIFByZXBhcmUgInN0YXRlc1RvQ3JlYXRlIiBzaW5jZSB3ZSBhbHNvIGFsbG93IGEgc2luZ2xlIHN0YXRlIHRvIGNyZWF0ZQ0KICAgIGlmKCFBcnJheS5pc0FycmF5KHN0YXRlc1RvQ3JlYXRlWzBdKSkgc3RhdGVzVG9DcmVhdGUgPSBbc3RhdGVzVG9DcmVhdGVdOyAvLyB3cmFwIGludG8gYXJyYXksIGlmIGp1c3Qgb25lIGFycmF5IGFuZCBub3QgaW5zaWRlIGFuIGFycmF5DQoNCiAgICAvLyBBZGQgIndoZXJlIiB0byBTVEFURVNfVE9fQ1JFQVRFDQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7IGkrKykgew0KICAgICAgICBsZXQgbHBQYXRoID0gc3RhdGVzVG9DcmVhdGVbaV1bMF0ucmVwbGFjZSgvXC4qXC4vZywgJy4nKTsgLy8gcmVwbGFjZSBhbGwgbXVsdGlwbGUgZG90cyBsaWtlICcuLicsICcuLi4nIHdpdGggYSBzaW5nbGUgJy4nDQogICAgICAgIGxwUGF0aCA9IGxwUGF0aC5yZXBsYWNlKC9eKChqYXZhc2NyaXB0XC4oWzEtOV1bMC05XXxbMC05XSlcLil8MF91c2VyZGF0YVwuMFwuKS8sJycpIC8vIHJlbW92ZSBhbnkgamF2YXNjcmlwdC54LiAvIDBfdXNlcmRhdGEuMC4gZnJvbSBiZWdpbm5pbmcNCiAgICAgICAgbHBQYXRoID0gd2hlcmUgKyAnLicgKyBscFBhdGg7IC8vIGFkZCB3aGVyZSB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nDQogICAgICAgIHN0YXRlc1RvQ3JlYXRlW2ldWzBdID0gbHBQYXRoOw0KICAgIH0NCg0KICAgIGlmICh3aGVyZSAhPSAnMF91c2VyZGF0YS4wJykgew0KICAgICAgICAvLyBDcmVhdGUgU3RhdGVzIHVuZGVyIGphdmFzY3JpcHQueA0KICAgICAgICBsZXQgbnVtU3RhdGVzID0gc3RhdGVzVG9DcmVhdGUubGVuZ3RoOw0KICAgICAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGxvb3BQYXJhbSkgew0KICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIE5vdyB3ZSBhcmUgY3JlYXRpbmcgbmV3IHN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ10nKTsNCiAgICAgICAgICAgIGxldCBsb29wSW5pdCA9IChsb29wUGFyYW1bMV1bJ2RlZiddID09IHVuZGVmaW5lZCkgPyBudWxsIDogbG9vcFBhcmFtWzFdWydkZWYnXTsgLy8gbWltaWMgc2FtZSBiZWhhdmlvciBhcyBjcmVhdGVTdGF0ZSBpZiBubyBpbml0IHZhbHVlIGlzIHByb3ZpZGVkDQogICAgICAgICAgICBjcmVhdGVTdGF0ZShsb29wUGFyYW1bMF0sIGxvb3BJbml0LCBmb3JjZSwgbG9vcFBhcmFtWzFdLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsNCiAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHByb2Nlc3NlZC4nKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjaw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIENyZWF0ZSBTdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wDQogICAgICAgIGxldCBudW1TdGF0ZXMgPSBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7DQogICAgICAgIGxldCBjb3VudGVyID0gLTE7DQogICAgICAgIHN0YXRlc1RvQ3JlYXRlLmZvckVhY2goZnVuY3Rpb24obG9vcFBhcmFtKSB7DQogICAgICAgICAgICBjb3VudGVyICs9IDE7DQogICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2cgKCdbRGVidWddIEN1cnJlbnRseSBwcm9jZXNzaW5nIGZvbGxvd2luZyBzdGF0ZTogWycgKyBsb29wUGFyYW1bMF0gKyAnXScpOw0KICAgICAgICAgICAgaWYoICgkKGxvb3BQYXJhbVswXSkubGVuZ3RoID4gMCkgJiYgKGV4aXN0c1N0YXRlKGxvb3BQYXJhbVswXSkpICkgeyAvLyBXb3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc4DQogICAgICAgICAgICAgICAgLy8gU3RhdGUgaXMgZXhpc3RpbmcuDQogICAgICAgICAgICAgICAgaWYgKFdBUk4gJiYgIWZvcmNlKSBsb2coJ1N0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZyBhbmQgd2lsbCBubyBsb25nZXIgYmUgY3JlYXRlZC4nLCAnd2FybicpOw0KICAgICAgICAgICAgICAgIGlmICghV0FSTiAmJiBMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcuIE9wdGlvbiBmb3JjZSAoPW92ZXJ3cml0ZSkgaXMgc2V0IHRvIFsnICsgZm9yY2UgKyAnXS4nKTsNCiAgICAgICAgICAgICAgICBpZighZm9yY2UpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gU3RhdGUgZXhpc3RzIGFuZCBzaGFsbCBub3QgYmUgb3ZlcndyaXR0ZW4gc2luY2UgZm9yY2U9ZmFsc2UNCiAgICAgICAgICAgICAgICAgICAgLy8gU28sIHdlIGRvIG5vdCBwcm9jZWVkLg0KICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCEnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQW4gb3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gd2FzIHByb3ZpZGVkLCB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gZXhlY3V0ZSBub3cuJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIG91dCBhbmQgY29udGludWUgd2l0aCBuZXh0IGVsZW1lbnQgaW4gbG9vcC4NCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTg0NTI5MjAvY29udGludWUtaW4tY3Vyc29yLWZvcmVhY2gNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gLy8gaWYoIWZvcmNlKQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBTdGF0ZSBpcyBub3QgZXhpc3Rpbmcgb3IgZm9yY2UgPSB0cnVlLCBzbyB3ZSBhcmUgY29udGludWluZyB0byBjcmVhdGUgdGhlIHN0YXRlIHRocm91Z2ggc2V0T2JqZWN0KCkuDQogICAgICAgICAgICBsZXQgb2JqID0ge307DQogICAgICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7DQogICAgICAgICAgICBvYmoubmF0aXZlID0ge307DQogICAgICAgICAgICBvYmouY29tbW9uID0gbG9vcFBhcmFtWzFdOw0KICAgICAgICAgICAgc2V0T2JqZWN0KGxvb3BQYXJhbVswXSwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7DQogICAgICAgICAgICAgICAgaWYgKGVycikgew0KICAgICAgICAgICAgICAgICAgICBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3QgZm9yIHN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ106ICcgKyBlcnIpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBOb3cgd2UgYXJlIGNyZWF0aW5nIG5ldyBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddJykNCiAgICAgICAgICAgICAgICAgICAgbGV0IGluaXQgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0uZGVmID09PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSBsb29wUGFyYW1bMV0uZGVmOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShsb29wUGFyYW1bMF0sIGluaXQsIHRydWUsIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBzZXRTdGF0ZSBkdXJjaGdlZsO8aHJ0OiAnICsgbG9vcFBhcmFtWzBdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHByb2Nlc3NlZC4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjaw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0sIERFTEFZICsgKDIwICogY291bnRlcikgKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgfQ0KfQ0KDQovL1N0aW1tZW4gZnVlciBBbGV4YSBzc21sIEFuc2FnZSBhbmxlZ2VuDQovKmlmIChBbGV4YV9BbnNhZ2VfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uU3RpbW1lbi5BbGV4YScsIHsnbmFtZSc6J0FsZXhhJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzp0cnVlLCAic21hcnROYW1lIjogeyJkZSI6ICJBbGV4YSIsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifX1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uU3RpbW1lbi5IYW5zJywgeyduYW1lJzonSGFucycsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkhhbnMiLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQWxleGFfQW5zYWdlbi5TdGltbWVuLlZpY2tpJywgeyduYW1lJzonVmlja2knLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJWaWNraSIsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5BbGV4YV9BbnNhZ2VuLlN0aW1tZW4uQ29uY2hpdGEnLCB7J25hbWUnOidDb25jaGl0YScsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkNvbmNoaXRhIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uU3RpbW1lbi5BbGV4YV9zc21sJywgeyduYW1lJzonQWxleGFfc3NtbCcsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6JzxzcGVhaz48dm9pY2UgbmFtZT0iQWxleGEiPicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQWxleGFfQW5zYWdlbi5TdGltbWVuLkhhbnNfc3NtbCcsIHsnbmFtZSc6J0hhbnNfc3NtbCcsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6JzxzcGVhaz48dm9pY2UgbmFtZT0iSGFucyI+JyB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5BbGV4YV9BbnNhZ2VuLlN0aW1tZW4uVmlja2lfc3NtbCcsIHsnbmFtZSc6J1ZpY2tpX3NzbWwnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOic8c3BlYWs+PHZvaWNlIG5hbWU9IlZpY2tpIj4nIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uU3RpbW1lbi5Db25jaGl0YV9zc21sJywgeyduYW1lJzonQ29uY2hpdGFfc3NtbCcsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6JzxzcGVhaz48dm9pY2UgbmFtZT0iQ29uY2hpdGEiPicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQWxleGFfQW5zYWdlbi5TdGltbWVuLnNzbWxfZW5kZScsIHsnbmFtZSc6J3NzbWxfZW5kZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6Jzwvdm9pY2U+PC9zcGVhaz4nIH1dLA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KKi8NCg0KLy9GZW5zdGVyDQovL0Fuc2FnZSBCdXR0b24gRmVuc3RlcmFuc2FnZSBhbmxlZ2VuDQppZiAoQWxleGFfQW5zYWdlX3ZlcndlbmRlbiA9PSB0cnVlICYmIEZlbnN0ZXJfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uQW5zYWdlbi4nK1tGZW5zdGVyXSsnYW5zYWdlJywgeyduYW1lJzogW0ZlbnN0ZXJdKydhbnNhZ2UnLCd0eXBlJzogJ2Jvb2xlYW4nLCAncmVhZCc6IHRydWUsICd3cml0ZSc6IHRydWUsICdyb2xlJzogJ2J1dHRvbicsJ2RlZic6dHJ1ZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAnJytbRmVuc3Rlcl0rJycrJ2Fuc2FnZScsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL0ZlbnN0ZXIgemFlaGxlbiBEYXRlbnB1bmt0ZSBhbmxlZ2VuICAgIA0KaWYgKEZlbnN0ZXJfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbRmVuc3Rlcl0rJy5BbnphaGxfJytbRmVuc3Rlcl0rJ19nZWtpcHB0JywgeyduYW1lJzonQW56YWhsXycrW0ZlbnN0ZXJdKydfZ2VraXBwdCcsICd0eXBlJzonbnVtYmVyJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbnVtYmVyJywndW5pdCc6JycrW0ZlbnN0ZXJdKycnLCAnZGVmJzowIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbRmVuc3Rlcl0rJy5BbnphaGxfJytbRmVuc3Rlcl0rJ19vZmZlbicsIHsnbmFtZSc6J0FuemFobF8nK1tGZW5zdGVyXSsnX29mZmVuJywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbRmVuc3Rlcl0rJycsICdkZWYnOjAgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tGZW5zdGVyXSsnLkFuemFobF8nK1tGZW5zdGVyXSsnX2dlc2NobG9zc2VuJywgeyduYW1lJzonQW56YWhsXycrW0ZlbnN0ZXJdKydfZ2VzY2hsb3NzZW4nLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOicnK1tGZW5zdGVyXSsnJywgJ2RlZic6MCB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW0ZlbnN0ZXJdKycuQW56YWhsXycrW0ZlbnN0ZXJdKydfZ2VzYW10JywgeyduYW1lJzonQW56YWhsXycrW0ZlbnN0ZXJdKydfZ2VzYW10JywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbRmVuc3Rlcl0rJycsICdkZWYnOjAgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tGZW5zdGVyXSsnLkFuemFobF8nK1tGZW5zdGVyXSsnX2dlb2VmZm5ldF91bmRfZ2VraXBwdF9nZXNhbXQnLCB7J25hbWUnOidBbnphaGxfJytbRmVuc3Rlcl0rJ19nZW9lZmZuZXRfdW5kX2dla2lwcHRfZ2VzYW10JywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbRmVuc3Rlcl0rJycsICdkZWYnOjAgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tGZW5zdGVyXSsnLm9mZmVuZV9nZWtpcHB0ZV8nK1tGZW5zdGVyXSsnX0xpc3RlJywgeyduYW1lJzonb2ZmZW5lX2dla2lwcHRlXycrW0ZlbnN0ZXJdKydfTGlzdGUnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOidub2NoIGxlZXInIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbRmVuc3Rlcl0rJy5nZXNhbXRlXycrW0ZlbnN0ZXJdKydfTGlzdGUnLCB7J25hbWUnOidnZXNhbXRlXycrW0ZlbnN0ZXJdKydfTGlzdGUnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOidub2NoIGxlZXInIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbRmVuc3Rlcl0rJy5odG1sXycrW0ZlbnN0ZXJdKydfTGlzdGUnLCB7J25hbWUnOidodG1sXycrW0ZlbnN0ZXJdKydfTGlzdGUnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOidub2NoIGxlZXInIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbRmVuc3Rlcl0rJy5vZmZlbmVfZ2VraXBwdGVfJytbRmVuc3Rlcl0rJ19MaXN0ZV9taXRfRW1vamlzJywgeyduYW1lJzonb2ZmZW5lX2dla2lwcHRlXycrW0ZlbnN0ZXJdKydfTGlzdGVfbWl0X0Vtb2ppcycsICd0eXBlJzonbWl4ZWQnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidtaXhlZCcsICdkZWYnOidub2NoIGxlZXInIH1dLCAgIA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KLy9UZWxlZ3JhbSBGZW5zdGVyIE5hY2hyaWNodGVudmVyc2FuZCBhbmxlZ2VuDQppZiAoRmVuc3Rlcl92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBUZWxlZ3JhbV92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbICAgIA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5UZWxlZ3JhbS5UVmVyc2FuZF8nK1tGZW5zdGVyXSsndmVyc2FuZCcsIHsnbmFtZSc6J1RlbGVncmFtXycrW0ZlbnN0ZXJdKydfVmVyc2FuZF9hbl9hdXMnLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5UZWxlZ3JhbS5UVmVyc2FuZF8nK1tGZW5zdGVyXSsnc3RhdHVzJywgeyduYW1lJzonVGVsZWdyYW1fJytbRmVuc3Rlcl0rJ3N0YXR1c19zZW5kZW4nLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2J1dHRvbicsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJUZWxlZ3JhbSAiK1tGZW5zdGVyXSsnJysnc3RhdHVzJywic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQogICAgDQovL0UtTWFpbCBGZW5zdGVyIE5hY2hyaWNodGVudmVyc2FuZCBhbmxlZ2VuDQppZiAoRmVuc3Rlcl92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBFbWFpbF92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbICAgDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLkVNYWlsLkVWZXJzYW5kXycrW0ZlbnN0ZXJdKyd2ZXJzYW5kJywgeyduYW1lJzonRU1haWxfJytbRmVuc3Rlcl0rJ19WZXJzYW5kX2FuX2F1cycsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLkVNYWlsLkVWZXJzYW5kXycrW0ZlbnN0ZXJdKydzdGF0dXMnLCB7J25hbWUnOidFTWFpbF8nK1tGZW5zdGVyXSsnc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVNYWlsICIrW0ZlbnN0ZXJdKycnKydzdGF0dXMnLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sDQpdOw0KDQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQovL1R1ZXJlbg0KLy9BbnNhZ2UgQnV0dG9uIFR1ZXJlbmFuc2FnZSBhbmxlZ2VuDQppZiAoQWxleGFfQW5zYWdlX3ZlcndlbmRlbiA9PSB0cnVlICYmIFR1ZXJlbl92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbICAgIA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uQW5zYWdlbi4nK1tUdWVyZW5dKydhbnNhZ2UnLCB7J25hbWUnOiBbVHVlcmVuXSsnYW5zYWdlJywndHlwZSc6ICdib29sZWFuJywgJ3JlYWQnOiB0cnVlLCAnd3JpdGUnOiB0cnVlLCAncm9sZSc6ICdidXR0b24nLCdkZWYnOnRydWUsICJzbWFydE5hbWUiOiB7ImRlIjogJycrW1R1ZXJlbl0rJycrJ2Fuc2FnZScsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9OyAgIA0KDQovL1R1ZXJlbiB6YWVobGVuIERhdGVucHVua3RlIGFubGVnZW4NCmlmIChUdWVyZW5fdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWyANCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW1R1ZXJlbl0rJy5BbnphaGxfJytbVHVlcmVuXSsnX2dla2lwcHQnLCB7J25hbWUnOidBbnphaGxfJytbVHVlcmVuXSsnX2dla2lwcHQnLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOicnK1tUdWVyZW5dKycnLCAnZGVmJzowIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbVHVlcmVuXSsnLkFuemFobF8nK1tUdWVyZW5dKydfb2ZmZW4nLCB7J25hbWUnOidBbnphaGxfJytbVHVlcmVuXSsnX29mZmVuJywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbVHVlcmVuXSsnJywgJ2RlZic6MCB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW1R1ZXJlbl0rJy5BbnphaGxfJytbVHVlcmVuXSsnX2dlc2NobG9zc2VuJywgeyduYW1lJzonQW56YWhsXycrW1R1ZXJlbl0rJ19nZXNjaGxvc3NlbicsICd0eXBlJzonbnVtYmVyJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbnVtYmVyJywndW5pdCc6JycrW1R1ZXJlbl0rJycsICdkZWYnOjAgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tUdWVyZW5dKycuQW56YWhsXycrW1R1ZXJlbl0rJ19nZXNhbXQnLCB7J25hbWUnOidBbnphaGxfJytbVHVlcmVuXSsnX2dlc2FtdCcsICd0eXBlJzonbnVtYmVyJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbnVtYmVyJywndW5pdCc6JycrW1R1ZXJlbl0rJycsICdkZWYnOjAgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tUdWVyZW5dKycuQW56YWhsXycrW1R1ZXJlbl0rJ19nZW9lZmZuZXRfdW5kX2dla2lwcHRfZ2VzYW10JywgeyduYW1lJzonQW56YWhsXycrW1R1ZXJlbl0rJ19nZW9lZmZuZXRfdW5kX2dla2lwcHRfZ2VzYW10JywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbVHVlcmVuXSsnJywgJ2RlZic6MCB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW1R1ZXJlbl0rJy5vZmZlbmVfZ2VraXBwdGVfJytbVHVlcmVuXSsnX0xpc3RlJywgeyduYW1lJzonb2ZmZW5lX2dla2lwcHRlXycrW1R1ZXJlbl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tUdWVyZW5dKycuZ2VzYW10ZV8nK1tUdWVyZW5dKydfTGlzdGUnLCB7J25hbWUnOidnZXNhbXRlXycrW1R1ZXJlbl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tUdWVyZW5dKycuaHRtbF8nK1tUdWVyZW5dKydfTGlzdGUnLCB7J25hbWUnOidodG1sXycrW1R1ZXJlbl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tUdWVyZW5dKycub2ZmZW5lX2dla2lwcHRlXycrW1R1ZXJlbl0rJ19MaXN0ZV9taXRfRW1vamlzJywgeyduYW1lJzonb2ZmZW5lX2dla2lwcHRlXycrW1R1ZXJlbl0rJ19MaXN0ZV9taXRfRW1vamlzJywgJ3R5cGUnOidtaXhlZCcsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J21peGVkJywgJ2RlZic6J25vY2ggbGVlcicgfV0sICAgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL1RlbGVncmFtIFR1ZXJlbiAgTmFjaHJpY2h0ZW52ZXJzYW5kIGFubGVnZW4NCmlmIChUdWVyZW5fdmVyd2VuZGVuID09IHRydWUgJiYgVGVsZWdyYW1fdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWyANCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uVGVsZWdyYW0uVFZlcnNhbmRfJytbVHVlcmVuXSsndmVyc2FuZCcsIHsnbmFtZSc6J1RlbGVncmFtXycrW1R1ZXJlbl0rJ19WZXJzYW5kX2FuX2F1cycsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLlRlbGVncmFtLlRWZXJzYW5kXycrW1R1ZXJlbl0rJ3N0YXR1cycsIHsnbmFtZSc6J1RlbGVncmFtXycrW1R1ZXJlbl0rJ3N0YXR1c19zZW5kZW4nLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2J1dHRvbicsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJUZWxlZ3JhbSAiK1tUdWVyZW5dKycnKydzdGF0dXMnLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sIA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KLy9FLU1haWwgVHVlcmVuIE5hY2hyaWNodGVudmVyc2FuZCBhbmxlZ2VuDQppZiAoVHVlcmVuX3ZlcndlbmRlbiA9PSB0cnVlICYmIEVtYWlsX3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsgICAgDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLkVNYWlsLkVWZXJzYW5kXycrW1R1ZXJlbl0rJ3ZlcnNhbmQnLCB7J25hbWUnOidFTWFpbF8nK1tUdWVyZW5dKydfVmVyc2FuZF9hbl9hdXMnLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5FTWFpbC5FVmVyc2FuZF8nK1tUdWVyZW5dKydzdGF0dXMnLCB7J25hbWUnOidFTWFpbF8nK1tUdWVyZW5dKydzdGF0dXNfc2VuZGVuJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOididXR0b24nLCAnZGVmJzpmYWxzZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAiRU1haWwgIitbVHVlcmVuXSsnJysnc3RhdHVzJywic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCi8vU3RlY2tkb3Nlbg0KLy9BbnNhZ2UgQnV0dG9uIFN0ZWNrZG9zZW5hbnNhZ2UgYW5sZWdlbg0KaWYgKEFsZXhhX0Fuc2FnZV92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBTdGVja2Rvc2VuX3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5BbGV4YV9BbnNhZ2VuLkFuc2FnZW4uJytbU3RlY2tkb3Nlbl0rJ2Fuc2FnZScsIHsnbmFtZSc6IFtTdGVja2Rvc2VuXSsnYW5zYWdlJywndHlwZSc6ICdib29sZWFuJywgJ3JlYWQnOiB0cnVlLCAnd3JpdGUnOiB0cnVlLCAncm9sZSc6ICdidXR0b24nLCdkZWYnOnRydWUsICJzbWFydE5hbWUiOiB7ImRlIjogJycrW1N0ZWNrZG9zZW5dKycnKydhbnNhZ2UnLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sIA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KLy9TdGVja2Rvc2VuIHphZWhsZW4gRGF0ZW5wdW5rdGUgYW5sZWdlbg0KaWYgKFN0ZWNrZG9zZW5fdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWyAgICAgICAgDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tTdGVja2Rvc2VuXSsnLkFuemFobF8nK1tTdGVja2Rvc2VuXSsnX2dlc2FtdCcsIHsnbmFtZSc6J0FuemFobF8nK1tTdGVja2Rvc2VuXSsnX2dlc2FtdCcsICd0eXBlJzonbnVtYmVyJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbnVtYmVyJywndW5pdCc6JycrW1N0ZWNrZG9zZW5dKycnLCAnZGVmJzowIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbU3RlY2tkb3Nlbl0rJy5BbnphaGxfJytbU3RlY2tkb3Nlbl0rJ19ha3RpdicsIHsnbmFtZSc6J0FuemFobF8nK1tTdGVja2Rvc2VuXSsnX2FrdGl2JywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbU3RlY2tkb3Nlbl0rJycsICdkZWYnOjAgfV0sICAgIA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbU3RlY2tkb3Nlbl0rJy5ha3RpdmVfJytbU3RlY2tkb3Nlbl0rJ19MaXN0ZScsIHsnbmFtZSc6J2FrdGl2ZV8nK1tTdGVja2Rvc2VuXSsnX0xpc3RlJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW1N0ZWNrZG9zZW5dKycuZ2VzYW10ZV8nK1tTdGVja2Rvc2VuXSsnX0xpc3RlJywgeyduYW1lJzonZ2VzYW10ZV8nK1tTdGVja2Rvc2VuXSsnX0xpc3RlJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW1N0ZWNrZG9zZW5dKycuaHRtbF8nK1tTdGVja2Rvc2VuXSsnX0xpc3RlJywgeyduYW1lJzonaHRtbF8nK1tTdGVja2Rvc2VuXSsnX0xpc3RlJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW1N0ZWNrZG9zZW5dKycuYWt0aXZlXycrW1N0ZWNrZG9zZW5dKydfTGlzdGVfbWl0X0Vtb2ppcycsIHsnbmFtZSc6J2FrdGl2ZV8nK1tTdGVja2Rvc2VuXSsnX0xpc3RlX21pdF9FbW9qaXMnLCAndHlwZSc6J21peGVkJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbWl4ZWQnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwgICANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQogICAgDQovL1RlbGVncmFtIFN0ZWNrZG9zZW4gIE5hY2hyaWNodGVudmVyc2FuZCBhbmxlZ2VuDQppZiAoU3RlY2tkb3Nlbl92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBUZWxlZ3JhbV92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbIA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5UZWxlZ3JhbS5UVmVyc2FuZF8nK1tTdGVja2Rvc2VuXSsndmVyc2FuZCcsIHsnbmFtZSc6J1RlbGVncmFtXycrW1N0ZWNrZG9zZW5dKydfVmVyc2FuZF9hbl9hdXMnLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5UZWxlZ3JhbS5UVmVyc2FuZF8nK1tTdGVja2Rvc2VuXSsnc3RhdHVzJywgeyduYW1lJzonVGVsZWdyYW1fJytbU3RlY2tkb3Nlbl0rJ3N0YXR1c19zZW5kZW4nLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2J1dHRvbicsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJUZWxlZ3JhbSAiK1tTdGVja2Rvc2VuXSsnJysnc3RhdHVzJywic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vRS1NYWlsIFN0ZWNrZG9zZW4gTmFjaHJpY2h0ZW52ZXJzYW5kIGFubGVnZW4NCmlmIChTdGVja2Rvc2VuX3ZlcndlbmRlbiA9PSB0cnVlICYmIEVtYWlsX3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsgICANCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uRU1haWwuRVZlcnNhbmRfJytbU3RlY2tkb3Nlbl0rJ3ZlcnNhbmQnLCB7J25hbWUnOidFTWFpbF8nK1tTdGVja2Rvc2VuXSsnX1ZlcnNhbmRfYW5fYXVzJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uRU1haWwuRVZlcnNhbmRfJytbU3RlY2tkb3Nlbl0rJ3N0YXR1cycsIHsnbmFtZSc6J0VNYWlsXycrW1N0ZWNrZG9zZW5dKydzdGF0dXNfc2VuZGVuJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOididXR0b24nLCAnZGVmJzpmYWxzZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAiRU1haWwgIitbU3RlY2tkb3Nlbl0rJycrJ3N0YXR1cycsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwNCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQovL0xpY2h0ZXINCi8vQW5zYWdlIEJ1dHRvbiBMaWNodGVyYW5zYWdlIGFubGVnZW4NCmlmIChBbGV4YV9BbnNhZ2VfdmVyd2VuZGVuID09IHRydWUgJiYgTGljaHRlcl92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQWxleGFfQW5zYWdlbi5BbnNhZ2VuLicrW0xpY2h0XSsnYW5zYWdlJywgeyduYW1lJzogW0xpY2h0XSsnYW5zYWdlJywndHlwZSc6ICdib29sZWFuJywgJ3JlYWQnOiB0cnVlLCAnd3JpdGUnOiB0cnVlLCAncm9sZSc6ICdidXR0b24nLCdkZWYnOnRydWUsICJzbWFydE5hbWUiOiB7ImRlIjogJycrW0xpY2h0XSsnJysnYW5zYWdlJywic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vTGljaHRlciB6YWVobGVuIERhdGVucHVua3RlIGFubGVnZW4NCmlmIChMaWNodGVyX3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW0xpY2h0XSsnLkFuemFobF8nK1tMaWNodF0rJ19nZXNhbXQnLCB7J25hbWUnOidBbnphaGxfJytbTGljaHRdKydfZ2VzYW10JywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbTGljaHRdKycnLCAnZGVmJzowIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbTGljaHRdKycuQW56YWhsXycrW0xpY2h0XSsnX2FrdGl2JywgeyduYW1lJzonQW56YWhsXycrW0xpY2h0XSsnX2FrdGl2JywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonJytbTGljaHRdKycnLCAnZGVmJzowIH1dLCAgICANCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW0xpY2h0XSsnLmFrdGl2ZV8nK1tMaWNodF0rJ19MaXN0ZScsIHsnbmFtZSc6J2FrdGl2ZV8nK1tMaWNodF0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tMaWNodF0rJy5nZXNhbXRlXycrW0xpY2h0XSsnX0xpc3RlJywgeyduYW1lJzonZ2VzYW10ZV8nK1tMaWNodF0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tMaWNodF0rJy5odG1sXycrW0xpY2h0XSsnX0xpc3RlJywgeyduYW1lJzonaHRtbF8nK1tMaWNodF0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tMaWNodF0rJy5ha3RpdmVfJytbTGljaHRdKydfTGlzdGVfbWl0X0Vtb2ppcycsIHsnbmFtZSc6J2FrdGl2ZV8nK1tMaWNodF0rJ19MaXN0ZV9taXRfRW1vamlzJywgJ3R5cGUnOidtaXhlZCcsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J21peGVkJywgJ2RlZic6J25vY2ggbGVlcicgfV0sICAgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL1RlbGVncmFtIExpY2h0ZXIgIE5hY2hyaWNodGVudmVyc2FuZCBhbmxlZ2VuDQppZiAoTGljaHRlcl92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBUZWxlZ3JhbV92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLlRlbGVncmFtLlRWZXJzYW5kXycrW0xpY2h0XSsndmVyc2FuZCcsIHsnbmFtZSc6J1RlbGVncmFtXycrW0xpY2h0XSsnX1ZlcnNhbmRfYW5fYXVzJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uVGVsZWdyYW0uVFZlcnNhbmRfJytbTGljaHRdKydzdGF0dXMnLCB7J25hbWUnOidUZWxlZ3JhbV8nK1tMaWNodF0rJ3N0YXR1c19zZW5kZW4nLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2J1dHRvbicsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJUZWxlZ3JhbSAiK1tMaWNodF0rJycrJ3N0YXR1cycsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL0UtTWFpbCBMaWNodGVyIE5hY2hyaWNodGVudmVyc2FuZCBhbmxlZ2VuDQppZiAoTGljaHRlcl92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBFbWFpbF92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLkVNYWlsLkVWZXJzYW5kXycrW0xpY2h0XSsndmVyc2FuZCcsIHsnbmFtZSc6J0VNYWlsXycrW0xpY2h0XSsnX1ZlcnNhbmRfYW5fYXVzJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uRU1haWwuRVZlcnNhbmRfJytbTGljaHRdKydzdGF0dXMnLCB7J25hbWUnOidFTWFpbF8nK1tMaWNodF0rJ3N0YXR1c19zZW5kZW4nLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2J1dHRvbicsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJFTWFpbCAiK1tMaWNodF0rJycrJ3N0YXR1cycsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwNCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQovL0Jld2VndW5nc21lbGRlcg0KLy9BbnNhZ2UgQnV0dG9uIEJld2VndW5nc21lbGRlcmFuc2FnZSBhbmxlZ2VuDQppZiAoQWxleGFfQW5zYWdlX3ZlcndlbmRlbiA9PSB0cnVlICYmIEJld2VndW5nc21lbGRlcl92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQWxleGFfQW5zYWdlbi5BbnNhZ2VuLicrW0Jld2VndW5nc21lbGRlcl0rJ2Fuc2FnZScsIHsnbmFtZSc6IFtCZXdlZ3VuZ3NtZWxkZXJdKydhbnNhZ2UnLCd0eXBlJzogJ2Jvb2xlYW4nLCAncmVhZCc6IHRydWUsICd3cml0ZSc6IHRydWUsICdyb2xlJzogJ2J1dHRvbicsJ2RlZic6dHJ1ZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAnJytbQmV3ZWd1bmdzbWVsZGVyXSsnJysnYW5zYWdlJywic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vQmV3ZWd1bmdzbWVsZGVyIHphZWhsZW4gRGF0ZW5wdW5rdGUgYW5sZWdlbg0KaWYgKEJld2VndW5nc21lbGRlcl92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCZXdlZ3VuZ3NtZWxkZXJdKycuQW56YWhsXycrW0Jld2VndW5nc21lbGRlcl0rJ19nZXNhbXQnLCB7J25hbWUnOidBbnphaGxfJytbQmV3ZWd1bmdzbWVsZGVyXSsnX2dlc2FtdCcsICd0eXBlJzonbnVtYmVyJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbnVtYmVyJywndW5pdCc6JycrW0Jld2VndW5nc21lbGRlcl0rJycsICdkZWYnOjAgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCZXdlZ3VuZ3NtZWxkZXJdKycuQW56YWhsXycrW0Jld2VndW5nc21lbGRlcl0rJ19ha3RpdicsIHsnbmFtZSc6J0FuemFobF8nK1tCZXdlZ3VuZ3NtZWxkZXJdKydfYWt0aXYnLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOicnK1tCZXdlZ3VuZ3NtZWxkZXJdKycnLCAnZGVmJzowIH1dLCAgICANCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW0Jld2VndW5nc21lbGRlcl0rJy5ha3RpdmVfJytbQmV3ZWd1bmdzbWVsZGVyXSsnX0xpc3RlJywgeyduYW1lJzonYWt0aXZlXycrW0Jld2VndW5nc21lbGRlcl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCZXdlZ3VuZ3NtZWxkZXJdKycuZ2VzYW10ZV8nK1tCZXdlZ3VuZ3NtZWxkZXJdKydfTGlzdGUnLCB7J25hbWUnOidnZXNhbXRlXycrW0Jld2VndW5nc21lbGRlcl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCZXdlZ3VuZ3NtZWxkZXJdKycuaHRtbF8nK1tCZXdlZ3VuZ3NtZWxkZXJdKydfTGlzdGUnLCB7J25hbWUnOidodG1sXycrW0Jld2VndW5nc21lbGRlcl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCZXdlZ3VuZ3NtZWxkZXJdKycuYWt0aXZlXycrW0Jld2VndW5nc21lbGRlcl0rJ19MaXN0ZV9taXRfRW1vamlzJywgeyduYW1lJzonYWt0aXZlXycrW0Jld2VndW5nc21lbGRlcl0rJ19MaXN0ZV9taXRfRW1vamlzJywgJ3R5cGUnOidtaXhlZCcsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J21peGVkJywgJ2RlZic6J25vY2ggbGVlcicgfV0sICAgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL1RlbGVncmFtIEJld2VndW5nc21lbGRlciAgTmFjaHJpY2h0ZW52ZXJzYW5kIGFubGVnZW4NCmlmIChCZXdlZ3VuZ3NtZWxkZXJfdmVyd2VuZGVuID09IHRydWUgJiYgVGVsZWdyYW1fdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5UZWxlZ3JhbS5UVmVyc2FuZF8nK1tCZXdlZ3VuZ3NtZWxkZXJdKyd2ZXJzYW5kJywgeyduYW1lJzonVGVsZWdyYW1fJytbQmV3ZWd1bmdzbWVsZGVyXSsnX1ZlcnNhbmRfYW5fYXVzJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uVGVsZWdyYW0uVFZlcnNhbmRfJytbQmV3ZWd1bmdzbWVsZGVyXSsnc3RhdHVzJywgeyduYW1lJzonVGVsZWdyYW1fJytbQmV3ZWd1bmdzbWVsZGVyXSsnc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIlRlbGVncmFtICIrW0Jld2VndW5nc21lbGRlcl0rJycrJ3N0YXR1cycsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL0UtTWFpbCBCZXdlZ3VuZ3NtZWxkZXIgTmFjaHJpY2h0ZW52ZXJzYW5kIGFubGVnZW4NCmlmIChCZXdlZ3VuZ3NtZWxkZXJfdmVyd2VuZGVuID09IHRydWUgJiYgRW1haWxfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5FTWFpbC5FVmVyc2FuZF8nK1tCZXdlZ3VuZ3NtZWxkZXJdKyd2ZXJzYW5kJywgeyduYW1lJzonRU1haWxfJytbQmV3ZWd1bmdzbWVsZGVyXSsnX1ZlcnNhbmRfYW5fYXVzJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uRU1haWwuRVZlcnNhbmRfJytbQmV3ZWd1bmdzbWVsZGVyXSsnc3RhdHVzJywgeyduYW1lJzonRU1haWxfJytbQmV3ZWd1bmdzbWVsZGVyXSsnc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVNYWlsICIrW0Jld2VndW5nc21lbGRlcl0rJycrJ3N0YXR1cycsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwNCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQovL0JhdHRlcmllbg0KLy9BbnNhZ2UgQnV0dG9uIEJhdHRlcmllbmFuc2FnZSBhbmxlZ2VuDQppZiAoQWxleGFfQW5zYWdlX3ZlcndlbmRlbiA9PSB0cnVlICYmIEJhdHRlcmllbl9TdGF0dXNfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uQW5zYWdlbi4nK1tCYXR0ZXJpZW5dKydzdGF0dXNhbnNhZ2UnLCB7J25hbWUnOiBbQmF0dGVyaWVuXSsnc3RhdHVzYW5zYWdlJywndHlwZSc6ICdib29sZWFuJywgJ3JlYWQnOiB0cnVlLCAnd3JpdGUnOiB0cnVlLCAncm9sZSc6ICdidXR0b24nLCdkZWYnOnRydWUsICJzbWFydE5hbWUiOiB7ImRlIjogJycrW0JhdHRlcmllbl0rJycrJ3N0YXR1c2Fuc2FnZScsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL0JhdHRlcmllbiBTdGF0dXMgemFlaGxlbiBEYXRlbnB1bmt0ZSBhbmxlZ2VuDQppZiAoQmF0dGVyaWVuX1N0YXR1c192ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCYXR0ZXJpZW5dKydfU3RhdHVzLkFuemFobF8nK1tCYXR0ZXJpZW5dKydfZ2VzYW10JywgeyduYW1lJzonQW56YWhsXycrW0JhdHRlcmllbl0rJ19nZXNhbXQnLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOicnK1tCYXR0ZXJpZW5dKycnLCAnZGVmJzowIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbQmF0dGVyaWVuXSsnX1N0YXR1cy5BbnphaGxfJytbQmF0dGVyaWVuXSsnX2FrdGl2JywgeyduYW1lJzonQW56YWhsXycrW0JhdHRlcmllbl0rJ19ha3RpdicsICd0eXBlJzonbnVtYmVyJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbnVtYmVyJywndW5pdCc6JycrW0JhdHRlcmllbl0rJycsICdkZWYnOjAgfV0sICAgIA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbQmF0dGVyaWVuXSsnX1N0YXR1cy5ha3RpdmVfJytbQmF0dGVyaWVuXSsnX0xpc3RlJywgeyduYW1lJzonYWt0aXZlXycrW0JhdHRlcmllbl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCYXR0ZXJpZW5dKydfU3RhdHVzLmdlc2FtdGVfJytbQmF0dGVyaWVuXSsnX0xpc3RlJywgeyduYW1lJzonZ2VzYW10ZV8nK1tCYXR0ZXJpZW5dKydfTGlzdGUnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOidub2NoIGxlZXInIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbQmF0dGVyaWVuXSsnX1N0YXR1cy5odG1sXycrW0JhdHRlcmllbl0rJ19MaXN0ZScsIHsnbmFtZSc6J2h0bWxfJytbQmF0dGVyaWVuXSsnX0xpc3RlJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW0JhdHRlcmllbl0rJ19TdGF0dXMuYWt0aXZlXycrW0JhdHRlcmllbl0rJ19MaXN0ZV9taXRfRW1vamlzJywgeyduYW1lJzonYWt0aXZlXycrW0JhdHRlcmllbl0rJ19MaXN0ZV9taXRfRW1vamlzJywgJ3R5cGUnOidtaXhlZCcsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J21peGVkJywgJ2RlZic6J25vY2ggbGVlcicgfV0sICAgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL1RlbGVncmFtIEJhdHRlcmllbiBTdGF0dXMgTmFjaHJpY2h0ZW52ZXJzYW5kIGFubGVnZW4NCmlmIChCYXR0ZXJpZW5fU3RhdHVzX3ZlcndlbmRlbiA9PSB0cnVlICYmIFRlbGVncmFtX3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uVGVsZWdyYW0uVFZlcnNhbmRfJytbQmF0dGVyaWVuXSsnc3RhdHVzdmVyc2FuZCcsIHsnbmFtZSc6J1RlbGVncmFtXycrW0JhdHRlcmllbl0rJ19WZXJzYW5kX2FuX2F1cycsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLlRlbGVncmFtLlRWZXJzYW5kXycrW0JhdHRlcmllbl0rJ3N0YXR1cycsIHsnbmFtZSc6J1RlbGVncmFtXycrW0JhdHRlcmllbl0rJ3N0YXR1c19zZW5kZW4nLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2J1dHRvbicsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJUZWxlZ3JhbSAiK1tCYXR0ZXJpZW5dKycnKydzdGF0dXMnLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sIA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KLy9FLU1haWwgQmF0dGVyaWVuIFN0YXR1cyBOYWNocmljaHRlbnZlcnNhbmQgYW5sZWdlbg0KaWYgKEJhdHRlcmllbl9TdGF0dXNfdmVyd2VuZGVuID09IHRydWUgJiYgRW1haWxfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5FTWFpbC5FVmVyc2FuZF8nK1tCYXR0ZXJpZW5dKydzdGF0dXN2ZXJzYW5kJywgeyduYW1lJzonRU1haWxfJytbQmF0dGVyaWVuXSsnX1ZlcnNhbmRfYW5fYXVzJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uRU1haWwuRVZlcnNhbmRfJytbQmF0dGVyaWVuXSsnc3RhdHVzJywgeyduYW1lJzonRU1haWxfJytbQmF0dGVyaWVuXSsnc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVNYWlsICIrW0JhdHRlcmllbl0rJycrJ3N0YXR1cycsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwNCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KLy9CYXR0ZXJpZW4gVm9sdA0KLy9BbnNhZ2UgQnV0dG9uIEJhdHRlcmllbmFuc2FnZSBWb2x0IGFubGVnZW4NCmlmIChBbGV4YV9BbnNhZ2VfdmVyd2VuZGVuID09IHRydWUgJiYgQmF0dGVyaWVuX3ZvbHRfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkFsZXhhX0Fuc2FnZW4uQW5zYWdlbi4nK1tCYXR0ZXJpZW5dKyd2b2x0YW5zYWdlJywgeyduYW1lJzogW0JhdHRlcmllbl0rJ3ZvbHRhbnNhZ2UnLCd0eXBlJzogJ2Jvb2xlYW4nLCAncmVhZCc6IHRydWUsICd3cml0ZSc6IHRydWUsICdyb2xlJzogJ2J1dHRvbicsJ2RlZic6dHJ1ZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAnJytbQmF0dGVyaWVuXSsnJysndm9sdGFuc2FnZScsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwgDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovL0JhdHRlcmllbiB2b2x0IHphZWhsZW4gRGF0ZW5wdW5rdGUgYW5sZWdlbg0KaWYgKEJhdHRlcmllbl92b2x0X3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW0JhdHRlcmllbl0rJ19Wb2x0LkFuemFobF8nK1tCYXR0ZXJpZW5dKydfZ2VzYW10JywgeyduYW1lJzonQW56YWhsXycrW0JhdHRlcmllbl0rJ19nZXNhbXQnLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOicnK1tCYXR0ZXJpZW5dKycnLCAnZGVmJzowIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbQmF0dGVyaWVuXSsnX1ZvbHQuZ2VzYW10ZV8nK1tCYXR0ZXJpZW5dKydfTGlzdGUnLCB7J25hbWUnOidnZXNhbXRlXycrW0JhdHRlcmllbl0rJ19MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuR2VyYWV0ZS4nK1tCYXR0ZXJpZW5dKydfVm9sdC5odG1sXycrW0JhdHRlcmllbl0rJ19MaXN0ZScsIHsnbmFtZSc6J2h0bWxfJytbQmF0dGVyaWVuXSsnX0xpc3RlJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLicrW0JhdHRlcmllbl0rJ19Wb2x0LmFrdGl2ZV8nK1tCYXR0ZXJpZW5dKydfTGlzdGVfbWl0X0Vtb2ppcycsIHsnbmFtZSc6J2FrdGl2ZV8nK1tCYXR0ZXJpZW5dKydfTGlzdGVfbWl0X0Vtb2ppcycsICd0eXBlJzonbWl4ZWQnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidtaXhlZCcsICdkZWYnOidub2NoIGxlZXInIH1dLCAgIA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KLy9UZWxlZ3JhbSBCYXR0ZXJpZW4gdm9sdCBOYWNocmljaHRlbnZlcnNhbmQgYW5sZWdlbg0KaWYgKEJhdHRlcmllbl92b2x0X3ZlcndlbmRlbiA9PSB0cnVlICYmIFRlbGVncmFtX3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uVGVsZWdyYW0uVFZlcnNhbmRfJytbQmF0dGVyaWVuXSsndm9sdHZlcnNhbmQnLCB7J25hbWUnOidUZWxlZ3JhbV8nK1tCYXR0ZXJpZW5dKydfVm9sdF9WZXJzYW5kX2FuX2F1cycsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UgfV0sDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLlRlbGVncmFtLlRWZXJzYW5kXycrW0JhdHRlcmllbl0rJ3ZvbHRzdGF0dXMnLCB7J25hbWUnOidUZWxlZ3JhbV8nK1tCYXR0ZXJpZW5dKydWb2x0X3N0YXR1c19zZW5kZW4nLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2J1dHRvbicsICdkZWYnOmZhbHNlLCAic21hcnROYW1lIjogeyJkZSI6ICJUZWxlZ3JhbSAiK1tCYXR0ZXJpZW5dKycnKyd2b2x0c3RhdHVzJywic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vRS1NYWlsIEJhdHRlcmllbiB2b2x0IE5hY2hyaWNodGVudmVyc2FuZCBhbmxlZ2VuDQppZiAoQmF0dGVyaWVuX3ZvbHRfdmVyd2VuZGVuID09IHRydWUgJiYgRW1haWxfdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5FTWFpbC5FVmVyc2FuZF8nK1tCYXR0ZXJpZW5dKyd2b2x0dmVyc2FuZCcsIHsnbmFtZSc6J0VNYWlsXycrW0JhdHRlcmllbl0rJ19Wb2x0X1ZlcnNhbmRfYW5fYXVzJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSB9XSwNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5CZW5hY2hyaWNodGlndW5nZW4uRU1haWwuRVZlcnNhbmRfJytbQmF0dGVyaWVuXSsndm9sdHN0YXR1cycsIHsnbmFtZSc6J0VNYWlsXycrW0JhdHRlcmllbl0rJ1ZvbHRfc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVNYWlsICIrW0JhdHRlcmllbl0rJycrJ3ZvbHRzdGF0dXMnLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sDQpdOw0KY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSl9Ow0KDQovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCi8vVGVtcGVyYXR1cmVuDQovL0Fuc2FnZSBCdXR0b24gVGVtcGVyYXR1cmVuYW5zYWdlIGFubGVnZW4NCmlmIChBbGV4YV9BbnNhZ2VfdmVyd2VuZGVuID09IHRydWUgJiYgVGVtcGVyYXR1cmVuX3ZlcndlbmRlbiA9PSB0cnVlKXsNCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsNCiAgICBbJ0VpZ2VuZV9EYXRlbnB1bmt0ZS5BbGV4YV9BbnNhZ2VuLkFuc2FnZW4uJytbVGVtcGVyYXR1cmVuXSsnYW5zYWdlJywgeyduYW1lJzogW1RlbXBlcmF0dXJlbl0rJ2Fuc2FnZScsJ3R5cGUnOiAnYm9vbGVhbicsICdyZWFkJzogdHJ1ZSwgJ3dyaXRlJzogdHJ1ZSwgJ3JvbGUnOiAnYnV0dG9uJywnZGVmJzp0cnVlLCAic21hcnROYW1lIjogeyJkZSI6ICcnK1tUZW1wZXJhdHVyZW5dKycnKydhbnNhZ2UnLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sIA0KXTsNCmNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbixmYWxzZSwgc3RhdGVzVG9DcmVhdGUpfTsNCg0KLy9UZW1wZXJhdHVyZW4gIERhdGVucHVua3RlIGFubGVnZW4NCmlmIChUZW1wZXJhdHVyZW5fdmVyd2VuZGVuID09IHRydWUpew0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbVGVtcGVyYXR1cmVuXSsnLmdlc2FtdGVfJytbVGVtcGVyYXR1cmVuXSsnX0xpc3RlJywgeyduYW1lJzonZ2VzYW10ZV8nK1tUZW1wZXJhdHVyZW5dKydfTGlzdGUnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOidub2NoIGxlZXInIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbVGVtcGVyYXR1cmVuXSsnLmh0bWxfJytbVGVtcGVyYXR1cmVuXSsnX0xpc3RlJywgeyduYW1lJzonaHRtbF8nK1tUZW1wZXJhdHVyZW5dKydfTGlzdGUnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOidub2NoIGxlZXInIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuJytbVGVtcGVyYXR1cmVuXSsnLmFrdGl2ZV8nK1tUZW1wZXJhdHVyZW5dKydfTGlzdGVfbWl0X0Vtb2ppcycsIHsnbmFtZSc6J2FrdGl2ZV8nICtbVGVtcGVyYXR1cmVuXSsnX0xpc3RlX21pdF9FbW9qaXMnLCAndHlwZSc6J21peGVkJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbWl4ZWQnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwgICANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vVGVsZWdyYW0gVGVtcGVyYXR1cmVuICBOYWNocmljaHRlbnZlcnNhbmQgYW5sZWdlbg0KaWYgKFRlbXBlcmF0dXJlbl92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBUZWxlZ3JhbV92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLlRlbGVncmFtLlRWZXJzYW5kXycrW1RlbXBlcmF0dXJlbl0rJ3ZlcnNhbmQnLCB7J25hbWUnOidUZWxlZ3JhbV8nK1tUZW1wZXJhdHVyZW5dKydfVmVyc2FuZF9hbl9hdXMnLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5UZWxlZ3JhbS5UVmVyc2FuZF8nK1tUZW1wZXJhdHVyZW5dKydzdGF0dXMnLCB7J25hbWUnOidUZWxlZ3JhbV8nK1tUZW1wZXJhdHVyZW5dKydzdGF0dXNfc2VuZGVuJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOididXR0b24nLCAnZGVmJzpmYWxzZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAiVGVsZWdyYW0gIitbVGVtcGVyYXR1cmVuXSsnJysnc3RhdHVzJywic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCANCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vRS1NYWlsIFRlbXBlcmF0dXJlbiBOYWNocmljaHRlbnZlcnNhbmQgYW5sZWdlbg0KaWYgKFRlbXBlcmF0dXJlbl92ZXJ3ZW5kZW4gPT0gdHJ1ZSAmJiBFbWFpbF92ZXJ3ZW5kZW4gPT0gdHJ1ZSl7DQpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbDQogICAgWydFaWdlbmVfRGF0ZW5wdW5rdGUuQmVuYWNocmljaHRpZ3VuZ2VuLkVNYWlsLkVWZXJzYW5kXycrW1RlbXBlcmF0dXJlbl0rJ3ZlcnNhbmQnLCB7J25hbWUnOidFTWFpbF8nK1tUZW1wZXJhdHVyZW5dKydfVmVyc2FuZF9hbl9hdXMnLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlIH1dLA0KICAgIFsnRWlnZW5lX0RhdGVucHVua3RlLkJlbmFjaHJpY2h0aWd1bmdlbi5FTWFpbC5FVmVyc2FuZF8nK1tUZW1wZXJhdHVyZW5dKydzdGF0dXMnLCB7J25hbWUnOidFTWFpbF8nK1tUZW1wZXJhdHVyZW5dKydfc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVNYWlsICIrW1RlbXBlcmF0dXJlbl0rJycrJ3N0YXR1cycsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwNCl07DQpjcmVhdGVVc2VyU3RhdGVzKGFubGVnZW5faW4sZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQovL0FiIGhpZXIgRGF0ZW5wdW5rdGUgbMO2c2NoZW4NCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQovKmlmICghQWxleGFfQW5zYWdlX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnamF2YXNjcmlwdCcpIHsNCmNvbnN0IGlkc2pzID0gJCgnamF2YXNjcmlwdC4qLiouU3RpbW1lbi4qJyk7ICANCmlkc2pzLmVhY2goZnVuY3Rpb24oaWQsIGkpIHsNCiAgIGlmKGV4aXN0c1N0YXRlKGlkKSkgZGVsZXRlU3RhdGUoaWQuc3Vic3RyaW5nKDEzKSk7DQp9KX07DQoNCmlmICghQWxleGFfQW5zYWdlX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnMF91c2VyZGF0YScpIHsNCmNvbnN0IGlkc3VkID0gJCgnMF91c2VyZGF0YS4wLiouKi5TdGltbWVuLionKTsgIA0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQoNCiovDQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppZiAoIUFsZXhhX0Fuc2FnZV92ZXJ3ZW5kZW4gJiYgYW5sZWdlbl9pbi5zbGljZSgwLCAxMCkgPT0gJ2phdmFzY3JpcHQnKSB7DQpjb25zdCBpZHNqcyA9ICQoJ2phdmFzY3JpcHQuKi4qLkFuc2FnZW4nKTsgIA0KaWRzanMuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZC5zdWJzdHJpbmcoMTMpKTsNCn0pfTsNCg0KaWYgKCFBbGV4YV9BbnNhZ2VfdmVyd2VuZGVuICYmIGFubGVnZW5faW4uc2xpY2UoMCwgMTApID09ICcwX3VzZXJkYXRhJykgew0KY29uc3QgaWRzdWQgPSAkKCcwX3VzZXJkYXRhLjAuKi4qLkFuc2FnZW4nKTsgIA0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppZiAoIVRlbGVncmFtX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnamF2YXNjcmlwdCcpIHsNCmNvbnN0IGlkc2pzID0gJCgnamF2YXNjcmlwdC4qLiouVGVsZWdyYW0qJyk7IA0KaWRzanMuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZC5zdWJzdHJpbmcoMTMpKTsNCn0pfTsNCg0KaWYgKCFUZWxlZ3JhbV92ZXJ3ZW5kZW4gJiYgYW5sZWdlbl9pbi5zbGljZSgwLCAxMCkgPT0gJzBfdXNlcmRhdGEnKSB7DQpjb25zdCBpZHN1ZCA9ICQoJzBfdXNlcmRhdGEuMC4qLiouVGVsZWdyYW0qJyk7IA0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppZiAoIUVtYWlsX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnamF2YXNjcmlwdCcpIHsNCmNvbnN0IGlkc2pzID0gJCgnamF2YXNjcmlwdC4qLiouRU1haWwqJyk7IA0KaWRzanMuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZC5zdWJzdHJpbmcoMTMpKTsNCn0pfTsNCg0KaWYgKCFFbWFpbF92ZXJ3ZW5kZW4gJiYgYW5sZWdlbl9pbi5zbGljZSgwLCAxMCkgPT0gJzBfdXNlcmRhdGEnKSB7DQpjb25zdCBpZHN1ZCA9ICQoJzBfdXNlcmRhdGEuMC4qLiouRU1haWwqJyk7IA0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppZiAoIUZlbnN0ZXJfdmVyd2VuZGVuICYmIGFubGVnZW5faW4uc2xpY2UoMCwgMTApID09ICdqYXZhc2NyaXB0Jykgew0KY29uc3QgaWRzanMgPSAkKCdqYXZhc2NyaXB0LiouKi5GZW5zdGVyLionKTsgDQppZHNqcy5lYWNoKGZ1bmN0aW9uKGlkLCBpKSB7DQogICBpZihleGlzdHNTdGF0ZShpZCkpIGRlbGV0ZVN0YXRlKGlkLnN1YnN0cmluZygxMykpOw0KfSl9Ow0KDQppZiAoIUZlbnN0ZXJfdmVyd2VuZGVuICYmIGFubGVnZW5faW4uc2xpY2UoMCwgMTApID09ICcwX3VzZXJkYXRhJykgew0KY29uc3QgaWRzdWQgPSAkKCcwX3VzZXJkYXRhLjAuKi4qLkZlbnN0ZXIuKicpOyANCmlkc3VkLmVhY2goZnVuY3Rpb24oaWQsIGkpIHsNCiAgIGlmKGV4aXN0c1N0YXRlKGlkKSkgZGVsZXRlU3RhdGUoaWQpOw0KfSl9Ow0KDQovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KaWYgKCFUdWVyZW5fdmVyd2VuZGVuICYmIGFubGVnZW5faW4uc2xpY2UoMCwgMTApID09ICdqYXZhc2NyaXB0Jykgew0KY29uc3QgaWRzanMgPSAkKCdqYXZhc2NyaXB0LiouKi5UdWVyZW4uKicpOyANCmlkc2pzLmVhY2goZnVuY3Rpb24oaWQsIGkpIHsNCiAgIGlmKGV4aXN0c1N0YXRlKGlkKSkgZGVsZXRlU3RhdGUoaWQuc3Vic3RyaW5nKDEzKSk7DQp9KX07DQoNCmlmICghVHVlcmVuX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnMF91c2VyZGF0YScpIHsNCmNvbnN0IGlkc3VkID0gJCgnMF91c2VyZGF0YS4wLiouKi5UdWVyZW4uKicpOyANCmlkc3VkLmVhY2goZnVuY3Rpb24oaWQsIGkpIHsNCiAgIGlmKGV4aXN0c1N0YXRlKGlkKSkgZGVsZXRlU3RhdGUoaWQpOw0KfSl9Ow0KDQovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KaWYgKCFTdGVja2Rvc2VuX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnamF2YXNjcmlwdCcpIHsNCmNvbnN0IGlkc2pzID0gJCgnamF2YXNjcmlwdC4qLiouU3RlY2tkb3Nlbi4qJyk7IA0KaWRzanMuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZC5zdWJzdHJpbmcoMTMpKTsNCn0pfTsNCg0KaWYgKCFTdGVja2Rvc2VuX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnMF91c2VyZGF0YScpIHsNCmNvbnN0IGlkc3VkID0gJCgnMF91c2VyZGF0YS4wLiouKi5TdGVja2Rvc2VuLionKTsgDQppZHN1ZC5lYWNoKGZ1bmN0aW9uKGlkLCBpKSB7DQogICBpZihleGlzdHNTdGF0ZShpZCkpIGRlbGV0ZVN0YXRlKGlkKTsNCn0pfTsNCg0KLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCmlmICghTGljaHRlcl92ZXJ3ZW5kZW4gJiYgYW5sZWdlbl9pbi5zbGljZSgwLCAxMCkgPT0gJ2phdmFzY3JpcHQnKSB7DQpjb25zdCBpZHNqcyA9ICQoJ2phdmFzY3JpcHQuKi4qLkxpY2h0ZXIuKicpOyANCmlkc2pzLmVhY2goZnVuY3Rpb24oaWQsIGkpIHsNCiAgIGlmKGV4aXN0c1N0YXRlKGlkKSkgZGVsZXRlU3RhdGUoaWQuc3Vic3RyaW5nKDEzKSk7DQp9KX07DQoNCmlmICghTGljaHRlcl92ZXJ3ZW5kZW4gJiYgYW5sZWdlbl9pbi5zbGljZSgwLCAxMCkgPT0gJzBfdXNlcmRhdGEnKSB7DQpjb25zdCBpZHN1ZCA9ICQoJzBfdXNlcmRhdGEuMC4qLiouTGljaHRlci4qJyk7IA0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppZiAoIUJld2VndW5nc21lbGRlcl92ZXJ3ZW5kZW4gJiYgYW5sZWdlbl9pbi5zbGljZSgwLCAxMCkgPT0gJ2phdmFzY3JpcHQnKSB7DQpjb25zdCBpZHNqcyA9ICQoJ2phdmFzY3JpcHQuKi4qLkJld2VndW5nc21lbGRlci4qJyk7IA0KaWRzanMuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZC5zdWJzdHJpbmcoMTMpKTsNCn0pfTsNCg0KaWYgKCFCZXdlZ3VuZ3NtZWxkZXJfdmVyd2VuZGVuICYmIGFubGVnZW5faW4uc2xpY2UoMCwgMTApID09ICcwX3VzZXJkYXRhJykgew0KY29uc3QgaWRzdWQgPSAkKCcwX3VzZXJkYXRhLjAuKi4qLkJld2VndW5nc21lbGRlci4qJyk7IA0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQppZiAoIUJhdHRlcmllbl9TdGF0dXNfdmVyd2VuZGVuICYmIGFubGVnZW5faW4uc2xpY2UoMCwgMTApID09ICdqYXZhc2NyaXB0Jykgew0KY29uc3QgaWRzanMgPSAkKCdqYXZhc2NyaXB0LipHZXJhZXRlLkJhdHRlcmllbl9TdGF0dXMuKicpOw0KaWRzanMuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZC5zdWJzdHJpbmcoMTMpKTsNCn0pfTsNCg0KaWYgKCFCYXR0ZXJpZW5fU3RhdHVzX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnMF91c2VyZGF0YScpIHsNCmNvbnN0IGlkc3VkID0gJCgnMF91c2VyZGF0YS4wLkVpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLkJhdHRlcmllbl9TdGF0dXMuKicpOw0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KaWYgKCFCYXR0ZXJpZW5fdm9sdF92ZXJ3ZW5kZW4gJiYgYW5sZWdlbl9pbi5zbGljZSgwLCAxMCkgPT0gJ2phdmFzY3JpcHQnKSB7DQpjb25zdCBpZHNqcyA9ICQoJ2phdmFzY3JpcHQuKi5HZXJhZXRlLkJhdHRlcmllbl9Wb2x0LionKTsNCmlkc2pzLmVhY2goZnVuY3Rpb24oaWQsIGkpIHsNCiAgIGlmKGV4aXN0c1N0YXRlKGlkKSkgZGVsZXRlU3RhdGUoaWQuc3Vic3RyaW5nKDEzKSk7DQp9KX07DQoNCmlmICghQmF0dGVyaWVuX3ZvbHRfdmVyd2VuZGVuICYmIGFubGVnZW5faW4uc2xpY2UoMCwgMTApID09ICcwX3VzZXJkYXRhJykgew0KY29uc3QgaWRzdWQgPSAkKCcwX3VzZXJkYXRhLjAuRWlnZW5lX0RhdGVucHVua3RlLkdlcmFldGUuQmF0dGVyaWVuX1ZvbHQuKicpOw0KaWRzdWQuZWFjaChmdW5jdGlvbihpZCwgaSkgew0KICAgaWYoZXhpc3RzU3RhdGUoaWQpKSBkZWxldGVTdGF0ZShpZCk7DQp9KX07DQoNCg0KLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCmlmICghVGVtcGVyYXR1cmVuX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnamF2YXNjcmlwdCcpIHsNCmNvbnN0IGlkc2pzID0gJCgnamF2YXNjcmlwdC4qLkdlcmFldGUuVGVtcGVyYXR1cmVuLionKTsNCmlkc2pzLmVhY2goZnVuY3Rpb24oaWQsIGkpIHsNCiAgIGlmKGV4aXN0c1N0YXRlKGlkKSkgZGVsZXRlU3RhdGUoaWQuc3Vic3RyaW5nKDEzKSk7DQp9KX07DQoNCmlmICghVGVtcGVyYXR1cmVuX3ZlcndlbmRlbiAmJiBhbmxlZ2VuX2luLnNsaWNlKDAsIDEwKSA9PSAnMF91c2VyZGF0YScpIHsNCmNvbnN0IGlkc3VkID0gJCgnMF91c2VyZGF0YS4wLkVpZ2VuZV9EYXRlbnB1bmt0ZS5HZXJhZXRlLlRlbXBlcmF0dXJlbi4qJyk7DQppZHN1ZC5lYWNoKGZ1bmN0aW9uKGlkLCBpKSB7DQogICBpZihleGlzdHNTdGF0ZShpZCkpIGRlbGV0ZVN0YXRlKGlkKTsNCn0pfTsNCg0KLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCi8vRnVua3Rpb24gbWFpbiBtaXQgVmVyesO2Z2VydW5nIGF1ZnJ1ZmVuDQp0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogIG1haW4oKTsNCn0sIDUwMDApOw0KLy9tYWluKCk7DQoNCg==
Beschreibe diese Funktion β¦
Tueren_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Tueren_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
EQ
val
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Tueren
, alle
Tueren
sind geschlossen.
NEQ
val
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
0
Ansage_Einleitungssatz_Tueren
val
offene_gekippte_Tueren_Liste_eDP
, alle anderen
Tueren
sind geschlossen.
0
log
Logmeldung_Tueren_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
Fenster_vor_versand_pruefen
Beschreibe diese Funktion β¦
gekippt
gekippt
emoji_π
geoffnet
geΓΆffnet
emoji_βοΈ
uebnerschrift_nachrichten_Fenster
emoji_π₯
*
etage
Fenster
status
*
\n
timeout6
timeout6
1000
ms
AND
EQ
val
Anzahl_Fenster_offen_eDP
1
EQ
val
Anzahl_Fenster_gekippt_eDP
0
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es ist
ein
Fenster
geoffnet
\n
\n
TEXT
1
liste_fenster_offen
\n
AND
EQ
val
Anzahl_Fenster_offen_eDP
0
EQ
val
Anzahl_Fenster_gekippt_eDP
1
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es ist
ein
Fenster
gekippt
\n
\n
TEXT
1
liste_fenster_gekippt
\n
AND
EQ
val
Anzahl_Fenster_offen_eDP
1
EQ
val
Anzahl_Fenster_gekippt_eDP
1
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es ist
ein
Fenster
geoffnet
\n
Es ist
ein
Fenster
gekippt
\n
\n
TEXT
1
liste_fenster_offen
\n
\n
TEXT
1
liste_fenster_gekippt
\n
AND
EQ
val
Anzahl_Fenster_offen_eDP
0
GT
val
Anzahl_Fenster_gekippt_eDP
1
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es sind
val
Anzahl_Fenster_gekippt_eDP
Fenster
gekippt
\n
\n
TEXT
1
liste_fenster_gekippt
\n
AND
GT
val
Anzahl_Fenster_offen_eDP
1
EQ
val
Anzahl_Fenster_gekippt_eDP
0
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es sind
val
Anzahl_Fenster_offen_eDP
Fenster
geoffnet
\n
\n
TEXT
1
liste_fenster_offen
\n
AND
GT
val
Anzahl_Fenster_offen_eDP
1
EQ
val
Anzahl_Fenster_gekippt_eDP
1
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es sind
val
Anzahl_Fenster_offen_eDP
Fenster
geoffnet
\n
Es ist
ein
Fenster
gekippt
\n
\n
TEXT
1
liste_fenster_offen
\n
\n
TEXT
1
liste_fenster_gekippt
\n
AND
EQ
val
Anzahl_Fenster_offen_eDP
1
GT
val
Anzahl_Fenster_gekippt_eDP
1
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es ist
ein
Fenster
geoffnet
\n
Es sind
val
Anzahl_Fenster_gekippt_eDP
Fenster
gekippt
\n
\n
TEXT
1
liste_fenster_offen
\n
\n
TEXT
1
liste_fenster_gekippt
\n
AND
GT
val
Anzahl_Fenster_offen_eDP
1
GT
val
Anzahl_Fenster_gekippt_eDP
1
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Es sind
val
Anzahl_Fenster_offen_eDP
Fenster
geoffnet
\n
Es sind
val
Anzahl_Fenster_gekippt_eDP
Fenster
gekippt
\n
\n
TEXT
1
liste_fenster_offen
\n
\n
TEXT
1
liste_fenster_gekippt
\n
AND
EQ
val
Anzahl_Fenster_offen_eDP
0
EQ
val
Anzahl_Fenster_gekippt_eDP
0
nachrichten_ausgabe_Fenster
uebnerschrift_nachrichten_Fenster
Alle
Fenster
sind geschlossen
emoji_β
true
FALSE
Object ID
offene_gekippte_Fenster_Liste_emojis_eDP
TRUE
nachrichten_ausgabe_Fenster
0
Temperaturen_alexa2_adapter_instanz_0
Beschreibe diese Funktion β¦
alexa_instanz_0
alexa2.0.History.serialNumber
any
default
alexa_instanz_0
angesprochener_echo_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0
AND
EQ
FIRST
FROM_START
alexa_instanz_0
8
alexa2.0
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
angesprochener_echo_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak
speak_volume_instanz_0_neu
FIRST
FROM_START
alexa_instanz_0
8
.Echo-Devices.
val
alexa_instanz_0
.Commands.speak-volume
any
default
Ansage_Button_Temperaturen_eDP
AND
EQ
angesprochener_echo_instanz_0
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_0_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_0_neu
TRUE
Ansage_Einleitungssatz_Temperaturen
val
gesamte_Temperaturen_Liste_eDP
, das wΓ€re dann alles.
0
log
Logmeldung_Temperaturen_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_0_neu
15
ausgefΓΌhrt β
Fenster_zaehlen
Beschreibe diese Funktion β¦
anzahl_fenster_gekippt
0
anzahl_fenster_offen
0
anzahl_fenster_geschlossen
0
anzahl_fenster_gesamt
0
liste_fenster_offen
liste_fenster_gekippt
liste_fenster_geschlossen
liste_fenster_offen_gesamt
liste_fenster_offen_html
liste_fenster_gekippt_html
liste_fenster_geschlossen_html
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Fenster
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Fenster
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Fenster
etage
   </td><td>Status</td></tr>
<tr><td>
fenster_offen
selektor_Fenster
anzahl_fenster_gesamt
1
wert
val
fenster_offen
OR
EQ
fenster_offen
wert
geΓΆffnet
EQ
fenster_offen
wert
TRUE
anzahl_fenster_offen
1
INSERT
LAST
liste_fenster_offen
fenster_offen
geΓΆffnet
INSERT
LAST
liste_fenster_offen_html
fenster_offen
<td><span style="color:#FF0000"> geΓΆffnet </span>
fenster_gekippt
selektor_Fenster
wert
val
fenster_gekippt
EQ
fenster_gekippt
wert
gekippt
anzahl_fenster_gekippt
1
INSERT
LAST
liste_fenster_gekippt
fenster_gekippt
gekippt
INSERT
LAST
liste_fenster_gekippt_html
fenster_gekippt
<td><span style="color:#0000FF"> gekippt </span>
fenster_geschlossen
selektor_Fenster
wert
val
fenster_geschlossen
OR
EQ
fenster_geschlossen
wert
geschlossen
EQ
fenster_geschlossen
wert
FALSE
anzahl_fenster_geschlossen
1
INSERT
LAST
liste_fenster_geschlossen
fenster_geschlossen
geschlossen
INSERT
LAST
liste_fenster_geschlossen_html
fenster_geschlossen
<td>geschlossen
true
FALSE
Object ID
Anzahl_Fenster_gekippt_eDP
TRUE
anzahl_fenster_gekippt
0
true
FALSE
Object ID
Anzahl_Fenster_offen_eDP
TRUE
anzahl_fenster_offen
0
true
FALSE
Object ID
Anzahl_Fenster_geschlossen_eDP
TRUE
anzahl_fenster_geschlossen
0
true
FALSE
Object ID
Anzahl_Fenster_gesamt_eDP
TRUE
anzahl_fenster_gesamt
0
true
FALSE
Object ID
Anzahl_Fenster_geoeffnet_und_gekippt_gesamt_eDP
TRUE
ADD
1
anzahl_fenster_gekippt
1
anzahl_fenster_offen
0
AND
EQ
anzahl_fenster_offen
0
EQ
anzahl_fenster_gekippt
0
true
FALSE
Object ID
offene_gekippte_Fenster_Liste_eDP
TRUE
Alle
Fenster
sind geschlossen.
0
true
FALSE
Object ID
offene_gekippte_Fenster_Liste_eDP
TRUE
GT
ADD
1
abc
TEXT
1
liste_fenster_offen
;
;
TEXT
1
liste_fenster_gekippt
;
1
abc
Ansage_Einleitungssatz_Fenster
, alle anderen
Fenster
sind geschlossen.
250
AND
NEQ
anzahl_fenster_offen
0
NEQ
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_offen
;
;
TEXT
1
liste_fenster_gekippt
;
AND
EQ
anzahl_fenster_offen
0
NEQ
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_gekippt
;
AND
NEQ
anzahl_fenster_offen
0
EQ
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_offen
;
AND
NEQ
anzahl_fenster_offen
0
NEQ
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_offen
,
,
TEXT
1
liste_fenster_gekippt
,
AND
EQ
anzahl_fenster_offen
0
NEQ
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_gekippt
,
AND
NEQ
anzahl_fenster_offen
0
EQ
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_offen
,
0
true
FALSE
Object ID
gesamte_Fenster_Liste_eDP
TRUE
AND
EQ
anzahl_fenster_gekippt
0
EQ
anzahl_fenster_offen
0
TEXT
1
liste_fenster_geschlossen
,
EQ
anzahl_fenster_gesamt
anzahl_fenster_offen
TEXT
1
liste_fenster_offen
,
EQ
anzahl_fenster_gesamt
anzahl_fenster_gekippt
TEXT
1
liste_fenster_gekippt
,
AND
GT
anzahl_fenster_offen
0
AND
LT
anzahl_fenster_offen
anzahl_fenster_gesamt
EQ
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_offen
,
,
TEXT
1
liste_fenster_geschlossen
,
AND
GT
anzahl_fenster_gekippt
0
AND
LT
anzahl_fenster_gekippt
anzahl_fenster_gesamt
EQ
anzahl_fenster_offen
0
TEXT
1
liste_fenster_gekippt
,
,
TEXT
1
liste_fenster_geschlossen
,
AND
LT
ADD
1
anzahl_fenster_gekippt
1
anzahl_fenster_offen
anzahl_fenster_gesamt
AND
GT
anzahl_fenster_gekippt
0
GT
anzahl_fenster_gekippt
0
TEXT
1
liste_fenster_offen
,
,
TEXT
1
liste_fenster_gekippt
,
,
TEXT
1
liste_fenster_geschlossen
,
AND
LT
anzahl_fenster_gekippt
anzahl_fenster_gesamt
AND
LT
anzahl_fenster_offen
anzahl_fenster_gesamt
AND
AND
GT
anzahl_fenster_gekippt
0
GT
anzahl_fenster_offen
0
EQ
ADD
1
anzahl_fenster_gekippt
1
anzahl_fenster_offen
anzahl_fenster_gesamt
TEXT
1
liste_fenster_offen
,
,
TEXT
1
liste_fenster_gekippt
,
0
true
FALSE
Object ID
Liste_Fenster_html_eDP
TRUE
AND
EQ
anzahl_fenster_gekippt
0
EQ
anzahl_fenster_offen
0
htmlText
TEXT
1
liste_fenster_geschlossen_html
<tr><td>
</table></body>
EQ
anzahl_fenster_gesamt
anzahl_fenster_offen
htmlText
TEXT
1
liste_fenster_offen_html
<tr><td>
</table></body>
EQ
anzahl_fenster_gesamt
anzahl_fenster_gekippt
htmlText
TEXT
1
liste_fenster_gekippt_html
<tr><td>
</table></body>
AND
GT
anzahl_fenster_offen
0
AND
LT
anzahl_fenster_offen
anzahl_fenster_gesamt
EQ
anzahl_fenster_gekippt
0
htmlText
TEXT
1
liste_fenster_offen_html
<tr><td>
<tr><td>
TEXT
1
liste_fenster_geschlossen_html
<tr><td>
</table></body>
AND
GT
anzahl_fenster_gekippt
0
AND
LT
anzahl_fenster_gekippt
anzahl_fenster_gesamt
EQ
anzahl_fenster_offen
0
htmlText
TEXT
1
liste_fenster_gekippt_html
<tr><td>
<tr><td>
TEXT
1
liste_fenster_geschlossen_html
<tr><td>
</table></body>
AND
LT
ADD
1
anzahl_fenster_gekippt
1
anzahl_fenster_offen
anzahl_fenster_gesamt
AND
GT
anzahl_fenster_gekippt
0
GT
anzahl_fenster_offen
0
htmlText
TEXT
1
liste_fenster_offen_html
<tr><td>
<tr><td>
TEXT
1
liste_fenster_gekippt_html
<tr><td>
<tr><td>
TEXT
1
liste_fenster_geschlossen_html
<tr><td>
</table></body>
AND
LT
anzahl_fenster_gekippt
anzahl_fenster_gesamt
AND
LT
anzahl_fenster_offen
anzahl_fenster_gesamt
AND
AND
GT
anzahl_fenster_gekippt
0
GT
anzahl_fenster_offen
0
EQ
ADD
1
anzahl_fenster_gekippt
1
anzahl_fenster_offen
anzahl_fenster_gesamt
htmlText
TEXT
1
liste_fenster_offen_html
<tr><td>
<tr><td>
TEXT
1
liste_fenster_gekippt_html
<tr><td>
</table></body>
0
Temperaturen_alexa2_adapter_instanz_1
Beschreibe diese Funktion β¦
alexa_instanz_1
alexa2.1.History.serialNumber
any
default
alexa_instanz_1
angesprochener_echo_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1
AND
EQ
FIRST
FROM_START
alexa_instanz_1
8
alexa2.1
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
angesprochener_echo_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak
speak_volume_instanz_1_neu
FIRST
FROM_START
alexa_instanz_1
8
.Echo-Devices.
val
alexa_instanz_1
.Commands.speak-volume
any
default
Ansage_Button_Temperaturen_eDP
AND
EQ
angesprochener_echo_instanz_1
TRUE
EQ
state.from
system.adapter.iot.0
false
FALSE
Object ID
speak_volume_instanz_1_neu
TRUE
Ansagelautstaerke
0
false
FALSE
Object ID
angesprochener_echo_instanz_1_neu
TRUE
Ansage_Einleitungssatz_Temperaturen
val
gesamte_Temperaturen_Liste_eDP
, das wΓ€re dann alles.
0
log
Logmeldung_Temperaturen_Ansage
FIRST
FROM_END
angesprochener_echo_instanz_1_neu
15
ausgefΓΌhrt β
Tueren_vor_versand_pruefen
Beschreibe diese Funktion β¦
gekippt
gekippt
emoji_π
geoffnet
geΓΆffnet
emoji_βοΈ
uebnerschrift_nachrichten_Tueren
emoji_πͺ
*
etage
Tueren
status
*
\n
timeout7
timeout7
1000
ms
AND
EQ
val
Anzahl_Tueren_offen_eDP
1
EQ
val
Anzahl_Tueren_gekippt_eDP
0
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es ist
eine
einzahl_Tuer
geoffnet
\n
\n
TEXT
1
liste_tueren_offen
\n
AND
EQ
val
Anzahl_Tueren_offen_eDP
0
EQ
val
Anzahl_Tueren_gekippt_eDP
1
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es ist
eine
einzahl_Tuer
gekippt
\n
\n
TEXT
1
liste_tueren_gekippt
\n
AND
EQ
val
Anzahl_Tueren_offen_eDP
1
EQ
val
Anzahl_Tueren_gekippt_eDP
1
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es ist
eine
einzahl_Tuer
geoffnet
\n
Es ist
eine
einzahl_Tuer
gekippt
\n
\n
TEXT
1
liste_tueren_offen
\n
\n
TEXT
1
liste_tueren_gekippt
\n
AND
EQ
val
Anzahl_Tueren_offen_eDP
0
GT
val
Anzahl_Tueren_gekippt_eDP
1
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es sind
val
Anzahl_Tueren_gekippt_eDP
Tueren
gekippt
\n
\n
TEXT
1
liste_tueren_gekippt
\n
AND
GT
val
Anzahl_Tueren_offen_eDP
1
EQ
val
Anzahl_Tueren_gekippt_eDP
0
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es sind
val
Anzahl_Tueren_offen_eDP
Tueren
geoffnet
\n
\n
TEXT
1
liste_tueren_offen
\n
AND
GT
val
Anzahl_Tueren_offen_eDP
1
EQ
val
Anzahl_Tueren_gekippt_eDP
1
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es sind
val
Anzahl_Tueren_offen_eDP
Tueren
geoffnet
\n
Es ist
eine
einzahl_Tuer
gekippt
\n
\n
TEXT
1
liste_tueren_offen
\n
\n
TEXT
1
liste_tueren_gekippt
\n
AND
EQ
val
Anzahl_Tueren_offen_eDP
1
GT
val
Anzahl_Tueren_gekippt_eDP
1
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es ist
eine
einzahl_Tuer
geoffnet
\n
Es sind
val
Anzahl_Tueren_gekippt_eDP
Tueren
gekippt
\n
\n
TEXT
1
liste_tueren_offen
\n
\n
TEXT
1
liste_tueren_gekippt
\n
AND
GT
val
Anzahl_Tueren_offen_eDP
1
GT
val
Anzahl_Tueren_gekippt_eDP
1
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Es sind
val
Anzahl_Tueren_offen_eDP
Tueren
geoffnet
\n
Es sind
val
Anzahl_Tueren_gekippt_eDP
Tueren
gekippt
\n
\n
TEXT
1
liste_tueren_offen
\n
\n
TEXT
1
liste_tueren_gekippt
\n
AND
EQ
val
Anzahl_Tueren_offen_eDP
0
EQ
val
Anzahl_Tueren_gekippt_eDP
0
nachrichten_ausgabe_Tueren
uebnerschrift_nachrichten_Tueren
Alle
Tueren
sind geschlossen
emoji_β
true
FALSE
Object ID
offene_gekippte_Tueren_Liste_emojis_eDP
TRUE
nachrichten_ausgabe_Tueren
0
Version speak-alias 0.6
erstellt von @dslraser im Juni 2020
Forum Link:
https://forum.iobroker.net/post/273896
Fenster
Fenster
Tueren
TΓΌren
Steckdosen
Steckdosen
Licht
Lichter
Bewegungsmelder
Bewegungsmelder
Batterien
Batterien
Temperaturen
Temperaturen
pfad_geraete_zaehlen
.Eigene_Datenpunkte.Geraete.
pfad_geraete_ansagen
.Eigene_Datenpunkte.Alexa_Ansagen.
pfad_geraete_benachrichtigungen
.Eigene_Datenpunkte.Benachrichtigungen.
Bei Nutzung der Instanzen javascript.x
muss das Blockly in der gleichen Instanz laufen
wo die Datenpunkte angelegt werden
anlegen_in
0_userdata.0
etage
Haus
auf wahr stellen was benutzt werden soll
und auch vorhanden ist.
Alexa_Ansage_verwenden
TRUE
Telegram_verwenden
TRUE
Email_verwenden
TRUE
Batterien_Status_verwenden
TRUE
Batterien_volt_verwenden
TRUE
Steckdosen_verwenden
TRUE
Lichter_verwenden
TRUE
Bewegungsmelder_verwenden
TRUE
Fenster_verwenden
TRUE
Tueren_verwenden
TRUE
Temperaturen_verwenden
TRUE
Ansagelautstaerke Alexa bis 100 auswaehlen
Ansagelautstaerke
35
Telegram Empfaenger eintragen
Telegram_Empfaenger
Ralf
E-Mail Empfaenger eintragen
leere Felder fΓΌr weitere Benutzer mit Semikolon trennen
EMail_Empfaenger
service@marxen.com.de
Selektoren an die eigene Aufzaehlung anpassen
selektor_Batterien_Status
(functions='batterien_status_alias')
selektor_Batterien_Volt
(functions='batterien_volt_alias')
selektor_Steckdosen
(functions='steckdosen_alias')
selektor_Lichter
(functions='licht_alias')
selektor_Bewegungsmelder
(functions='bewegungsmelder_alias')
selektor_Fenster
(functions='fenster_alias')
selektor_Tueren
(functions='tueren_alias')
selektor_Temperaturen
(functions='temperaturen_alias')
emoji_β
β
emoji_β
β
emoji_βοΈ
βοΈ
emoji_π
π
emoji_βοΈ
βοΈ
emoji_π
π
emoji_π‘
π‘
emoji_β‘οΈ
β‘οΈ
emoji_π
π
emoji_π
π
emoji_π
π
emoji_π§―
π§―
emoji_π
π
emoji_πͺ
πͺ
emoji_π
π
emoji_π‘οΈ
π‘οΈ
emoji_π₯
π₯
ein
ein
eine
eine
einzahl_Fenster
Fenster
mehrzahl_Fenster
Fenster
einzahl_Tuer
TΓΌr
mehrzahl_Tueren
TΓΌren
einzahl_Steckdose
Steckdose
mehrzahl_Steckdosen
Steckdosen
einzahl_Licht
Licht
mehrzahl_Licht
Lichter
einzahl_Bewegungsmelder
Bewegungsmelder
mehrzahl_Bewegungsmelder
Bewegungsmelder
einzahl_Batterie
Batterie
mehrzahl_Batterien
Batterien
Tueren_zaehlen
Beschreibe diese Funktion β¦
anzahl_tueren_gekippt
0
anzahl_tueren_offen
0
anzahl_tueren_geschlossen
0
anzahl_tueren_gesamt
0
liste_tueren_offen
liste_tueren_gekippt
liste_tueren_geschlossen
liste_tueren_offen_gesamt
liste_tueren_offen_html
liste_tueren_gekippt_html
liste_tueren_geschlossen_html
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Tueren
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Tueren
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Tueren
etage
   </td><td>Status</td></tr>
<tr><td>
tueren_offen
selektor_Tueren
anzahl_tueren_gesamt
1
wert
val
tueren_offen
OR
EQ
tueren_offen
wert
geΓΆffnet
EQ
tueren_offen
wert
TRUE
anzahl_tueren_offen
1
INSERT
LAST
liste_tueren_offen
tueren_offen
geΓΆffnet
INSERT
LAST
liste_tueren_offen_html
tueren_offen
<td><span style="color:#FF0000"> geΓΆffnet </span>
tueren_gekippt
selektor_Tueren
wert
val
tueren_gekippt
EQ
tueren_gekippt
wert
gekippt
anzahl_tueren_gekippt
1
INSERT
LAST
liste_tueren_gekippt
tueren_gekippt
gekippt
INSERT
LAST
liste_tueren_gekippt_html
tueren_gekippt
<td><span style="color:#0000FF"> gekippt </span>
tueren_geschlossen
selektor_Tueren
wert
val
tueren_geschlossen
OR
EQ
tueren_geschlossen
wert
geschlossen
EQ
tueren_geschlossen
wert
FALSE
anzahl_tueren_geschlossen
1
INSERT
LAST
liste_tueren_geschlossen
tueren_geschlossen
geschlossen
INSERT
LAST
liste_tueren_geschlossen_html
tueren_geschlossen
<td>geschlossen
true
FALSE
Object ID
Anzahl_Tueren_gekippt_eDP
TRUE
anzahl_tueren_gekippt
0
true
FALSE
Object ID
Anzahl_Tueren_offen_eDP
TRUE
anzahl_tueren_offen
0
true
FALSE
Object ID
Anzahl_Tueren_geschlossen_eDP
TRUE
anzahl_tueren_geschlossen
0
true
FALSE
Object ID
Anzahl_Tueren_gesamt_eDP
TRUE
anzahl_tueren_gesamt
0
true
FALSE
Object ID
Anzahl_Tueren_geoeffnet_und_gekippt_gesamt_eDP
TRUE
ADD
1
anzahl_tueren_gekippt
1
anzahl_tueren_offen
0
AND
EQ
anzahl_tueren_offen
0
EQ
anzahl_tueren_gekippt
0
true
FALSE
Object ID
offene_gekippte_Tueren_Liste_eDP
TRUE
Alle
Tueren
sind geschlossen.
0
true
FALSE
Object ID
offene_gekippte_Tueren_Liste_eDP
TRUE
GT
ADD
1
abc
TEXT
1
liste_tueren_offen
;
;
TEXT
1
liste_tueren_gekippt
;
1
abc
Ansage_Einleitungssatz_Tueren
, alle anderen
Tueren
sind geschlossen.
250
AND
NEQ
anzahl_tueren_offen
0
NEQ
anzahl_tueren_gekippt
0
TEXT
1
liste_tueren_offen
;
;
TEXT
1
liste_tueren_gekippt
;
AND
EQ
anzahl_tueren_offen
0
NEQ
anzahl_tueren_gekippt
0
TEXT
1
liste_tueren_gekippt
;
AND
NEQ
anzahl_tueren_offen
0
EQ
anzahl_tueren_gekippt
0
TEXT
1
liste_tueren_offen
;
AND
NEQ
anzahl_tueren_offen
0
NEQ
anzahl_tueren_gekippt
0
TEXT
1
liste_tueren_offen
,
,
TEXT
1
liste_tueren_gekippt
,
AND
EQ
anzahl_tueren_offen
0
NEQ
anzahl_tueren_gekippt
0
TEXT
1
liste_tueren_gekippt
,
AND
NEQ
anzahl_tueren_offen
0
EQ
anzahl_tueren_gekippt
0
TEXT
1
liste_tueren_offen
,
0
true
FALSE
Object ID
gesamte_Tueren_Liste_eDP
TRUE
AND
EQ
anzahl_tueren_gekippt
0
EQ
anzahl_tueren_offen
0
TEXT
1
liste_tueren_geschlossen
,
EQ
anzahl_tueren_gesamt
anzahl_tueren_offen
TEXT
1
liste_tueren_offen
,
EQ
anzahl_tueren_gesamt
anzahl_tueren_gekippt
TEXT
1
liste_tueren_gekippt
,
AND
GT
anzahl_tueren_offen
0
AND
LT
anzahl_tueren_offen
anzahl_tueren_gesamt
EQ
anzahl_tueren_gekippt
0
TEXT
1
liste_tueren_offen
,
,
TEXT
1
liste_tueren_geschlossen
,
AND
GT
anzahl_tueren_gekippt
0
AND
LT
anzahl_tueren_gekippt
anzahl_tueren_gesamt
EQ
anzahl_tueren_offen
0
TEXT
1
liste_tueren_gekippt
,
,
TEXT
1
liste_tueren_geschlossen
,
AND
LT
ADD
1
anzahl_tueren_gekippt
1
anzahl_tueren_offen
anzahl_tueren_gesamt
AND
GT
anzahl_tueren_gekippt
0
GT
anzahl_tueren_offen
0
TEXT
1
liste_tueren_offen
,
,
TEXT
1
liste_tueren_gekippt
,
,
TEXT
1
liste_tueren_geschlossen
,
AND
LT
anzahl_tueren_gekippt
anzahl_tueren_gesamt
AND
LT
anzahl_tueren_offen
anzahl_tueren_gesamt
AND
AND
GT
anzahl_tueren_gekippt
0
GT
anzahl_tueren_offen
0
EQ
ADD
1
anzahl_tueren_gekippt
1
anzahl_tueren_offen
anzahl_tueren_gesamt
TEXT
1
liste_tueren_offen
,
,
TEXT
1
liste_tueren_gekippt
,
0
true
FALSE
Object ID
Liste_Tueren_html_eDP
TRUE
AND
EQ
anzahl_tueren_gekippt
0
EQ
anzahl_tueren_offen
0
htmlText
TEXT
1
liste_tueren_geschlossen_html
<tr><td>
</table></body>
EQ
anzahl_tueren_gesamt
anzahl_tueren_offen
htmlText
TEXT
1
liste_tueren_offen_html
<tr><td>
</table></body>
EQ
anzahl_tueren_gesamt
anzahl_tueren_gekippt
htmlText
TEXT
1
liste_tueren_gekippt_html
<tr><td>
</table></body>
AND
GT
anzahl_tueren_offen
0
AND
LT
anzahl_tueren_offen
anzahl_tueren_gesamt
EQ
anzahl_tueren_gekippt
0
htmlText
TEXT
1
liste_tueren_offen_html
<tr><td>
<tr><td>
TEXT
1
liste_tueren_geschlossen_html
<tr><td>
</table></body>
AND
GT
anzahl_tueren_gekippt
0
AND
LT
anzahl_tueren_gekippt
anzahl_tueren_gesamt
EQ
anzahl_tueren_offen
0
htmlText
TEXT
1
liste_tueren_gekippt_html
<tr><td>
<tr><td>
TEXT
1
liste_tueren_geschlossen_html
<tr><td>
</table></body>
AND
LT
ADD
1
anzahl_tueren_gekippt
1
anzahl_tueren_offen
anzahl_tueren_gesamt
AND
GT
anzahl_tueren_gekippt
0
GT
anzahl_tueren_offen
0
htmlText
TEXT
1
liste_tueren_offen_html
<tr><td>
<tr><td>
TEXT
1
liste_tueren_gekippt_html
<tr><td>
<tr><td>
TEXT
1
liste_tueren_geschlossen_html
<tr><td>
</table></body>
AND
LT
anzahl_tueren_gekippt
anzahl_tueren_gesamt
AND
LT
anzahl_tueren_offen
anzahl_tueren_gesamt
AND
AND
GT
anzahl_tueren_gekippt
0
GT
anzahl_tueren_offen
0
EQ
ADD
1
anzahl_tueren_gekippt
1
anzahl_tueren_offen
anzahl_tueren_gesamt
htmlText
TEXT
1
liste_tueren_offen_html
<tr><td>
<tr><td>
TEXT
1
liste_tueren_gekippt_html
<tr><td>
</table></body>
0
Temperaturen_vor_versand_pruefen
Beschreibe diese Funktion β¦
uebnerschrift_nachrichten_Temperaturen
emoji_π‘οΈ
*
etage
Temperaturen
status
*
\n
timeout8
timeout8
1000
ms
nachrichten_ausgabe_Temperaturen
uebnerschrift_nachrichten_Temperaturen
\n
TEXT
1
liste_temperaturen_emojis
\n
true
FALSE
Object ID
Liste_Temperaturen_emojis_eDP
TRUE
nachrichten_ausgabe_Temperaturen
0
Temperaturen_zaehlen
Beschreibe diese Funktion β¦
liste_temperaturen_gesamt
liste_temperaturen_html
liste_temperaturen_emojis
htmlText
<!DOCTYPE html><html lang="de"><head><title>
Temperaturen
</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
<p style="color:#0000FF; font-family:Helvetica; font-weight: bold">
Temperaturen
status
etage
</p>
<p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Γnderung:
custom
TT.MM.JJJJ SS:mm:ss
</p>
<table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);">
<tr style="color:#0000FF"; font-weight: bold"><td>
Temperaturen
etage
   </td><td>Status</td></tr>
<tr><td>
temperaturen_suchen
selektor_Temperaturen
INSERT
LAST
liste_temperaturen_gesamt
temperaturen_suchen
val
temperaturen_suchen
Grad
INSERT
LAST
liste_temperaturen_html
temperaturen_suchen
<td><span style="color:#0000FF">
val
temperaturen_suchen
Β°C
</span>
INSERT
LAST
liste_temperaturen_emojis
temperaturen_suchen
val
Β°C
true
FALSE
Object ID
gesamte_Temperaturen_Liste_eDP
TRUE
GT
abc
Ansage_Einleitungssatz_Temperaturen
val
gesamte_Temperaturen_Liste_eDP
;das wΓ€re dann alles.
250
TEXT
1
liste_temperaturen_gesamt
;
TEXT
1
liste_temperaturen_gesamt
,
0
true
FALSE
Object ID
Liste_Temperaturen_html_eDP
TRUE
htmlText
TEXT
1
liste_temperaturen_html
<tr><td>
</table></body>
0