diff --git a/404.html b/404.html index ff9f1e5..fc81dbe 100644 --- a/404.html +++ b/404.html @@ -17,13 +17,13 @@ - + -

404

That's a Four-Oh-Four.
+ - + diff --git a/assets/js/16.2cafce9e.js b/assets/js/16.eb39eb7a.js similarity index 97% rename from assets/js/16.2cafce9e.js rename to assets/js/16.eb39eb7a.js index 0863dd1..67021b8 100644 --- a/assets/js/16.2cafce9e.js +++ b/assets/js/16.eb39eb7a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{306:function(o,e,t){"use strict";t.r(e);var a=t(14),n=Object(a.a)({},(function(){var o=this,e=o._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[e("h1",{attrs:{id:"privacy-policy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#privacy-policy"}},[o._v("#")]),o._v(" Privacy policy")]),o._v(" "),e("p",[o._v("This privacy policy governs your use of the software application Theengs.\nThis privacy policy was last updated on July 5, 2022. This privacy policy may change from time to time, for any reason. If you have any questions or concerns about this privacy policy, feel free to contact Theengs at any time (support@theengs.io).")]),o._v(" "),e("p",[e("strong",[o._v("What information does Theengs App obtain and how is it used?")])]),o._v(" "),e("p",[o._v("Theengs App does not collect or transmit any personal information about you, such as your name, address, phone number or email address.")]),o._v(" "),e("p",[e("strong",[o._v("How do you handle location data?")])]),o._v(" "),e("p",[o._v("Theengs App does not use or collect any data related to your geographic location.")]),o._v(" "),e("p",[e("strong",[o._v("Can users see their personal data?")])]),o._v(" "),e("p",[o._v("Theengs App itself does not collect, transmit, or maintain user personal data.")]),o._v(" "),e("p",[e("strong",[o._v("Do you share personal information?")])]),o._v(" "),e("p",[o._v("As no personal information is collected, transmitted, or maintained by Theengs App, we do not share personal information.")]),o._v(" "),e("p",[e("strong",[o._v("Do advertising companies collect data?")])]),o._v(" "),e("p",[o._v("Theengs App does not collect, transmit, or maintain personal data, so no data is shared with advertising companies.")]),o._v(" "),e("p",[e("strong",[o._v("Do you use vendors or analytics providers?")])]),o._v(" "),e("p",[o._v("No. Theengs App does not collect, transmit, or maintaining personal data, so no data is shared with vendors or analytics providers.")]),o._v(" "),e("p",[e("strong",[o._v("Do you comply with the Children's Online Privacy Protection Act (COPPA)?")])]),o._v(" "),e("p",[o._v("Yes. We do not solicit nor gather any data from children under the age of 13. If a parent or guardian becomes aware that his or her child has provided us with information without their consent, he or she should contact us.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{305:function(o,e,t){"use strict";t.r(e);var a=t(14),n=Object(a.a)({},(function(){var o=this,e=o._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":o.$parent.slotKey}},[e("h1",{attrs:{id:"privacy-policy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#privacy-policy"}},[o._v("#")]),o._v(" Privacy policy")]),o._v(" "),e("p",[o._v("This privacy policy governs your use of the software application Theengs.\nThis privacy policy was last updated on July 5, 2022. This privacy policy may change from time to time, for any reason. If you have any questions or concerns about this privacy policy, feel free to contact Theengs at any time (support@theengs.io).")]),o._v(" "),e("p",[e("strong",[o._v("What information does Theengs App obtain and how is it used?")])]),o._v(" "),e("p",[o._v("Theengs App does not collect or transmit any personal information about you, such as your name, address, phone number or email address.")]),o._v(" "),e("p",[e("strong",[o._v("How do you handle location data?")])]),o._v(" "),e("p",[o._v("Theengs App does not use or collect any data related to your geographic location.")]),o._v(" "),e("p",[e("strong",[o._v("Can users see their personal data?")])]),o._v(" "),e("p",[o._v("Theengs App itself does not collect, transmit, or maintain user personal data.")]),o._v(" "),e("p",[e("strong",[o._v("Do you share personal information?")])]),o._v(" "),e("p",[o._v("As no personal information is collected, transmitted, or maintained by Theengs App, we do not share personal information.")]),o._v(" "),e("p",[e("strong",[o._v("Do advertising companies collect data?")])]),o._v(" "),e("p",[o._v("Theengs App does not collect, transmit, or maintain personal data, so no data is shared with advertising companies.")]),o._v(" "),e("p",[e("strong",[o._v("Do you use vendors or analytics providers?")])]),o._v(" "),e("p",[o._v("No. Theengs App does not collect, transmit, or maintaining personal data, so no data is shared with vendors or analytics providers.")]),o._v(" "),e("p",[e("strong",[o._v("Do you comply with the Children's Online Privacy Protection Act (COPPA)?")])]),o._v(" "),e("p",[o._v("Yes. We do not solicit nor gather any data from children under the age of 13. If a parent or guardian becomes aware that his or her child has provided us with information without their consent, he or she should contact us.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/3.7bd9330b.js b/assets/js/3.b64255a7.js similarity index 99% rename from assets/js/3.7bd9330b.js rename to assets/js/3.b64255a7.js index 0f6dae8..4ea1a6a 100644 --- a/assets/js/3.7bd9330b.js +++ b/assets/js/3.b64255a7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{255:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-background-updates.5db55d76.png"},278:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-threshold-settings.f10c453a.png"},279:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-threshold-settings-default.deda5a8b.png"},280:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-live-monitoring.4b0a2ba5.png"},281:function(t,e,s){t.exports=s.p+"assets/img/Theengs-set-mac.0b596ac9.png"},282:function(t,e,s){t.exports=s.p+"assets/img/Theengs_app_auto_discovery_BLE_Sensor_Home_Assistant.e80531f8.gif"},283:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-location-permission-8.2b20daf0.png"},284:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-battery-excluded.d1996bd2.png"},285:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-location-permission.64c286d9.png"},286:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-nearby-permission.b2b60dd2.png"},287:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-unused-permission.9ced3c1f.png"},288:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-battery.3f30bc55.png"},289:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-battery-unrestricted.4ee75950.png"},305:function(t,e,s){"use strict";s.r(e);var i=s(14),o=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"use"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#use"}},[t._v("#")]),t._v(" Use")]),t._v(" "),e("h2",{attrs:{id:"features-comparison-between-operating-systems"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#features-comparison-between-operating-systems"}},[t._v("#")]),t._v(" Features comparison between Operating Systems")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"center"}},[t._v("OS")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Real time data")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("BBQ monitoring")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("MQTT integration")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Running in background")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Home Assistant Auto Discovery")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"center"}},[t._v("iOS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[t._v("Android")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️ "),e("em",[t._v("experimental")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")])])])]),t._v(" "),e("h2",{attrs:{id:"overview"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),e("video",{attrs:{width:"353",height:"628",controls:""}},[e("source",{attrs:{src:"/videos/Theengs-app-demo.mp4",type:"video/mp4"}}),t._v("\n Your browser does not support the video tag.\n")]),t._v(" "),e("h2",{attrs:{id:"real-time-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-time-data"}},[t._v("#")]),t._v(" Real time data")]),t._v(" "),e("p",[t._v('The app enables to retrieve BLE sensor real time data, to add new sensors tap "Search for new sensors" in the hamburger menu.')]),t._v(" "),e("p",[t._v('To refresh the sensor data tap "Refresh sensor data" in the hamburger menu.')]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Why does Theengs App needs the location permission?")]),t._v(" "),e("p",[t._v("Theengs App requires the location permission to access your device Bluetooth and retrieves sensor data. Theengs is not accessing your location with GPS/GLONASS/BAIDU.")])]),t._v(" "),e("h2",{attrs:{id:"live-bbq-monitoring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#live-bbq-monitoring"}},[t._v("#")]),t._v(" Live BBQ monitoring")]),t._v(" "),e("h3",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("Live BBQ Monitoring allows you to track the temperature of your grill in real time, ensuring perfect cooking results. The feature includes different Threshold Settings, a Live Chart, and Notifications for comprehensive monitoring.\nThis feature requires staying on the BBQ sensor screen to function effectively.")]),t._v(" "),e("h3",{attrs:{id:"compatible-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compatible-devices"}},[t._v("#")]),t._v(" Compatible devices")]),t._v(" "),e("p",[t._v("This feature is compatible with the following devices:")]),t._v(" "),e("ul",[e("li",[t._v("Govee H5055")]),t._v(" "),e("li",[t._v("Inkbird IBT-2X(S)")]),t._v(" "),e("li",[t._v("Inkbird IBT-4X(S/C)")]),t._v(" "),e("li",[t._v("Inkbird IBT-6X(S)")]),t._v(" "),e("li",[t._v("SOLIS_6")])]),t._v(" "),e("h3",{attrs:{id:"threshold-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#threshold-settings"}},[t._v("#")]),t._v(" Threshold settings")]),t._v(" "),e("p",[t._v("Access the threshold settings from the hamburger menu.")]),t._v(" "),e("p",[e("img",{attrs:{src:s(278),alt:"Threshold settings"}})]),t._v(" "),e("p",[t._v("Select '+' to customize temperature ranges for different meats or cooking stages.")]),t._v(" "),e("p",[e("img",{attrs:{src:s(279),alt:"Threshold settings choice"}})]),t._v(" "),e("p",[t._v("Name your preset for easy identification, e.g., 'Poultry', 'Rare Steak'.\nEnter your desired temperature range. You can modify these presets anytime.")]),t._v(" "),e("p",[t._v("From the BBQ sensor view you can select the presets of your choice.")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("The cooking temperatures provided in this app are general recommendations. Variations in equipment, ingredients, and conditions can affect cooking outcomes.\nAlways verify food is cooked to safe temperatures.\nThe application developer is not liable for any cooking results.")])]),t._v(" "),e("h3",{attrs:{id:"live-monitoring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#live-monitoring"}},[t._v("#")]),t._v(" Live monitoring")]),t._v(" "),e("p",[t._v("The Live Chart displays live temperature data from your BBQ sensor.\nTo view, tap on your BBQ device from the main screen.\nThe chart shows temperature changes over time, helping you monitor the cooking process.")]),t._v(" "),e("p",[e("img",{attrs:{src:s(280),alt:"Live monitoring"}})]),t._v(" "),e("h3",{attrs:{id:"notifications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#notifications"}},[t._v("#")]),t._v(" Notifications")]),t._v(" "),e("p",[t._v("Enable notifications when prompted. Your phone must not be in silent or do not disturb mode.\nSet temperature thresholds based on your meal. When the sensor detects temperatures beyond this range, you'll receive an alert.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("For continuous monitoring and notifications, you must keep the app open on the BBQ sensor screen.\nUpdate frequency and real-time responsiveness depend on your smartphone’s processing capabilities, not the app. For best results, close unnecessary apps and ensure you are not far from the sensor.")])]),t._v(" "),e("h2",{attrs:{id:"mqtt-integration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-integration"}},[t._v("#")]),t._v(" MQTT integration")]),t._v(" "),e("p",[t._v("Prerequisites:")]),t._v(" "),e("ul",[e("li",[t._v("MQTT broker setup in your local network (Mosquitto is a well known broker)")])]),t._v(" "),e("p",[t._v("Theengs app can publish the data to an MQTT broker, to do so go to the hamburger menu, select Integration.\nEnter the following informations:")]),t._v(" "),e("ul",[e("li",[t._v("Broker host IP (compulsory)")]),t._v(" "),e("li",[t._v("Broker port (compulsory, default: "),e("code",[t._v("1883")]),t._v(")")]),t._v(" "),e("li",[t._v("Username (optional)")]),t._v(" "),e("li",[t._v("Password (optional)")]),t._v(" "),e("li",[t._v("Topic (compulsory, default: "),e("code",[t._v("home")]),t._v(")")]),t._v(" "),e("li",[t._v("SubTopic (compulsory, default: "),e("code",[t._v("TheengsApp")]),t._v(")")])]),t._v(" "),e("p",[t._v('Once done click on the MQTT switch to activate the integration, if the app can connect to the broker, it will display "Connected" in the top right.')]),t._v(" "),e("video",{attrs:{width:"353",height:"767",controls:""}},[e("source",{attrs:{src:"/videos/Theengs-App-mqtt-integration.mp4",type:"video/mp4"}}),t._v("\n Your browser does not support the video tag.\n")]),t._v(" "),e("h3",{attrs:{id:"ios-specificity"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ios-specificity"}},[t._v("#")]),t._v(" iOS specificity")]),t._v(" "),e("p",[t._v("If you want to push data to an MQTT broker you will need to manually enter a MAC address for the sensor, this is done from the sensor page see below:")]),t._v(" "),e("p",[e("img",{attrs:{src:s(281),alt:"add-mac"}})]),t._v(" "),e("h3",{attrs:{id:"home-assistant-auto-discovery"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#home-assistant-auto-discovery"}},[t._v("#")]),t._v(" Home Assistant Auto Discovery")]),t._v(" "),e("p",[t._v("Theengs app can publish your sensor definition following Home Assistant MQTT convention, so as to do this you need to activate “Enable discovery” into your MQTT Options and follow the steps below:")]),t._v(" "),e("p",[e("img",{attrs:{src:s(282),alt:"location"}})]),t._v(" "),e("p",[t._v("The sensor definition will be publish when the app connect to the broker. You can retrigger the publication by deactivating and reactivating the MQTT integration from the application.")]),t._v(" "),e("h2",{attrs:{id:"ios-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ios-permissions"}},[t._v("#")]),t._v(" iOS permissions")]),t._v(" "),e("p",[t._v("The application will ask you for permission to use Bluetooth. You can learn more on Apple "),e("a",{attrs:{href:"https://support.apple.com/HT210578",target:"_blank",rel:"noopener noreferrer"}},[t._v("website"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"android-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#android-permissions"}},[t._v("#")]),t._v(" Android permissions")]),t._v(" "),e("p",[t._v("The Android operating system requires applications to ask for device location permission in order to scan for nearby Bluetooth Low Energy sensors.\nYou would need to go into the app information (long press on the icon -> (i)) so as to configure the app permissions properly.")]),t._v(" "),e("h3",{attrs:{id:"android-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#android-8"}},[t._v("#")]),t._v(" Android 8+")]),t._v(" "),e("ul",[e("li",[t._v("Click on Permissions")]),t._v(" "),e("li",[t._v('Activate "your location"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(283),alt:"location"}})]),t._v(" "),e("p",[t._v("You can now use the application. If you want to run the application in the background follow the process below:")]),t._v(" "),e("ul",[e("li",[t._v("Go back")]),t._v(" "),e("li",[t._v('Click on "Battery"')]),t._v(" "),e("li",[t._v('Click on "Power saving exclusions"')]),t._v(" "),e("li",[t._v("Activate the exclusion for Theengs")])]),t._v(" "),e("p",[e("img",{attrs:{src:s(284),alt:"location"}})]),t._v(" "),e("ul",[e("li",[t._v('And finally go into the app settings and toggle "Enable background updates"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(255),alt:"background"}})]),t._v(" "),e("h3",{attrs:{id:"android-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#android-10"}},[t._v("#")]),t._v(" Android 10+")]),t._v(" "),e("h4",{attrs:{id:"running-when-displayed-only"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-when-displayed-only"}},[t._v("#")]),t._v(" Running when displayed only")]),t._v(" "),e("ul",[e("li",[t._v("Click on Permissions")]),t._v(" "),e("li",[t._v("Click on Location permission")]),t._v(" "),e("li",[t._v('Select "Allow only while using the app", if you want the app to update sensors data only when the app is running at the front')]),t._v(" "),e("li",[t._v('Enable "Use precise location" if you have this option')])]),t._v(" "),e("h4",{attrs:{id:"running-in-the-background-experimental"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-in-the-background-experimental"}},[t._v("#")]),t._v(" Running in the background (experimental)")]),t._v(" "),e("p",[t._v("If you want the app to retrieve data in the background you will need to do the following steps:")]),t._v(" "),e("ul",[e("li",[t._v('Click on "Permissions"')]),t._v(" "),e("li",[t._v('Click on "Location"')]),t._v(" "),e("li",[t._v('Select "Allow all the time" if you want to update the sensors data in the background')]),t._v(" "),e("li",[t._v('Enable "Use precise location" if you have this option')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(285),alt:"location"}})]),t._v(" "),e("ul",[e("li",[t._v("Go back")]),t._v(" "),e("li",[t._v('Click on "Nearby devices"')]),t._v(" "),e("li",[t._v('Click on "Allow"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(286),alt:"nearby"}})]),t._v(" "),e("ul",[e("li",[t._v("Go back 2 times")]),t._v(" "),e("li",[t._v('Deactivate "Remove permissions if app is unused"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(287),alt:"unused"}})]),t._v(" "),e("ul",[e("li",[t._v("Click on battery")])]),t._v(" "),e("p",[e("img",{attrs:{src:s(288),alt:"battery"}})]),t._v(" "),e("ul",[e("li",[t._v("Select unrestricted")])]),t._v(" "),e("p",[e("img",{attrs:{src:s(289),alt:"unrestricted"}})]),t._v(" "),e("ul",[e("li",[t._v('And finally go into the app settings and toggle "Enable background updates"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(255),alt:"background"}})]),t._v(" "),e("p",[t._v("Some devices also require the GPS to be turned on while scanning for new sensors.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Android has drastically reduced the capabilities of apps to run in the background, as a consequence the Update interval set into the app may not be followed by the operating system.\nYou may also have more regular results when the device is charging.")])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{255:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-background-updates.5db55d76.png"},278:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-threshold-settings.f10c453a.png"},279:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-threshold-settings-default.deda5a8b.png"},280:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-live-monitoring.4b0a2ba5.png"},281:function(t,e,s){t.exports=s.p+"assets/img/Theengs-set-mac.0b596ac9.png"},282:function(t,e,s){t.exports=s.p+"assets/img/Theengs_app_auto_discovery_BLE_Sensor_Home_Assistant.e80531f8.gif"},283:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-location-permission-8.2b20daf0.png"},284:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-battery-excluded.d1996bd2.png"},285:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-location-permission.64c286d9.png"},286:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-nearby-permission.b2b60dd2.png"},287:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-unused-permission.9ced3c1f.png"},288:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-battery.3f30bc55.png"},289:function(t,e,s){t.exports=s.p+"assets/img/Theengs-app-battery-unrestricted.4ee75950.png"},306:function(t,e,s){"use strict";s.r(e);var i=s(14),o=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"use"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#use"}},[t._v("#")]),t._v(" Use")]),t._v(" "),e("h2",{attrs:{id:"features-comparison-between-operating-systems"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#features-comparison-between-operating-systems"}},[t._v("#")]),t._v(" Features comparison between Operating Systems")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"center"}},[t._v("OS")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Real time data")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("BBQ monitoring")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("MQTT integration")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Running in background")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Home Assistant Auto Discovery")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"center"}},[t._v("iOS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[t._v("Android")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️ "),e("em",[t._v("experimental")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("☑️")])])])]),t._v(" "),e("h2",{attrs:{id:"overview"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),e("video",{attrs:{width:"353",height:"628",controls:""}},[e("source",{attrs:{src:"/videos/Theengs-app-demo.mp4",type:"video/mp4"}}),t._v("\n Your browser does not support the video tag.\n")]),t._v(" "),e("h2",{attrs:{id:"real-time-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#real-time-data"}},[t._v("#")]),t._v(" Real time data")]),t._v(" "),e("p",[t._v('The app enables to retrieve BLE sensor real time data, to add new sensors tap "Search for new sensors" in the hamburger menu.')]),t._v(" "),e("p",[t._v('To refresh the sensor data tap "Refresh sensor data" in the hamburger menu.')]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Why does Theengs App needs the location permission?")]),t._v(" "),e("p",[t._v("Theengs App requires the location permission to access your device Bluetooth and retrieves sensor data. Theengs is not accessing your location with GPS/GLONASS/BAIDU.")])]),t._v(" "),e("h2",{attrs:{id:"live-bbq-monitoring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#live-bbq-monitoring"}},[t._v("#")]),t._v(" Live BBQ monitoring")]),t._v(" "),e("h3",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("Live BBQ Monitoring allows you to track the temperature of your grill in real time, ensuring perfect cooking results. The feature includes different Threshold Settings, a Live Chart, and Notifications for comprehensive monitoring.\nThis feature requires staying on the BBQ sensor screen to function effectively.")]),t._v(" "),e("h3",{attrs:{id:"compatible-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compatible-devices"}},[t._v("#")]),t._v(" Compatible devices")]),t._v(" "),e("p",[t._v("This feature is compatible with the following devices:")]),t._v(" "),e("ul",[e("li",[t._v("Govee H5055")]),t._v(" "),e("li",[t._v("Inkbird IBT-2X(S)")]),t._v(" "),e("li",[t._v("Inkbird IBT-4X(S/C)")]),t._v(" "),e("li",[t._v("Inkbird IBT-6X(S)")]),t._v(" "),e("li",[t._v("SOLIS_6")])]),t._v(" "),e("h3",{attrs:{id:"threshold-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#threshold-settings"}},[t._v("#")]),t._v(" Threshold settings")]),t._v(" "),e("p",[t._v("Access the threshold settings from the hamburger menu.")]),t._v(" "),e("p",[e("img",{attrs:{src:s(278),alt:"Threshold settings"}})]),t._v(" "),e("p",[t._v("Select '+' to customize temperature ranges for different meats or cooking stages.")]),t._v(" "),e("p",[e("img",{attrs:{src:s(279),alt:"Threshold settings choice"}})]),t._v(" "),e("p",[t._v("Name your preset for easy identification, e.g., 'Poultry', 'Rare Steak'.\nEnter your desired temperature range. You can modify these presets anytime.")]),t._v(" "),e("p",[t._v("From the BBQ sensor view you can select the presets of your choice.")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Warning")]),t._v(" "),e("p",[t._v("The cooking temperatures provided in this app are general recommendations. Variations in equipment, ingredients, and conditions can affect cooking outcomes.\nAlways verify food is cooked to safe temperatures.\nThe application developer is not liable for any cooking results.")])]),t._v(" "),e("h3",{attrs:{id:"live-monitoring"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#live-monitoring"}},[t._v("#")]),t._v(" Live monitoring")]),t._v(" "),e("p",[t._v("The Live Chart displays live temperature data from your BBQ sensor.\nTo view, tap on your BBQ device from the main screen.\nThe chart shows temperature changes over time, helping you monitor the cooking process.")]),t._v(" "),e("p",[e("img",{attrs:{src:s(280),alt:"Live monitoring"}})]),t._v(" "),e("h3",{attrs:{id:"notifications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#notifications"}},[t._v("#")]),t._v(" Notifications")]),t._v(" "),e("p",[t._v("Enable notifications when prompted. Your phone must not be in silent or do not disturb mode.\nSet temperature thresholds based on your meal. When the sensor detects temperatures beyond this range, you'll receive an alert.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("For continuous monitoring and notifications, you must keep the app open on the BBQ sensor screen.\nUpdate frequency and real-time responsiveness depend on your smartphone’s processing capabilities, not the app. For best results, close unnecessary apps and ensure you are not far from the sensor.")])]),t._v(" "),e("h2",{attrs:{id:"mqtt-integration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-integration"}},[t._v("#")]),t._v(" MQTT integration")]),t._v(" "),e("p",[t._v("Prerequisites:")]),t._v(" "),e("ul",[e("li",[t._v("MQTT broker setup in your local network (Mosquitto is a well known broker)")])]),t._v(" "),e("p",[t._v("Theengs app can publish the data to an MQTT broker, to do so go to the hamburger menu, select Integration.\nEnter the following informations:")]),t._v(" "),e("ul",[e("li",[t._v("Broker host IP (compulsory)")]),t._v(" "),e("li",[t._v("Broker port (compulsory, default: "),e("code",[t._v("1883")]),t._v(")")]),t._v(" "),e("li",[t._v("Username (optional)")]),t._v(" "),e("li",[t._v("Password (optional)")]),t._v(" "),e("li",[t._v("Topic (compulsory, default: "),e("code",[t._v("home")]),t._v(")")]),t._v(" "),e("li",[t._v("SubTopic (compulsory, default: "),e("code",[t._v("TheengsApp")]),t._v(")")])]),t._v(" "),e("p",[t._v('Once done click on the MQTT switch to activate the integration, if the app can connect to the broker, it will display "Connected" in the top right.')]),t._v(" "),e("video",{attrs:{width:"353",height:"767",controls:""}},[e("source",{attrs:{src:"/videos/Theengs-App-mqtt-integration.mp4",type:"video/mp4"}}),t._v("\n Your browser does not support the video tag.\n")]),t._v(" "),e("h3",{attrs:{id:"ios-specificity"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ios-specificity"}},[t._v("#")]),t._v(" iOS specificity")]),t._v(" "),e("p",[t._v("If you want to push data to an MQTT broker you will need to manually enter a MAC address for the sensor, this is done from the sensor page see below:")]),t._v(" "),e("p",[e("img",{attrs:{src:s(281),alt:"add-mac"}})]),t._v(" "),e("h3",{attrs:{id:"home-assistant-auto-discovery"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#home-assistant-auto-discovery"}},[t._v("#")]),t._v(" Home Assistant Auto Discovery")]),t._v(" "),e("p",[t._v("Theengs app can publish your sensor definition following Home Assistant MQTT convention, so as to do this you need to activate “Enable discovery” into your MQTT Options and follow the steps below:")]),t._v(" "),e("p",[e("img",{attrs:{src:s(282),alt:"location"}})]),t._v(" "),e("p",[t._v("The sensor definition will be publish when the app connect to the broker. You can retrigger the publication by deactivating and reactivating the MQTT integration from the application.")]),t._v(" "),e("h2",{attrs:{id:"ios-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ios-permissions"}},[t._v("#")]),t._v(" iOS permissions")]),t._v(" "),e("p",[t._v("The application will ask you for permission to use Bluetooth. You can learn more on Apple "),e("a",{attrs:{href:"https://support.apple.com/HT210578",target:"_blank",rel:"noopener noreferrer"}},[t._v("website"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"android-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#android-permissions"}},[t._v("#")]),t._v(" Android permissions")]),t._v(" "),e("p",[t._v("The Android operating system requires applications to ask for device location permission in order to scan for nearby Bluetooth Low Energy sensors.\nYou would need to go into the app information (long press on the icon -> (i)) so as to configure the app permissions properly.")]),t._v(" "),e("h3",{attrs:{id:"android-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#android-8"}},[t._v("#")]),t._v(" Android 8+")]),t._v(" "),e("ul",[e("li",[t._v("Click on Permissions")]),t._v(" "),e("li",[t._v('Activate "your location"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(283),alt:"location"}})]),t._v(" "),e("p",[t._v("You can now use the application. If you want to run the application in the background follow the process below:")]),t._v(" "),e("ul",[e("li",[t._v("Go back")]),t._v(" "),e("li",[t._v('Click on "Battery"')]),t._v(" "),e("li",[t._v('Click on "Power saving exclusions"')]),t._v(" "),e("li",[t._v("Activate the exclusion for Theengs")])]),t._v(" "),e("p",[e("img",{attrs:{src:s(284),alt:"location"}})]),t._v(" "),e("ul",[e("li",[t._v('And finally go into the app settings and toggle "Enable background updates"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(255),alt:"background"}})]),t._v(" "),e("h3",{attrs:{id:"android-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#android-10"}},[t._v("#")]),t._v(" Android 10+")]),t._v(" "),e("h4",{attrs:{id:"running-when-displayed-only"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-when-displayed-only"}},[t._v("#")]),t._v(" Running when displayed only")]),t._v(" "),e("ul",[e("li",[t._v("Click on Permissions")]),t._v(" "),e("li",[t._v("Click on Location permission")]),t._v(" "),e("li",[t._v('Select "Allow only while using the app", if you want the app to update sensors data only when the app is running at the front')]),t._v(" "),e("li",[t._v('Enable "Use precise location" if you have this option')])]),t._v(" "),e("h4",{attrs:{id:"running-in-the-background-experimental"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#running-in-the-background-experimental"}},[t._v("#")]),t._v(" Running in the background (experimental)")]),t._v(" "),e("p",[t._v("If you want the app to retrieve data in the background you will need to do the following steps:")]),t._v(" "),e("ul",[e("li",[t._v('Click on "Permissions"')]),t._v(" "),e("li",[t._v('Click on "Location"')]),t._v(" "),e("li",[t._v('Select "Allow all the time" if you want to update the sensors data in the background')]),t._v(" "),e("li",[t._v('Enable "Use precise location" if you have this option')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(285),alt:"location"}})]),t._v(" "),e("ul",[e("li",[t._v("Go back")]),t._v(" "),e("li",[t._v('Click on "Nearby devices"')]),t._v(" "),e("li",[t._v('Click on "Allow"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(286),alt:"nearby"}})]),t._v(" "),e("ul",[e("li",[t._v("Go back 2 times")]),t._v(" "),e("li",[t._v('Deactivate "Remove permissions if app is unused"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(287),alt:"unused"}})]),t._v(" "),e("ul",[e("li",[t._v("Click on battery")])]),t._v(" "),e("p",[e("img",{attrs:{src:s(288),alt:"battery"}})]),t._v(" "),e("ul",[e("li",[t._v("Select unrestricted")])]),t._v(" "),e("p",[e("img",{attrs:{src:s(289),alt:"unrestricted"}})]),t._v(" "),e("ul",[e("li",[t._v('And finally go into the app settings and toggle "Enable background updates"')])]),t._v(" "),e("p",[e("img",{attrs:{src:s(255),alt:"background"}})]),t._v(" "),e("p",[t._v("Some devices also require the GPS to be turned on while scanning for new sensors.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Android has drastically reduced the capabilities of apps to run in the background, as a consequence the Update interval set into the app may not be followed by the operating system.\nYou may also have more regular results when the device is charging.")])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/7.b1442972.js b/assets/js/7.f5c0a430.js similarity index 82% rename from assets/js/7.b1442972.js rename to assets/js/7.f5c0a430.js index aa41e3f..b7c6e4d 100644 --- a/assets/js/7.b1442972.js +++ b/assets/js/7.f5c0a430.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{275:function(e,t,r){e.exports=r.p+"assets/img/Theengs-app-home-reduced-1280.7d1c466e.png"},276:function(e,t,r){e.exports=r.p+"assets/img/Theengs-app-live.5ce183d5.png"},297:function(e,t,r){"use strict";r.r(t);var a=r(14),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey},scopedSlots:e._u([{key:"footer",fn:function(){return[t("p",[t("a",{attrs:{href:"https://github.com/theengs/home/blob/main/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPLv3 Licensed"),t("OutboundLink")],1),e._v(" | Copyright © 2024 Theengs")])]},proxy:!0}])},[t("h1",{attrs:{id:"theengs-ble-mobile-application"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#theengs-ble-mobile-application"}},[e._v("#")]),e._v(" Theengs BLE mobile application")]),e._v(" "),t("h2",{attrs:{id:"🌟-local-smart-sensor-integration-🌟"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🌟-local-smart-sensor-integration-🌟"}},[e._v("#")]),e._v(" 🌟 Local Smart Sensor Integration 🌟")]),e._v(" "),t("p",[e._v("Theengs App seamlessly reads a wide array of Bluetooth Low Energy (BLE) sensors, gathering real-time data on environmental parameters such as temperature, humidity, moisture, etc. It displays these readings intuitively and enables integration with your Smart Home setup via MQTT. Compatible with platforms like Home Assistant, Theengs App is a vendor-agnostic reader of "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("your sensors"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:r(275),alt:"Iot"}})]),e._v(" "),t("h2",{attrs:{id:"🔥-elevate-your-grilling-game"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🔥-elevate-your-grilling-game"}},[e._v("#")]),e._v(" 🔥 Elevate Your Grilling Game")]),e._v(" "),t("p",[e._v("Theengs App now offers a dedicated live monitoring feature for BBQ enthusiasts. Track your cooking with a dynamic chart that displays temperature trends in real time. Set personalized thresholds for different cooking stages and receive instant notifications based on these criteria. Whether you prefer your meat rare, medium, or well-done, Theengs App ensures your grilling is done to perfection.")]),e._v(" "),t("div",{staticStyle:{"text-align":"center"}},[t("p",[t("img",{attrs:{src:r(276),alt:"live bbq monitoring"}})])]),e._v(" "),t("h2",{attrs:{id:"🔒respecting-your-privacy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🔒respecting-your-privacy"}},[e._v("#")]),e._v(" 🔒Respecting Your Privacy")]),e._v(" "),t("p",[e._v("With Theengs App, your data stays local by default. For more details, please refer to our "),t("a",{attrs:{href:"https://app.theengs.io/use/privacy.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("privacy policy"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"🏡-take-control-with-smart-home-integration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🏡-take-control-with-smart-home-integration"}},[e._v("#")]),e._v(" 🏡 Take control with Smart Home Integration")]),e._v(" "),t("p",[e._v("Theengs App syncs with platforms like Home Assistant via MQTT. Record sensor data on your preferred server - your home, your choice.")]),e._v(" "),t("h2",{attrs:{id:"📲-choose-your-platform-and-download-now"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#📲-choose-your-platform-and-download-now"}},[e._v("#")]),e._v(" 📲 Choose Your Platform and Download Now")]),e._v(" "),t("br"),e._v(" "),t("br"),e._v(" "),t("center",[t("a",{staticStyle:{display:"inline-block",overflow:"hidden","border-radius":"13px",width:"250px",height:"83px"},attrs:{href:"https://apps.apple.com/us/app/theengs-ble/id6443457651?itsct=apps_box_badge&itscg=30200"}},[t("img",{staticStyle:{"border-radius":"13px",width:"250px",height:"83px"},attrs:{src:"https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250x83&releaseDate=1667088000&h=c822551038086181cfac2a32c96cd47e",alt:"Download on the App Store"}})])]),e._v(" "),t("center",[t("a",{attrs:{href:"https://play.google.com/store/apps/details?id=com.theengs.app&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1"}},[t("img",{attrs:{alt:"Get it on Google Play",src:"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png",width:"300px/"}})])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("The Theengs app reads data that is 'broadcasted' by devices, operating primarily in a passive mode without direct connections, except for Mi Flora and ThermoBeacon, where historical data is accessed through a connection. For all other devices, the app captures data as it is emitted by the sensors.")]),e._v(" "),t("p",[e._v("BBQ Live monitoring and notifications require the app to be active on the sensor screen.")])]),e._v(" "),t("h3",{attrs:{id:"features-comparison-between-operating-systems"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#features-comparison-between-operating-systems"}},[e._v("#")]),e._v(" Features comparison between Operating Systems")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",{staticStyle:{"text-align":"center"}},[e._v("OS")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("Real time data")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("BBQ monitoring")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("MQTT integration")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("Running in background")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("Home Assistant Auto Discovery")])])]),e._v(" "),t("tbody",[t("tr",[t("td",{staticStyle:{"text-align":"center"}},[e._v("iOS")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}}),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")])]),e._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[e._v("Android")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️ "),t("em",[e._v("experimental")])]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")])])])]),e._v(" "),t("p",[t("strong",[e._v("Theengs app")]),e._v(" can be used as a standalone solution or as a complementary solution to "),t("a",{attrs:{href:"https://docs.openmqttgateway.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenMQTTGateway"),t("OutboundLink")],1),e._v(" and/or "),t("a",{attrs:{href:"https://gateway.theengs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs gateway"),t("OutboundLink")],1),e._v(" if you want a continuously running gateway.")]),e._v(" "),t("h3",{attrs:{id:"third-party-projects-used-by-theengs-app"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#third-party-projects-used-by-theengs-app"}},[e._v("#")]),e._v(" Third party projects used by Theengs app")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://www.qt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Qt"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/lgpl-3.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("LGPL 3"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.qt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("QtMqtt"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/gpl-3.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPL 3"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://arduinojson.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Arduino Json"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://decoder.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Decoder"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/gpl-3.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPL 3"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/jpnurmi/statusbar",target:"_blank",rel:"noopener noreferrer"}},[e._v("StatusBar"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/ekke/ekkesSHAREexample",target:"_blank",rel:"noopener noreferrer"}},[e._v("ekkesSHAREexample"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://github.com/ekke/ekkesSHAREexample/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("license"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/itay-grudev/SingleApplication",target:"_blank",rel:"noopener noreferrer"}},[e._v("SingleApplication"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("RC4 code from Christophe Devine ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPL 2"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("Graphical resources: "),t("a",{attrs:{href:"assets/COPYING"}},[e._v("assets/COPYING")])])]),e._v(" "),t("h3",{attrs:{id:"acknowledgements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#acknowledgements"}},[e._v("#")]),e._v(" Acknowledgements")]),e._v(" "),t("p",[t("em",[e._v("App Store and Apple logo are registered trademarks of Apple Inc.")])]),e._v(" "),t("p",[t("em",[e._v("Google Play and the Google Play logo are trademarks of Google LLC.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.")])])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{275:function(e,t,r){e.exports=r.p+"assets/img/Theengs-app-home-reduced-1280.7d1c466e.png"},276:function(e,t,r){e.exports=r.p+"assets/img/Theengs-app-live.5ce183d5.png"},297:function(e,t,r){"use strict";r.r(t);var a=r(14),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey},scopedSlots:e._u([{key:"footer",fn:function(){return[t("p",[t("a",{attrs:{href:"https://github.com/theengs/home/blob/main/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPLv3 Licensed"),t("OutboundLink")],1),e._v(" | Copyright © 2024 Theengs")])]},proxy:!0}])},[t("h1",{attrs:{id:"theengs-ble-mobile-application"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#theengs-ble-mobile-application"}},[e._v("#")]),e._v(" Theengs BLE mobile application")]),e._v(" "),t("h2",{attrs:{id:"🌟-local-smart-sensor-integration-🌟"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🌟-local-smart-sensor-integration-🌟"}},[e._v("#")]),e._v(" 🌟 Local Smart Sensor Integration 🌟")]),e._v(" "),t("p",[e._v("Theengs App seamlessly reads a wide array of Bluetooth Low Energy (BLE) sensors, gathering real-time data on environmental parameters such as temperature, humidity, moisture, etc. It displays these readings intuitively and enables integration with your Smart Home setup via MQTT. Compatible with platforms like Home Assistant, Theengs App is a vendor-agnostic reader of "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("your sensors"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:r(275),alt:"Iot"}})]),e._v(" "),t("h2",{attrs:{id:"🔥-elevate-your-grilling-game"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🔥-elevate-your-grilling-game"}},[e._v("#")]),e._v(" 🔥 Elevate Your Grilling Game")]),e._v(" "),t("p",[e._v("Theengs App now offers a dedicated live monitoring feature for BBQ enthusiasts. Track your cooking with a dynamic chart that displays temperature trends in real time. Set personalized thresholds for different cooking stages and receive instant notifications based on these criteria. Whether you prefer your meat rare, medium, or well-done, Theengs App ensures your grilling is done to perfection.")]),e._v(" "),t("div",{staticStyle:{"text-align":"center"}},[t("p",[t("img",{attrs:{src:r(276),alt:"live bbq monitoring"}})])]),e._v(" "),t("h2",{attrs:{id:"🔒respecting-your-privacy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🔒respecting-your-privacy"}},[e._v("#")]),e._v(" 🔒Respecting Your Privacy")]),e._v(" "),t("p",[e._v("With Theengs App, your data stays local by default. For more details, please refer to our "),t("a",{attrs:{href:"https://app.theengs.io/use/privacy.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("privacy policy"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"🏡-take-control-with-smart-home-integration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🏡-take-control-with-smart-home-integration"}},[e._v("#")]),e._v(" 🏡 Take control with Smart Home Integration")]),e._v(" "),t("p",[e._v("Theengs App syncs with platforms like Home Assistant via MQTT. Record sensor data on your preferred server - your home, your choice.")]),e._v(" "),t("h2",{attrs:{id:"📲-choose-your-platform-and-download-now"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#📲-choose-your-platform-and-download-now"}},[e._v("#")]),e._v(" 📲 Choose Your Platform and Download Now")]),e._v(" "),t("br"),e._v(" "),t("br"),e._v(" "),t("center",[t("a",{staticStyle:{display:"inline-block",overflow:"hidden","border-radius":"13px",width:"250px",height:"83px"},attrs:{href:"https://apps.apple.com/us/app/theengs-ble/id6443457651?itsct=apps_box_badge&itscg=30200"}},[t("img",{staticStyle:{"border-radius":"13px",width:"250px",height:"83px"},attrs:{src:"https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250x83&releaseDate=1667088000&h=c822551038086181cfac2a32c96cd47e",alt:"Download on the App Store"}})])]),e._v(" "),t("center",[t("a",{attrs:{href:"https://play.google.com/store/apps/details?id=com.theengs.app&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1"}},[t("img",{attrs:{alt:"Get it on Google Play",src:"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png",width:"300px/"}})])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("The Theengs app reads data that is 'broadcasted' by devices, operating primarily in a passive mode without direct connections, except for Mi Flora and ThermoBeacon, where historical data is accessed through a connection. For all other devices, the app captures data as it is emitted by the sensors.")]),e._v(" "),t("p",[e._v("BBQ Live monitoring and notifications require the app to be active on the sensor screen.")])]),e._v(" "),t("h3",{attrs:{id:"features-comparison-between-operating-systems"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#features-comparison-between-operating-systems"}},[e._v("#")]),e._v(" Features comparison between Operating Systems")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",{staticStyle:{"text-align":"center"}},[e._v("OS")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("Real time data")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("BBQ monitoring")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("MQTT integration")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("Running in background")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("Home Assistant Auto Discovery")])])]),e._v(" "),t("tbody",[t("tr",[t("td",{staticStyle:{"text-align":"center"}},[e._v("iOS")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}}),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")])]),e._v(" "),t("tr",[t("td",{staticStyle:{"text-align":"center"}},[e._v("Android")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️ "),t("em",[e._v("experimental")])]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("☑️")])])])]),e._v(" "),t("p",[t("strong",[e._v("Theengs app")]),e._v(" can be used as a standalone solution or as a complementary solution to "),t("a",{attrs:{href:"https://docs.openmqttgateway.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenMQTTGateway"),t("OutboundLink")],1),e._v(" and/or "),t("a",{attrs:{href:"https://gateway.theengs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs gateway"),t("OutboundLink")],1),e._v(" if you want a continuously running gateway.")]),e._v(" "),t("h3",{attrs:{id:"third-party-projects-used-by-theengs-app"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#third-party-projects-used-by-theengs-app"}},[e._v("#")]),e._v(" Third party projects used by Theengs app")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://www.qt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Qt"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/lgpl-3.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("LGPL 3"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.qt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("QtMqtt"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/gpl-3.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPL 3"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://arduinojson.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Arduino Json"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://decoder.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Decoder"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/gpl-3.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPL 3"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/jpnurmi/statusbar",target:"_blank",rel:"noopener noreferrer"}},[e._v("MobileUI"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/ekke/ekkesSHAREexample",target:"_blank",rel:"noopener noreferrer"}},[e._v("MobileSharing"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://github.com/ekke/ekkesSHAREexample/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("license"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/itay-grudev/SingleApplication",target:"_blank",rel:"noopener noreferrer"}},[e._v("SingleApplication"),t("OutboundLink")],1),e._v(" ("),t("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("RC4 code from Christophe Devine ("),t("a",{attrs:{href:"https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt",target:"_blank",rel:"noopener noreferrer"}},[e._v("GPL 2"),t("OutboundLink")],1),e._v(")")])]),e._v(" "),t("h3",{attrs:{id:"acknowledgements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#acknowledgements"}},[e._v("#")]),e._v(" Acknowledgements")]),e._v(" "),t("p",[t("em",[e._v("App Store and Apple logo are registered trademarks of Apple Inc.")])]),e._v(" "),t("p",[t("em",[e._v("Google Play and the Google Play logo are trademarks of Google LLC.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.")])])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.e7256baa.js b/assets/js/app.97254858.js similarity index 98% rename from assets/js/app.e7256baa.js rename to assets/js/app.97254858.js index 864c3c8..9a39be9 100644 --- a/assets/js/app.e7256baa.js +++ b/assets/js/app.97254858.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],c=e[1],u=e[2],f=0,p=[];f
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var c=n.render(!e),u=c.querySelector(r.barSelector),l=r.speed,f=r.easing;return c.offsetWidth,a((function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,function(t,e,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(t)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(t)+"%,0)"}:{"margin-left":i(t)+"%"}).transition="all "+e+"ms "+n,o}(t,l,f)),1===t?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){s(c,{transition:"all "+l+"ms linear",opacity:0}),setTimeout((function(){n.remove(),e()}),l)}),l)):setTimeout(e,l)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout((function(){n.status&&(n.trickle(),t())}),r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===e&&n.start(),t++,e++,r.always((function(){0==--e?(t=0,n.done()):n.set((t-e)/t)})),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),c=t?"-100":i(n.status||0),l=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),l!=document.body&&u(l,"nprogress-custom-parent"),l.appendChild(e),e},n.remove=function(){l(document.documentElement,"nprogress-busy"),l(document.querySelector(r.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&p(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),s=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function c(t,e){return("string"==typeof t?t:f(t)).indexOf(" "+e+" ")>=0}function u(t,e){var n=f(t),r=n+e;c(n,e)||(t.className=r.substring(1))}function l(t,e){var n,r=f(t);c(t,e)&&(n=r.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function f(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e,n){var r=n(1),o=n(44).f,i=n(16),a=n(105),s=n(31),c=n(62),u=n(121);t.exports=function(t,e){var n,l,f,p,d,h=t.target,v=t.global,m=t.stat;if(n=v?r:m?r[h]||s(h,{}):(r[h]||{}).prototype)for(l in e){if(p=e[l],f=t.dontCallGetSet?(d=o(n,l))&&d.value:n[l],!u(v?l:h+(m?".":"#")+l,t.forced)&&void 0!==f){if(typeof p==typeof f)continue;c(p,f)}(t.sham||f&&f.sham)&&i(p,"sham",!0),a(n,l,p,t)}}},function(t,e,n){var r=n(26),o=Function.prototype.call;t.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},function(t,e,n){var r=n(2);t.exports=!r((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(45),o=n(47);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(1),o=n(57),i=n(7),a=n(59),s=n(54),c=n(53),u=o("wks"),l=r.Symbol,f=l&&l.for,p=c?l:l&&l.withoutSetter||a;t.exports=function(t){if(!i(u,t)||!s&&"string"!=typeof u[t]){var e="Symbol."+t;s&&i(l,t)?u[t]=l[t]:u[t]=c&&f?f(e):p(e)}return u[t]}},function(t,e,n){var r=n(1),o=n(31),i=r["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},function(t,e,n){var r=n(1),o=Object.defineProperty;t.exports=function(t,e){try{o(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},function(t,e,n){var r=n(47),o=Object;t.exports=function(t){return o(r(t))}},function(t,e,n){var r=n(8),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw i(o(t)+" is not an object")}},function(t,e,n){var r=n(118);t.exports=function(t){return r(t.length)}},function(t,e,n){var r=n(143),o=n(10),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(t){return o(t)&&a.call(t,"callee")&&!s.call(t,"callee")};t.exports=c},function(t,e,n){var r=n(9)(n(6),"Map");t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(163),o=n(170),i=n(172),a=n(173),s=n(174);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){var r=n(3),o=n(42),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!o(t))||(a.test(t)||!i.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(11),o=n(10);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){var r=n(4),o=n(25),i=n(97),a=n(27),s=n(28),c=n(49),u=n(7),l=n(60),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=s(t),e=c(e),l)try{return f(t,e)}catch(t){}if(u(t,e))return a(!o(i.f,t,e),t[e])}},function(t,e,n){var r=n(5),o=n(2),i=n(12),a=Object,s=r("".split);t.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?s(t,""):a(t)}:a},function(t,e,n){var r=n(26),o=Function.prototype,i=o.call,a=r&&o.bind.bind(i,i);t.exports=r?a:function(t){return function(){return i.apply(t,arguments)}}},function(t,e,n){var r=n(48),o=TypeError;t.exports=function(t){if(r(t))throw o("Can't call method on "+t);return t}},function(t,e){t.exports=function(t){return null==t}},function(t,e,n){var r=n(98),o=n(51);t.exports=function(t){var e=r(t,"string");return o(e)?e:e+""}},function(t,e){var n="object"==typeof document&&document.all,r=void 0===n&&void 0!==n;t.exports={all:n,IS_HTMLDDA:r}},function(t,e,n){var r=n(15),o=n(0),i=n(52),a=n(53),s=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return o(e)&&i(e.prototype,s(t))}},function(t,e,n){var r=n(5);t.exports=r({}.isPrototypeOf)},function(t,e,n){var r=n(54);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,n){var r=n(55),o=n(2);t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(t,e,n){var r,o,i=n(1),a=n(99),s=i.process,c=i.Deno,u=s&&s.versions||c&&c.version,l=u&&u.v8;l&&(o=(r=l.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),t.exports=o},function(t,e,n){var r=n(0),o=n(101),i=TypeError;t.exports=function(t){if(r(t))return t;throw i(o(t)+" is not a function")}},function(t,e,n){var r=n(58),o=n(30);(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.26.0",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.0/LICENSE",source:"https://github.com/zloirock/core-js"})},function(t,e){t.exports=!1},function(t,e,n){var r=n(5),o=0,i=Math.random(),a=r(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++o+i,36)}},function(t,e,n){var r=n(4),o=n(2),i=n(103);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,e){t.exports={}},function(t,e,n){var r=n(7),o=n(112),i=n(44),a=n(17);t.exports=function(t,e,n){for(var s=o(e),c=a.f,u=i.f,l=0;ll))return!1;var p=c.get(t),d=c.get(e);if(p&&d)return p==e&&d==t;var h=-1,v=!0,m=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++h-1&&t%1==0&&t=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return a(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function m(t){return null==t?"":Array.isArray(t)||p(t)&&t.toString===f?JSON.stringify(t,null,2):String(t)}function y(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function w(t,e){return x.call(t,e)}function O(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var $=/-(\w)/g,C=O((function(t){return t.replace($,(function(t,e){return e?e.toUpperCase():""}))})),S=O((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,j=O((function(t){return t.replace(k,"-$1").toLowerCase()}));var T=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function E(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function A(t){for(var e={},n=0;n0,Q=X&&X.indexOf("edge/")>0;X&&X.indexOf("android");var Z=X&&/iphone|ipad|ipod|ios/.test(X);X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X);var tt,et=X&&X.match(/firefox\/(\d+)/),nt={}.watch,rt=!1;if(K)try{var ot={};Object.defineProperty(ot,"passive",{get:function(){rt=!0}}),window.addEventListener("test-passive",null,ot)}catch(t){}var it=function(){return void 0===tt&&(tt=!K&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),tt},at=K&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function st(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,ut="undefined"!=typeof Symbol&&st(Symbol)&&"undefined"!=typeof Reflect&&st(Reflect.ownKeys);ct="undefined"!=typeof Set&&st(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var lt=null;function ft(t){void 0===t&&(t=null),t||lt&<._scope.off(),lt=t,t&&t._scope.on()}var pt=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),dt=function(t){void 0===t&&(t="");var e=new pt;return e.text=t,e.isComment=!0,e};function ht(t){return new pt(void 0,void 0,void 0,String(t))}function vt(t){var e=new pt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var mt=0,yt=[],gt=function(){function t(){this._pending=!1,this.id=mt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,yt.push(this))},t.prototype.depend=function(e){t.target&&t.target.addDep(this)},t.prototype.notify=function(t){var e=this.subs.filter((function(t){return t}));for(var n=0,r=e.length;n0&&(Gt((u=t(u,"".concat(n||"","_").concat(r)))[0])&&Gt(f)&&(p[l]=ht(f.text+u[0].text),u.shift()),p.push.apply(p,u)):c(u)?Gt(f)?p[l]=ht(f.text+u):""!==u&&p.push(ht(u)):Gt(u)&&Gt(f)?p[l]=ht(f.text+u.text):(s(e._isVList)&&a(u.tag)&&i(u.key)&&a(n)&&(u.key="__vlist".concat(n,"_").concat(r,"__")),p.push(u)));return p}(t):void 0}function Gt(t){return a(t)&&a(t.text)&&!1===t.isComment}function Jt(t,e){var n,r,i,s,c=null;if(o(t)||"string"==typeof t)for(c=new Array(t.length),n=0,r=t.length;n0,s=e?!!e.$stable:!a,c=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&o&&o!==r&&c===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},e)e[u]&&"$"!==u[0]&&(i[u]=me(t,n,u,e[u]))}else i={};for(var l in n)l in i||(i[l]=ye(n,l));return e&&Object.isExtensible(e)&&(e._normalized=i),H(i,"$stable",s),H(i,"$key",c),H(i,"$hasNormal",a),i}function me(t,e,n,r){var i=function(){var e=lt;ft(t);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Xt(n))&&n[0];return ft(e),n&&(!i||1===n.length&&i.isComment&&!he(i))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:i,enumerable:!0,configurable:!0}),i}function ye(t,e){return function(){return t[e]}}function ge(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};H(e,"_v_attr_proxy",!0),be(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){t._listenersProxy||be(t._listenersProxy={},t.$listeners,r,t,"$listeners");return t._listenersProxy},get slots(){return function(t){t._slotsProxy||xe(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(t)},emit:T(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return Bt(t,e,n)}))}}}function be(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,_e(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function _e(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function xe(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}var we=null;function Oe(t,e){return(t.__esModule||ut&&"Module"===t[Symbol.toStringTag])&&(t=t.default),l(t)?e.extend(t):t}function $e(t){if(o(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(un=function(){return ln.now()})}var fn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function pn(){var t,e;for(cn=un(),an=!0,en.sort(fn),sn=0;snsn&&en[n].id>t.id;)n--;en.splice(n+1,0,t)}else en.push(t);on||(on=!0,Ne(pn))}}function hn(t,e){if(t){for(var n=Object.create(null),r=ut?Reflect.ownKeys(t):Object.keys(t),o=0;o-1)if(i&&!w(o,"default"))a=!1;else if(""===a||a===j(t)){var c=In(String,o.type);(c<0||s-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Jn(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=a.name;s&&!e(s)&&Qn(n,i,r,o)}}}function Qn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Yn.prototype._init=function(t){var e=this;e._uid=Hn++,e._isVue=!0,e.__v_skip=!0,e._scope=new zt(!0),e._scope._vm=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=En(Wn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=pe(e._renderChildren,o),t.$scopedSlots=n?ve(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,o){return Ce(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Ce(t,e,n,r,o,!0)};var i=n&&n.data;Rt(t,"$attrs",i&&i.attrs||r,null,!0),Rt(t,"$listeners",e._parentListeners||r,null,!0)}(e),tn(e,"beforeCreate",void 0,!1),function(t){var e=hn(t.$options.inject,t);e&&(Pt(!1),Object.keys(e).forEach((function(n){Rt(t,n,e[n])})),Pt(!0))}(e),Nn(e),function(t){var e=t.$options.provide;if(e){var n=u(e)?e.call(t):e;if(!l(n))return;for(var r=qt(t),o=ut?Reflect.ownKeys(n):Object.keys(n),i=0;i1?E(n):n;for(var r=E(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;iparseInt(this.max)&&Qn(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Qn(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Jn(t,(function(t){return Gn(e,t)}))})),this.$watch("exclude",(function(e){Jn(t,(function(t){return!Gn(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=$e(t),n=e&&e.componentOptions;if(n){var r=Xn(n),o=this.include,i=this.exclude;if(o&&(!r||!Gn(o,r))||i&&r&&Gn(i,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,_(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return z}};Object.defineProperty(t,"config",e),t.util={warn:On,extend:P,mergeOptions:En,defineReactive:Rt},t.set=It,t.delete=Dt,t.nextTick=Ne,t.observable=function(t){return Mt(t),t},t.options=Object.create(null),B.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,P(t.options.components,tr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=E(arguments,1);return n.unshift(this),u(t.install)?t.install.apply(t,n):u(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=En(this.options,t),this}}(t),Kn(t),function(t){B.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&u(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Yn),Object.defineProperty(Yn.prototype,"$isServer",{get:it}),Object.defineProperty(Yn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Yn,"FunctionalRenderContext",{value:vn}),Yn.version="2.7.13";var er=g("style,class"),nr=g("input,textarea,option,select,progress"),rr=g("contenteditable,draggable,spellcheck"),or=g("events,caret,typing,plaintext-only"),ir=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},cr=function(t){return sr(t)?t.slice(6,t.length):""},ur=function(t){return null==t||!1===t};function lr(t){for(var e=t.data,n=t,r=t;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=fr(r.data,e));for(;a(n=n.parent);)n&&n.data&&(e=fr(e,n.data));return function(t,e){if(a(t)||a(e))return pr(t,dr(e));return""}(e.staticClass,e.class)}function fr(t,e){return{staticClass:pr(t.staticClass,e.staticClass),class:a(t.class)?[t.class,e.class]:e.class}}function pr(t,e){return t?e?t+" "+e:t:e||""}function dr(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?Dr(t,e,n):ir(e)?ur(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):rr(e)?t.setAttribute(e,function(t,e){return ur(e)||"false"===e?"false":"contenteditable"===t&&or(e)?e:"true"}(e,n)):sr(e)?ur(n)?t.removeAttributeNS(ar,cr(e)):t.setAttributeNS(ar,e,n):Dr(t,e,n)}function Dr(t,e,n){if(ur(n))t.removeAttribute(e);else{if(G&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Ur={create:Rr,update:Rr};function Nr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=lr(e),c=n._transitionClasses;a(c)&&(s=pr(s,dr(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Br,Fr={create:Nr,update:Nr};function zr(t,e,n){var r=Br;return function o(){var i=e.apply(null,arguments);null!==i&&Hr(t,o,n,r)}}var qr=Pe&&!(et&&Number(et[1])<=53);function Vr(t,e,n,r){if(qr){var o=cn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Br.addEventListener(t,e,rt?{capture:n,passive:r}:n)}function Hr(t,e,n,r){(r||Br).removeEventListener(t,e._wrapper||e,n)}function Wr(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Br=e.elm||t.elm,function(t){if(a(t.__r)){var e=G?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}a(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),Wt(n,r,Vr,Hr,zr,e.context),Br=void 0}}var Yr,Kr={create:Wr,update:Wr,destroy:function(t){return Wr(t,$r)}};function Xr(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,o=e.elm,c=t.data.domProps||{},u=e.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=e.data.domProps=P({},u)),c)n in u||(o[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===c[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var l=i(r)?"":String(r);Gr(o,l)&&(o.value=l)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Yr=Yr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Yr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==c[n])try{o[n]=r}catch(t){}}}}function Gr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(a(r)){if(r.number)return y(n)!==y(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Jr={create:Xr,update:Xr},Qr=O((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Zr(t){var e=to(t.style);return t.staticStyle?P(t.staticStyle,e):e}function to(t){return Array.isArray(t)?A(t):"string"==typeof t?Qr(t):t}var eo,no=/^--/,ro=/\s*!important$/,oo=function(t,e,n){if(no.test(e))t.style.setProperty(e,n);else if(ro.test(n))t.style.setProperty(j(e),n.replace(ro,""),"important");else{var r=ao(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(uo).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function fo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(uo).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function po(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&P(e,ho(t.name||"v")),P(e,t),e}return"string"==typeof t?ho(t):void 0}}var ho=O((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),vo=K&&!J,mo="transition",yo="transitionend",go="animation",bo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",yo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(go="WebkitAnimation",bo="webkitAnimationEnd"));var _o=K?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function xo(t){_o((function(){_o(t)}))}function wo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),lo(t,e))}function Oo(t,e){t._transitionClasses&&_(t._transitionClasses,e),fo(t,e)}function $o(t,e,n){var r=So(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?yo:bo,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n="transition",l=a,f=i.length):"animation"===e?u>0&&(n="animation",l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===n?i.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:"transition"===n&&Co.test(r[mo+"Property"])}}function ko(t,e){for(;t.length1}function Lo(t,e){!0!==e.data.show&&To(e)}var Mo=function(t){var e,n,r={},u=t.modules,l=t.nodeOps;for(e=0;eh?_(t,i(n[y+1])?null:n[y+1].elm,n,d,y,r):d>y&&w(e,f,h)}(f,v,y,n,u):a(y)?(a(t.text)&&l.setTextContent(f,""),_(f,null,y,0,y.length-1,n)):a(v)?w(v,0,v.length-1):a(t.text)&&l.setTextContent(f,""):t.text!==e.text&&l.setTextContent(f,e.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(t,e)}}}function S(t,e,n){if(s(n)&&a(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(I(No(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Uo(t,e){return e.every((function(e){return!I(e,t)}))}function No(t){return"_value"in t?t._value:t.value}function Bo(t){t.target.composing=!0}function Fo(t){t.target.composing&&(t.target.composing=!1,zo(t.target,"input"))}function zo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function qo(t){return!t.componentInstance||t.data&&t.data.transition?t:qo(t.componentInstance._vnode)}var Vo={model:Ro,show:{bind:function(t,e,n){var r=e.value,o=(n=qo(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,To(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=qo(n)).data&&n.data.transition?(n.data.show=!0,r?To(n,(function(){t.style.display=t.__vOriginalDisplay})):Eo(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},Ho={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Wo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Wo($e(e.children)):t}function Yo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[C(r)]=o[r];return e}function Ko(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Xo=function(t){return t.tag||he(t)},Go=function(t){return"show"===t.name},Jo={name:"transition",props:Ho,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Xo)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Wo(o);if(!i)return o;if(this._leaving)return Ko(t,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:c(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Yo(this),u=this._vnode,l=Wo(u);if(i.data.directives&&i.data.directives.some(Go)&&(i.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,l)&&!he(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=P({},s);if("out-in"===r)return this._leaving=!0,Yt(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ko(t,o);if("in-out"===r){if(he(i))return u;var p,d=function(){p()};Yt(s,"afterEnter",d),Yt(s,"enterCancelled",d),Yt(f,"delayLeave",(function(t){p=t}))}}return o}}},Qo=P({tag:String,moveClass:String},Ho);function Zo(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ti(t){t.data.newPos=t.elm.getBoundingClientRect()}function ei(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Qo.mode;var ni={Transition:Jo,TransitionGroup:{props:Qo,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Je(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Yo(this),s=0;s-1?gr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:gr[t]=/HTMLUnknownElement/.test(e.toString())},P(Yn.options.directives,Vo),P(Yn.options.components,ni),Yn.prototype.__patch__=K?Mo:L,Yn.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=dt),tn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new He(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&tn(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),u=e&&e.path||"/",l=c.path?Oi(c.path,u,n||o.append):u,f=function(t,e,n){void 0===e&&(e={});var r,o=n||li;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(ui):ui(a)}return r}(c.query,o.query,r&&r.options.parseQuery),p=o.hash||c.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:l,query:f,hash:p}}var Vi,Hi=function(){},Wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,c={},u=n.options.linkActiveClass,l=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==l?"router-link-exact-active":l,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?di(null,qi(a.redirectedFrom),null,n):a;c[h]=gi(r,v,this.exactPath),c[d]=this.exact||this.exactPath?c[h]:function(t,e){return 0===t.path.replace(pi,"/").indexOf(e.path.replace(pi,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=c[h]?this.ariaCurrentValue:null,y=function(t){Yi(t)&&(e.replace?n.replace(i,Hi):n.push(i,Hi))},g={click:Yi};Array.isArray(this.event)?this.event.forEach((function(t){g[t]=y})):g[this.event]=y;var b={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:y,isActive:c[d],isExactActive:c[h]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)b.on=g,b.attrs={href:s,"aria-current":m};else{var x=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=zi(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d-1}function $a(t,e){return Oa(t)&&t._isRouter&&(null==e||t.type===e)}function Ca(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Sa(t){return function(e,n,r){var o=!1,i=0,a=null;ka(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,u=Ea((function(e){var o;((o=e).__esModule||Ta&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Vi.extend(e),n.components[s]=e,--i<=0&&r()})),l=Ea((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Oa(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(t){l(t)}if(c)if("function"==typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"==typeof f.then&&f.then(u,l)}}})),o||r()}}function ka(t,e){return ja(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function ja(t){return Array.prototype.concat.apply([],t)}var Ta="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ea(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Pa=function(t,e){this.router=t,this.base=function(t){if(!t)if(Ki){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=vi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Aa(t,e,n,r){var o=ka(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=Vi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return ja(r?o.reverse():o)}function La(t,e){if(e)return function(){return t.apply(e,arguments)}}Pa.prototype.listen=function(t){this.cb=t},Pa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Pa.prototype.onError=function(t){this.errorCbs.push(t)},Pa.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&($a(t,ga.redirected)&&i===vi||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Pa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,s=function(t){!$a(t)&&Oa(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},c=t.matched.length-1,u=o.matched.length-1;if(gi(t,o)&&c===u&&t.matched[c]===o.matched[u])return this.ensureURL(),t.hash&&aa(this.router,o,t,!1),s(((a=xa(i=o,t,ga.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var l=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=va&&n;r&&this.listeners.push(ia());var o=function(){var n=t.current,o=Ra(t.base);t.current===vi&&o===t._startLocation||t.transitionTo(o,(function(t){r&&aa(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ma($i(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ya($i(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Ra(this.base)!==this.current.fullPath){var e=$i(this.base+this.current.fullPath);t?ma(e):ya(e)}},e.prototype.getCurrentLocation=function(){return Ra(this.base)},e}(Pa);function Ra(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf($i(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ia=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Ra(t);if(!/^\/#/.test(e))return window.location.replace($i(t+"/#"+e)),!0}(this.base)||Da()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=va&&e;n&&this.listeners.push(ia());var r=function(){var e=t.current;Da()&&t.transitionTo(Ua(),(function(r){n&&aa(t.router,r,e,!0),va||Fa(r.fullPath)}))},o=va?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ba(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Fa(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ua()!==e&&(t?Ba(e):Fa(e))},e.prototype.getCurrentLocation=function(){return Ua()},e}(Pa);function Da(){var t=Ua();return"/"===t.charAt(0)||(Fa("/"+t),!1)}function Ua(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Na(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Ba(t){va?ma(Na(t)):window.location.hash=t}function Fa(t){va?ya(Na(t)):window.location.replace(Na(t))}var za=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){$a(t,ga.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Pa),qa=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ji(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!va&&!1!==t.fallback,this.fallback&&(e="hash"),Ki||(e="abstract"),this.mode=e,e){case"history":this.history=new Ma(this,t.base);break;case"hash":this.history=new Ia(this,t.base,this.fallback);break;case"abstract":this.history=new za(this,t.base);break;default:0}},Va={currentRoute:{configurable:!0}};qa.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Va.currentRoute.get=function(){return this.history&&this.history.current},qa.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof Ma||n instanceof Ia){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;va&&o&&"fullPath"in t&&aa(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},qa.prototype.beforeEach=function(t){return Wa(this.beforeHooks,t)},qa.prototype.beforeResolve=function(t){return Wa(this.resolveHooks,t)},qa.prototype.afterEach=function(t){return Wa(this.afterHooks,t)},qa.prototype.onReady=function(t,e){this.history.onReady(t,e)},qa.prototype.onError=function(t){this.history.onError(t)},qa.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},qa.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},qa.prototype.go=function(t){this.history.go(t)},qa.prototype.back=function(){this.go(-1)},qa.prototype.forward=function(){this.go(1)},qa.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},qa.prototype.resolve=function(t,e,n){var r=qi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?$i(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},qa.prototype.getRoutes=function(){return this.matcher.getRoutes()},qa.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},qa.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(qa.prototype,Va);var Ha=qa;function Wa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}qa.install=function t(e){if(!t.installed||Vi!==e){t.installed=!0,Vi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",xi),e.component("RouterLink",Wi);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},qa.version="3.6.5",qa.isNavigationFailure=$a,qa.NavigationFailureType=ga,qa.START_LOCATION=vi,Ki&&window.Vue&&window.Vue.use(qa);n(96);n(92),n(128);var Ya={NotFound:()=>n.e(9).then(n.bind(null,294)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,293))},Ka={"v-fc1d7a0c":()=>n.e(7).then(n.bind(null,297)),"v-6221a7be":()=>n.e(11).then(n.bind(null,298)),"v-62214341":()=>n.e(10).then(n.bind(null,299)),"v-96793b7e":()=>n.e(12).then(n.bind(null,300)),"v-2cf92021":()=>n.e(13).then(n.bind(null,301)),"v-200daea1":()=>n.e(14).then(n.bind(null,302)),"v-22ae4d01":()=>n.e(15).then(n.bind(null,303)),"v-055e6e31":()=>n.e(8).then(n.bind(null,304)),"v-a56a917e":()=>n.e(3).then(n.bind(null,305)),"v-dbe40a3e":()=>n.e(16).then(n.bind(null,306))};function Xa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Ga=/-(\w)/g,Ja=Xa(t=>t.replace(Ga,(t,e)=>e?e.toUpperCase():"")),Qa=/\B([A-Z])/g,Za=Xa(t=>t.replace(Qa,"-$1").toLowerCase()),ts=Xa(t=>t.charAt(0).toUpperCase()+t.slice(1));function es(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(ts(Ja(e))):t(ts(e))||t(Za(e))}const ns=Object.assign({},Ya,Ka),rs=t=>ns[t],os=t=>Ka[t],is=t=>Ya[t],as=t=>Yn.component(t);function ss(t){return es(os,t)}function cs(t){return es(is,t)}function us(t){return es(rs,t)}function ls(t){return es(as,t)}function fs(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!ls(t)&&us(t)){const e=await us(t)();Yn.component(t,e.default)}}))}function ps(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var ds=n(88),hs=n.n(ds),vs=n(89),ms=n.n(vs),ys={created(){if(this.siteMeta=this.$site.headTags.filter(([t])=>"meta"===t).map(([t,e])=>e),this.$ssrContext){const e=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(t=e)?t.map(t=>{let e="{e+=` ${n}="${ms()(t[n])}"`}),e+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var t},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.getMergedMetaTags();this.currentMetaTags=_s(t,this.currentMetaTags)},getMergedMetaTags(){const t=this.$page.frontmatter.meta||[];return hs()([{name:"description",content:this.$description}],t,this.siteMeta,xs)},updateCanonicalLink(){gs(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){_s(null,this.currentMetaTags),gs()}};function gs(){const t=document.querySelector("link[rel='canonical']");t&&t.remove()}function bs(t=""){return t?``:""}function _s(t,e){if(e&&[...e].filter(t=>t.parentNode===document.head).forEach(t=>document.head.removeChild(t)),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}function xs(t){for(const e of["name","property","itemprop"])if(t.hasOwnProperty(e))return t[e]+e;return JSON.stringify(t)}var ws=n(90),Os={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(ws)()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},$s=n(91),Cs=n.n($s),Ss={mounted(){Cs.a.polyfill()}},ks=n(23),js=n.n(ks),Ts=[ys,Os,Ss,{mounted(){js.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||Yn.component(t.name)||js.a.start(),n()}),this.$router.afterEach(()=>{js.a.done(),this.isSidebarOpen=!1})}}],Es={name:"GlobalLayout",computed:{layout(){const t=this.getLayout();return ps("layout",t),Yn.component(t)}},methods:{getLayout(){if(this.$page.path){const t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},Ps=n(14),As=Object(Ps.a)(Es,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(As,"mixins",Ts);const Ls=[{name:"v-fc1d7a0c",path:"/",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-fc1d7a0c").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-6221a7be",path:"/participate/adding-decoders.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-6221a7be").then(n)}},{name:"v-62214341",path:"/install/install.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-62214341").then(n)}},{name:"v-96793b7e",path:"/participate/build.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-96793b7e").then(n)}},{name:"v-2cf92021",path:"/participate/development.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2cf92021").then(n)}},{name:"v-200daea1",path:"/participate/support.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-200daea1").then(n)}},{name:"v-22ae4d01",path:"/prerequisites/devices.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-22ae4d01").then(n)}},{name:"v-055e6e31",path:"/prerequisites/controller.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-055e6e31").then(n)}},{name:"v-a56a917e",path:"/use/use.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-a56a917e").then(n)}},{name:"v-dbe40a3e",path:"/use/privacy.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-dbe40a3e").then(n)}},{path:"*",component:As}],Ms={title:"Theengs BLE App: Vendor agnostic sensor reader",description:"Explore Theengs: the open-source platform that bridges hundreds of sensors and smart devices into one interface. Compatible with major IoT platforms and home automation systems like AWS, OpenHAB, Home Assistant, and Jeedom, Theengs simplifies your smart home experience. It supports MQTT protocol, enabling efficient integration and automation of devices. Theengs enhances interoperability of your your smart home or IoT ecosystem.",base:"/",headTags:[["link",{rel:"apple-touch-icon",sizes:"180x180",href:".apple-touch-icon.png"}],["link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}],["link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}],["link",{rel:"manifest",href:"/manifest.json"}],["meta",{name:"theme-color",content:"#3eaf7c"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["meta",{name:"apple-mobile-web-app-status-bar-style",content:"black"}],["link",{rel:"mask-icon",href:"/icons/safari-pinned-tab.svg",color:"#3eaf7c"}],["meta",{name:"msapplication-TileImage",content:"/favicon-144x144.png"}],["meta",{name:"msapplication-TileColor",content:"#000000"}]],pages:[{title:"Theengs BLE mobile application",frontmatter:{title:"Theengs BLE mobile application"},regularPath:"/",relativePath:"README.md",key:"v-fc1d7a0c",path:"/",headers:[{level:2,title:"🌟 Local Smart Sensor Integration 🌟",slug:"🌟-local-smart-sensor-integration-🌟"},{level:2,title:"🔥 Elevate Your Grilling Game",slug:"🔥-elevate-your-grilling-game"},{level:2,title:"🔒Respecting Your Privacy",slug:"🔒respecting-your-privacy"},{level:2,title:"🏡 Take control with Smart Home Integration",slug:"🏡-take-control-with-smart-home-integration"},{level:2,title:"📲 Choose Your Platform and Download Now",slug:"📲-choose-your-platform-and-download-now"},{level:3,title:"Features comparison between Operating Systems",slug:"features-comparison-between-operating-systems"},{level:3,title:"Third party projects used by Theengs app",slug:"third-party-projects-used-by-theengs-app"},{level:3,title:"Acknowledgements",slug:"acknowledgements"}],lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Adding decoders",frontmatter:{},regularPath:"/participate/adding-decoders.html",relativePath:"participate/adding-decoders.md",key:"v-6221a7be",path:"/participate/adding-decoders.html",lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Install",frontmatter:{},regularPath:"/install/install.html",relativePath:"install/install.md",key:"v-62214341",path:"/install/install.html",headers:[{level:2,title:"Install from the store",slug:"install-from-the-store"}],lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Build",frontmatter:{},regularPath:"/participate/build.html",relativePath:"participate/build.md",key:"v-96793b7e",path:"/participate/build.html",headers:[{level:2,title:"Dependencies",slug:"dependencies"},{level:2,title:"Cloning Theengs",slug:"cloning-theengs"},{level:2,title:"Building dependencies (with the contribs.py script)",slug:"building-dependencies-with-the-contribs-py-script"},{level:2,title:"Building Theengs",slug:"building-theengs"}],lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Development contributions",frontmatter:{},regularPath:"/participate/development.html",relativePath:"participate/development.md",key:"v-2cf92021",path:"/participate/development.html",headers:[{level:2,title:"Developer Certificate Of Origin",slug:"developer-certificate-of-origin"}],lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Supporting the project",frontmatter:{},regularPath:"/participate/support.html",relativePath:"participate/support.md",key:"v-200daea1",path:"/participate/support.html",lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Devices supported",frontmatter:{pageClass:"table-generated-page"},regularPath:"/prerequisites/devices.html",relativePath:"prerequisites/devices.md",key:"v-22ae4d01",path:"/prerequisites/devices.html",lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"MQTT integration (option)",frontmatter:{},regularPath:"/prerequisites/controller.html",relativePath:"prerequisites/controller.md",key:"v-055e6e31",path:"/prerequisites/controller.html",headers:[{level:2,title:"Broker",slug:"broker"},{level:2,title:"Controller",slug:"controller"}],lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Use",frontmatter:{},regularPath:"/use/use.html",relativePath:"use/use.md",key:"v-a56a917e",path:"/use/use.html",headers:[{level:2,title:"Features comparison between Operating Systems",slug:"features-comparison-between-operating-systems"},{level:2,title:"Overview",slug:"overview"},{level:2,title:"Real time data",slug:"real-time-data"},{level:2,title:"Live BBQ monitoring",slug:"live-bbq-monitoring"},{level:3,title:"Introduction",slug:"introduction"},{level:3,title:"Compatible devices",slug:"compatible-devices"},{level:3,title:"Threshold settings",slug:"threshold-settings"},{level:3,title:"Live monitoring",slug:"live-monitoring"},{level:3,title:"Notifications",slug:"notifications"},{level:2,title:"MQTT integration",slug:"mqtt-integration"},{level:3,title:"iOS specificity",slug:"ios-specificity"},{level:3,title:"Home Assistant Auto Discovery",slug:"home-assistant-auto-discovery"},{level:2,title:"iOS permissions",slug:"ios-permissions"},{level:2,title:"Android permissions",slug:"android-permissions"},{level:3,title:"Android 8+",slug:"android-8"},{level:3,title:"Android 10+",slug:"android-10"}],lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3},{title:"Privacy policy",frontmatter:{},regularPath:"/use/privacy.html",relativePath:"use/privacy.md",key:"v-dbe40a3e",path:"/use/privacy.html",lastUpdated:"1/18/2024, 5:34:53 PM",lastUpdatedTimestamp:1705599293e3}],themeConfig:{repo:"theengs/app",smoothScroll:!0,search:!1,docsDir:"docs",docsBranch:"development",lastUpdated:"Last Updated",editLinks:!0,nav:[{text:"Home",link:"https://www.theengs.io",target:"_self",rel:""},{text:"Use cases",items:[{text:"Smart Home",link:"https://www.theengs.io/usecases/smarthome.html",target:"_self",rel:""},{text:"IoT",link:"https://www.theengs.io/usecases/iot.html",target:"_self",rel:""},{text:"Research",link:"https://www.theengs.io/usecases/research.html",target:"_self",rel:""}]},{text:"Solutions",items:[{text:"Hardware",items:[{text:"Theengs Plug",link:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_self",rel:""},{text:"Theengs Bridge",link:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_self",rel:""}]},{text:"Software",items:[{text:"Mobile App",link:"https://app.theengs.io",target:"_self",rel:""},{text:"OpenMQTTGateway",link:"https://docs.openmqttgateway.com",target:"_self",rel:""},{text:"Gateway",link:"https://gateway.theengs.io",target:"_self",rel:""}]},{text:"Core",items:[{text:"Decoder",link:"https://decoder.theengs.io",target:"_self",rel:""},{text:"Web Parser",link:"https://parser.theengs.io",target:"_self",rel:""}]}]},{text:"Compatible devices",link:"https://decoder.theengs.io/devices/devices.html",target:"_self",rel:""},{text:"Community",link:"https://community.openmqttgateway.com",target:"_self",rel:""},{text:"Shop",link:"https://shop.theengs.io/",target:"_self",rel:""},{text:"Sponsor 🤍",link:"https://github.com/sponsors/theengs",target:"_self",rel:""}],sidebar:[["/","0 - What is it for 🏠"],{title:"1 - Prerequisites🧭",children:["prerequisites/devices","prerequisites/controller"]},["/install/install","2 - Install ✔️"],{title:"3 - Use ✈️",children:["use/use","use/privacy"]},{title:"4 - Participate 💻",children:["participate/adding-decoders","participate/build","participate/support","participate/development"]}]}};n(234);Yn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,307))),Yn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,295))),Yn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,296)));n(235);function Rs(t){const e=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-e.left,y:n.top-e.top}}n(236);var Is=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},({Vue:t,router:e})=>{e.options.scrollBehavior=(e,n,r)=>{if(r)return window.scrollTo({top:r.y,behavior:"smooth"});if(e.hash){if(t.$vuepress.$get("disableScrollBehavior"))return!1;const n=document.querySelector(e.hash);return!!n&&window.scrollTo({top:Rs(n).y,behavior:"smooth"})}return window.scrollTo({top:0,behavior:"smooth"})}},{}],Ds=[];class Us extends class{constructor(){this.store=new Yn({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){Yn.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}{}Object.assign(Us.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:cs,getAsyncComponent:us,getVueComponent:ls});var Ns={install(t){const e=new Us;t.$vuepress=e,t.prototype.$vuepress=e}};function Bs(t,e){const n=e.toLowerCase();return t.options.routes.some(t=>t.path.toLowerCase()===n)}var Fs={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return ps("pageKey",e),Yn.component(e)||Yn.component(e,ss(e)),Yn.component(e)?t(e):t("")}},zs={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:["content__"+e.slotKey]},n()[e.slotKey])},qs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Vs=(n(237),n(238),Object(Ps.a)(qs,(function(){var t=this._self._c;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Hs={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};Yn.config.productionTip=!1,Yn.use(Ha),Yn.use(Ns),Yn.mixin(function(t,e,n=Yn){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:t}=this.$page.frontmatter;return"string"==typeof t&&t}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!Yn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(t.hash)}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(Bs(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Bs(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Bs(t,o)?r(o):Bs(t,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Is.filter(t=>"function"==typeof t).map(e=>e({Vue:Yn,options:r,router:n,siteData:Ms,isServer:t})))}catch(t){console.error(t)}return{app:new Yn(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},Ds.map(e=>t(e)))])})),router:n}}(!1).then(({app:t,router:e})=>{e.onReady(()=>{t.$mount("#app")})})}]); \ No newline at end of file +var r=Object.freeze({}),o=Array.isArray;function i(t){return null==t}function a(t){return null!=t}function s(t){return!0===t}function c(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function u(t){return"function"==typeof t}function l(t){return null!==t&&"object"==typeof t}var f=Object.prototype.toString;function p(t){return"[object Object]"===f.call(t)}function d(t){return"[object RegExp]"===f.call(t)}function h(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return a(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function m(t){return null==t?"":Array.isArray(t)||p(t)&&t.toString===f?JSON.stringify(t,null,2):String(t)}function y(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function w(t,e){return x.call(t,e)}function O(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var $=/-(\w)/g,C=O((function(t){return t.replace($,(function(t,e){return e?e.toUpperCase():""}))})),S=O((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,j=O((function(t){return t.replace(k,"-$1").toLowerCase()}));var T=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function E(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function A(t){for(var e={},n=0;n0,Q=X&&X.indexOf("edge/")>0;X&&X.indexOf("android");var Z=X&&/iphone|ipad|ipod|ios/.test(X);X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X);var tt,et=X&&X.match(/firefox\/(\d+)/),nt={}.watch,rt=!1;if(K)try{var ot={};Object.defineProperty(ot,"passive",{get:function(){rt=!0}}),window.addEventListener("test-passive",null,ot)}catch(t){}var it=function(){return void 0===tt&&(tt=!K&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),tt},at=K&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function st(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,ut="undefined"!=typeof Symbol&&st(Symbol)&&"undefined"!=typeof Reflect&&st(Reflect.ownKeys);ct="undefined"!=typeof Set&&st(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var lt=null;function ft(t){void 0===t&&(t=null),t||lt&<._scope.off(),lt=t,t&&t._scope.on()}var pt=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),dt=function(t){void 0===t&&(t="");var e=new pt;return e.text=t,e.isComment=!0,e};function ht(t){return new pt(void 0,void 0,void 0,String(t))}function vt(t){var e=new pt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var mt=0,yt=[],gt=function(){function t(){this._pending=!1,this.id=mt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,yt.push(this))},t.prototype.depend=function(e){t.target&&t.target.addDep(this)},t.prototype.notify=function(t){var e=this.subs.filter((function(t){return t}));for(var n=0,r=e.length;n0&&(Gt((u=t(u,"".concat(n||"","_").concat(r)))[0])&&Gt(f)&&(p[l]=ht(f.text+u[0].text),u.shift()),p.push.apply(p,u)):c(u)?Gt(f)?p[l]=ht(f.text+u):""!==u&&p.push(ht(u)):Gt(u)&&Gt(f)?p[l]=ht(f.text+u.text):(s(e._isVList)&&a(u.tag)&&i(u.key)&&a(n)&&(u.key="__vlist".concat(n,"_").concat(r,"__")),p.push(u)));return p}(t):void 0}function Gt(t){return a(t)&&a(t.text)&&!1===t.isComment}function Jt(t,e){var n,r,i,s,c=null;if(o(t)||"string"==typeof t)for(c=new Array(t.length),n=0,r=t.length;n0,s=e?!!e.$stable:!a,c=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&o&&o!==r&&c===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},e)e[u]&&"$"!==u[0]&&(i[u]=me(t,n,u,e[u]))}else i={};for(var l in n)l in i||(i[l]=ye(n,l));return e&&Object.isExtensible(e)&&(e._normalized=i),H(i,"$stable",s),H(i,"$key",c),H(i,"$hasNormal",a),i}function me(t,e,n,r){var i=function(){var e=lt;ft(t);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Xt(n))&&n[0];return ft(e),n&&(!i||1===n.length&&i.isComment&&!he(i))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:i,enumerable:!0,configurable:!0}),i}function ye(t,e){return function(){return t[e]}}function ge(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};H(e,"_v_attr_proxy",!0),be(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){t._listenersProxy||be(t._listenersProxy={},t.$listeners,r,t,"$listeners");return t._listenersProxy},get slots(){return function(t){t._slotsProxy||xe(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(t)},emit:T(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return Bt(t,e,n)}))}}}function be(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,_e(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function _e(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function xe(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}var we=null;function Oe(t,e){return(t.__esModule||ut&&"Module"===t[Symbol.toStringTag])&&(t=t.default),l(t)?e.extend(t):t}function $e(t){if(o(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(un=function(){return ln.now()})}var fn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function pn(){var t,e;for(cn=un(),an=!0,en.sort(fn),sn=0;snsn&&en[n].id>t.id;)n--;en.splice(n+1,0,t)}else en.push(t);on||(on=!0,Ne(pn))}}function hn(t,e){if(t){for(var n=Object.create(null),r=ut?Reflect.ownKeys(t):Object.keys(t),o=0;o-1)if(i&&!w(o,"default"))a=!1;else if(""===a||a===j(t)){var c=In(String,o.type);(c<0||s-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Jn(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=a.name;s&&!e(s)&&Qn(n,i,r,o)}}}function Qn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Yn.prototype._init=function(t){var e=this;e._uid=Hn++,e._isVue=!0,e.__v_skip=!0,e._scope=new zt(!0),e._scope._vm=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=En(Wn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=pe(e._renderChildren,o),t.$scopedSlots=n?ve(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,o){return Ce(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Ce(t,e,n,r,o,!0)};var i=n&&n.data;Rt(t,"$attrs",i&&i.attrs||r,null,!0),Rt(t,"$listeners",e._parentListeners||r,null,!0)}(e),tn(e,"beforeCreate",void 0,!1),function(t){var e=hn(t.$options.inject,t);e&&(Pt(!1),Object.keys(e).forEach((function(n){Rt(t,n,e[n])})),Pt(!0))}(e),Nn(e),function(t){var e=t.$options.provide;if(e){var n=u(e)?e.call(t):e;if(!l(n))return;for(var r=qt(t),o=ut?Reflect.ownKeys(n):Object.keys(n),i=0;i1?E(n):n;for(var r=E(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;iparseInt(this.max)&&Qn(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Qn(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Jn(t,(function(t){return Gn(e,t)}))})),this.$watch("exclude",(function(e){Jn(t,(function(t){return!Gn(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=$e(t),n=e&&e.componentOptions;if(n){var r=Xn(n),o=this.include,i=this.exclude;if(o&&(!r||!Gn(o,r))||i&&r&&Gn(i,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,_(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return z}};Object.defineProperty(t,"config",e),t.util={warn:On,extend:P,mergeOptions:En,defineReactive:Rt},t.set=It,t.delete=Dt,t.nextTick=Ne,t.observable=function(t){return Mt(t),t},t.options=Object.create(null),B.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,P(t.options.components,tr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=E(arguments,1);return n.unshift(this),u(t.install)?t.install.apply(t,n):u(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=En(this.options,t),this}}(t),Kn(t),function(t){B.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&u(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Yn),Object.defineProperty(Yn.prototype,"$isServer",{get:it}),Object.defineProperty(Yn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Yn,"FunctionalRenderContext",{value:vn}),Yn.version="2.7.13";var er=g("style,class"),nr=g("input,textarea,option,select,progress"),rr=g("contenteditable,draggable,spellcheck"),or=g("events,caret,typing,plaintext-only"),ir=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},cr=function(t){return sr(t)?t.slice(6,t.length):""},ur=function(t){return null==t||!1===t};function lr(t){for(var e=t.data,n=t,r=t;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=fr(r.data,e));for(;a(n=n.parent);)n&&n.data&&(e=fr(e,n.data));return function(t,e){if(a(t)||a(e))return pr(t,dr(e));return""}(e.staticClass,e.class)}function fr(t,e){return{staticClass:pr(t.staticClass,e.staticClass),class:a(t.class)?[t.class,e.class]:e.class}}function pr(t,e){return t?e?t+" "+e:t:e||""}function dr(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?Dr(t,e,n):ir(e)?ur(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):rr(e)?t.setAttribute(e,function(t,e){return ur(e)||"false"===e?"false":"contenteditable"===t&&or(e)?e:"true"}(e,n)):sr(e)?ur(n)?t.removeAttributeNS(ar,cr(e)):t.setAttributeNS(ar,e,n):Dr(t,e,n)}function Dr(t,e,n){if(ur(n))t.removeAttribute(e);else{if(G&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Ur={create:Rr,update:Rr};function Nr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=lr(e),c=n._transitionClasses;a(c)&&(s=pr(s,dr(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Br,Fr={create:Nr,update:Nr};function zr(t,e,n){var r=Br;return function o(){var i=e.apply(null,arguments);null!==i&&Hr(t,o,n,r)}}var qr=Pe&&!(et&&Number(et[1])<=53);function Vr(t,e,n,r){if(qr){var o=cn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Br.addEventListener(t,e,rt?{capture:n,passive:r}:n)}function Hr(t,e,n,r){(r||Br).removeEventListener(t,e._wrapper||e,n)}function Wr(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Br=e.elm||t.elm,function(t){if(a(t.__r)){var e=G?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}a(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),Wt(n,r,Vr,Hr,zr,e.context),Br=void 0}}var Yr,Kr={create:Wr,update:Wr,destroy:function(t){return Wr(t,$r)}};function Xr(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,o=e.elm,c=t.data.domProps||{},u=e.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=e.data.domProps=P({},u)),c)n in u||(o[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===c[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var l=i(r)?"":String(r);Gr(o,l)&&(o.value=l)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Yr=Yr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Yr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==c[n])try{o[n]=r}catch(t){}}}}function Gr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(a(r)){if(r.number)return y(n)!==y(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Jr={create:Xr,update:Xr},Qr=O((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Zr(t){var e=to(t.style);return t.staticStyle?P(t.staticStyle,e):e}function to(t){return Array.isArray(t)?A(t):"string"==typeof t?Qr(t):t}var eo,no=/^--/,ro=/\s*!important$/,oo=function(t,e,n){if(no.test(e))t.style.setProperty(e,n);else if(ro.test(n))t.style.setProperty(j(e),n.replace(ro,""),"important");else{var r=ao(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(uo).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function fo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(uo).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function po(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&P(e,ho(t.name||"v")),P(e,t),e}return"string"==typeof t?ho(t):void 0}}var ho=O((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),vo=K&&!J,mo="transition",yo="transitionend",go="animation",bo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",yo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(go="WebkitAnimation",bo="webkitAnimationEnd"));var _o=K?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function xo(t){_o((function(){_o(t)}))}function wo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),lo(t,e))}function Oo(t,e){t._transitionClasses&&_(t._transitionClasses,e),fo(t,e)}function $o(t,e,n){var r=So(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?yo:bo,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n="transition",l=a,f=i.length):"animation"===e?u>0&&(n="animation",l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===n?i.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:"transition"===n&&Co.test(r[mo+"Property"])}}function ko(t,e){for(;t.length1}function Lo(t,e){!0!==e.data.show&&To(e)}var Mo=function(t){var e,n,r={},u=t.modules,l=t.nodeOps;for(e=0;eh?_(t,i(n[y+1])?null:n[y+1].elm,n,d,y,r):d>y&&w(e,f,h)}(f,v,y,n,u):a(y)?(a(t.text)&&l.setTextContent(f,""),_(f,null,y,0,y.length-1,n)):a(v)?w(v,0,v.length-1):a(t.text)&&l.setTextContent(f,""):t.text!==e.text&&l.setTextContent(f,e.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(t,e)}}}function S(t,e,n){if(s(n)&&a(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(I(No(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Uo(t,e){return e.every((function(e){return!I(e,t)}))}function No(t){return"_value"in t?t._value:t.value}function Bo(t){t.target.composing=!0}function Fo(t){t.target.composing&&(t.target.composing=!1,zo(t.target,"input"))}function zo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function qo(t){return!t.componentInstance||t.data&&t.data.transition?t:qo(t.componentInstance._vnode)}var Vo={model:Ro,show:{bind:function(t,e,n){var r=e.value,o=(n=qo(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,To(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=qo(n)).data&&n.data.transition?(n.data.show=!0,r?To(n,(function(){t.style.display=t.__vOriginalDisplay})):Eo(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},Ho={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Wo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Wo($e(e.children)):t}function Yo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[C(r)]=o[r];return e}function Ko(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Xo=function(t){return t.tag||he(t)},Go=function(t){return"show"===t.name},Jo={name:"transition",props:Ho,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Xo)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Wo(o);if(!i)return o;if(this._leaving)return Ko(t,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:c(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Yo(this),u=this._vnode,l=Wo(u);if(i.data.directives&&i.data.directives.some(Go)&&(i.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,l)&&!he(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=P({},s);if("out-in"===r)return this._leaving=!0,Yt(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ko(t,o);if("in-out"===r){if(he(i))return u;var p,d=function(){p()};Yt(s,"afterEnter",d),Yt(s,"enterCancelled",d),Yt(f,"delayLeave",(function(t){p=t}))}}return o}}},Qo=P({tag:String,moveClass:String},Ho);function Zo(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ti(t){t.data.newPos=t.elm.getBoundingClientRect()}function ei(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Qo.mode;var ni={Transition:Jo,TransitionGroup:{props:Qo,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Je(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Yo(this),s=0;s-1?gr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:gr[t]=/HTMLUnknownElement/.test(e.toString())},P(Yn.options.directives,Vo),P(Yn.options.components,ni),Yn.prototype.__patch__=K?Mo:L,Yn.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=dt),tn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new He(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&tn(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),u=e&&e.path||"/",l=c.path?Oi(c.path,u,n||o.append):u,f=function(t,e,n){void 0===e&&(e={});var r,o=n||li;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(ui):ui(a)}return r}(c.query,o.query,r&&r.options.parseQuery),p=o.hash||c.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:l,query:f,hash:p}}var Vi,Hi=function(){},Wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,c={},u=n.options.linkActiveClass,l=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==l?"router-link-exact-active":l,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?di(null,qi(a.redirectedFrom),null,n):a;c[h]=gi(r,v,this.exactPath),c[d]=this.exact||this.exactPath?c[h]:function(t,e){return 0===t.path.replace(pi,"/").indexOf(e.path.replace(pi,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=c[h]?this.ariaCurrentValue:null,y=function(t){Yi(t)&&(e.replace?n.replace(i,Hi):n.push(i,Hi))},g={click:Yi};Array.isArray(this.event)?this.event.forEach((function(t){g[t]=y})):g[this.event]=y;var b={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:y,isActive:c[d],isExactActive:c[h]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)b.on=g,b.attrs={href:s,"aria-current":m};else{var x=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=zi(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d-1}function $a(t,e){return Oa(t)&&t._isRouter&&(null==e||t.type===e)}function Ca(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Sa(t){return function(e,n,r){var o=!1,i=0,a=null;ka(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,u=Ea((function(e){var o;((o=e).__esModule||Ta&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Vi.extend(e),n.components[s]=e,--i<=0&&r()})),l=Ea((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Oa(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(t){l(t)}if(c)if("function"==typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"==typeof f.then&&f.then(u,l)}}})),o||r()}}function ka(t,e){return ja(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function ja(t){return Array.prototype.concat.apply([],t)}var Ta="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ea(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Pa=function(t,e){this.router=t,this.base=function(t){if(!t)if(Ki){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=vi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Aa(t,e,n,r){var o=ka(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=Vi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return ja(r?o.reverse():o)}function La(t,e){if(e)return function(){return t.apply(e,arguments)}}Pa.prototype.listen=function(t){this.cb=t},Pa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Pa.prototype.onError=function(t){this.errorCbs.push(t)},Pa.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&($a(t,ga.redirected)&&i===vi||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Pa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,s=function(t){!$a(t)&&Oa(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},c=t.matched.length-1,u=o.matched.length-1;if(gi(t,o)&&c===u&&t.matched[c]===o.matched[u])return this.ensureURL(),t.hash&&aa(this.router,o,t,!1),s(((a=xa(i=o,t,ga.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var l=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=va&&n;r&&this.listeners.push(ia());var o=function(){var n=t.current,o=Ra(t.base);t.current===vi&&o===t._startLocation||t.transitionTo(o,(function(t){r&&aa(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ma($i(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ya($i(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Ra(this.base)!==this.current.fullPath){var e=$i(this.base+this.current.fullPath);t?ma(e):ya(e)}},e.prototype.getCurrentLocation=function(){return Ra(this.base)},e}(Pa);function Ra(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf($i(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ia=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Ra(t);if(!/^\/#/.test(e))return window.location.replace($i(t+"/#"+e)),!0}(this.base)||Da()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=va&&e;n&&this.listeners.push(ia());var r=function(){var e=t.current;Da()&&t.transitionTo(Ua(),(function(r){n&&aa(t.router,r,e,!0),va||Fa(r.fullPath)}))},o=va?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ba(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Fa(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ua()!==e&&(t?Ba(e):Fa(e))},e.prototype.getCurrentLocation=function(){return Ua()},e}(Pa);function Da(){var t=Ua();return"/"===t.charAt(0)||(Fa("/"+t),!1)}function Ua(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Na(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Ba(t){va?ma(Na(t)):window.location.hash=t}function Fa(t){va?ya(Na(t)):window.location.replace(Na(t))}var za=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){$a(t,ga.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Pa),qa=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ji(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!va&&!1!==t.fallback,this.fallback&&(e="hash"),Ki||(e="abstract"),this.mode=e,e){case"history":this.history=new Ma(this,t.base);break;case"hash":this.history=new Ia(this,t.base,this.fallback);break;case"abstract":this.history=new za(this,t.base);break;default:0}},Va={currentRoute:{configurable:!0}};qa.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Va.currentRoute.get=function(){return this.history&&this.history.current},qa.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof Ma||n instanceof Ia){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;va&&o&&"fullPath"in t&&aa(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},qa.prototype.beforeEach=function(t){return Wa(this.beforeHooks,t)},qa.prototype.beforeResolve=function(t){return Wa(this.resolveHooks,t)},qa.prototype.afterEach=function(t){return Wa(this.afterHooks,t)},qa.prototype.onReady=function(t,e){this.history.onReady(t,e)},qa.prototype.onError=function(t){this.history.onError(t)},qa.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},qa.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},qa.prototype.go=function(t){this.history.go(t)},qa.prototype.back=function(){this.go(-1)},qa.prototype.forward=function(){this.go(1)},qa.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},qa.prototype.resolve=function(t,e,n){var r=qi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?$i(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},qa.prototype.getRoutes=function(){return this.matcher.getRoutes()},qa.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},qa.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(qa.prototype,Va);var Ha=qa;function Wa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}qa.install=function t(e){if(!t.installed||Vi!==e){t.installed=!0,Vi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",xi),e.component("RouterLink",Wi);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},qa.version="3.6.5",qa.isNavigationFailure=$a,qa.NavigationFailureType=ga,qa.START_LOCATION=vi,Ki&&window.Vue&&window.Vue.use(qa);n(96);n(92),n(128);var Ya={NotFound:()=>n.e(9).then(n.bind(null,294)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,293))},Ka={"v-fc1d7a0c":()=>n.e(7).then(n.bind(null,297)),"v-6221a7be":()=>n.e(11).then(n.bind(null,298)),"v-62214341":()=>n.e(10).then(n.bind(null,299)),"v-96793b7e":()=>n.e(12).then(n.bind(null,300)),"v-2cf92021":()=>n.e(13).then(n.bind(null,301)),"v-200daea1":()=>n.e(14).then(n.bind(null,302)),"v-22ae4d01":()=>n.e(15).then(n.bind(null,303)),"v-055e6e31":()=>n.e(8).then(n.bind(null,304)),"v-dbe40a3e":()=>n.e(16).then(n.bind(null,305)),"v-a56a917e":()=>n.e(3).then(n.bind(null,306))};function Xa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Ga=/-(\w)/g,Ja=Xa(t=>t.replace(Ga,(t,e)=>e?e.toUpperCase():"")),Qa=/\B([A-Z])/g,Za=Xa(t=>t.replace(Qa,"-$1").toLowerCase()),ts=Xa(t=>t.charAt(0).toUpperCase()+t.slice(1));function es(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(ts(Ja(e))):t(ts(e))||t(Za(e))}const ns=Object.assign({},Ya,Ka),rs=t=>ns[t],os=t=>Ka[t],is=t=>Ya[t],as=t=>Yn.component(t);function ss(t){return es(os,t)}function cs(t){return es(is,t)}function us(t){return es(rs,t)}function ls(t){return es(as,t)}function fs(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!ls(t)&&us(t)){const e=await us(t)();Yn.component(t,e.default)}}))}function ps(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var ds=n(88),hs=n.n(ds),vs=n(89),ms=n.n(vs),ys={created(){if(this.siteMeta=this.$site.headTags.filter(([t])=>"meta"===t).map(([t,e])=>e),this.$ssrContext){const e=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(t=e)?t.map(t=>{let e="{e+=` ${n}="${ms()(t[n])}"`}),e+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var t},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.getMergedMetaTags();this.currentMetaTags=_s(t,this.currentMetaTags)},getMergedMetaTags(){const t=this.$page.frontmatter.meta||[];return hs()([{name:"description",content:this.$description}],t,this.siteMeta,xs)},updateCanonicalLink(){gs(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){_s(null,this.currentMetaTags),gs()}};function gs(){const t=document.querySelector("link[rel='canonical']");t&&t.remove()}function bs(t=""){return t?``:""}function _s(t,e){if(e&&[...e].filter(t=>t.parentNode===document.head).forEach(t=>document.head.removeChild(t)),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}function xs(t){for(const e of["name","property","itemprop"])if(t.hasOwnProperty(e))return t[e]+e;return JSON.stringify(t)}var ws=n(90),Os={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(ws)()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},$s=n(91),Cs=n.n($s),Ss={mounted(){Cs.a.polyfill()}},ks=n(23),js=n.n(ks),Ts=[ys,Os,Ss,{mounted(){js.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||Yn.component(t.name)||js.a.start(),n()}),this.$router.afterEach(()=>{js.a.done(),this.isSidebarOpen=!1})}}],Es={name:"GlobalLayout",computed:{layout(){const t=this.getLayout();return ps("layout",t),Yn.component(t)}},methods:{getLayout(){if(this.$page.path){const t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},Ps=n(14),As=Object(Ps.a)(Es,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(As,"mixins",Ts);const Ls=[{name:"v-fc1d7a0c",path:"/",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-fc1d7a0c").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-6221a7be",path:"/participate/adding-decoders.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-6221a7be").then(n)}},{name:"v-62214341",path:"/install/install.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-62214341").then(n)}},{name:"v-96793b7e",path:"/participate/build.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-96793b7e").then(n)}},{name:"v-2cf92021",path:"/participate/development.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2cf92021").then(n)}},{name:"v-200daea1",path:"/participate/support.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-200daea1").then(n)}},{name:"v-22ae4d01",path:"/prerequisites/devices.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-22ae4d01").then(n)}},{name:"v-055e6e31",path:"/prerequisites/controller.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-055e6e31").then(n)}},{name:"v-dbe40a3e",path:"/use/privacy.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-dbe40a3e").then(n)}},{name:"v-a56a917e",path:"/use/use.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-a56a917e").then(n)}},{path:"*",component:As}],Ms={title:"Theengs BLE App: Vendor agnostic sensor reader",description:"Explore Theengs: the open-source platform that bridges hundreds of sensors and smart devices into one interface. Compatible with major IoT platforms and home automation systems like AWS, OpenHAB, Home Assistant, and Jeedom, Theengs simplifies your smart home experience. It supports MQTT protocol, enabling efficient integration and automation of devices. Theengs enhances interoperability of your your smart home or IoT ecosystem.",base:"/",headTags:[["link",{rel:"apple-touch-icon",sizes:"180x180",href:".apple-touch-icon.png"}],["link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}],["link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}],["link",{rel:"manifest",href:"/manifest.json"}],["meta",{name:"theme-color",content:"#3eaf7c"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["meta",{name:"apple-mobile-web-app-status-bar-style",content:"black"}],["link",{rel:"mask-icon",href:"/icons/safari-pinned-tab.svg",color:"#3eaf7c"}],["meta",{name:"msapplication-TileImage",content:"/favicon-144x144.png"}],["meta",{name:"msapplication-TileColor",content:"#000000"}]],pages:[{title:"Theengs BLE mobile application",frontmatter:{title:"Theengs BLE mobile application"},regularPath:"/",relativePath:"README.md",key:"v-fc1d7a0c",path:"/",headers:[{level:2,title:"🌟 Local Smart Sensor Integration 🌟",slug:"🌟-local-smart-sensor-integration-🌟"},{level:2,title:"🔥 Elevate Your Grilling Game",slug:"🔥-elevate-your-grilling-game"},{level:2,title:"🔒Respecting Your Privacy",slug:"🔒respecting-your-privacy"},{level:2,title:"🏡 Take control with Smart Home Integration",slug:"🏡-take-control-with-smart-home-integration"},{level:2,title:"📲 Choose Your Platform and Download Now",slug:"📲-choose-your-platform-and-download-now"},{level:3,title:"Features comparison between Operating Systems",slug:"features-comparison-between-operating-systems"},{level:3,title:"Third party projects used by Theengs app",slug:"third-party-projects-used-by-theengs-app"},{level:3,title:"Acknowledgements",slug:"acknowledgements"}],lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Adding decoders",frontmatter:{},regularPath:"/participate/adding-decoders.html",relativePath:"participate/adding-decoders.md",key:"v-6221a7be",path:"/participate/adding-decoders.html",lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Install",frontmatter:{},regularPath:"/install/install.html",relativePath:"install/install.md",key:"v-62214341",path:"/install/install.html",headers:[{level:2,title:"Install from the store",slug:"install-from-the-store"}],lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Build",frontmatter:{},regularPath:"/participate/build.html",relativePath:"participate/build.md",key:"v-96793b7e",path:"/participate/build.html",headers:[{level:2,title:"Dependencies",slug:"dependencies"},{level:2,title:"Cloning Theengs",slug:"cloning-theengs"},{level:2,title:"Building dependencies (with the contribs.py script)",slug:"building-dependencies-with-the-contribs-py-script"},{level:2,title:"Building Theengs",slug:"building-theengs"}],lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Development contributions",frontmatter:{},regularPath:"/participate/development.html",relativePath:"participate/development.md",key:"v-2cf92021",path:"/participate/development.html",headers:[{level:2,title:"Developer Certificate Of Origin",slug:"developer-certificate-of-origin"}],lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Supporting the project",frontmatter:{},regularPath:"/participate/support.html",relativePath:"participate/support.md",key:"v-200daea1",path:"/participate/support.html",lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Devices supported",frontmatter:{pageClass:"table-generated-page"},regularPath:"/prerequisites/devices.html",relativePath:"prerequisites/devices.md",key:"v-22ae4d01",path:"/prerequisites/devices.html",lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"MQTT integration (option)",frontmatter:{},regularPath:"/prerequisites/controller.html",relativePath:"prerequisites/controller.md",key:"v-055e6e31",path:"/prerequisites/controller.html",headers:[{level:2,title:"Broker",slug:"broker"},{level:2,title:"Controller",slug:"controller"}],lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Privacy policy",frontmatter:{},regularPath:"/use/privacy.html",relativePath:"use/privacy.md",key:"v-dbe40a3e",path:"/use/privacy.html",lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3},{title:"Use",frontmatter:{},regularPath:"/use/use.html",relativePath:"use/use.md",key:"v-a56a917e",path:"/use/use.html",headers:[{level:2,title:"Features comparison between Operating Systems",slug:"features-comparison-between-operating-systems"},{level:2,title:"Overview",slug:"overview"},{level:2,title:"Real time data",slug:"real-time-data"},{level:2,title:"Live BBQ monitoring",slug:"live-bbq-monitoring"},{level:3,title:"Introduction",slug:"introduction"},{level:3,title:"Compatible devices",slug:"compatible-devices"},{level:3,title:"Threshold settings",slug:"threshold-settings"},{level:3,title:"Live monitoring",slug:"live-monitoring"},{level:3,title:"Notifications",slug:"notifications"},{level:2,title:"MQTT integration",slug:"mqtt-integration"},{level:3,title:"iOS specificity",slug:"ios-specificity"},{level:3,title:"Home Assistant Auto Discovery",slug:"home-assistant-auto-discovery"},{level:2,title:"iOS permissions",slug:"ios-permissions"},{level:2,title:"Android permissions",slug:"android-permissions"},{level:3,title:"Android 8+",slug:"android-8"},{level:3,title:"Android 10+",slug:"android-10"}],lastUpdated:"1/18/2024, 5:48:12 PM",lastUpdatedTimestamp:1705600092e3}],themeConfig:{repo:"theengs/app",smoothScroll:!0,search:!1,docsDir:"docs",docsBranch:"development",lastUpdated:"Last Updated",editLinks:!0,nav:[{text:"Home",link:"https://www.theengs.io",target:"_self",rel:""},{text:"Use cases",items:[{text:"Smart Home",link:"https://www.theengs.io/usecases/smarthome.html",target:"_self",rel:""},{text:"IoT",link:"https://www.theengs.io/usecases/iot.html",target:"_self",rel:""},{text:"Research",link:"https://www.theengs.io/usecases/research.html",target:"_self",rel:""}]},{text:"Solutions",items:[{text:"Hardware",items:[{text:"Theengs Plug",link:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_self",rel:""},{text:"Theengs Bridge",link:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_self",rel:""}]},{text:"Software",items:[{text:"Mobile App",link:"https://app.theengs.io",target:"_self",rel:""},{text:"OpenMQTTGateway",link:"https://docs.openmqttgateway.com",target:"_self",rel:""},{text:"Gateway",link:"https://gateway.theengs.io",target:"_self",rel:""}]},{text:"Core",items:[{text:"Decoder",link:"https://decoder.theengs.io",target:"_self",rel:""},{text:"Web Parser",link:"https://parser.theengs.io",target:"_self",rel:""}]}]},{text:"Compatible devices",link:"https://decoder.theengs.io/devices/devices.html",target:"_self",rel:""},{text:"Community",link:"https://community.openmqttgateway.com",target:"_self",rel:""},{text:"Shop",link:"https://shop.theengs.io/",target:"_self",rel:""},{text:"Sponsor 🤍",link:"https://github.com/sponsors/theengs",target:"_self",rel:""}],sidebar:[["/","0 - What is it for 🏠"],{title:"1 - Prerequisites🧭",children:["prerequisites/devices","prerequisites/controller"]},["/install/install","2 - Install ✔️"],{title:"3 - Use ✈️",children:["use/use","use/privacy"]},{title:"4 - Participate 💻",children:["participate/adding-decoders","participate/build","participate/support","participate/development"]}]}};n(234);Yn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,307))),Yn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,295))),Yn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,296)));n(235);function Rs(t){const e=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-e.left,y:n.top-e.top}}n(236);var Is=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},({Vue:t,router:e})=>{e.options.scrollBehavior=(e,n,r)=>{if(r)return window.scrollTo({top:r.y,behavior:"smooth"});if(e.hash){if(t.$vuepress.$get("disableScrollBehavior"))return!1;const n=document.querySelector(e.hash);return!!n&&window.scrollTo({top:Rs(n).y,behavior:"smooth"})}return window.scrollTo({top:0,behavior:"smooth"})}},{}],Ds=[];class Us extends class{constructor(){this.store=new Yn({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){Yn.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}{}Object.assign(Us.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:cs,getAsyncComponent:us,getVueComponent:ls});var Ns={install(t){const e=new Us;t.$vuepress=e,t.prototype.$vuepress=e}};function Bs(t,e){const n=e.toLowerCase();return t.options.routes.some(t=>t.path.toLowerCase()===n)}var Fs={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return ps("pageKey",e),Yn.component(e)||Yn.component(e,ss(e)),Yn.component(e)?t(e):t("")}},zs={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:["content__"+e.slotKey]},n()[e.slotKey])},qs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Vs=(n(237),n(238),Object(Ps.a)(qs,(function(){var t=this._self._c;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Hs={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};Yn.config.productionTip=!1,Yn.use(Ha),Yn.use(Ns),Yn.mixin(function(t,e,n=Yn){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:t}=this.$page.frontmatter;return"string"==typeof t&&t}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!Yn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(t.hash)}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(Bs(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Bs(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Bs(t,o)?r(o):Bs(t,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Is.filter(t=>"function"==typeof t).map(e=>e({Vue:Yn,options:r,router:n,siteData:Ms,isServer:t})))}catch(t){console.error(t)}return{app:new Yn(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},Ds.map(e=>t(e)))])})),router:n}}(!1).then(({app:t,router:e})=>{e.onReady(()=>{t.$mount("#app")})})}]); \ No newline at end of file diff --git a/index.html b/index.html index 292697c..1f220ee 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@ - + @@ -97,11 +97,11 @@ Sponsor 🤍
GitHub - (opens new window)

# Theengs BLE mobile application

# 🌟 Local Smart Sensor Integration 🌟

Theengs App seamlessly reads a wide array of Bluetooth Low Energy (BLE) sensors, gathering real-time data on environmental parameters such as temperature, humidity, moisture, etc. It displays these readings intuitively and enables integration with your Smart Home setup via MQTT. Compatible with platforms like Home Assistant, Theengs App is a vendor-agnostic reader of your sensors (opens new window).

Iot

# 🔥 Elevate Your Grilling Game

Theengs App now offers a dedicated live monitoring feature for BBQ enthusiasts. Track your cooking with a dynamic chart that displays temperature trends in real time. Set personalized thresholds for different cooking stages and receive instant notifications based on these criteria. Whether you prefer your meat rare, medium, or well-done, Theengs App ensures your grilling is done to perfection.

live bbq monitoring

# 🔒Respecting Your Privacy

With Theengs App, your data stays local by default. For more details, please refer to our privacy policy (opens new window).

# 🏡 Take control with Smart Home Integration

Theengs App syncs with platforms like Home Assistant via MQTT. Record sensor data on your preferred server - your home, your choice.

# 📲 Choose Your Platform and Download Now



Download on the App Store
Get it on Google Play

Note

The Theengs app reads data that is 'broadcasted' by devices, operating primarily in a passive mode without direct connections, except for Mi Flora and ThermoBeacon, where historical data is accessed through a connection. For all other devices, the app captures data as it is emitted by the sensors.

BBQ Live monitoring and notifications require the app to be active on the sensor screen.

# Features comparison between Operating Systems

OS Real time data BBQ monitoring MQTT integration Running in background Home Assistant Auto Discovery
iOS ☑️ ☑️ ☑️ ☑️
Android ☑️ ☑️ ☑️ ☑️ experimental ☑️

Theengs app can be used as a standalone solution or as a complementary solution to OpenMQTTGateway (opens new window) and/or Theengs gateway (opens new window) if you want a continuously running gateway.

# Third party projects used by Theengs app

# Acknowledgements

App Store and Apple logo are registered trademarks of Apple Inc.

Google Play and the Google Play logo are trademarks of Google LLC.

Note

All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

- + diff --git a/install/install.html b/install/install.html index 0fd48d9..91fcadf 100644 --- a/install/install.html +++ b/install/install.html @@ -17,7 +17,7 @@ - + @@ -97,7 +97,7 @@ Sponsor 🤍 GitHub - (opens new window)

# Install

# Install from the store

Download on the App Store
Get it on Google Play

App Store and Apple logo are registered trademarks of Apple Inc.

Google Play and the Google Play logo are trademarks of Google LLC.

- + diff --git a/participate/adding-decoders.html b/participate/adding-decoders.html index ff11eff..dd62fcc 100644 --- a/participate/adding-decoders.html +++ b/participate/adding-decoders.html @@ -17,7 +17,7 @@ - + @@ -97,7 +97,7 @@ Sponsor 🤍 GitHub - (opens new window)

# Adding decoders

Adding your device protocol to Theengs enable to increase interoperability and to create new use cases with your device. You will find below some guidance to do that.

You can do a pull request directly to the Decoder Repository (opens new window) by leveraging the Theengs Decoder example (opens new window).

- + diff --git a/participate/build.html b/participate/build.html index 453fd3c..d97cd0d 100644 --- a/participate/build.html +++ b/participate/build.html @@ -17,7 +17,7 @@ - + @@ -109,7 +109,7 @@
1
2
3
4
5

# Building Theengs

$ cd TheengsApp/
 $ qmake DEFINES+=QT_CONNECTIVITY_PATCHED
 $ make
-
1
2
3
- + diff --git a/participate/development.html b/participate/development.html index 904025a..892f364 100644 --- a/participate/development.html +++ b/participate/development.html @@ -17,7 +17,7 @@ - + @@ -122,11 +122,11 @@ personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

This Developer Certificate Of Origin (DCO) was adopted on June 22, 2022.

The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License (opens new window). It is based on the Linux Developer Certificate Of Origin (opens new window).

To accept the DCO it is required to put a x between [ ] on [ ] I accept the DCO in the PR template when submitting it. The [ ] is an opt-in box, so you have to manually accept it.

This Developer Certificate Of Origin (DCO) was adopted on June 22, 2022.

The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License (opens new window). It is based on the Linux Developer Certificate Of Origin (opens new window).

To accept the DCO it is required to put a x between [ ] on [ ] I accept the DCO in the PR template when submitting it. The [ ] is an opt-in box, so you have to manually accept it.

- + diff --git a/participate/support.html b/participate/support.html index fc7e275..dfab3f7 100644 --- a/participate/support.html +++ b/participate/support.html @@ -17,7 +17,7 @@ - + @@ -97,7 +97,7 @@ Sponsor 🤍 GitHub - (opens new window)

# Supporting the project

If you like the project and/or used it please consider supporting it! It can be done in different ways:

- + diff --git a/prerequisites/controller.html b/prerequisites/controller.html index 15b4b99..1004ca9 100644 --- a/prerequisites/controller.html +++ b/prerequisites/controller.html @@ -17,7 +17,7 @@ - + @@ -99,7 +99,7 @@ GitHub (opens new window)

# MQTT integration (option)

# Broker

The broker will act as an intermediary between Theengs App and your controller, it can be seen as a centralized hub at the heart of your automation system. It carry on messages following a publish / subscribe mechanism.

All the events or commands could pass by the broker.

There are many choices of brokers, here are some of the most popular:

Note

MQTT broker should be installed on a local network or accessed through a VPN as Theengs app only support unencrypted connexion on port 1883 for now.

This wikipedia list (opens new window) gives you more details about the different choices you have. This github list (opens new window) seems to be the most exhaustive ones. -Here is also some ideas of criteria (opens new window) from HiveMQ.

Once your broker is installed it can be interesting to see the traffic passing to it and to publish data, so as to do that there are several tools available:

MQTT enables you to connect easily a controller so as to monitor, control and automate scenariOS.

# Controller

The following controllers (and many other software) are compatible with MQTT:

controllers

TheengsApp is independent from these projects, you have the liberty of choice among all the compatible software.

- + diff --git a/prerequisites/devices.html b/prerequisites/devices.html index 4c98409..81ffb76 100644 --- a/prerequisites/devices.html +++ b/prerequisites/devices.html @@ -17,7 +17,7 @@ - + @@ -97,7 +97,7 @@ Sponsor 🤍 GitHub - (opens new window)

# Devices supported

Here is the list of supported devices by the app, more details in the Compatible Devices section of the top nav bar.

Model_Id Mobile App
ABTemp
ADHS
TD1in1
TD3in1
TD4in1
BSDOO
CGC1
CGD1
CGDK2
CGDN1
CGG1
CGH1
CGP1W
CGPR1
F525
H5055
H5072
H5074
H5075
H5106
H5101
H5102
H5174
H5177
HHCCJCY01HHCC
HHCCJCY10
HHCCPOT002
IBS-TH1
IBS-TH2
IBS-P01B
IBT_2X(S)
IBT_4X(S/C)
IBT_6X(S)
JQJCY01YM
K6P
K9
LYWSD02
LYWSD03MMC_ATC/PVVX
MJWSD05MMC_ATC/PVVX
LYWSDCGQ
MBXPRO
MHO/MMC-C401_ATC/PVVX
MokoBeacon
M1017
RDL52832
RuuviTag_RAWv1
RuuviTag_RAWv2
W120150X
W070160X
W110150X
THX1(W230150X)
SDLS
SE_MAG
SE_RHT
SE_TEMP
SE_TPROBE
SHT4X
SOLIS_6
T201
T301
WS02/WS08
TP357
TP358
TP359
TP393
TPMS
XMTZC01HM/XMTZC04HM
XMTZC02HM/XMTZC05HM
- + diff --git a/use/privacy.html b/use/privacy.html index 3d1b29e..703186b 100644 --- a/use/privacy.html +++ b/use/privacy.html @@ -17,7 +17,7 @@ - + @@ -98,7 +98,7 @@ GitHub (opens new window)

# Privacy policy

This privacy policy governs your use of the software application Theengs. -This privacy policy was last updated on July 5, 2022. This privacy policy may change from time to time, for any reason. If you have any questions or concerns about this privacy policy, feel free to contact Theengs at any time (support@theengs.io).

What information does Theengs App obtain and how is it used?

Theengs App does not collect or transmit any personal information about you, such as your name, address, phone number or email address.

How do you handle location data?

Theengs App does not use or collect any data related to your geographic location.

Can users see their personal data?

Theengs App itself does not collect, transmit, or maintain user personal data.

Do you share personal information?

As no personal information is collected, transmitted, or maintained by Theengs App, we do not share personal information.

Do advertising companies collect data?

Theengs App does not collect, transmit, or maintain personal data, so no data is shared with advertising companies.

Do you use vendors or analytics providers?

No. Theengs App does not collect, transmit, or maintaining personal data, so no data is shared with vendors or analytics providers.

Do you comply with the Children's Online Privacy Protection Act (COPPA)?

Yes. We do not solicit nor gather any data from children under the age of 13. If a parent or guardian becomes aware that his or her child has provided us with information without their consent, he or she should contact us.

- + diff --git a/use/use.html b/use/use.html index 4d05892..81e1e5d 100644 --- a/use/use.html +++ b/use/use.html @@ -17,7 +17,7 @@ - + @@ -112,7 +112,7 @@ Your browser does not support the video tag.

# iOS specificity

If you want to push data to an MQTT broker you will need to manually enter a MAC address for the sensor, this is done from the sensor page see below:

add-mac

# Home Assistant Auto Discovery

Theengs app can publish your sensor definition following Home Assistant MQTT convention, so as to do this you need to activate “Enable discovery” into your MQTT Options and follow the steps below:

location

The sensor definition will be publish when the app connect to the broker. You can retrigger the publication by deactivating and reactivating the MQTT integration from the application.

# iOS permissions

The application will ask you for permission to use Bluetooth. You can learn more on Apple website (opens new window).

# Android permissions

The Android operating system requires applications to ask for device location permission in order to scan for nearby Bluetooth Low Energy sensors. You would need to go into the app information (long press on the icon -> (i)) so as to configure the app permissions properly.

# Android 8+

location

You can now use the application. If you want to run the application in the background follow the process below:

location

background

# Android 10+

# Running when displayed only

# Running in the background (experimental)

If you want the app to retrieve data in the background you will need to do the following steps:

location

nearby

unused

battery

unrestricted

background

Some devices also require the GPS to be turned on while scanning for new sensors.

Note

Android has drastically reduced the capabilities of apps to run in the background, as a consequence the Update interval set into the app may not be followed by the operating system. -You may also have more regular results when the device is charging.

- +