"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var fs = __toESM(require("fs")); var os = __toESM(require("os")); var path = __toESM(require("path")); const SYSTEMD_SERVICE_NAME = "iobroker-ds18b20-remote.service"; const files = { 'common.js': 'InVzZSBzdHJpY3QiOwp2YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlOwp2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5Owp2YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzOwp2YXIgX19nZXRQcm90b09mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOwp2YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKdmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7CiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpCiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7IGdldDogYWxsW25hbWVdLCBlbnVtZXJhYmxlOiB0cnVlIH0pOwp9Owp2YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4gewogIGlmIChmcm9tICYmIHR5cGVvZiBmcm9tID09PSAib2JqZWN0IiB8fCB0eXBlb2YgZnJvbSA9PT0gImZ1bmN0aW9uIikgewogICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKQogICAgICBpZiAoIV9faGFzT3duUHJvcC5jYWxsKHRvLCBrZXkpICYmIGtleSAhPT0gZXhjZXB0KQogICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTsKICB9CiAgcmV0dXJuIHRvOwp9Owp2YXIgX190b0VTTSA9IChtb2QsIGlzTm9kZU1vZGUsIHRhcmdldCkgPT4gKHRhcmdldCA9IG1vZCAhPSBudWxsID8gX19jcmVhdGUoX19nZXRQcm90b09mKG1vZCkpIDoge30sIF9fY29weVByb3BzKAogIGlzTm9kZU1vZGUgfHwgIW1vZCB8fCAhbW9kLl9fZXNNb2R1bGUgPyBfX2RlZlByb3AodGFyZ2V0LCAiZGVmYXVsdCIsIHsgdmFsdWU6IG1vZCwgZW51bWVyYWJsZTogdHJ1ZSB9KSA6IHRhcmdldCwKICBtb2QKKSk7CnZhciBfX3RvQ29tbW9uSlMgPSAobW9kKSA9PiBfX2NvcHlQcm9wcyhfX2RlZlByb3Aoe30sICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTsKdmFyIGNvbW1vbl9leHBvcnRzID0ge307Cl9fZXhwb3J0KGNvbW1vbl9leHBvcnRzLCB7CiAgUkVNT1RFX1BST1RPQ09MX1ZFUlNJT046ICgpID0+IFJFTU9URV9QUk9UT0NPTF9WRVJTSU9OLAogIGRlY3J5cHQ6ICgpID0+IGRlY3J5cHQsCiAgZW5jcnlwdDogKCkgPT4gZW5jcnlwdAp9KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3RvQ29tbW9uSlMoY29tbW9uX2V4cG9ydHMpOwp2YXIgY3J5cHRvID0gX190b0VTTShyZXF1aXJlKCJjcnlwdG8iKSk7CmNvbnN0IFJFTU9URV9QUk9UT0NPTF9WRVJTSU9OID0gMzsKY29uc3QgSVZfTEVOR1RIID0gMTY7CmZ1bmN0aW9uIGVuY3J5cHQodGV4dCwga2V5KSB7CiAgY29uc3QgaXYgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoSVZfTEVOR1RIKTsKICBjb25zdCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoImFlcy0yNTYtY2JjIiwga2V5LCBpdik7CiAgbGV0IGVuY3J5cHRlZCA9IGNpcGhlci51cGRhdGUodGV4dCk7CiAgZW5jcnlwdGVkID0gQnVmZmVyLmNvbmNhdChbZW5jcnlwdGVkLCBjaXBoZXIuZmluYWwoKV0pOwogIHJldHVybiBpdi50b1N0cmluZygiaGV4IikgKyAiOiIgKyBlbmNyeXB0ZWQudG9TdHJpbmcoImhleCIpOwp9CmZ1bmN0aW9uIGRlY3J5cHQodGV4dCwga2V5KSB7CiAgY29uc3QgdGV4dFBhcnRzID0gdGV4dC5zcGxpdCgiOiIpOwogIGNvbnN0IGl2ID0gQnVmZmVyLmZyb20odGV4dFBhcnRzLnNoaWZ0KCksICJoZXgiKTsKICBjb25zdCBlbmNyeXB0ZWRUZXh0ID0gQnVmZmVyLmZyb20odGV4dFBhcnRzLmpvaW4oIjoiKSwgImhleCIpOwogIGNvbnN0IGRlY2lwaGVyID0gY3J5cHRvLmNyZWF0ZURlY2lwaGVyaXYoImFlcy0yNTYtY2JjIiwga2V5LCBpdik7CiAgbGV0IGRlY3J5cHRlZCA9IGRlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWRUZXh0KTsKICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtkZWNyeXB0ZWQsIGRlY2lwaGVyLmZpbmFsKCldKTsKICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKCk7Cn0KLy8gQW5ub3RhdGUgdGhlIENvbW1vbkpTIGV4cG9ydCBuYW1lcyBmb3IgRVNNIGltcG9ydCBpbiBub2RlOgowICYmIChtb2R1bGUuZXhwb3J0cyA9IHsKICBSRU1PVEVfUFJPVE9DT0xfVkVSU0lPTiwKICBkZWNyeXB0LAogIGVuY3J5cHQKfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbW1vbi5qcy5tYXAK', 'ds18b20-remote-client.js': 'InVzZSBzdHJpY3QiOwp2YXIgX19jcmVhdGUgPSBPYmplY3QuY3JlYXRlOwp2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5Owp2YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzOwp2YXIgX19nZXRQcm90b09mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOwp2YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKdmFyIF9fY29weVByb3BzID0gKHRvLCBmcm9tLCBleGNlcHQsIGRlc2MpID0+IHsKICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIGZyb20gPT09ICJmdW5jdGlvbiIpIHsKICAgIGZvciAobGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhmcm9tKSkKICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdCkKICAgICAgICBfX2RlZlByb3AodG8sIGtleSwgeyBnZXQ6ICgpID0+IGZyb21ba2V5XSwgZW51bWVyYWJsZTogIShkZXNjID0gX19nZXRPd25Qcm9wRGVzYyhmcm9tLCBrZXkpKSB8fCBkZXNjLmVudW1lcmFibGUgfSk7CiAgfQogIHJldHVybiB0bzsKfTsKdmFyIF9fdG9FU00gPSAobW9kLCBpc05vZGVNb2RlLCB0YXJnZXQpID0+ICh0YXJnZXQgPSBtb2QgIT0gbnVsbCA/IF9fY3JlYXRlKF9fZ2V0UHJvdG9PZihtb2QpKSA6IHt9LCBfX2NvcHlQcm9wcygKICBpc05vZGVNb2RlIHx8ICFtb2QgfHwgIW1vZC5fX2VzTW9kdWxlID8gX19kZWZQcm9wKHRhcmdldCwgImRlZmF1bHQiLCB7IHZhbHVlOiBtb2QsIGVudW1lcmFibGU6IHRydWUgfSkgOiB0YXJnZXQsCiAgbW9kCikpOwp2YXIgaW1wb3J0X3V0aWwgPSByZXF1aXJlKCJ1dGlsIik7CnZhciBpbXBvcnRfbmV0ID0gcmVxdWlyZSgibmV0Iik7CnZhciBmcyA9IF9fdG9FU00ocmVxdWlyZSgiZnMiKSk7CnZhciBvcyA9IF9fdG9FU00ocmVxdWlyZSgib3MiKSk7CnZhciBpbXBvcnRfbG9nZ2VyID0gcmVxdWlyZSgiLi9sb2dnZXIiKTsKdmFyIGltcG9ydF9jb21tb24gPSByZXF1aXJlKCIuL2NvbW1vbiIpOwpjb25zdCByZWFkRGlyID0gKDAsIGltcG9ydF91dGlsLnByb21pc2lmeSkoZnMucmVhZGRpcik7CmNvbnN0IHJlYWRGaWxlID0gKDAsIGltcG9ydF91dGlsLnByb21pc2lmeSkoZnMucmVhZEZpbGUpOwpjb25zdCBFTlZfS0VZUyA9IFsKICAiQURBUFRFUl9IT1NUIiwKICAiQURBUFRFUl9LRVkiLAogICJBREFQVEVSX1BPUlQiLAogICJERUJVRyIsCiAgIlNZU1RFTV9JRCIsCiAgIlcxX0RFVklDRVNfUEFUSCIKXTsKY2xhc3MgRHMxOGIyMFJlbW90ZSB7CiAgY29uc3RydWN0b3IoKSB7CiAgICB0aGlzLnJlY29ubmVjdFRpbWVvdXQgPSBudWxsOwogICAgdGhpcy5zaG91bGRFeGl0ID0gZmFsc2U7CiAgICB0aGlzLnJlY3ZEYXRhID0gIiI7CiAgICB0aGlzLmNvbm5lY3QgPSB0aGlzLmNvbm5lY3QuYmluZCh0aGlzKTsKICAgIHRoaXMuZXhpdCA9IHRoaXMuZXhpdC5iaW5kKHRoaXMpOwogICAgdGhpcy5vbkNsb3NlID0gdGhpcy5vbkNsb3NlLmJpbmQodGhpcyk7CiAgICB0aGlzLm9uRGF0YSA9IHRoaXMub25EYXRhLmJpbmQodGhpcyk7CiAgICB0aGlzLm9uRXJyb3IgPSB0aGlzLm9uRXJyb3IuYmluZCh0aGlzKTsKICAgIHRoaXMub25Db25uZWN0ID0gdGhpcy5vbkNvbm5lY3QuYmluZCh0aGlzKTsKICAgIHRoaXMubG9nID0gbmV3IGltcG9ydF9sb2dnZXIuTG9nZ2VyKCk7CiAgICB0aGlzLmxvZy5sb2coIi0gaW9Ccm9rZXIuZHMxOGIyMCByZW1vdGUgY2xpZW50IC0iKTsKICAgIHRoaXMucmVhZERvdEVudigpOwogICAgaWYgKHByb2Nlc3MuZW52LlNZU1RFTV9JRCkgewogICAgICB0aGlzLnN5c3RlbUlkID0gcHJvY2Vzcy5lbnYuU1lTVEVNX0lELnRyaW0oKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuc3lzdGVtSWQgPSBvcy5ob3N0bmFtZSgpOwogICAgICB0aGlzLmxvZy53YXJuKGBVc2luZyB0aGUgaG9zdG5hbWUgJHt0aGlzLnN5c3RlbUlkfSBhcyBzeXN0ZW0gSUQuIFBsZWFzZSBzZXQgU1lTVEVNX0lEIHRvIGEgdW5pcXVlIHZhbHVlLmApOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoYHN5c3RlbUlkYCwgdGhpcy5zeXN0ZW1JZCk7CiAgICBpZiAocHJvY2Vzcy5lbnYuQURBUFRFUl9QT1JUKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdGhpcy5hZGFwdGVyUG9ydCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkFEQVBURVJfUE9SVCwgMTApOwogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICB0aGlzLmxvZy5lcnJvcihgSW52YWxpZCBBREFQVEVSX1BPUlQhYCwgZXJyKTsKICAgICAgICBwcm9jZXNzLmV4aXQoMSk7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuYWRhcHRlclBvcnQgPSAxODIwOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoYGFkYXB0ZXJQb3J0YCwgdGhpcy5hZGFwdGVyUG9ydCk7CiAgICB0aGlzLmFkYXB0ZXJIb3N0ID0gKHByb2Nlc3MuZW52LkFEQVBURVJfSE9TVCB8fCAiIikudHJpbSgpOwogICAgaWYgKHRoaXMuYWRhcHRlckhvc3QubGVuZ3RoIDw9IDApIHsKICAgICAgdGhpcy5sb2cuZXJyb3IoYE5vIEFEQVBURVJfSE9TVCBnaXZlbiFgKTsKICAgICAgcHJvY2Vzcy5leGl0KDEpOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoYGFkYXB0ZXJIb3N0YCwgdGhpcy5hZGFwdGVySG9zdCk7CiAgICB0aGlzLmFkYXB0ZXJLZXkgPSBCdWZmZXIuZnJvbShwcm9jZXNzLmVudi5BREFQVEVSX0tFWSB8fCAiIiwgImhleCIpOwogICAgaWYgKHRoaXMuYWRhcHRlcktleS5sZW5ndGggIT09IDMyKSB7CiAgICAgIHRoaXMubG9nLmVycm9yKGBBREFQVEVSX0tFWSBpcyBubyB2YWxpZCBrZXkhYCk7CiAgICAgIHByb2Nlc3MuZXhpdCgxKTsKICAgIH0KICAgIHRoaXMubG9nLmRlYnVnKGBhZGFwdGVyS2V5YCwgdGhpcy5hZGFwdGVyS2V5KTsKICAgIHRoaXMudzFEZXZpY2VzUGF0aCA9IHByb2Nlc3MuZW52LlcxX0RFVklDRVNfUEFUSCB8fCAiL3N5cy9idXMvdzEvZGV2aWNlcyI7CiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy53MURldmljZXNQYXRoKSkgewogICAgICB0aGlzLmxvZy5lcnJvcihgVGhlIDEtd2lyZSBkZXZpY2VzIHBhdGggJHt0aGlzLncxRGV2aWNlc1BhdGh9IGRvZXMgbm90IGV4aXN0IWApOwogICAgICBwcm9jZXNzLmV4aXQoMSk7CiAgICB9CiAgICB0aGlzLmxvZy5kZWJ1ZyhgdzFEZXZpY2VzUGF0aGAsIHRoaXMudzFEZXZpY2VzUGF0aCk7CiAgICBwcm9jZXNzLm9uKCJTSUdJTlQiLCB0aGlzLmV4aXQpOwogICAgcHJvY2Vzcy5vbigiU0lHVEVSTSIsIHRoaXMuZXhpdCk7CiAgICB0aGlzLnNvY2tldCA9IG5ldyBpbXBvcnRfbmV0LlNvY2tldCgpOwogICAgdGhpcy5zb2NrZXQub24oImNsb3NlIiwgdGhpcy5vbkNsb3NlKTsKICAgIHRoaXMuc29ja2V0Lm9uKCJkYXRhIiwgdGhpcy5vbkRhdGEpOwogICAgdGhpcy5zb2NrZXQub24oImVycm9yIiwgdGhpcy5vbkVycm9yKTsKICAgIHRoaXMuc29ja2V0Lm9uKCJjb25uZWN0IiwgdGhpcy5vbkNvbm5lY3QpOwogICAgdGhpcy5jb25uZWN0KCk7CiAgfQogIGNvbm5lY3QoKSB7CiAgICBpZiAodGhpcy5yZWNvbm5lY3RUaW1lb3V0KSB7CiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlY29ubmVjdFRpbWVvdXQpOwogICAgICB0aGlzLnJlY29ubmVjdFRpbWVvdXQgPSBudWxsOwogICAgfQogICAgaWYgKHRoaXMuc2hvdWxkRXhpdCkgewogICAgICByZXR1cm47CiAgICB9CiAgICB0aGlzLmxvZy5pbmZvKGBDb25uZWN0aW5nIHRvICR7dGhpcy5hZGFwdGVySG9zdH06JHt0aGlzLmFkYXB0ZXJQb3J0fSAuLi5gKTsKICAgIHRoaXMuc29ja2V0LmNvbm5lY3QoewogICAgICBob3N0OiB0aGlzLmFkYXB0ZXJIb3N0LAogICAgICBwb3J0OiB0aGlzLmFkYXB0ZXJQb3J0CiAgICB9KTsKICB9CiAgb25Db25uZWN0KCkgewogICAgdGhpcy5sb2cuaW5mbyhgQ29ubmVjdGVkIHdpdGggYWRhcHRlcmApOwogICAgaWYgKHRoaXMucmVjb25uZWN0VGltZW91dCkgewogICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWNvbm5lY3RUaW1lb3V0KTsKICAgIH0KICAgIHRoaXMucmVjb25uZWN0VGltZW91dCA9IG51bGw7CiAgfQogIG9uRGF0YShkYXRhKSB7CiAgICB0aGlzLnJlY3ZEYXRhICs9IGRhdGEudG9TdHJpbmcoKTsKICAgIGxldCBpZHggPSB0aGlzLnJlY3ZEYXRhLmluZGV4T2YoIlxuIik7CiAgICB3aGlsZSAoaWR4ID4gMCkgewogICAgICBjb25zdCByYXcgPSB0aGlzLnJlY3ZEYXRhLnNsaWNlKDAsIGlkeCk7CiAgICAgIHRoaXMucmVjdkRhdGEgPSB0aGlzLnJlY3ZEYXRhLnNsaWNlKGlkeCArIDEpOwogICAgICB0aGlzLmhhbmRsZVNvY2tldERhdGEocmF3KTsKICAgICAgaWR4ID0gdGhpcy5yZWN2RGF0YS5pbmRleE9mKCJcbiIpOwogICAgfQogIH0KICBhc3luYyBoYW5kbGVTb2NrZXREYXRhKHJhdykgewogICAgbGV0IGRhdGE7CiAgICB0cnkgewogICAgICBjb25zdCBkYXRhU3RyID0gKDAsIGltcG9ydF9jb21tb24uZGVjcnlwdCkocmF3LCB0aGlzLmFkYXB0ZXJLZXkpOwogICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKTsKICAgIH0gY2F0Y2ggKGVycikgewogICAgICB0aGlzLmxvZy53YXJuKGBEZWNyeXB0IG9mIGRhdGEgZmFpbGVkISAke2Vyci50b1N0cmluZygpfWApOwogICAgICB0aGlzLnNvY2tldC5lbmQoKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgdGhpcy5sb2cuZGVidWcoIm1lc3NhZ2UgZnJvbSBhZGFwdGVyOiIsIGRhdGEpOwogICAgc3dpdGNoIChkYXRhLmNtZCkgewogICAgICBjYXNlICJjbGllbnRJbmZvIjoKICAgICAgICBpZiAoZGF0YS5wcm90b2NvbFZlcnNpb24gIT09IGltcG9ydF9jb21tb24uUkVNT1RFX1BST1RPQ09MX1ZFUlNJT04pIHsKICAgICAgICAgIHRoaXMubG9nLndhcm4oYFByb3RvY29sIHZlcnNpb24gJHtkYXRhLnByb3RvY29sVmVyc2lvbn0gZnJvbSB0aGUgYWRhcHRlciBkb2VzIG5vdCBtYXRjaCB0aGUgcmVtb3RlIGNsaWVudCBwcm90b2NvbCB2ZXJzaW9uICR7aW1wb3J0X2NvbW1vbi5SRU1PVEVfUFJPVE9DT0xfVkVSU0lPTn0hIFBsZWFzZSByZWluc3RhbGwgdGhlIHJlbW90ZSBjbGllbnQuYCk7CiAgICAgICAgfQogICAgICAgIHRoaXMubG9nLmluZm8oIlNlbmRpbmcgY2xpZW50IGluZm8gdG8gdGhlIGFkYXB0ZXIiKTsKICAgICAgICB0aGlzLnNlbmQoewogICAgICAgICAgY21kOiAiY2xpZW50SW5mbyIsCiAgICAgICAgICBwcm90b2NvbFZlcnNpb246IGltcG9ydF9jb21tb24uUkVNT1RFX1BST1RPQ09MX1ZFUlNJT04sCiAgICAgICAgICBzeXN0ZW1JZDogdGhpcy5zeXN0ZW1JZAogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICJyZWFkIjoKICAgICAgICBpZiAoIWRhdGEuYWRkcmVzcykgewogICAgICAgICAgdGhpcy5sb2cud2FybihgR290IHJlYWQgY29tbWFuZCB3aXRob3V0IGFkZHJlc3MgZnJvbSBhZGFwdGVyIWApOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsZXQgcmF3MjsKICAgICAgICB0cnkgewogICAgICAgICAgcmF3MiA9IGF3YWl0IHJlYWRGaWxlKGAke3RoaXMudzFEZXZpY2VzUGF0aH0vJHtkYXRhLmFkZHJlc3N9L3cxX3NsYXZlYCwgInV0ZjgiKTsKICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBSZWFkIGZyb20gZmlsZSAke3RoaXMudzFEZXZpY2VzUGF0aH0vJHtkYXRhLmFkZHJlc3N9L3cxX3NsYXZlOmAsIHJhdzIpOwogICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgdGhpcy5sb2cud2FybihgUmVhZCBmcm9tIGZpbGUgJHt0aGlzLncxRGV2aWNlc1BhdGh9LyR7ZGF0YS5hZGRyZXNzfS93MV9zbGF2ZSBmYWlsZWQhICR7ZXJyLnRvU3RyaW5nKCl9YCk7CiAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhlcnIpOwogICAgICAgICAgcmF3MiA9ICIiOwogICAgICAgIH0KICAgICAgICBhd2FpdCB0aGlzLnNlbmQoewogICAgICAgICAgY21kOiAicmVhZCIsCiAgICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MsCiAgICAgICAgICB0czogZGF0YS50cywKICAgICAgICAgIHJhdzogcmF3MgogICAgICAgIH0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICJzZWFyY2giOgogICAgICAgIHRyeSB7CiAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHJlYWREaXIodGhpcy53MURldmljZXNQYXRoKTsKICAgICAgICAgIGNvbnN0IHByb21zID0gW107CiAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHsKICAgICAgICAgICAgaWYgKGZpbGUubWF0Y2goL153MV9idXNfbWFzdGVyXGQrJC8pKSB7CiAgICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYHJlYWRpbmcgJHt0aGlzLncxRGV2aWNlc1BhdGh9LyR7ZmlsZX0vdzFfbWFzdGVyX3NsYXZlc2ApOwogICAgICAgICAgICAgIHByb21zLnB1c2gocmVhZEZpbGUoYCR7dGhpcy53MURldmljZXNQYXRofS8ke2ZpbGV9L3cxX21hc3Rlcl9zbGF2ZXNgLCAidXRmOCIpKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlID09PSAidzFfbWFzdGVyX3NsYXZlcyIpIHsKICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgcmVhZGluZyAke3RoaXMudzFEZXZpY2VzUGF0aH0vdzFfbWFzdGVyX3NsYXZlc2ApOwogICAgICAgICAgICAgIHByb21zLnB1c2gocmVhZEZpbGUoYCR7dGhpcy53MURldmljZXNQYXRofS93MV9tYXN0ZXJfc2xhdmVzYCwgInV0ZjgiKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGNvbnN0IGFkZHJlc3NlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9tcykpLnJlZHVjZSgoYWNjLCBjdXIpID0+IHsKICAgICAgICAgICAgYWNjLnB1c2goLi4uY3VyLnRyaW0oKS5zcGxpdCgiXG4iKSk7CiAgICAgICAgICAgIHJldHVybiBhY2M7CiAgICAgICAgICB9LCBbXSk7CiAgICAgICAgICBhd2FpdCB0aGlzLnNlbmQoewogICAgICAgICAgICBjbWQ6ICJzZWFyY2giLAogICAgICAgICAgICB0czogZGF0YS50cywKICAgICAgICAgICAgc3lzdGVtSWQ6IGRhdGEuc3lzdGVtSWQsCiAgICAgICAgICAgIGFkZHJlc3NlcwogICAgICAgICAgfSk7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBTZWFyY2hpbmcgZm9yIHNlbnNvcnMgZmFpbGVkISAke2Vyci50b1N0cmluZygpfWApOwogICAgICAgICAgdGhpcy5sb2cuZGVidWcoZXJyKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhpcy5sb2cud2FybihgVW5rbm93biBjb21tYW5kIGZyb20gYWRhcHRlcmApOwogICAgfQogIH0KICBvbkVycm9yKGVycikgewogICAgdGhpcy5sb2cud2FybihgU29ja2V0IGVycm9yOmAsIGVyci50b1N0cmluZygpKTsKICAgIHRoaXMubG9nLmRlYnVnKGVycik7CiAgICB0aGlzLnNvY2tldC5lbmQoKTsKICAgIHRoaXMucmVjb25uZWN0KCk7CiAgfQogIG9uQ2xvc2UoKSB7CiAgICB0aGlzLmxvZy5pbmZvKCJTb2NrZXQgY2xvc2VkIik7CiAgICB0aGlzLnJlY29ubmVjdCgpOwogIH0KICByZWNvbm5lY3QoKSB7CiAgICBpZiAoIXRoaXMucmVjb25uZWN0VGltZW91dCAmJiAhdGhpcy5zaG91bGRFeGl0KSB7CiAgICAgIHRoaXMubG9nLmluZm8oYFJlY29ubmVjdCBpbiAzMCBzZWNvbmRzYCk7CiAgICAgIHRoaXMucmVjb25uZWN0VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jb25uZWN0LCAzZTQpOwogICAgfQogIH0KICBhc3luYyBzZW5kKGRhdGEpIHsKICAgIHRoaXMubG9nLmRlYnVnKCJzZW5kIHRvIGFkYXB0ZXI6IiwgZGF0YSk7CiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICB0aGlzLnNvY2tldC53cml0ZSgoMCwgaW1wb3J0X2NvbW1vbi5lbmNyeXB0KShKU09OLnN0cmluZ2lmeShkYXRhKSwgdGhpcy5hZGFwdGVyS2V5KSArICJcbiIsIChlcnIpID0+IHsKICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICByZWplY3QoZXJyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKICB9CiAgcmVhZERvdEVudigpIHsKICAgIGlmICghZnMuZXhpc3RzU3luYygiLmVudiIpKQogICAgICByZXR1cm47CiAgICBsZXQgZGF0YTsKICAgIHRyeSB7CiAgICAgIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmMoIi5lbnYiLCAidXRmLTgiKS5zcGxpdCgiXG4iKS5tYXAoKGwpID0+IGwudHJpbSgpKTsKICAgIH0gY2F0Y2ggKGVycikgewogICAgICB0aGlzLmxvZy5kZWJ1ZygiY2FuJ3QgcmVhZCAuZW52IGZpbGUiLCBlcnIpOwogICAgICByZXR1cm47CiAgICB9CiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZGF0YSkgewogICAgICBpZiAoIWxpbmUgfHwgbGluZS5zdGFydHNXaXRoKCIjIikpCiAgICAgICAgY29udGludWU7CiAgICAgIGNvbnN0IGlkeCA9IGxpbmUuaW5kZXhPZigiPSIpOwogICAgICBpZiAoaWR4IDw9IDApCiAgICAgICAgY29udGludWU7CiAgICAgIGNvbnN0IGtleSA9IGxpbmUuc2xpY2UoMCwgaWR4KS50cmltKCk7CiAgICAgIGNvbnN0IHZhbCA9IGxpbmUuc2xpY2UoaWR4ICsgMSkudHJpbSgpLnJlcGxhY2UoLyheInwiJCkvZywgIiIpOwogICAgICBpZiAoRU5WX0tFWVMuaW5kZXhPZihrZXkpID49IDApIHsKICAgICAgICBpZiAocHJvY2Vzcy5lbnZba2V5XSkKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIHByb2Nlc3MuZW52W2tleV0gPSB2YWw7CiAgICAgICAgdGhpcy5sb2cuZGVidWcoYHJlYWQgJHtrZXl9PSR7dmFsfSBmcm9tIC5lbnYgZmlsZWApOwogICAgICB9CiAgICB9CiAgfQogIGV4aXQoKSB7CiAgICB0aGlzLnNob3VsZEV4aXQgPSB0cnVlOwogICAgaWYgKHRoaXMucmVjb25uZWN0VGltZW91dCkgewogICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWNvbm5lY3RUaW1lb3V0KTsKICAgIH0KICAgIHRoaXMuc29ja2V0LmVuZCgpOwogIH0KfQpuZXcgRHMxOGIyMFJlbW90ZSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1kczE4YjIwLXJlbW90ZS1jbGllbnQuanMubWFwCg==', 'logger.js': 'InVzZSBzdHJpY3QiOwp2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5Owp2YXIgX19nZXRPd25Qcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzOwp2YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKdmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7CiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpCiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7IGdldDogYWxsW25hbWVdLCBlbnVtZXJhYmxlOiB0cnVlIH0pOwp9Owp2YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4gewogIGlmIChmcm9tICYmIHR5cGVvZiBmcm9tID09PSAib2JqZWN0IiB8fCB0eXBlb2YgZnJvbSA9PT0gImZ1bmN0aW9uIikgewogICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKQogICAgICBpZiAoIV9faGFzT3duUHJvcC5jYWxsKHRvLCBrZXkpICYmIGtleSAhPT0gZXhjZXB0KQogICAgICAgIF9fZGVmUHJvcCh0bywga2V5LCB7IGdldDogKCkgPT4gZnJvbVtrZXldLCBlbnVtZXJhYmxlOiAhKGRlc2MgPSBfX2dldE93blByb3BEZXNjKGZyb20sIGtleSkpIHx8IGRlc2MuZW51bWVyYWJsZSB9KTsKICB9CiAgcmV0dXJuIHRvOwp9Owp2YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSksIG1vZCk7CnZhciBsb2dnZXJfZXhwb3J0cyA9IHt9OwpfX2V4cG9ydChsb2dnZXJfZXhwb3J0cywgewogIExvZ2dlcjogKCkgPT4gTG9nZ2VyCn0pOwptb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhsb2dnZXJfZXhwb3J0cyk7CmNsYXNzIExvZ2dlciB7CiAgbG9nKC4uLmFyZ3MpIHsKICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpOwogIH0KICBkZWJ1ZyguLi5hcmdzKSB7CiAgICBpZiAoIXByb2Nlc3MuZW52LkRFQlVHKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnNvbGUubG9nKCJbRGVidWddIiwgLi4uYXJncyk7CiAgfQogIGluZm8oLi4uYXJncykgewogICAgY29uc29sZS5sb2coIltJbmZvXSIsIC4uLmFyZ3MpOwogIH0KICB3YXJuKC4uLmFyZ3MpIHsKICAgIGNvbnNvbGUud2FybigiW1dhcm5dIiwgLi4uYXJncyk7CiAgfQogIGVycm9yKC4uLmFyZ3MpIHsKICAgIGNvbnNvbGUuZXJyb3IoIltFcnJvcl0iLCAuLi5hcmdzKTsKICB9Cn0KLy8gQW5ub3RhdGUgdGhlIENvbW1vbkpTIGV4cG9ydCBuYW1lcyBmb3IgRVNNIGltcG9ydCBpbiBub2RlOgowICYmIChtb2R1bGUuZXhwb3J0cyA9IHsKICBMb2dnZXIKfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvZ2dlci5qcy5tYXAK' }; for (const f in files) { const content = Buffer.from(files[f], "base64").toString("utf-8"); fs.writeFileSync(f, content, { encoding: "utf-8" }); } const systemDContent = `[Unit] Description=ioBroker.ds18b20 remote client Documentation=https://github.com/crycode-de/ioBroker.ds18b20 After=network.target [Service] Type=simple User=${os.userInfo().username} WorkingDirectory=${__dirname} ExecStart=${process.execPath} ${path.join(__dirname, "ds18b20-remote-client.js")} Restart=on-failure [Install] WantedBy=multi-user.target `; const systemDFile = path.join(__dirname, SYSTEMD_SERVICE_NAME); fs.writeFileSync(systemDFile, systemDContent, { encoding: "utf-8" }); const dotEnvContent = `# Settings for the ioBroker.ds18b20 remote client # Unique ID for this remote system SYSTEM_ID=my-remote # IP or hostname of the ioBroker host running the adapter ADAPTER_HOST= # Port from the adapter config ADAPTER_PORT=1820 # Encryption key from the adapter config ADAPTER_KEY= # Enable debug log output #DEBUG=1 # System path of the 1-wire devices #W1_DEVICES_PATH=/sys/bus/w1/devices `; const dotEnvFile = path.join(__dirname, ".env"); if (!fs.existsSync(dotEnvFile)) { fs.writeFileSync(dotEnvFile, dotEnvContent, { encoding: "utf-8" }); } console.log(`- ioBroker.ds18b20 remote client - Basic setup done. Please adjust the settings in the .env file. To manually start the client just run: node ds18b20-remote-client.js To setup the SystemD service, please run: sudo cp ${SYSTEMD_SERVICE_NAME} /etc/systemd/system/${SYSTEMD_SERVICE_NAME} sudo systemctl daemon-reload sudo systemctl enable ${SYSTEMD_SERVICE_NAME} sudo systemctl start ${SYSTEMD_SERVICE_NAME} `);