Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Alias auf Shelly - unerwartete Änderung des Aliastyps

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Alias auf Shelly - unerwartete Änderung des Aliastyps

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @ioMas last edited by paul53

      @iomas sagte: hat leider nichts gebracht

      Noch ein Versuch: Ändere die Rolle des Alias in "switch".

      I 1 Reply Last reply Reply Quote 0
      • I
        ioMas @paul53 last edited by

        @paul53
        habe die Rolle in switch geändert leider bleibt es dabei, es wird ein string draus.

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @ioMas last edited by

          @iomas sagte: bleibt es dabei, es wird ein string draus.

          Mal InfluxDB auf dem Alias deaktiviert?

          I 1 Reply Last reply Reply Quote 0
          • I
            ioMas @paul53 last edited by

            @paul53
            InfluxDB abschalten hat leider keinen Einfluß auf das beschriebene Verhalten.

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @ioMas last edited by paul53

              @iomas
              Ich habe den Javascript-Code mal zum Testen übernommen, zwei Aliase und zwei MQTT-Datenpunkte erstellt und getestet: Ich erhalte immer nur:

              0.1: Hinweise: Typ:boolean Wert ist: false
              

              oder true. Mit welchem Ablauf erscheint?

              0.1: Hinweise: Typ:string Wert ist: off
              
              1 Reply Last reply Reply Quote 1
              • I
                ioMas last edited by ioMas

                @paul53
                Dieser erscheint wenn ich den shelly über die app frühzeitig ausschalte, also Licht geht an, ich schalte per App oder phsyikalisch den Schalter aus. Wenn danach erneut der Bewegungsmelder aktiviert wird, dann kommt es zu besagtem Wechsel des Typs.

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @ioMas last edited by paul53

                  @iomas sagte in Alias auf Shelly - unerwartete Änderung des Aliastyps:

                  Licht geht an, ich schalte per App oder phsyikalisch den Schalter aus. Wenn danach erneut der Bewegungsmelder aktiviert wird

                  Habe ich mal nachgestellt:

                  16:49:48.115	info	javascript.1 (2077) script.js.common.Neuer_Test: 0: Bewegung
                  16:49:48.116	info	javascript.1 (2077) script.js.common.Neuer_Test: 0.1: Hinweise: Typ:boolean Wert ist: false
                  16:49:48.116	info	javascript.1 (2077) script.js.common.Neuer_Test: 1: erkanntfalse
                  16:49:48.117	info	javascript.1 (2077) script.js.common.Neuer_Test: 2: Licht ist aus
                  16:49:48.117	info	javascript.1 (2077) script.js.common.Neuer_Test: 3: kleiner Schwellwert->Licht anschalten
                  16:49:48.248	info	javascript.1 (2077) script.js.common.Neuer_Test: Alias: true, Ack: true, Skript: script.js.common.Shelly1
                  16:50:00.164	info	javascript.1 (2077) script.js.common.Neuer_Test: Alias: false, Ack: true, Skript: script.js.common.Shelly1
                  16:50:48.117	info	javascript.1 (2077) script.js.common.Neuer_Test: X: Licht ausschalten
                  16:50:48.176	info	javascript.1 (2077) script.js.common.Neuer_Test: Alias: false, Ack: true, Skript: script.js.common.Shelly1
                  16:51:02.813	info	javascript.1 (2077) script.js.common.Neuer_Test: 0: Bewegung
                  16:51:02.813	info	javascript.1 (2077) script.js.common.Neuer_Test: 0.1: Hinweise: Typ:boolean Wert ist: false
                  16:51:02.813	info	javascript.1 (2077) script.js.common.Neuer_Test: 1: erkanntfalse
                  16:51:02.813	info	javascript.1 (2077) script.js.common.Neuer_Test: 2: Licht ist aus
                  16:51:02.813	info	javascript.1 (2077) script.js.common.Neuer_Test: 3: kleiner Schwellwert->Licht anschalten
                  16:51:02.886	info	javascript.1 (2077) script.js.common.Neuer_Test: Alias: true, Ack: true, Skript: script.js.common.Shelly1
                  16:52:02.817	info	javascript.1 (2077) script.js.common.Neuer_Test: X: Licht ausschalten
                  16:52:02.916	info	javascript.1 (2077) script.js.common.Neuer_Test: Alias: false, Ack: true, Skript: script.js.common.Shelly1
                  

                  Der zusätzliche Log-Eintrag kommt aus dem Debug-Log auf dem Alias:

                  on({id: idLichtSchalter}, function(dp) {
                      log('Alias: ' + dp.state.val + ', Ack: ' + dp.state.ack + ', Skript: ' + dp.state.c);
                  });
                  

                  Was mir auffällt: Der Debug-Trigger liefert stets "Ack: true", d.h. auf das ursprüngliche Setzen mit ack = false reagiert der Trigger nicht. Allerdings reagiert das MQTT-Kommando:

                  17:25:49.123	info	javascript.1 (2077) script.js.common.Neuer_Test: X: Licht ausschalten
                  17:25:49.127	info	javascript.1 (2077) script.js.common.Neuer_Test: MQTT Command: off, Ack: false
                  17:25:49.180	info	javascript.1 (2077) script.js.common.Neuer_Test: Alias: false, Ack: true, Skript: script.js.common.Shelly1
                  
                  I 2 Replies Last reply Reply Quote 0
                  • I
                    ioMas @paul53 last edited by

                    @paul53 said in Alias auf Shelly - unerwartete Änderung des Aliastyps:

                    on({id: idLichtSchalter}, function(dp) {

                    Ich habe mein Script mal um folgendes erweitert, analog zu deinem JS, hoffe ich...
                    5440c641-5f17-4b15-8f4c-984ede15e422-grafik.png

                    on({id: [].concat(idLichtSchalter), change: "ne"}, async function (obj) {
                      var value = obj.state.val;
                      var oldValue = obj.oldState.val;
                      console.debug((['Alias: ',(obj.state ? obj.state.val : ""),', Ack: ',(obj.state ? obj.state.ack : ""),', Skript: ',(obj.state ? obj.state.from : "")].join('')));
                    });
                    

                    ist was im blockly unter JS dazukam.
                    Die Ausgabe sieht bei mir danach wie folgt aus:

                    17:21:44.814	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                    17:21:44.815	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.1: Hinweise: Typ:boolean Wert ist: false
                    17:21:44.815	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: erkanntfalse
                    17:21:44.817	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 2: Licht ist aus
                    17:21:44.821	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 3: kleiner Schwellwert->Licht anschalten
                    17:21:44.913	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: true, Ack: true, Skript: system.adapter.mqtt.0
                    17:22:03.022	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: false, Ack: true, Skript: system.adapter.mqtt.0
                    17:22:16.783	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                    17:22:16.784	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: nicht erkannt
                    17:22:44.823	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: X: Licht ausschalten
                    17:22:54.973	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                    17:22:54.974	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.1: Hinweise: Typ:string Wert ist: off
                    17:22:54.974	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.5: Bugfix wrong typestring Wert ist: off
                    17:22:54.974	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.5b: aus
                    17:22:54.975	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: erkanntfalse
                    17:22:54.976	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 2: Licht ist aus
                    17:22:54.977	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 3: kleiner Schwellwert->Licht anschalten
                    17:22:55.046	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: true, Ack: true, Skript: system.adapter.mqtt.0
                    17:23:26.961	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                    17:23:26.962	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: nicht erkannt
                    17:23:54.979	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: X: Licht ausschalten
                    17:23:55.052	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: false, Ack: true, Skript: system.adapter.mqtt.0
                    

                    hilft das weiter?

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @ioMas last edited by paul53

                      @iomas sagte: hilft das weiter?

                      Nicht wirklich. Ich kann das Verhalten mit "Wert ist: off" bei mir nicht nachstellen - bei gleichem Ablauf. Version des Hosts (js-controller)?
                      Außerdem triggert mein Debug-Trigger auf "wurde aktualisiert".

                      I 1 Reply Last reply Reply Quote 0
                      • I
                        ioMas @paul53 last edited by

                        @paul53
                        habe es auf aktualisiert geändert:
                        f1d217cb-bd75-4c31-a783-205b3f147578-grafik.png

                        on({id: [].concat(idLichtSchalter), change: "any"}, async function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          console.debug((['Alias: ',(obj.state ? obj.state.val : ""),', Ack: ',(obj.state ? obj.state.ack : ""),', Skript: ',(obj.state ? obj.state.from : "")].join('')));
                        });
                        

                        Debugausgabe:

                        17:36:35.502	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                        17:36:35.502	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.1: Hinweise: Typ:boolean Wert ist: false
                        17:36:35.503	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: erkanntfalse
                        17:36:35.503	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 2: Licht ist aus
                        17:36:35.504	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 3: kleiner Schwellwert->Licht anschalten
                        17:36:35.588	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: true, Ack: true, Skript: system.adapter.mqtt.0
                        17:36:45.637	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: false, Ack: true, Skript: system.adapter.mqtt.0
                        17:37:07.496	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                        17:37:07.498	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: nicht erkannt
                        17:37:35.507	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: X: Licht ausschalten
                        17:37:49.309	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                        17:37:49.310	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.1: Hinweise: Typ:string Wert ist: off
                        17:37:49.310	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.5: Bugfix wrong typestring Wert ist: off
                        17:37:49.310	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0.5b: aus
                        17:37:49.310	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: erkanntfalse
                        17:37:49.310	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 2: Licht ist aus
                        17:37:49.311	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 3: kleiner Schwellwert->Licht anschalten
                        17:37:49.417	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: true, Ack: true, Skript: system.adapter.mqtt.0
                        17:38:21.305	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 0: Bewegung
                        17:38:21.306	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: 1: nicht erkannt
                        17:38:49.312	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: X: Licht ausschalten
                        17:38:49.425	debug	javascript.0 (291426) script.js.EG.kueche.beweg2: Alias: false, Ack: true, Skript: system.adapter.mqtt.0
                        
                        

                        e30f3e69-2935-4d43-a5d8-122d7e17ab72-grafik.png

                        Host js sollt 4.0.24 sein.

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @ioMas last edited by

                          @iomas sagte: Debugausgabe:

                          Wie bei mir - außer der Typänderung in String mit "off".

                          @iomas sagte in Alias auf Shelly - unerwartete Änderung des Aliastyps:

                          Host js sollt 4.0.24 sein.

                          Bei mir auch. An der Version kann es nicht liegen. Ich nutze allerdings noch Node.js 16.

                          1 Reply Last reply Reply Quote 0
                          • I
                            ioMas @paul53 last edited by

                            @paul53 said in Alias auf Shelly - unerwartete Änderung des Aliastyps:

                            Was mir auffällt: Der Debug-Trigger liefert stets "Ack: true", d.h. auf das ursprüngliche Setzen mit ack = false reagiert der Trigger nicht. Allerdings reagiert das MQTT-Kommando:

                            Da bin ich tatsächlich noch am schwimmen, bin erst seit Anfang des Monats dabei und habe diese Woche noch dazu ein Video angeschaut...

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @ioMas last edited by

                              @iomas sagte: Da bin ich tatsächlich noch am schwimmen

                              Dieses Verhalten ist offenbar nur bei Alias-DP mit getrennten IDs für Status und Kommando so: Es wird nur auf den Status getriggert.

                              I 2 Replies Last reply Reply Quote 1
                              • I
                                ioMas @paul53 last edited by ioMas

                                @paul53
                                Ich habe jetzt mal umgestellt auf 2 Aliase, einen auf lesen (EGKuecheFensterLichtRead) einen auf schreiben(EGKuecheFensterLichtWrite). Das JS von Blockly sieht nun so aus:

                                var LichtNachdetektionAnbleiben, schwellWertLicht, idLichtSchalterWrite, LichtDurchBewegAn, idLichtSchalterRead, lichtIstAn, verl_C3_A4ngerungLicht, initLichtAus;
                                
                                // Beschreibe diese Funktion …
                                async function Licht_ausschalten() {
                                  console.debug('X: Licht ausschalten');
                                  LichtDurchBewegAn = false;
                                  setStateDelayed(idLichtSchalterWrite, false, false, parseInt(((0) || "").toString(), 10), false);
                                }
                                
                                
                                LichtNachdetektionAnbleiben = 60000;
                                schwellWertLicht = getState("0_userdata.0.Technik.EG.Kueche.EGKuecheFensterBeweg.BrigthnessSchwellwert").val;
                                idLichtSchalterWrite = 'alias.0.eg.Kueche.EGKuecheFensterLichtWrite';
                                idLichtSchalterRead = 'alias.0.eg.Kueche.EGKuecheFensterLichtRead';
                                LichtDurchBewegAn = false;
                                on({id: "alias.0.eg.Kueche.EGKuecheFensterBeweg"/*EGKuecheFensterBeweg*/, change: "any", ack: true}, async function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  console.debug('0: Bewegung ');
                                  if ((obj.state ? obj.state.val : "")) {
                                    lichtIstAn = getState(idLichtSchalterRead).val;
                                    console.debug((['0.1: Hinweise: Typ:',typeof lichtIstAn,' Wert ist: ',lichtIstAn].join('')));
                                    if (true && typeof lichtIstAn != 'boolean') {
                                      console.debug((['0.5: Bugfix wrong type',typeof lichtIstAn,' Wert ist: ',lichtIstAn].join('')));
                                      if (lichtIstAn == 'on') {
                                        lichtIstAn = true;
                                        console.debug('0.5a: an');
                                      } else {
                                        lichtIstAn = false;
                                        console.debug('0.5b: aus');
                                      }
                                    }
                                    console.debug(('1: erkannt' + String(lichtIstAn)));
                                    if (lichtIstAn) {
                                      console.debug('2: Licht ist bereits an');
                                      if (LichtDurchBewegAn) {
                                        console.debug('3: verlängere Lichtdauer');
                                        (function () {if (initLichtAus) {clearTimeout(initLichtAus); initLichtAus = null;}})();
                                        (function () {if (verl_C3_A4ngerungLicht) {clearTimeout(verl_C3_A4ngerungLicht); verl_C3_A4ngerungLicht = null;}})();
                                        verl_C3_A4ngerungLicht = setTimeout(async function () {
                                          await Licht_ausschalten();
                                        }, parseInt(LichtNachdetektionAnbleiben));
                                      } else {
                                        console.debug('3:nothing2do Licht nicht durch Algo gesetzt');
                                      }
                                    } else {
                                      console.debug('2: Licht ist aus');
                                      if (getState("alias.0.eg.Kueche.EGKuecheFensterBewegLux").val < schwellWertLicht) {
                                        console.debug('3: kleiner Schwellwert->Licht anschalten');
                                        LichtDurchBewegAn = true;
                                        setStateDelayed(idLichtSchalterWrite, true, false, parseInt(((0) || "").toString(), 10), false);
                                        initLichtAus = setTimeout(async function () {
                                          await Licht_ausschalten();
                                        }, parseInt(LichtNachdetektionAnbleiben));
                                      } else {
                                        console.debug('3: größer Schwellwert');
                                      }
                                    }
                                  } else {
                                    console.debug('1: nicht erkannt');
                                  }
                                });
                                on({id: [].concat(idLichtSchalterRead), change: "any"}, async function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  console.debug((['AliasRead: ',(obj.state ? obj.state.val : ""),', Ack: ',(obj.state ? obj.state.ack : ""),', Skript: ',(obj.state ? obj.state.from : "")].join('')));
                                });
                                on({id: [].concat(idLichtSchalterWrite), change: "any"}, async function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  console.debug((['AliasWrite: ',(obj.state ? obj.state.val : ""),', Ack: ',(obj.state ? obj.state.ack : ""),', Skript: ',(obj.state ? obj.state.from : "")].join('')));
                                });
                                
                                //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0N2YXJpYWJsZXMlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyJTNBTiU1QmNJJTNGJTdEMiU3Qjh3ZHZmJTNGOGM0VyolMjIlM0VMaWNodE5hY2hkZXRla3Rpb25BbmJsZWliZW4lM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwaWQlM0QlMjJofiU3RHQ5TUxMJTVEaXRfViU3Q1ZSWTNNJTI1JTIyJTNFc2Nod2VsbFdlcnRMaWNodCUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMjklMjRLaHElNjBaJTNGIUhMWSUzQTdFcmclM0R0bCUyMiUzRWlkTGljaHRTY2hhbHRlcldyaXRlJTNDJTJGdmFyaWFibGUlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyTiklMkIqMX4zWlNsbSpkeGZlaCU2MCU1QkUlMjIlM0VMaWNodER1cmNoQmV3ZWdBbiUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMi1uJTVCX1duJTdDOHElN0RMbGhYZmslNDBrKCU1QiUyMiUzRWlkTGljaHRTY2hhbHRlclJlYWQlM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwaWQlM0QlMjJyaCUyMyUyRk5iSCUzRlYuSk5xYyUyM1RyUCU3QyU1RCUyMiUzRWxpY2h0SXN0QW4lM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwdHlwZSUzRCUyMnRpbWVvdXQlMjIlMjBpZCUzRCUyMnZlcmwlQzMlQTRuZ2VydW5nTGljaHQlMjIlM0V2ZXJsJUMzJUE0bmdlcnVuZ0xpY2h0JTNDJTJGdmFyaWFibGUlM0UlM0N2YXJpYWJsZSUyMHR5cGUlM0QlMjJ0aW1lb3V0JTIyJTIwaWQlM0QlMjJpbml0TGljaHRBdXMlMjIlM0Vpbml0TGljaHRBdXMlM0MlMkZ2YXJpYWJsZSUzRSUzQyUyRnZhcmlhYmxlcyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMiotJTNGSCU2MFduNGdEJTdEMF8pKTdZb2REJTIyJTIweCUzRCUyMjE2MyUyMiUyMHklM0QlMjIxMyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyJTNBTiU1QmNJJTNGJTdEMiU3Qjh3ZHZmJTNGOGM0VyolMjIlM0VMaWNodE5hY2hkZXRla3Rpb25BbmJsZWliZW4lM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMnB1NlUuQyUyM1dSYlAlNURQOShNeCU0MC1LJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFNjAwMDAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyJTJDZzZhfjh1ciUyRk9tYSUzRGRWRjMlNUR4JTVCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJofiU3RHQ5TUxMJTVEaXRfViU3Q1ZSWTNNJTI1JTIyJTNFc2Nod2VsbFdlcnRMaWNodCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMnZoQ3dnLTlsM01vQ2lUVk0lN0JnNDglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0UwX3VzZXJkYXRhLjAuVGVjaG5pay5FRy5LdWVjaGUuRUdLdWVjaGVGZW5zdGVyQmV3ZWcuQnJpZ3RobmVzc1NjaHdlbGx3ZXJ0JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMjlGQiUyMyU3REV1JTVEbVBzNndDJTVEUSUzREopJTJCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjI5JTI0S2hxJTYwWiUzRiFITFklM0E3RXJnJTNEdGwlMjIlM0VpZExpY2h0U2NoYWx0ZXJXcml0ZSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMnNMJTIzKiolMjRFayUyNSU1RFhBaGVUTzcoNV8lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0VhbGlhcy4wLmVnLkt1ZWNoZS5FR0t1ZWNoZUZlbnN0ZXJMaWNodFdyaXRlJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMiUyNCU3Q21MdShnJTdDN0ghT3p6MERfZHFqJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjItbiU1Ql9XbiU3QzhxJTdETGxoWGZrJTQwayglNUIlMjIlM0VpZExpY2h0U2NoYWx0ZXJSZWFkJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmZpZWxkX29pZCUyMiUyMGlkJTNEJTIyaVZyJTNBMDIlM0J3JTdDNCUzRCUzQjE0NE5Yd1VZJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFYWxpYXMuMC5lZy5LdWVjaGUuRUdLdWVjaGVGZW5zdGVyTGljaHRSZWFkJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMiU1QnNNNUMhaHllJTdDNkV+SWxZajU5biUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyTiklMkIqMX4zWlNsbSpkeGZlaCU2MCU1QkUlMjIlM0VMaWNodER1cmNoQmV3ZWdBbiUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjJfcyUyQiU3QiU0MGElMkNkc2ZPJTVEJTVEKkl3TlkzJTVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uJTIyJTIwaWQlM0QlMjJ1MSpsOClHUkElM0ZQQmolNUJSQTBhJTI0UyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsaWFzLjAuZWcuS3VlY2hlLkVHS3VlY2hlRmVuc3RlckJld2VnJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT05ESVRJT04lMjIlM0VhbnklM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0V0cnVlJTNDJTJGZmllbGQlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGVidWclMjIlMjBpZCUzRCUyMllhUWElN0IlNURyVTlMeGh3WHJXJTI0RiUyNX4lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTZXZlcml0eSUyMiUzRWRlYnVnJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMnRFMClqc3MlMkZTTEhKeWQlM0YuTGkxRyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UwJTNBJTIwQmV3ZWd1bmclMjAlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjIxSW03JTNGS2J1VSUzQSUzQmMlN0MpYyUzQiUyNWRUJTJCJTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjIpJTI0LW4lNURZJTNCX0trWTMlMjVNKnFBOVRMJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnZhbCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjJmJTNEVWYlNUJ0WE54T2t5c3Z5JTVFa1g0dyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIycmglMjMlMkZOYkglM0ZWLkpOcWMlMjNUclAlN0MlNUQlMjIlM0VsaWNodElzdEFuJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZV92YXIlMjIlMjBpZCUzRCUyMiUzRDglNDBpeSU0MEg0bWMpSVUlNUVJdiU1RDZjYSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJXOS5HM3QlM0ZmOSUzRHJ2T0g2Y1FqRiglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJOTWl2JTNEJTIzJTJCKSU3QyUyNSU0MCUyQyhYa0gtKVN+JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjItbiU1Ql9XbiU3QzhxJTdETGxoWGZrJTQwayglNUIlMjIlM0VpZExpY2h0U2NoYWx0ZXJSZWFkJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJkZWJ1ZyUyMiUyMGlkJTNEJTIyJTVEb29OKTMyWCU3RG0lM0ZmVjA1NSlLRCUzRCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNldmVyaXR5JTIyJTNFZGVidWclM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHRfam9pbiUyMiUyMGlkJTNEJTIyJTVEanp5KU00dXFDQSUyM0ljR35HZ1VzJTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjQlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjIlM0R5JTIzeVolMkYyNDUlMjMlMjUlN0RNIWdTNFclMkIoJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRTAuMSUzQSUyMEhpbndlaXNlJTNBJTIwVHlwJTNBJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnZlcnRfdHlwZSUyMiUyMGlkJTNEJTIyaiUzQmklMjQyWkpZUGolMjRoISUzRCUyRmZmOUctJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySVRFTSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMlB0TWJrJTYwJTQwJTVEJTNEJTJDJTdCRV9VM0F6bWpmJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJyaCUyMyUyRk5iSCUzRlYuSk5xYyUyM1RyUCU3QyU1RCUyMiUzRWxpY2h0SXN0QW4lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMiUzQSUzRiU3QkhUJTJGcDBrYyU1RVpzUm5TQkElM0JJJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUyMFdlcnQlMjBpc3QlM0ElMjAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQzJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyU1BfdFYlNjBuR3V+Mm9relMlNURTMDAlN0MlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnJoJTIzJTJGTmJIJTNGVi5KTnFjJTIzVHJQJTdDJTVEJTIyJTNFbGljaHRJc3RBbiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMndHaSU3QmIlN0N3JTNCQU4xLi1sJTVCKnk4eHElMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19vcGVyYXRpb24lMjIlMjBpZCUzRCUyMkI0JTVEKTQxVXUlM0QqdGx6IWYqZCUyMyUyRiUyRiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFQU5EJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyeDdmcV9VZkVxJTNCLiUyNFZTJTVEJTI0TUFUMSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMkdHJTdEVUMpJTI1OCUyRmg4cU4zcXRuUmVtJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VORVElM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb252ZXJ0X3R5cGUlMjIlMjBpZCUzRCUyMipHJTQwJTNGUiE2dCUyQiUzQWJjSFAzJTNEKXolM0E4JTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySVRFTSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMiUyQm9KOCU2MDRPNWYuejlnc1ElM0E1JTdDRTMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnJoJTIzJTJGTmJIJTNGVi5KTnFjJTIzVHJQJTdDJTVEJTIyJTNFbGljaHRJc3RBbiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyJTJCaHRLKiU3Qn4lNDBVc3pwJTVEcktNVSp6QSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0Vib29sZWFuJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGVidWclMjIlMjBpZCUzRCUyMmlzdmFvek5rSyUyNCU3Q3p2MiUzRDBqYX5hJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjI3JTYwciFoJTNEQmFQejFrRW5QaG9+JTIzJTI1JTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjQlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJuaGtQcXRDYXZTOEMlNjBhS2FGRjBPJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRTAuNSUzQSUyMEJ1Z2ZpeCUyMHdyb25nJTIwdHlwZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb252ZXJ0X3R5cGUlMjIlMjBpZCUzRCUyMiooJTIzWCUyQmN4KCpEeSU0ME1FeiUzQnElNUUuQSUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklURU0lMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJ5YWU1OCU1RChwRGsxJTVFJTdDJTI0biU1QjFiNSU1RSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIycmglMjMlMkZOYkglM0ZWLkpOcWMlMjNUclAlN0MlNUQlMjIlM0VsaWNodElzdEFuJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJpbWNUZkgwVjNiJTIzKX4lNURjOCU3RCpZKiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMjBXZXJ0JTIwaXN0JTNBJTIwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMi55THAlNURSJTI1QmR0biU2MCUzREMlN0Q1VENKTSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIycmglMjMlMkZOYkglM0ZWLkpOcWMlMjNUclAlN0MlNUQlMjIlM0VsaWNodElzdEFuJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyc19mWEMyJTQwcnRpV04lMjNiSlQ0Z0JKJTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIydyUzQkglMjN5SDNhZSU1RHolM0RsMiU1RVJJNColMjMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyJTVFeTVnTHYlNUUtJTQwZWYlM0Y0NWtWVnVyMCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIycmglMjMlMkZOYkglM0ZWLkpOcWMlMjNUclAlN0MlNUQlMjIlM0VsaWNodElzdEFuJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMk5PJTVCVihxJTNCJTIzZC05U1NUJTJGMG1PYiUzRCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VvbiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyVkJXbCU2MGclMkMlM0ElNjBVMSUyQjYlM0ZDIV96VWElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnJoJTIzJTJGTmJIJTNGVi5KTnFjJTIzVHJQJTdDJTVEJTIyJTNFbGljaHRJc3RBbiUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjIzYiFtKCUyNEJqJTI0NnJxbCUyNVQlN0RoRkd6JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGVidWclMjIlMjBpZCUzRCUyMiUzRCUyNH44YiU3QiFYZDZ6emIzKXNqR2tjJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJlJTdDYUklMkZJSyU3QkklNUVGQUtJNnIuLTcyJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRTAuNWElM0ElMjBhbiUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJFTFNFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyaSU0MCU3RHFrUngpflB4LlElN0R3OGUlMkMyRiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIycmglMjMlMkZOYkglM0ZWLkpOcWMlMjNUclAlN0MlNUQlMjIlM0VsaWNodElzdEFuJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMk5kdGtLWlJ0dU5UWDFYJTVCMmlyZUYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGVidWclMjIlMjBpZCUzRCUyMiUyM0YlNUUhfn5VSEY3ODFHaTUzQyU2MCFkJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJOaWN2T0VVLTglMkZENmdlQ0wlMkMlMjVWbiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UwLjViJTNBJTIwYXVzJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGVidWclMjIlMjBpZCUzRCUyMl9GNEFzSSolN0QzJTdDMiU3QiUyM0YlNDAlNUJlMDkyJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJka2xVODFEbTFtSzFINHJpJTVFJTdCdColMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0X2pvaW4lMjIlMjBpZCUzRCUyMjl1Si5qZmNNRC0lN0IlN0MlMkMlM0QlMkZMMXJ4OSUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIyJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyLkRTUEN2aXYpZ0E1eVE4b0YtQjklMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFMSUzQSUyMGVya2FubnQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQxJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIybCUzQTUuSkZwJTdCa2tBT1JaRjFGUFYpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJyaCUyMyUyRk5iSCUzRlYuSk5xYyUyM1RyUCU3QyU1RCUyMiUzRWxpY2h0SXN0QW4lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjIlNjBITSUyNGJvWklXOEUlNDAyQUolN0JDeChCJTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyNDQlM0FZTHElNUJpeiU1RCUzRiUzQUJ5QzMhJTNBaWwlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnJoJTIzJTJGTmJIJTNGVi5KTnFjJTIzVHJQJTdDJTVEJTIyJTNFbGljaHRJc3RBbiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJkZWJ1ZyUyMiUyMGlkJTNEJTIybmtGQyUyNHclMkMlMjRCJTVEJTNBJTVELiU3QyU3RGpuQzNkJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJKc2VFay1+VCUzQWpoNilhTC5iMnUhJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRTIlM0ElMjBMaWNodCUyMGlzdCUyMGJlcmVpdHMlMjBhbiUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMm1YOTJUJTNCaTlRdCUzRiUyNVkpb3F2JTVFemUlMjIlM0UlM0NtdXRhdGlvbiUyMGVsc2UlM0QlMjIxJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJtb3dyYmwxJTIzTE5oeW9UXy1OaCU1QmclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMk4pJTJCKjF+M1pTbG0qZHhmZWglNjAlNUJFJTIyJTNFTGljaHREdXJjaEJld2VnQW4lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGVidWclMjIlMjBpZCUzRCUyMiUyQ1lxNUJTUmYhWClHM3ZGSGRrJTNBMSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNldmVyaXR5JTIyJTNFZGVidWclM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIybDUtTSUyQiUyNCpmdjMlN0QpU2kqbnd4JTVEaCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UzJTNBJTIwdmVybCVDMyVBNG5nZXJlJTIwTGljaHRkYXVlciUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZW91dHNfY2xlYXJ0aW1lb3V0JTIyJTIwaWQlM0QlMjJ3RUkwYlNpVzlHYmw4JTVFSXIlM0ElMkZ+JTNBJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRWluaXRMaWNodEF1cyUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVvdXRzX2NsZWFydGltZW91dCUyMiUyMGlkJTNEJTIyKipXMyU1RSU2MGVmJTJDJTVEUSUyM18hUSFLJTdELkQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFdmVybCVDMyVBNG5nZXJ1bmdMaWNodCUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVvdXRzX3NldHRpbWVvdXRfdmFyaWFibGUlMjIlMjBpZCUzRCUyMk1+NFolMkZ5JTJDJTdEJTVCcXYlMkYlM0YlNUVNIVVzdiElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFdmVybCVDMyVBNG5nZXJ1bmdMaWNodCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyREVMQVlfTVMlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMiU3Q1hFfm54TXQpJTQwLikySlZwTmlQWCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTEwMDAlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMiUyQ1R0JTNGQWdUJTVCMS5wS2xuJTQwWCU1QiFrQSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyJTNBTiU1QmNJJTNGJTdEMiU3Qjh3ZHZmJTNGOGM0VyolMjIlM0VMaWNodE5hY2hkZXRla3Rpb25BbmJsZWliZW4lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19jYWxsbm9yZXR1cm4lMjIlMjBpZCUzRCUyMiU2MHolN0JLQktYTCU0MEotQyU2MChjVElidVMlMjIlM0UlM0NtdXRhdGlvbiUyMG5hbWUlM0QlMjJMaWNodCUyMGF1c3NjaGFsdGVuJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkVMU0UlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJkZWJ1ZyUyMiUyMGlkJTNEJTIyRzFiSCUyRiU3Qk9nNyUzQUJYKCohJTVFTWQ0MSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNldmVyaXR5JTIyJTNFZGVidWclM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyLWRiaCUyQ1dKLkYlM0Y4MVBCIWh6bmUlN0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFMyUzQW5vdGhpbmcyZG8lMjBMaWNodCUyMG5pY2h0JTIwZHVyY2glMjBBbGdvJTIwZ2VzZXR6dCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkVMU0UlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJkZWJ1ZyUyMiUyMGlkJTNEJTIyTiUzQmxwKWFDJTI0JTYwZilmLnpLSVR6TVMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTZXZlcml0eSUyMiUzRWRlYnVnJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMlolN0NzJTQwLVklN0NjendsJTdCLjMpRnBZbn4lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFMiUzQSUyMExpY2h0JTIwaXN0JTIwYXVzJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyUiUyQ3FhdSU0MFVsWnAlNUJrJTVFRSUzRDkqWHF5JTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyWSpDUWstWmhOXzR2JTVCJTdEJTVCbCFKJTVCbSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTFQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMiFfJTYwSjRhJTdCMSU3QktfJTNCJTJDUHQlM0ElNjAlNjBkNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWFsaWFzLjAuZWcuS3VlY2hlLkVHS3VlY2hlRmVuc3RlckJld2VnTHV4JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMnpHemhLUG5PLjhDV2QqJTNESS0lMjMlMjVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJofiU3RHQ5TUxMJTVEaXRfViU3Q1ZSWTNNJTI1JTIyJTNFc2Nod2VsbFdlcnRMaWNodCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZGVidWclMjIlMjBpZCUzRCUyMkYocyUzRnYlMkYwVExUZUElNUVWa2UlMjVQQVolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTZXZlcml0eSUyMiUzRWRlYnVnJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMmlwYiElM0YodU1qbnlRJTVEWDguJTVFJTJDX2clMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFMyUzQSUyMGtsZWluZXIlMjBTY2h3ZWxsd2VydC0lMjZndCUzQkxpY2h0JTIwYW5zY2hhbHRlbiUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyUnUzZEVNT3ElM0R+ZEMhOCo0QmIlM0RwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJOKSUyQioxfjNaU2xtKmR4ZmVoJTYwJTVCRSUyMiUzRUxpY2h0RHVyY2hCZXdlZ0FuJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMnAlNDA1SnNOS34lM0YlN0IlMjRwR2dYUTQlMjUyZyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VUUlVFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xfZXglMjIlMjBpZCUzRCUyMl8lM0RkZE9xZDRRNGclMjQxc19QdllxaSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRZUEUlMjIlM0VmYWxzZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ0xFQVJfUlVOTklORyUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJSM3RUSThlQyUyRmUlMjVzJTJCci0lMkJNekFjJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFT2JqZWN0JTIwSUQlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMjBEM0g1JTIzZlVkXyUzQWJDOUJjLigwMyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyOSUyNEtocSU2MFolM0YhSExZJTNBN0VyZyUzRHRsJTIyJTNFaWRMaWNodFNjaGFsdGVyV3JpdGUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjI5JTYwMVM4NHlVJTVEbHo4aHN3TSpQbDIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyLShTJTIzQ3lVOW5keiUzQnNrWSUzRFZ2JTJCLSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVvdXRzX3NldHRpbWVvdXRfdmFyaWFibGUlMjIlMjBpZCUzRCUyMklQKCUzQjhmeSU3RHBmJTdDS3MqJTJDTURONWolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFaW5pdExpY2h0QXVzJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIycHMlMjUlNUVYZk0qJTNEciUzRCU1QlRQejBxLkwyJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFNjAwMDAlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMnUlN0J+bEQlM0ZSfjRxXyUyQ1AuckUlNUJkflclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMiUzQU4lNUJjSSUzRiU3RDIlN0I4d2R2ZiUzRjhjNFcqJTIyJTNFTGljaHROYWNoZGV0ZWt0aW9uQW5ibGVpYmVuJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbG5vcmV0dXJuJTIyJTIwaWQlM0QlMjJtJTdCJTJDbEMwMnROSThqXzZMMyUzQipweSUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMkxpY2h0JTIwYXVzc2NoYWx0ZW4lMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRUxTRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmRlYnVnJTIyJTIwaWQlM0QlMjJoZlUhbklMKlclM0EqJTdDSnolMjVodlolN0RFJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJ3KjE3diUyRiU3QmguJTI0QXZKbilDV0clM0JSJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRTMlM0ElMjBnciVDMyVCNiVDMyU5RmVyJTIwU2Nod2VsbHdlcnQlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkVMU0UlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJkZWJ1ZyUyMiUyMGlkJTNEJTIyYyUzRGcqZkklMjMtTHklMjMlMkNISyU3Qkd6c3E2JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjIlM0I1JTdENFAlMjRhNEtqTWNjNkFsT1lkNiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UxJTNBJTIwbmljaHQlMjBlcmthbm50JTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fZXh0JTIyJTIwaWQlM0QlMjJscDYlN0IlMkYlMjUpY3dSJTJCZWJpTHRLKEQlNUIlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBpdGVtcyUzRCUyMjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRWFueSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEMCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMiglNUJ1JTVEJTYwJTI0eW0ybkIxenIlNDBOZ1klNURwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFZGVmYXVsdCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIybSkuUHdlZ19ieFBoJTNGZzYzMEN3JTJCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjItbiU1Ql9XbiU3QzhxJTdETGxoWGZrJTQwayglNUIlMjIlM0VpZExpY2h0U2NoYWx0ZXJSZWFkJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmRlYnVnJTIyJTIwaWQlM0QlMjJuKkRsX3IlM0RWMiUzREFhbF9+VTV+VlolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTZXZlcml0eSUyMiUzRWRlYnVnJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMnAlN0NEJTJCJTNCbHU1LiUyNCU3Q0lucy5OQXglM0QpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRXRlc3QlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHRfam9pbiUyMiUyMGlkJTNEJTIydSUyM2JINW1RRiUyNHZZYyU2MCU3Q0glM0FMVm9mJTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjYlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJBQSU2MCp6ZHYqY2wlMjNYTFdUJTNBTG9XVCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VBbGlhc1JlYWQlM0ElMjAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQxJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJIYy5QdHEhUFMlN0JtbmlpcyU3QjllKSU3QyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS52YWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQyJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyaSU1QiFPJTNBfiFma1VtdHJ1bERTdzMpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUyQyUyMEFjayUzQSUyMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDMlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMjAwbSU1RWUlM0RTOX5Rdi5sRzVTYXVkcCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS5hY2slM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQ0JTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyOEYlNUU3eUMlMkJ5JTI0cWp1KiUyNTVvZHIwRCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMkMlMjBTa3JpcHQlM0ElMjAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQ1JTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJndnpCYXNVJTVEU0NxLlVvTWhJRXYlM0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUuZnJvbSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9leHQlMjIlMjBpZCUzRCUyMkpUaHZhVG0uKiU3QkUlM0YlNUIyM2VHTiU3RG0lMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBpdGVtcyUzRCUyMjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRWFueSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEMCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0VkZWZhdWx0JTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjJlJTI0JTNBQiUyNHN4MjAlMkMlNjB6dUN1JTNGJTNCWV8wJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjI5JTI0S2hxJTYwWiUzRiFITFklM0E3RXJnJTNEdGwlMjIlM0VpZExpY2h0U2NoYWx0ZXJXcml0ZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJkZWJ1ZyUyMiUyMGlkJTNEJTIyJTJDISUzRDFHOUFxNShvSEoodSlVWlBpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU2V2ZXJpdHklMjIlM0VkZWJ1ZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRXRlc3QlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHRfam9pbiUyMiUyMGlkJTNEJTIyYXBLMlUxeEZFaiUyQ01seW1sZCUyM3J2JTIyJTNFJTNDbXV0YXRpb24lMjBpdGVtcyUzRCUyMjYlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJBayU3RE8lNjAlMkNvdlk0RUw1JTNGZCU1QiU3QmEwSCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VBbGlhc1dyaXRlJTNBJTIwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQUREMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX3NvdXJjZSUyMiUyMGlkJTNEJTIyYWhuJTJDKXpaJTI1eS1XT35TTmUlNUIlMjMlM0FpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnZhbCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJhJTQwZU14JTI1UUl5eW5VJTVEVyUyMyU1QmclM0JDSCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMkMlMjBBY2slM0ElMjAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQzJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjI0JTQweSUyNFlOJTQwenBTbCUyQiU1RW1hMmpXcVElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUuYWNrJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQURENCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMiU1QiU3Qio3JTdCcE5+KGNhOCU3RCU0MGRhMjZfeCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlMkMlMjBTa3JpcHQlM0ElMjAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQ1JTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJOSTRzWnMtZyhFV2ZBJTNBWHgybl83JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLmZyb20lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfZGVmbm9yZXR1cm4lMjIlMjBpZCUzRCUyMnUwd1IlNDB5SGtsJTNBZCUyQiUyNCU1QnElMjRKOF9mJTIyJTIweCUzRCUyMjgzOCUyMiUyMHklM0QlMjI5NjMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFTGljaHQlMjBhdXNzY2hhbHRlbiUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFDSyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmRlYnVnJTIyJTIwaWQlM0QlMjJmMHctJTdERUZ3WnYlM0IlM0QxTEMlM0ElM0FtR2olMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJTZXZlcml0eSUyMiUzRWRlYnVnJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMnRWJTJDSzQlMjVCZiUzQS5RZ3VDWEclN0QlMjRVJTVCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRVglM0ElMjBMaWNodCUyMGF1c3NjaGFsdGVuJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjIlM0RkJTJGaCUzRFNFT20oJTNEbyUyNGtlQlRwMyUyQiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyTiklMkIqMX4zWlNsbSpkeGZlaCU2MCU1QkUlMjIlM0VMaWNodER1cmNoQmV3ZWdBbiUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjIlMjUlNUQqNFh2aCU1RCUzQmRkUSUyMzZmJTI1JTVFMyglM0QlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbF9leCUyMiUyMGlkJTNEJTIyZF9LMS1EcSUyQiU3QjIlMkMqV3EtZTFfJTNCJTQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVFlQRSUyMiUzRWZhbHNlJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDTEVBUl9SVU5OSU5HJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0VPYmplY3QlMjBJRCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyYmQlNUIxRmpmViU1RWQlM0ZtaiU3QnF0Wm50KSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyOSUyNEtocSU2MFolM0YhSExZJTNBN0VyZyUzRHRsJTIyJTNFaWRMaWNodFNjaGFsdGVyV3JpdGUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJsb2dpY19ib29sZWFuJTIyJTIwaWQlM0QlMjJ3aiUyQzByV2hwdWsyJTdCJTQwRlFRNWlqdiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkJPT0wlMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyMiUyQmJVSCU3Q2MlM0JsbmtXSyU1RGJSJTNEbFNLJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF
                                

                                Alias Read:

                                {
                                  "common": {
                                    "name": "EGKuecheFensterLichtRead",
                                    "desc": "Manuell erzeugt",
                                    "role": "switch",
                                    "type": "boolean",
                                    "read": true,
                                    "write": true,
                                    "def": false,
                                    "alias": {
                                      "id": "mqtt.0.shellies.shelly1l-XXX.relay.0",
                                      "read": "val=='on'"
                                    }
                                  },
                                  "type": "state",
                                  "native": {},
                                  "_id": "alias.0.eg.Kueche.EGKuecheFensterLichtRead",
                                  "acl": {
                                    "object": 1636,
                                    "state": 1636,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator"
                                  },
                                  "from": "system.adapter.admin.0",
                                  "user": "system.user.admin",
                                  "ts": 1677258916765
                                }
                                

                                Alias Write:

                                {
                                  "common": {
                                    "name": "EGKuecheFensterLichtWrite",
                                    "desc": "Manuell erzeugt",
                                    "role": "switch",
                                    "type": "boolean",
                                    "read": true,
                                    "write": true,
                                    "def": false,
                                    "alias": {
                                      "id": "mqtt.0.shellies.shelly1l-XXX.relay.0.command",
                                      "write": "val?'on':'off'"
                                    }
                                  },
                                  "type": "state",
                                  "native": {},
                                  "_id": "alias.0.eg.Kueche.EGKuecheFensterLichtWrite",
                                  "acl": {
                                    "object": 1636,
                                    "state": 1636,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator"
                                  },
                                  "from": "system.adapter.admin.0",
                                  "user": "system.user.admin",
                                  "ts": 1677258607761
                                }
                                

                                führte zu folgender Debugausgabe (ich habe den IOBroker neugestartet,da dieser den lesen alias am Anfang nicht aktualisiert hatte, dies ging aber ohne Probleme nach dem Neustart)
                                Debug ausgabe:

                                18:24:13.157	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                18:24:13.158	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0.1: Hinweise: Typ:boolean Wert ist: false
                                18:24:13.158	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: erkanntfalse
                                18:24:13.159	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 2: Licht ist aus
                                18:24:13.159	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 3: kleiner Schwellwert->Licht anschalten
                                18:24:13.173	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: false, Skript: system.adapter.javascript.0
                                18:24:13.182	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: true, Skript: system.adapter.mqtt.0
                                18:24:13.197	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: true, Ack: true, Skript: system.adapter.mqtt.0
                                18:24:26.354	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: false, Ack: true, Skript: system.adapter.mqtt.0
                                18:24:45.147	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                18:24:45.148	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: nicht erkannt
                                18:25:13.160	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: X: Licht ausschalten
                                18:25:13.177	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: false, Skript: system.adapter.javascript.0
                                18:25:13.198	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: true, Skript: system.adapter.mqtt.0
                                18:25:26.413	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                18:25:26.414	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0.1: Hinweise: Typ:boolean Wert ist: false
                                18:25:26.414	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: erkanntfalse
                                18:25:26.415	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 2: Licht ist aus
                                18:25:26.416	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 3: kleiner Schwellwert->Licht anschalten
                                18:25:26.431	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: false, Skript: system.adapter.javascript.0
                                18:25:26.440	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: true, Skript: system.adapter.mqtt.0
                                18:25:26.507	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: true, Ack: true, Skript: system.adapter.mqtt.0
                                18:25:58.387	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                18:25:58.388	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: nicht erkannt
                                18:26:26.418	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: X: Licht ausschalten
                                18:26:26.452	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: false, Skript: system.adapter.javascript.0
                                18:26:26.466	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: true, Skript: system.adapter.mqtt.0
                                18:26:26.480	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: false, Ack: true, Skript: system.adapter.mqtt.0
                                
                                

                                Zeile 16 zeigt nun den richtigen Wert an :).
                                Ich denke die Lösung liegt tatsächlich darin zwei Alias zu verwenden. Vielen, vielen Dank @paul53

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @ioMas last edited by paul53

                                  @iomas sagte: Ich denke die Lösung liegt tatsächlich darin zwei Adapter zu verwenden.

                                  Nein, das muss auch mit einem Alias funktionieren - wie bei mir.

                                  EDIT: Welche Node.js-Version?

                                  I 1 Reply Last reply Reply Quote 0
                                  • I
                                    ioMas @paul53 last edited by ioMas

                                    @paul53
                                    Ich habe an der Version nichts geändert 18.14.0

                                    Dafür habe ich aber noch einmal getestet, diesmal habe ich nicht über die shellyapp das Licht ausgeschaltet sondern über den Alias, dies führte zu einem anderen Output, es wird immer noch korrekt geschaltet, aber es gibt eine andere Ausgabe:

                                    18:47:02.628	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                    18:47:02.629	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0.1: Hinweise: Typ:boolean Wert ist: false
                                    18:47:02.630	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: erkanntfalse
                                    18:47:02.631	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 2: Licht ist aus
                                    18:47:02.631	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 3: kleiner Schwellwert->Licht anschalten
                                    18:47:02.646	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: false, Skript: system.adapter.javascript.0
                                    18:47:02.660	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: true, Skript: system.adapter.mqtt.0
                                    18:47:02.701	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: true, Ack: true, Skript: system.adapter.mqtt.0
                                    18:47:17.711	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: false, Skript: system.adapter.admin.0
                                    18:47:17.719	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: true, Skript: system.adapter.mqtt.0
                                    18:47:17.753	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: false, Ack: true, Skript: system.adapter.mqtt.0
                                    18:47:34.625	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                    18:47:34.627	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: nicht erkannt
                                    18:48:02.633	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: X: Licht ausschalten
                                    18:48:02.648	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: false, Skript: system.adapter.javascript.0
                                    18:48:28.666	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                    18:48:28.667	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0.1: Hinweise: Typ:boolean Wert ist: false
                                    18:48:28.668	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: erkanntfalse
                                    18:48:28.669	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 2: Licht ist aus
                                    18:48:28.669	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 3: kleiner Schwellwert->Licht anschalten
                                    18:48:28.685	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: false, Skript: system.adapter.javascript.0
                                    18:48:28.694	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: true, Ack: true, Skript: system.adapter.mqtt.0
                                    18:48:28.718	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: true, Ack: true, Skript: system.adapter.mqtt.0
                                    18:49:00.656	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 0: Bewegung
                                    18:49:00.657	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: 1: nicht erkannt
                                    18:49:28.671	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: X: Licht ausschalten
                                    18:49:28.679	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: false, Skript: system.adapter.javascript.0
                                    18:49:28.687	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasWrite: false, Ack: true, Skript: system.adapter.mqtt.0
                                    18:49:28.721	debug	javascript.0 (545343) script.js.EG.kueche.beweg3: AliasRead: false, Ack: true, Skript: system.adapter.mqtt.0
                                    
                                    

                                    Anscheinend wird wenn ich nativ shelly nutze die Ausgabe (.command) nicht aktualisiert, was aber der Fall ist wenn ich es über den Broker (Adminoberfläche) tue...

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @ioMas last edited by

                                      @iomas sagte: Anscheinend wird wenn ich nativ shelly nutze die Ausgabe (.command) nciht aktualisiert

                                      Ja, natürlich nicht, denn ".command" ist das Kommando von ioBroker an den Shelly.

                                      @iomas sagte in Alias auf Shelly - unerwartete Änderung des Aliastyps:

                                      Version nichts geändert 18.14.0

                                      Ich verwende noch Version 16. Vielleicht macht das den Unterschied?

                                      I 1 Reply Last reply Reply Quote 0
                                      • I
                                        ioMas @paul53 last edited by

                                        @paul53 said in Alias auf Shelly - unerwartete Änderung des Aliastyps:

                                        Ich verwende noch Version 16

                                        Darf ich wissen welche genau? Dann würde ich es mal mit einem downgrade probieren und entsprechend berichten, oder einfach die aktuellste 16er nehmen?

                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @ioMas last edited by

                                          @iomas sagte: aktuellste 16er nehmen?

                                          Ja.

                                          I 1 Reply Last reply Reply Quote 0
                                          • I
                                            ioMas @paul53 last edited by

                                            @paul53
                                            Ich habe nun Version 16.16.0
                                            leider hat sich aber am output nichts geändert (Nutzung 1 Alias):

                                            19:13:22.734	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0: Bewegung
                                            19:13:22.736	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0.1: Hinweise: Typ:boolean Wert ist: false
                                            19:13:22.736	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 1: erkanntfalse
                                            19:13:22.740	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 2: Licht ist aus
                                            19:13:22.741	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 3: kleiner Schwellwert->Licht anschalten
                                            19:13:22.893	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: Alias: true, Ack: true, Skript: system.adapter.mqtt.0
                                            19:13:33.861	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: Alias: false, Ack: true, Skript: system.adapter.mqtt.0
                                            19:13:54.682	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0: Bewegung
                                            19:13:54.682	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 1: nicht erkannt
                                            19:14:22.743	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: X: Licht ausschalten
                                            19:14:33.522	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0: Bewegung
                                            19:14:33.526	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0.1: Hinweise: Typ:string Wert ist: off
                                            19:14:33.526	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0.5: Bugfix wrong typestring Wert ist: off
                                            19:14:33.527	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0.5b: aus
                                            19:14:33.527	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 1: erkanntfalse
                                            19:14:33.527	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 2: Licht ist aus
                                            19:14:33.527	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 3: kleiner Schwellwert->Licht anschalten
                                            19:14:33.611	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: Alias: true, Ack: true, Skript: system.adapter.mqtt.0
                                            19:15:05.519	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 0: Bewegung
                                            19:15:05.521	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: 1: nicht erkannt
                                            19:15:33.529	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: X: Licht ausschalten
                                            19:15:33.560	debug	javascript.0 (554097) script.js.EG.kueche.beweg2: Alias: false, Ack: true, Skript: system.adapter.mqtt.0
                                            
                                            paul53 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            815
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            alias blockly shellys
                                            3
                                            40
                                            1481
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo