diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..094a26db29 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Jason2866 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000000..8f00715a2a --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +[![Build_special_firmware](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md) + +![Tasmota logo](https://github.com/arendst/Tasmota/blob/development/tools/logo/TASMOTA_FullLogo_Vector.svg#gh-light-mode-only)![Tasmota logo](https://github.com/arendst/Tasmota/blob/development/tools/logo/TASMOTA_FullLogo_Vector_White.svg#gh-dark-mode-only) + + +## These special Tasmota binaries are not official stable releases + +## :warning: No support/warranty with these binaries! :warning: + +[![Build_special_firmware](https://github.com/Jason2866/Tasmota-build/actions/workflows/Build_special_firmware.yml/badge.svg)](https://github.com/Jason2866/Tasmota-build/actions/workflows/Build_special_firmware.yml) + +## The special firmware files are [here](https://github.com/Jason2866/Tasmota-specials/tree/firmware/firmware). [Source code](https://github.com/Jason2866/Tasmota-build)
+Official ✨ Tasmota ✨ firmware files are [here](https://github.com/arendst/Tasmota-firmware) + +## For easy flashing Tasmota use: +- [Tasmota WebInstaller](https://tasmota.github.io/install/) Only Chrome or Edge Browser needed! +- [ESP_Flasher](https://github.com/Jason2866/ESP_Flasher/releases) + +## Build variants: + - tasmota32c3 - Support for ESP32-C3 2M no OTA variant (tasmota32c3_2M) + - tasmota32(c3/s3)-bluetooth - Support for BLE + - tasmota-battery - extremely cut down build for battery powered Tuya sensors + - tasmota32(c3/s2/s3/c6)-teleinfo - (ESP32 only) for Teleinfo French metering system, MQTT and TLS included + - tasmota32-zigbeebridge - ESP32 based [ZigbeeBridge](https://templates.blakadder.com/ewelink_ZB-GW03.html) + - tasmota-zigbee - Zigbee for TI based chips (Esp8266 and ESP32) + - tasmota-fullrules - Rules with all the features (expressions, If statements, MQTT subscription) + - tasmota-minicustom - even smaller minimal build, **only for Updates (warning MQTT only! No Webserver)** + - tasmota-gps - GPS driver enabled + - tasmota-mega - big binary, almost every sensor included, OTA possible only with minimal + - tasmota-allsensors - guess whats in ;-) + - tasmota-platinum - IT...IS...HUGE!!! nearly everything is enabled (only for devices with >=4Mb flash) + - tasmota-titanium - as platinum with scripting enabled + - tasmota-rangeextender - Experimental build where Tasmota acts as AP range extender + - tasmota-scripting - all scripting features instead of rules + Smart Meter Interface enabled + - tasmota-thermostat - Thermostat driver and temperature sensors (ESP32 has Bluetooth included) + - tasmota32solo1-thermostat - ESP32 Single Core Thermostat driver and Bluetooth temperature sensors (used on Shelly Plus 1PM for example) + - tasmota-teleinfo - For Teleinfo French metering system, MQTT enabled but No TLS due to lack of ressources + - tasmota-tls - MQTT TLS enabled + - tasmota32(c3/s3)-mi-homebridge - Homebridge for MI BLE devices (Apple Homekit support) diff --git a/genManifest.py b/genManifest.py new file mode 100644 index 0000000000..1f590b4be8 --- /dev/null +++ b/genManifest.py @@ -0,0 +1,128 @@ +#!/usr/bin/python3 + +from curses.ascii import isupper +from platform import release +import sys +from os import listdir +from os import mkdir +from os import remove +from os import path +import json + +def convertJSON(infile,outfile): + with open(infile) as json_file: + data = json.load(json_file) + for build in data['builds']: + for path in build['parts']: + # print(path['path']) + path['path'] = path['path'].replace("..", "https://Jason2866.github.io/Tasmota-specials") + # print(data) + j = json.dumps(data,indent=4) + f = open(outfile,"w") + f.write(j) + f.close() + +def getManifestEntry(manifest): + entry = {} + with open(manifest) as json_file: + data = json.load(json_file) + entry['path'] = "https://Jason2866.github.io/Tasmota-specials/" + manifest + entry['name'] = data['name'] + entry['chipFamilies'] = [] + for build in data['builds']: + entry['chipFamilies'].append(build['chipFamily']) + return entry + + + +def main(args): + path_manifests = path.join('manifest') + path_manifests_ext = path.join('manifest_ext') + if not path.exists(path_manifests): + print("No manifest folder, exiting ...") + return -1 + files = listdir(path_manifests) + if len(files) == 0: + print("Empty manifest folder, exiting ...") + return -1 + if path.exists(path_manifests_ext): + m_e_files = listdir(path_manifests_ext) + # for file in m_e_files: + # remove(file) + else: + mkdir(path_manifests_ext) + + + output = {} + + for file in files: + # create absolute path-version of each manifest file in /manifest_ext + convertJSON(path.join(path_manifests,file),path.join(path_manifests_ext,file)) + line = file.split('.') + if len(line) != 4: + print("Incompatible path name, ignoring file:",file) + continue + # print(line[1]) + if line[0] not in output: + output[line[0]] = [[],[],[],[],[],[]] + if line[1] == "tasmota": + output[line[0]][0].insert(0,getManifestEntry(path.join(path_manifests_ext,file))) # vanilla first + continue + elif line[1] == "tasmota32": + output[line[0]][1].insert(0,getManifestEntry(path.join(path_manifests_ext,file))) + continue + else: #solo1,4M,... + output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file))) + continue + name_components = line[1].split('-') + if name_components[0] == "tasmota": + if len(name_components[1]) and name_components[1].isupper(): + output[line[0]][1].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last + continue + output[line[0]][0].append(getManifestEntry(path.join(path_manifests_ext,file))) + continue + elif name_components[0] == "tasmota32": + if len(name_components[1]) and name_components[1].isupper(): + output[line[0]][3].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last + continue + output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file))) + continue + else: #solo1,4M,... + if len(name_components[1]) and name_components[1].isupper(): + output[line[0]][5].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last + continue + output[line[0]][4].append(getManifestEntry(path.join(path_manifests_ext,file))) + # print(output) + + for section in output: + merged = sorted(output[section][0],key=lambda d: d['name']) + sorted(output[section][1],key=lambda d: d['name']) + sorted(output[section][2],key=lambda d: d['name']) + sorted(output[section][3],key=lambda d: d['name']) + sorted(output[section][4],key=lambda d: d['name']) + sorted(output[section][5],key=lambda d: d['name']) + output[section] = merged + + #release = output.pop("release") + #development = output.pop("development") + unofficial = output.pop("unofficial") + + + final_json = {} + #final_json["release"] = release + #final_json["development"] = development + final_json["unofficial"] = unofficial + for key in output: + final_json[key] = output[key] # just in case we have another section in the future + + print(final_json) + + j = json.dumps(final_json,indent=4) + f = open("manifests.json", "w") + f.write(j) + f.close() + + # intermediate version with double output (DEPRECATED) + f = open("manifests_new.json", "w") + f.write(j) + f.close() + # end deprecated version + +if __name__ == '__main__': + sys.exit(main(sys.argv)) +# end if diff --git a/genManifestRelease.py b/genManifestRelease.py new file mode 100644 index 0000000000..c02551baa1 --- /dev/null +++ b/genManifestRelease.py @@ -0,0 +1,138 @@ +#!/usr/bin/python3 + +from curses.ascii import isupper +from platform import release +import sys +from os import listdir +from os import mkdir +from os import remove +from os import path +import json +import requests + +def convertJSON(infile, outfile, tag): + with open(infile) as json_file: + data = json.load(json_file) + for build in data['builds']: + for path in build['parts']: + components = path['path'].split("/") + path['path'] = "https://github.com/Jason2866/Tasmota-specials/releases/download/" + tag + "/" + components[-1] + # print(data) + j = json.dumps(data,indent=4) + f = open(outfile,"w") + f.write(j) + f.close() + +def firmwareVersion(tag): + commit = tag.split(".")[2] + url = "https://raw.githubusercontent.com/arendst/Tasmota/"+commit+"/tasmota/include/tasmota_version.h" + response = requests.get(url) + for line in response.text.split("\n"): + if "const uint32_t VERSION =" in line: + return line.split("//")[1].strip() + +def getManifestEntry(manifest, tag): + entry = {} + with open(manifest) as json_file: + data = json.load(json_file) + components = manifest.split("/") + entry['path'] = "https://github.com/Jason2866/Tasmota-specials/releases/download/" + tag + "/" + components[-1] + entry['name'] = data['name'] + entry['version'] = firmwareVersion(tag) + entry['chipFamilies'] = [] + for build in data['builds']: + entry['chipFamilies'].append(build['chipFamily']) + return entry + +def getTag(): + with open("tag_latest.txt") as tag: + tag_latest = tag.readline().strip() + return tag_latest + + +def main(args): + path_manifests = path.join('manifest') + path_manifests_release = path.join('manifest_release') + if not path.exists(path_manifests): + print("No manifest folder, exiting ...") + return -1 + files = listdir(path_manifests) + if len(files) == 0: + print("Empty manifest folder, exiting ...") + return -1 + if path.exists(path_manifests_release): + m_e_files = listdir(path_manifests_release) + # for file in m_e_files: + # remove(file) + else: + mkdir(path_manifests_release) + + tag_latest = getTag() + + output = {} + + for file in files: + # create absolute path-version of each manifest file in /manifest_ext + convertJSON(path.join(path_manifests,file),path.join(path_manifests_release,file),tag_latest) + line = file.split('.') + if len(line) != 4: + print("Incompatible path name, ignoring file:",file) + continue + # print(line[1]) + if line[0] not in output: + output[line[0]] = [[],[],[],[],[],[]] + if line[1] == "tasmota": + output[line[0]][0].insert(0,getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # vanilla first + continue + elif line[1] == "tasmota32": + output[line[0]][1].insert(0,getManifestEntry(path.join(path_manifests_release,file)),tag_latest) + continue + else: #solo1,4M,... + output[line[0]][2].append(getManifestEntry(path.join(path_manifests_release,file),tag_latest)) + continue + name_components = line[1].split('-') + if name_components[0] == "tasmota": + if len(name_components[1]) and name_components[1].isupper(): + output[line[0]][1].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # language versions last + continue + output[line[0]][0].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) + continue + elif name_components[0] == "tasmota32": + if len(name_components[1]) and name_components[1].isupper(): + output[line[0]][3].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # language versions last + continue + output[line[0]][2].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) + continue + else: #solo1,4M,... + if len(name_components[1]) and name_components[1].isupper(): + output[line[0]][5].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) # language versions last + continue + output[line[0]][4].append(getManifestEntry(path.join(path_manifests_release,file)),tag_latest) + # print(output) + + for section in output: + merged = sorted(output[section][0],key=lambda d: d['name']) + sorted(output[section][1],key=lambda d: d['name']) + sorted(output[section][2],key=lambda d: d['name']) + sorted(output[section][3],key=lambda d: d['name']) + sorted(output[section][4],key=lambda d: d['name']) + sorted(output[section][5],key=lambda d: d['name']) + output[section] = merged + + #release = output.pop("release") + #development = output.pop("development") + unofficial = output.pop("unofficial") + + + final_json = {} + #final_json["release"] = release + #final_json["development"] = development + final_json["unofficial"] = unofficial + for key in output: + final_json[key] = output[key] # just in case we have another section in the future + + print(final_json) + j = json.dumps(final_json,indent=4) + f = open("manifests_release.json", "w") + f.write(j) + f.close() + # end deprecated version + +if __name__ == '__main__': + sys.exit(main(sys.argv)) +# end if diff --git a/genManifestWithFeatureas.py b/genManifestWithFeatureas.py new file mode 100644 index 0000000000..a71aad675c --- /dev/null +++ b/genManifestWithFeatureas.py @@ -0,0 +1,197 @@ +#!/usr/bin/python3 + +from platform import release +import sys +from os import listdir +from os import mkdir +from os import remove +from os import path +import json +import requests +import gzip +import re + + + +def handle_map_gz(data): + decompressed = gzip.decompress(data).decode() + + features = {"Xdrv":[],"Xlgt":[],"Xnrg":[],"Xsns":[]} + for line in decompressed.splitlines(): + m = re.search('Xdrv\d\d', line) + if(m): + number = int(m.group()[4:]) + if(number not in features["Xdrv"]): + features["Xdrv"].append(number) + features["Xdrv"].sort() + m = re.search('Xlgt\d\d', line) + if(m): + number = int(m.group()[4:]) + if(number not in features["Xlgt"]): + features["Xlgt"].append(number) + features["Xlgt"].sort() + m = re.search('Xnrg\d\d', line) + if(m): + number = int(m.group()[4:]) + if(number not in features["Xnrg"]): + features["Xnrg"].append(number) + features["Xnrg"].sort() + m = re.search('Xsns\d\d', line) + if(m): + number = int(m.group()[4:]) + if(number not in features["Xsns"]): + features["Xsns"].append(number) + features["Xsns"].sort() + + # print("Features:",features) + return features + + +def add_features_from_map(infile): + print("Processing ",infile) + file_name = infile.split('/')[1] + file_name = file_name.split('.')[1] + # We need a repo, which holds all the map.gz files too + # This is perhaps not the final solution + url = ' https://github.com/arendst/Tasmota-firmware/raw/main/firmware/map/'+file_name+'.map.gz' + r = requests.get(url) + if(r): + # print("Found map for ",infile) + features = handle_map_gz(r.content) + return features + else: + # Fallback to Jasons special builds + # print("No map for: ",url, " , will try:") + url = ' https://github.com/Jason2866/Tasmota-specials/raw/firmware/firmware/map/'+file_name+'.map.gz' + r = requests.get(url) + # print(url) + if(r): + # print("On 2nd try found map for ",infile) + features = handle_map_gz(r.content) + return features + print("Could not find map.gz for",infile) + return {"Xdrv":[],"Xlgt":[],"Xnrg":[],"Xsns":[]} + + +def convertJSON(infile,outfile): + with open(infile) as json_file: + data = json.load(json_file) + for build in data['builds']: + for path in build['parts']: + # print(path['path']) + path['path'] = path['path'].replace("..", "https://Jason2866.github.io/Tasmota-specials") + + features = add_features_from_map(infile) + # print(features) + if 'features' not in data: + data['features'] = features + # print(data) + j = json.dumps(data,indent=4) + f = open(outfile,"w") + f.write(j) + f.close() + +def getManifestEntry(manifest): + entry = {} + with open(manifest) as json_file: + data = json.load(json_file) + entry['path'] = "https://Jason2866.github.io/Tasmota-specials/" + manifest + entry['name'] = data['name'] + entry['chipFamilies'] = [] + for build in data['builds']: + entry['chipFamilies'].append(build['chipFamily']) + return entry + + + +def main(args): + path_manifests = path.join('manifest') + path_manifests_ext = path.join('manifest_ext') + if not path.exists(path_manifests): + print("No manifest folder, exiting ...") + return -1 + files = listdir(path_manifests) + if len(files) == 0: + print("Empty manifest folder, exiting ...") + return -1 + if path.exists(path_manifests_ext): + m_e_files = listdir(path_manifests_ext) + # for file in m_e_files: + # remove(file) + else: + mkdir(path_manifests_ext) + + + output = {} + + for file in files: + # create absolute path-version of each manifest file in /manifest_ext + convertJSON(path.join(path_manifests,file),path.join(path_manifests_ext,file)) + line = file.split('.') + if len(line) != 4: + print("Incompatible path name, ignoring file:",file) + continue + # print(line[1]) + if line[0] not in output: + output[line[0]] = [[],[],[],[],[],[]] + if line[1] == "tasmota": + output[line[0]][0].insert(0,getManifestEntry(path.join(path_manifests_ext,file))) # vanilla first + continue + elif line[1] == "tasmota32": + output[line[0]][1].insert(0,getManifestEntry(path.join(path_manifests_ext,file))) + continue + elif len(line[1].split('-')) == 1: #solo1,4M,... + output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file))) + continue + name_components = line[1].split('-') + if name_components[0] == "tasmota": + if len(name_components[1]) == 2 and name_components[1].isupper(): + output[line[0]][1].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last + continue + output[line[0]][0].append(getManifestEntry(path.join(path_manifests_ext,file))) + continue + elif name_components[0] == "tasmota32": + if len(name_components[1]) == 2 and name_components[1].isupper(): + output[line[0]][3].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last + continue + output[line[0]][2].append(getManifestEntry(path.join(path_manifests_ext,file))) + continue + else: #solo1,4M,... + if len(name_components[1]) == 2 and name_components[1].isupper(): + output[line[0]][5].append(getManifestEntry(path.join(path_manifests_ext,file))) # language versions last + continue + output[line[0]][4].append(getManifestEntry(path.join(path_manifests_ext,file))) + # print(output) + + for section in output: + merged = sorted(output[section][0],key=lambda d: d['name']) + sorted(output[section][1],key=lambda d: d['name']) + sorted(output[section][2],key=lambda d: d['name']) + sorted(output[section][3],key=lambda d: d['name']) + sorted(output[section][4],key=lambda d: d['name']) + sorted(output[section][5],key=lambda d: d['name']) + output[section] = merged + + #release = output.pop("release") + #development = output.pop("development") + unofficial = output.pop("unofficial") + + + final_json = {} + #final_json["release"] = release + #final_json["development"] = development + final_json["unofficial"] = unofficial + for key in output: + final_json[key] = output[key] # just in case we have another section in the future + + # print(final_json) + + j = json.dumps(final_json,indent=4) + f = open("manifests.json", "w") + f.write(j) + f.close() + + # intermediate version with double output (DEPRECATED) + f = open("manifests_new.json", "w") + f.write(j) + f.close() + # end deprecated version + +if __name__ == '__main__': + sys.exit(main(sys.argv)) +# end if diff --git a/genManifestsForAllReleases.py b/genManifestsForAllReleases.py new file mode 100644 index 0000000000..7c963dfc41 --- /dev/null +++ b/genManifestsForAllReleases.py @@ -0,0 +1,50 @@ +#!/usr/bin/python3 + +from curses.ascii import isupper +from platform import release +import sys +from os import listdir +from os import mkdir +from os import remove +from os import path +import json +import requests +import gzip + + +def getManifestsForTag(tag): + url = "https://github.com/Jason2866/Tasmota-specials/releases/download/" + tag + "/manifests_release.json" + response = requests.get(url) + print(url) + try: + manifests = json.loads(response.content) + return manifests + except: + return {"Failed":tag} + +def getTags(): + tags = [] + with open("tag.txt") as tag: + tag_latest = tag.readline().strip() + while tag_latest: + tags.append(tag_latest) + tag_latest = tag.readline().strip() + return tags + + +def main(args): + all_tags = getTags() + all_releases = [] + for tag in all_tags: + manifests = getManifestsForTag(tag) + all_releases.append(manifests) + + # print(all_releases) + j = json.dumps(all_releases,indent=4) + with gzip.open('all_manifests_in_releases.json.gz', 'wt') as f: + f.write(j) + f.close() + +if __name__ == '__main__': + sys.exit(main(sys.argv)) +# end if diff --git a/index.html b/index.html new file mode 100644 index 0000000000..7bc5ff2c00 --- /dev/null +++ b/index.html @@ -0,0 +1,498 @@ + + + + + + Install Tasmota + + + + + + +
+ +

Install Tasmota

+ +
+
    +
  1. Connect the ESP device to your computer
    using USB or serial-to-USB adapter

  2. +
  3. Select the firmware variant suitable for
    your device

  4. +
  5. Hit "Install" and select the correct port
    or find help if no device found
  6. +
+
+
+
+ +

+ +

+

Filter by date:

+ +

+


Filter by type:
+ + + + + +

+
+
+ + + Your browser does not support Web Serial.
Open this page in Google Chrome or
Microsoft Edge instead + . +
+
+

+
+
+
+

Upload factory firmware with the file dialog or by dragging and dropping onto the dashed region

+ +

+
+
+

+ +
+
+ Tasmota Installer inspired by ESP Web Tools +
+ +
+ + diff --git a/index_no_release.html b/index_no_release.html new file mode 100644 index 0000000000..fed31d42da --- /dev/null +++ b/index_no_release.html @@ -0,0 +1,124 @@ + + + + + + Install Tasmota + + + + + +
+ +

Install Tasmota

+ +
+
    +
  1. Connect the ESP device to your computer
    using USB or serial-to-USB adapter

  2. +
  3. Select the firmware variant suitable for
    your device

  4. +
  5. Hit "Install" and select the correct port
    or find help if no device found
  6. +
+
+
+ +

+
+ + + Your browser does not support Web Serial.
Open this page in Google Chrome or
Microsoft Edge instead + . +
+
+

+
+
+
+ Tasmota Installer powered by ESP Web Tools +
+ +
+ + diff --git a/index_old.html b/index_old.html new file mode 100644 index 0000000000..faf105898d --- /dev/null +++ b/index_old.html @@ -0,0 +1,411 @@ + + + + + + Install Tasmota + + + + + +
+ +

Install Tasmota

+ +
+
    +
  1. Connect the ESP device to your computer
    using USB or serial-to-USB adapter

  2. +
  3. Select the firmware variant suitable for
    your device

  4. +
  5. Hit "Install" and select the correct port
    or find help if no device found
  6. +
+
+
+ +

+ +

+

Filter by date:

+ +

+


Filter by type:
+ + + + + +

+
+ + + Your browser does not support Web Serial.
Open this page in Google Chrome or
Microsoft Edge instead + . +
+
+

+
+
+
+ Tasmota Installer powered by ESP Web Tools +
+ +
+ + diff --git a/js/tasmota_gh_helper.js b/js/tasmota_gh_helper.js new file mode 100644 index 0000000000..5238c72338 --- /dev/null +++ b/js/tasmota_gh_helper.js @@ -0,0 +1,15 @@ +import { Octokit, App } from "https://esm.sh/octokit"; + +window.octokit = new Octokit(); + +const r = await window.octokit.request("GET /repos/{owner}/{repo}/releases", { + owner: "Jason2866", + repo: "Tasmota-specials", + per_page: 999 + }); + +window.rel = r.data + +console.log("Releases:", r.data); + +// export octokit as octo; \ No newline at end of file diff --git a/manifest/unofficial.tasmota-allsensors.manifest.json b/manifest/unofficial.tasmota-allsensors.manifest.json new file mode 100644 index 0000000000..8159b32977 --- /dev/null +++ b/manifest/unofficial.tasmota-allsensors.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota Allsensors (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-allsensors.factory.bin", "offset": 0 } + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-allsensors.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-battery.manifest.json b/manifest/unofficial.tasmota-battery.manifest.json new file mode 100644 index 0000000000..4b346720dd --- /dev/null +++ b/manifest/unofficial.tasmota-battery.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota Battery (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-battery.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-battery.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-fullrules.manifest.json b/manifest/unofficial.tasmota-fullrules.manifest.json new file mode 100644 index 0000000000..73a6e9629c --- /dev/null +++ b/manifest/unofficial.tasmota-fullrules.manifest.json @@ -0,0 +1,26 @@ +{ + "name": "Tasmota Fullrules (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-fullrules.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP32-C3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c3-fullrules.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-fullrules.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-gps.manifest.json b/manifest/unofficial.tasmota-gps.manifest.json new file mode 100644 index 0000000000..8c2f3263d3 --- /dev/null +++ b/manifest/unofficial.tasmota-gps.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota GPS (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-gps.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-gps.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-mega.manifest.json b/manifest/unofficial.tasmota-mega.manifest.json new file mode 100644 index 0000000000..3c8962ab0a --- /dev/null +++ b/manifest/unofficial.tasmota-mega.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota Mega (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-mega.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-mega.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-platinum.manifest.json b/manifest/unofficial.tasmota-platinum.manifest.json new file mode 100644 index 0000000000..461b86a7ff --- /dev/null +++ b/manifest/unofficial.tasmota-platinum.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota Platinum (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-platinum.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-platinum.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-rangeextender.manifest.json b/manifest/unofficial.tasmota-rangeextender.manifest.json new file mode 100644 index 0000000000..ff801c4f49 --- /dev/null +++ b/manifest/unofficial.tasmota-rangeextender.manifest.json @@ -0,0 +1,18 @@ +{ + "name": "Tasmota Rangeextender (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-rangeextender.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "parts": [{ "path": "../firmware/tasmota/other/tasmota-rangeextender.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-scripting.manifest.json b/manifest/unofficial.tasmota-scripting.manifest.json new file mode 100644 index 0000000000..63ed15ae1d --- /dev/null +++ b/manifest/unofficial.tasmota-scripting.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota Scripting (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-scripting.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-scripting.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-teleinfo.manifest.json b/manifest/unofficial.tasmota-teleinfo.manifest.json new file mode 100644 index 0000000000..c6f504b55b --- /dev/null +++ b/manifest/unofficial.tasmota-teleinfo.manifest.json @@ -0,0 +1,39 @@ +{ + "name": "Tasmota Teleinfo (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-teleinfo.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-teleinfo.bin", "offset": 0 }] + }, + { + "chipFamily": "ESP32-C3", + "improv": true, + "parts": [{ "path": "../firmware/tasmota32/other/tasmota32c3-teleinfo.bin", "offset": 0 }] + }, + { + "chipFamily": "ESP32-S2", + "improv": true, + "parts": [{ "path": "../firmware/tasmota32/other/tasmota32s2-teleinfo.bin", "offset": 0 }] + }, + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [{ "path": "../firmware/tasmota32/other/tasmota32s3-teleinfo.bin", "offset": 0 }] + }, + { + "chipFamily": "ESP32-C6", + "improv": true, + "parts": [{ "path": "../firmware/tasmota32/other/tasmota32c6-teleinfo.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-thermostat.manifest.json b/manifest/unofficial.tasmota-thermostat.manifest.json new file mode 100644 index 0000000000..4b6954a5c4 --- /dev/null +++ b/manifest/unofficial.tasmota-thermostat.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota Thermostat (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-thermostat.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-thermostat.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-titanium.manifest.json b/manifest/unofficial.tasmota-titanium.manifest.json new file mode 100644 index 0000000000..da33ad9c19 --- /dev/null +++ b/manifest/unofficial.tasmota-titanium.manifest.json @@ -0,0 +1,19 @@ +{ + "name": "Tasmota Titanium (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-titanium.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-titanium.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota-tls.manifest.json b/manifest/unofficial.tasmota-tls.manifest.json new file mode 100644 index 0000000000..b1d4c4909c --- /dev/null +++ b/manifest/unofficial.tasmota-tls.manifest.json @@ -0,0 +1,12 @@ +{ + "name": "Tasmota TLS (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP8266", + "improv": true, + "parts": [{ "path": "../firmware/tasmota/other/tasmota-tls.bin", "offset": 0 }] + } + ] +} diff --git a/manifest/unofficial.tasmota32-bluetooth.manifest.json b/manifest/unofficial.tasmota32-bluetooth.manifest.json new file mode 100644 index 0000000000..2d6d2724fe --- /dev/null +++ b/manifest/unofficial.tasmota32-bluetooth.manifest.json @@ -0,0 +1,21 @@ +{ + "name": "Tasmota32 BT for C3 and S3", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-C3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c3-bluetooth.factory.bin", "offset": 0 } + ] + }, + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s3-bluetooth.factory.bin", "offset": 0 } + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32-lvgl.manifest.json b/manifest/unofficial.tasmota32-lvgl.manifest.json new file mode 100644 index 0000000000..990f21a7a8 --- /dev/null +++ b/manifest/unofficial.tasmota32-lvgl.manifest.json @@ -0,0 +1,28 @@ +{ + "name": "Tasmota32 lvgl (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-C3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c3-lvgl.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP32-S2", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s2-lvgl.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s3-lvgl.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32-mi32.manifest.json b/manifest/unofficial.tasmota32-mi32.manifest.json new file mode 100644 index 0000000000..1e5ab0def5 --- /dev/null +++ b/manifest/unofficial.tasmota32-mi32.manifest.json @@ -0,0 +1,28 @@ +{ + "name": "Tasmota32 MI BLE (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-mi32.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP32-C3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c3-mi32.factory.bin", "offset": 0} + ] + }, + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s3-mi32.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32-zigbee.manifest.json b/manifest/unofficial.tasmota32-zigbee.manifest.json new file mode 100644 index 0000000000..e778bc59cf --- /dev/null +++ b/manifest/unofficial.tasmota32-zigbee.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota Zigbee (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-zigbee.factory.bin", "offset": 0} + ] + } + ] +} \ No newline at end of file diff --git a/manifest/unofficial.tasmota32-zigbeebridge.manifest.json b/manifest/unofficial.tasmota32-zigbeebridge.manifest.json new file mode 100644 index 0000000000..b6090acc04 --- /dev/null +++ b/manifest/unofficial.tasmota32-zigbeebridge.manifest.json @@ -0,0 +1,15 @@ +{ + "name": "Tasmota32 ZigbeeBridge (english)", + "home_assistant_domain": "tasmota", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32-zigbeebridge.factory.bin", "offset": 0} + ] + } + ] + } \ No newline at end of file diff --git a/manifest/unofficial.tasmota32c2.manifest.json b/manifest/unofficial.tasmota32c2.manifest.json new file mode 100644 index 0000000000..cbd1405daf --- /dev/null +++ b/manifest/unofficial.tasmota32c2.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-C2 4M (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-C2", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c2-arduino30.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32c3_2M.manifest.json b/manifest/unofficial.tasmota32c3_2M.manifest.json new file mode 100644 index 0000000000..33780fe04a --- /dev/null +++ b/manifest/unofficial.tasmota32c3_2M.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-C3 2M (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-C3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c3_2M.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32c6.manifest.json b/manifest/unofficial.tasmota32c6.manifest.json new file mode 100644 index 0000000000..516d3417b3 --- /dev/null +++ b/manifest/unofficial.tasmota32c6.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-C6 4M (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-C6", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c6-arduino30.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32c6cdc.manifest.json b/manifest/unofficial.tasmota32c6cdc.manifest.json new file mode 100644 index 0000000000..ccafee36ce --- /dev/null +++ b/manifest/unofficial.tasmota32c6cdc.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-C6 CDC 4M (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-C6", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32c6cdc-arduino30.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32s3-opi_opi.manifest.json b/manifest/unofficial.tasmota32s3-opi_opi.manifest.json new file mode 100644 index 0000000000..025d0246e1 --- /dev/null +++ b/manifest/unofficial.tasmota32s3-opi_opi.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-S3 (OPI Flash/OPI PSRAM)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s3-opi_opi.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32s3cdc-box.manifest.json b/manifest/unofficial.tasmota32s3cdc-box.manifest.json new file mode 100644 index 0000000000..06cb6a3ae4 --- /dev/null +++ b/manifest/unofficial.tasmota32s3cdc-box.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-S3 BOX (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s3cdc-box.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32s3cdc-opi_opi.manifest.json b/manifest/unofficial.tasmota32s3cdc-opi_opi.manifest.json new file mode 100644 index 0000000000..6cd73d2c26 --- /dev/null +++ b/manifest/unofficial.tasmota32s3cdc-opi_opi.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-S3 CDC (OPI Flash/OPI PSRAM)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s3cdc-opi_opi.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32s3cdc-qio_opi.manifest.json b/manifest/unofficial.tasmota32s3cdc-qio_opi.manifest.json new file mode 100644 index 0000000000..befc0733ee --- /dev/null +++ b/manifest/unofficial.tasmota32s3cdc-qio_opi.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32-S3", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32s3cdc-qio_opi.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32solo1-bluetooth.manifest.json b/manifest/unofficial.tasmota32solo1-bluetooth.manifest.json new file mode 100644 index 0000000000..1b032592c1 --- /dev/null +++ b/manifest/unofficial.tasmota32solo1-bluetooth.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32 Solo1 Bluetooth (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32solo1-bluetooth.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest/unofficial.tasmota32solo1-thermostat.manifest.json b/manifest/unofficial.tasmota32solo1-thermostat.manifest.json new file mode 100644 index 0000000000..2b2c58f76c --- /dev/null +++ b/manifest/unofficial.tasmota32solo1-thermostat.manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Tasmota32 Solo1 Thermostat (english)", + "new_install_prompt_erase": true, + "funding_url": "https://paypal.me/tasmota", + "builds": [ + { + "chipFamily": "ESP32", + "improv": true, + "parts": [ + { "path": "../firmware/tasmota32/other/tasmota32solo1-thermostat.factory.bin", "offset": 0} + ] + } + ] +} diff --git a/manifest_ext/.keep.me b/manifest_ext/.keep.me new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/manifest_ext/.keep.me @@ -0,0 +1 @@ + diff --git a/manifest_test.json b/manifest_test.json new file mode 100644 index 0000000000..65d4b148f1 --- /dev/null +++ b/manifest_test.json @@ -0,0 +1,167 @@ +{ + "unofficial": [ + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-allsensors.manifest.json", + "name": "Tasmota Allsensors (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-battery.manifest.json", + "name": "Tasmota Battery (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-fullrules.manifest.json", + "name": "Tasmota Fullrules (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-gps.manifest.json", + "name": "Tasmota GPS (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-mega.manifest.json", + "name": "Tasmota Mega (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-platinum.manifest.json", + "name": "Tasmota Platinum (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-rangeextender.manifest.json", + "name": "Tasmota Rangeextender (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-scripting.manifest.json", + "name": "Tasmota Scripting (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-tls.manifest.json", + "name": "Tasmota TLS (english)", + "chipFamilies": [ + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-teleinfo.manifest.json", + "name": "Tasmota Teleinfo (english)", + "chipFamilies": [ + "ESP32", + "ESP8266", + "ESP32-C3", + "ESP32-S2" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-thermostat.manifest.json", + "name": "Tasmota Thermostat (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota-titanium.manifest.json", + "name": "Tasmota Titanium (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-zigbee.manifest.json", + "name": "Tasmota Zigbee (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-mi32-homebridge.manifest.json", + "name": "Tasmota32 MI Homebridge (english)", + "chipFamilies": [ + "ESP32", + "ESP32-C3", + "ESP32-S3" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32solo1-bluetooth.manifest.json", + "name": "Tasmota32 Solo1 Bluetooth (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32solo1-thermostat.manifest.json", + "name": "Tasmota32 Solo1 Thermostat (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-zigbeebridge.manifest.json", + "name": "Tasmota32 ZigbeeBridge (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32c3_2M.manifest.json", + "name": "Tasmota32-C3 2M (english)", + "chipFamilies": [ + "ESP32-C3" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32-bluetooth.manifest.json", + "name": "Tasmota32-C3 S3 Bluetooth (english)", + "chipFamilies": [ + "ESP32-C3", + "ESP32-S3" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32s3cdc-qio_opi.manifest.json", + "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)", + "chipFamilies": [ + "ESP32-S3" + ] + }, + { + "path": "https://github.com/Jason2866/Tasmota-specials/releases/download/2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1/unofficial.tasmota32s3cdc-box.manifest.json", + "name": "Tasmota32-S3 BOX (english)", + "chipFamilies": [ + "ESP32-S3" + ] + } + ] +} diff --git a/manifests.json b/manifests.json new file mode 100644 index 0000000000..00e09f2e03 --- /dev/null +++ b/manifests.json @@ -0,0 +1,177 @@ +{ + "unofficial": [ + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-allsensors.manifest.json", + "name": "Tasmota Allsensors (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-battery.manifest.json", + "name": "Tasmota Battery (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-fullrules.manifest.json", + "name": "Tasmota Fullrules (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-gps.manifest.json", + "name": "Tasmota GPS (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-mega.manifest.json", + "name": "Tasmota Mega (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-platinum.manifest.json", + "name": "Tasmota Platinum (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-rangeextender.manifest.json", + "name": "Tasmota Rangeextender (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-scripting.manifest.json", + "name": "Tasmota Scripting (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-tls.manifest.json", + "name": "Tasmota TLS (english)", + "chipFamilies": [ + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-teleinfo.manifest.json", + "name": "Tasmota Teleinfo (english)", + "chipFamilies": [ + "ESP32", + "ESP8266", + "ESP32-C3", + "ESP32-S2", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-thermostat.manifest.json", + "name": "Tasmota Thermostat (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-titanium.manifest.json", + "name": "Tasmota Titanium (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbee.manifest.json", + "name": "Tasmota Zigbee (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-mi32-homebridge.manifest.json", + "name": "Tasmota32 MI Homebridge (english)", + "chipFamilies": [ + "ESP32", + "ESP32-C3", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbeebridge.manifest.json", + "name": "Tasmota32 ZigbeeBridge (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-lvgl.manifest.json", + "name": "Tasmota32 lvgl (english)", + "chipFamilies": [ + "ESP32-C3", + "ESP32-S2", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32c3_2M.manifest.json", + "name": "Tasmota32-C3 2M (english)", + "chipFamilies": [ + "ESP32-C3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-bluetooth.manifest.json", + "name": "Tasmota32-C3 S3 Bluetooth (english)", + "chipFamilies": [ + "ESP32-C3", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-bluetooth.manifest.json", + "name": "Tasmota32 Solo1 Bluetooth (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-thermostat.manifest.json", + "name": "Tasmota32 Solo1 Thermostat (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-qio_opi.manifest.json", + "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)", + "chipFamilies": [ + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-box.manifest.json", + "name": "Tasmota32-S3 BOX (english)", + "chipFamilies": [ + "ESP32-S3" + ] + } + ] +} diff --git a/manifests_new.json b/manifests_new.json new file mode 100644 index 0000000000..00e09f2e03 --- /dev/null +++ b/manifests_new.json @@ -0,0 +1,177 @@ +{ + "unofficial": [ + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-allsensors.manifest.json", + "name": "Tasmota Allsensors (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-battery.manifest.json", + "name": "Tasmota Battery (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-fullrules.manifest.json", + "name": "Tasmota Fullrules (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-gps.manifest.json", + "name": "Tasmota GPS (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-mega.manifest.json", + "name": "Tasmota Mega (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-platinum.manifest.json", + "name": "Tasmota Platinum (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-rangeextender.manifest.json", + "name": "Tasmota Rangeextender (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-scripting.manifest.json", + "name": "Tasmota Scripting (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-tls.manifest.json", + "name": "Tasmota TLS (english)", + "chipFamilies": [ + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-teleinfo.manifest.json", + "name": "Tasmota Teleinfo (english)", + "chipFamilies": [ + "ESP32", + "ESP8266", + "ESP32-C3", + "ESP32-S2", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-thermostat.manifest.json", + "name": "Tasmota Thermostat (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota-titanium.manifest.json", + "name": "Tasmota Titanium (english)", + "chipFamilies": [ + "ESP32", + "ESP8266" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbee.manifest.json", + "name": "Tasmota Zigbee (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-mi32-homebridge.manifest.json", + "name": "Tasmota32 MI Homebridge (english)", + "chipFamilies": [ + "ESP32", + "ESP32-C3", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-zigbeebridge.manifest.json", + "name": "Tasmota32 ZigbeeBridge (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-lvgl.manifest.json", + "name": "Tasmota32 lvgl (english)", + "chipFamilies": [ + "ESP32-C3", + "ESP32-S2", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32c3_2M.manifest.json", + "name": "Tasmota32-C3 2M (english)", + "chipFamilies": [ + "ESP32-C3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32-bluetooth.manifest.json", + "name": "Tasmota32-C3 S3 Bluetooth (english)", + "chipFamilies": [ + "ESP32-C3", + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-bluetooth.manifest.json", + "name": "Tasmota32 Solo1 Bluetooth (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32solo1-thermostat.manifest.json", + "name": "Tasmota32 Solo1 Thermostat (english)", + "chipFamilies": [ + "ESP32" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-qio_opi.manifest.json", + "name": "Tasmota32-S3 (QIO Flash/OPI PSRAM)", + "chipFamilies": [ + "ESP32-S3" + ] + }, + { + "path": "https://Jason2866.github.io/Tasmota-specials/manifest_ext/unofficial.tasmota32s3cdc-box.manifest.json", + "name": "Tasmota32-S3 BOX (english)", + "chipFamilies": [ + "ESP32-S3" + ] + } + ] +} diff --git a/tag.txt b/tag.txt new file mode 100644 index 0000000000..9b91ebb03c --- /dev/null +++ b/tag.txt @@ -0,0 +1,578 @@ +2023-03-12.d.0bc48d16c22f3c92c80b65808c2c755b3cd985e1 +2023-03-13.d.2ce93bddddf1977cc7c369572cbea6cf1221c923 +2023-03-13.d.bda32739a8d55f970f537435c12c4e36bb4f7926 +2023-03-14.d.52227b029477b338ef1a0dc986a154deff1c97e7 +2023-03-14.d.0d3302ad04adc9315ad78650257cc6021b08797d +2023-03-14.d.1131ffada1e60234edb407e529d058e76bdfc0fa +2023-03-15.d.da4a1db300a17fc2dcb07627d2375a12f94593dd +2023-03-15.d.cc09ff21e1ddd6b9b92fac5fa9dafdd21fc5dfcc +2023-03-16.d.09255d6373805ddebe5b4d6c5c81eb366ba2455a +2023-03-16.d.d0f463761105ae11439bbdce1105f54494cbc775 +2023-03-17.d.9a3a479c4f20197f6836582860475f7534d62fc3 +2023-03-18.d.e92e115451e81c591f79bd84b86807d03f4f2f72 +2023-03-19.d.948a82d75e3f626e3c08a7a573c22f434f2a1e1d +2023-03-20.d.59677d7e4a3c9553b8df4fbcff8748d579351d40 +2023-03-20.d.fbbb4eaf84100ef32f62f7d9f55024bcff1300f3 +2023-03-21.d.a68bc49cabff8239a5854c0b79c705bf062f28fa +2023-03-21.d.b71968729f4cbceb9ac9551160ab15f6daf34578 +2023-03-21.d.d6ed4adcf689ba1a4df6d9e5614e2ce4c03e9a6e +2023-03-22.d.ab03654e02c42fc58f03d0577833f7e90c9c9395 +2023-03-22.d.00c60450c6de05e4ac646f551f9043b5c009227e +2023-03-22.d.d7370e72110e035c00e38636e22cf3d5845fe082 +2023-03-24.d.938399e086b544ad0817c4c60f1e881a38435804 +2023-03-25.d.9ae7b86efc7eb5fb1dbff3983e9a01d1fdf258eb +2023-03-25.d.ebe308acfc4cac691078f5f2803fbf871587239f +2023-03-25.d.a04c77138659c7cacb769652b3cefc71153a2a1d +2023-03-26.d.215c9cc30f2bf87f9fa3de1e0bb31412b3b8447e +2023-03-26.d.0f08a076580e52ec681c9bf219ad748a67ce2b5e +2023-03-26.d.2afa863e54df160d19cb9f17742b4097c0b87ae4 +2023-03-26.d.bbdd8e1eda785fb9477aa90b399373e9ed64e066 +2023-03-26.d.25b9bef5978519af77a6ed5f22e66854de7c2c64 +2023-03-27.d.50dfd3014829c34dba78dffdc08e3b7f01c3ab6c +2023-03-27.d.b321fab8680affc61c4d2818c8e6380e9151b2ca +2023-03-29.d.3cbe3dbf8b4cb59a206e5de457cd89fa98ab7804 +2023-03-30.d.736ac74f538991d73f5075b3ace50e69c1d2b3bb +2023-03-31.d.d8f9a920cebeaed5c6e2445de0faaf930c284075 +2023-04-02.d.6499ec7142a487cfe984059764d82e26bc134624 +2023-04-02.d.1c72afbc1ace519b92cb90206a5902cc9e72c7d2 +2023-04-03.d.96e5f0dd3855535f8b6da41d867d3085189e020f +2023-04-03.d.d9353cf1e3c44cc29ced448f336adab54575f11b +2023-04-03.d.b1ea413eae126270143896d98b7cca29bda66178 +2023-04-03.d.d7af0ae0772b187700eaeabcd7bdf53c7ddfe7c4 +2023-04-04.d.f109d6ff72a3dada2caa7c53676b5d02f3dc4fc5 +2023-04-05.d.9c6fdc7027a7a15cd986a3bdaeba2d48c86c813f +2023-04-05.d.864c60c579f7fc4238e7e4d460093c87cd80071f +2023-04-06.d.d8bdcebc786cd24d2cc3064f1afcf93de189a103 +2023-04-06.d.1a42320a16b01a5033548d3374500e5c56440a07 +2023-04-07.d.97993934f2acf2e2eff559223c5e39b8a905b78d +2023-04-08.d.86be6c8a3da1f4bdc5567cce5bf9ecf9ebc8372c +2023-04-08.d.52060259cecd1919bb6b1f8d3dc6327e92b8c835 +2023-04-10.d.506248be9967b7da36153df7844e7dcdee464c9e +2023-04-10.d.3354e2acbfcff1fdf45ad19e68ddceeb6dcd5af8 +2023-04-10.d.44dad1245d6c34e1acb217cdbce45ffdab914937 +2023-04-11.d.5bf605340ca6c2a0592f2f66220e7b2ec1c61eee +2023-04-12.d.6d9beb5d794428a32ede7ec5c6f7522c5bfa3e23 +2023-04-12.d.b8483dfb6fa5461ee83415acb63ce40641d936db +2023-04-13.d.870874d181596ab3a62abeb91ec2a2f0122e2c6a +2023-04-13.d.009e07fd074218c6f6b334adb2665322249dc180 +2023-04-14.d.8402f49d0e08eebe998a754aaf10b0e9a3fb170c +2023-04-15.d.538b5a0aa65b7586518dac8719f952018949d38b +2023-04-15.d.21c381282697c6a33c99af536ab4580ac8f23fca +2023-04-15.d.0feba56d8e63d56005712aff3db4105717735033 +2023-04-16.d.3d0354b6fbbd139fe452d2f3b837c97398970942 +2023-04-16.d.2a8b859e37150ae6e2da450cf7563d845ebb64d0 +2023-04-16.d.96f6f69f13e048c97d24a263418826375c45eb8c +2023-04-16.d.de45a7af26264b3fee6f33614665a4fd9ea55633 +2023-04-16.d.e2e142f2898dfa217da5d5aaf318f0fbe07e18e7 +2023-04-17.d.05f6bcf211a52848f89b6f2b85b7d6e00ad0e305 +2023-04-17.d.4bac940a407c68bca1c6ee2cc4d34bd7f0bb7087 +2023-04-18.d.eb40496e4bf347a5aa86d482554aefcf5d014df5 +2023-04-18.d.65eb9142a26ae596d4b47c8bfc95748682a65bf2 +2023-04-19.d.b235dffb291075c51730cac3e605ff2478b6f8ed +2023-04-20.d.49d5356ea312db41101ec9a4fd908ddb006cde99 +2023-04-21.d.ca88aa2519218c5775bce10b8e3bab2efd6f30e2 +2023-04-21.d.112c254d54a535378ccca0beb46ed8dfb91d0ccf +2023-04-21.d.d9eeb8bf57a63e28533be032d5a4378ad0263da9 +2023-04-21.d.045f8b4aec50fb5cf3d44cfda110d24513dd6024 +2023-04-22.d.a2b9574ec995ceffaa98ac82c5ee335185134640 +2023-04-22.d.f9e3b25c9b2eecce33a8129d519075126cb2f6e4 +2023-04-23.d.21bb822dec0cd13f8af66a532297cfa70db4ef7a +2023-04-23.d.c1db67ce376ae5bf93c8abc0092632cbe595157d +2023-04-24.d.763a8671ab320dd16856da7b8275840a1b93de7b +2023-04-24.d.fba15dea717b98258b0ad5313beac60ad0eac9d5 +2023-04-25.d.39abde258393321f35b9adc78b2c2fcde3dd43de +2023-04-25.d.c8318248bb7d853104e3c288e6c8ba9cd33eb24b +2023-04-26.d.afbdb3d54f29b5878a452d3f976e2031c1698173 +2023-04-26.d.ee9d086abacbec1d9d0d4d5850212661ad0656e3 +2023-04-27.d.60855bf367f7ee62cf22196e700f606a1dd72160 +2023-04-27.d.e4e2fcdc6d30574e5d924e0174d5ef58d0c0906c +2023-04-27.d.c33472d9b63f93b0fb425bf6014eefe2a9fd7419 +2023-04-27.d.53bd49ddcd0164947e7432e3528596f6649df8ef +2023-04-27.d.f86bc7d8ab612588bde1b8976696a0cf9a455b29 +2023-04-28.d.d206de52f11780264cc5401ae5173fbc1ff0955d +2023-04-29.d.c5612a50fb85bcffe84b2ebcde3caafb334bc4fc +2023-05-01.d.cda2bf157dd5dec61a5621e220321d21d1e3784d +2023-05-02.d.c498995f7902a3c2a0f771531869269bccd7326d +2023-05-03.d.ec00f0f7e2ead311de113462e20b5995aa491ad3 +2023-05-03.d.9097f508fd49bf1404db28999d78c15c4d6b67ac +2023-05-04.d.13de7a486348e5cabc764b03682fa6f5f4f9bdb5 +2023-05-05.d.687b26ad1351cbd10285e783e2addf663194e203 +2023-05-05.d.08ce63863e6e4a36a4c2e15e791f7765d76d32b4 +2023-05-06.d.8b2539a35a26af2744a0225ff7ad3fac27d8d0a1 +2023-05-06.d.b9464a21a8eb064264888fe2c5cd1c689d932115 +2023-05-06.d.e9d1e8c7250d89a24ade0c42a64731d6c492bbb2 +2023-05-07.d.0287291cd9fe2be7938e31339dc46544b6b37747 +2023-05-07.d.a46b926530616dd7f73ada91c50bb1d1f1c6ad4e +2023-05-07.d.519ea557c7f6a10b274391d828822a5e8b09e3d8 +2023-05-07.d.da5396a080bf46a182704ca5a101addf5d2cfedb +2023-05-07.d.c42f9595203d1b3bc7a18217a2751c53015ecff5 +2023-05-07.d.ba9c7651a785d393a66b62bd4deeb17e596871d3 +2023-05-07.d.ae6d435aaf94aa2e2f2d6e890ec57e931fd248dc +2023-05-08.d.45eb82bc3fe01d4ab32d1a105f5e20c61c82db3f +2023-05-08.d.faff39ca11be659c28db5fe92ffecd9027ae1832 +2023-05-08.d.ffedb96702ab65d17746fd9b1ca4de4a890a6ff7 +2023-05-08.d.4cd1136f4c3a3a8f04851909edf057ade9f9f789 +2023-05-09.d.652a8edefa670223a17278eef1d7725d3cd1fcaa +2023-05-10.d.3a6cd9b63c6bc3fc6e69654bec1901af5a9a3fa9 +2023-05-11.d.86979646fff377a0acfdd88b1c7e1d202f97a5a6 +2023-05-14.d.9b8f3b6b4c688323a5fa722e5a46a89967d69a65 +2023-05-14.d.951b9b4682c857f2c37a3695e5dc67aa7186f9ae +2023-05-15.d.81d7785f66de9c0540f96c3ae2fbcbd8825db9cf +2023-05-16.d.f8b26a90f6c09c2575e7311b9552c8821478e540 +2023-05-16.d.0385204ca781e0d041a0c2f6aa96012c2cad101b +2023-05-17.d.4d131fd543f29f9a8c4f260ac54199a6e38bb896 +2023-05-17.d.57f85ae4783c0ba64d8833e86650a908b4badda9 +2023-05-17.d.d48c826d420b7e63aed38fb4459f7d45d560cd56 +2023-05-19.d.77103baa0a31cbe953d8300bc76cc91b94a5a640 +2023-05-19.d.4afcdc11d628f060ca2a7421a02c3f87905ec9b3 +2023-05-19.d.f5d6578fb5efe2123aa78fcbc9140401c0a069ba +2023-05-20.d.63a83c72897b69708d52782e8ce5d6fcffdc50ec +2023-05-20.d.d5ad79985bce8d32c86a8f8f189417d31de4da5f +2023-05-21.d.a76ebaae48bc7ec573fa277c1c9bed6e810b2607 +2023-05-21.d.ae518424bc122c2800ff21e1849d387eeabeea40 +2023-05-21.d.a39d1eee0e412d981da71854dcefda89c78b4b7e +2023-05-22.d.80afc8793f63cb4aa2e6e78727e1839c674d3c2b +2023-05-22.d.9a88677122da9dd7c3dfa7c2d0e1547e08fb68aa +2023-05-22.d.fd7b18a11ff7f39812d26285afc0b036b25e0e7f +2023-05-23.d.b715f03db651ca4ef22f03d791d8e241769602d5 +2023-05-24.d.4be618fe7b6d3d4eb22870b89ea494f0884883a0 +2023-05-24.d.fc67cca8b42265c909b2d84ec6e906d511e6f7b1 +2023-05-24.d.d0e88c9dae9e6382d15714a5e7c93d5a44a7f62f +2023-05-25.d.75f634dc71e2ca9fceb6ed6b2ef5979fa5843a06 +2023-05-25.d.e05d75248e0444b0966a0b4d1803c4512e787a44 +2023-05-25.d.6fa22aae6b1b2a84fef6d592b1aebb0caa661091 +2023-05-26.d.e87714dbcdb5e03a70384a329ed3ea8095bcfb89 +2023-05-26.d.7f8f75d19694cce58d727095d63ecb8fd23826b4 +2023-05-27.d.d91e1e8bcc0a8d67636fdbb39e17656041ef7ed6 +2023-05-27.d.7b55e1aca23aff2089a4af6afd7522114d92b9a8 +2023-05-29.d.b053cf87ece5eb14b013c51ab457fe372d5a153c +2023-05-29.d.8e741052b8f8db722fdc52f228575d578fa25da0 +2023-05-29.d.bf2982854bc1e243debdc7933b8597603048b12a +2023-05-29.d.07b7a7ee9a5b1e7d5ffbb676502431293c69b6f3 +2023-05-29.d.83e47fa4a8018199cb58135498721f87830e09c1 +2023-05-29.d.83e47fa4a8018199cb58135498721f87830e09c1 +2023-05-29.d.596482284cab41ae04800cf0f548347619c6ed6a +2023-05-30.d.87547657ec1ec5d298ad95fb6c7cdbda59a120f9 +2023-05-31.d.10821b7e2487f9f543c11ae15b9252525ebf7a2b +2023-05-31.d.74f9973b8b703731a50f56b72f2636edf0f68bfa +2023-06-01.d.b9d855ef79e8634d66f513dfc2892ddeea296f34 +2023-06-01.d.9d57a19be3b2d48acb2885dd8435cd0bc204b029 +2023-06-01.d.55b109de68f25206c3d56bba54ce9cd76eea7d9f +2023-06-02.d.4e7475dbd44ce1ec861869815a51721062b9bdaf +2023-06-02.d.f8df9e5f00f12f9ff383fa4484965ff92fc2f992 +2023-06-02.d.61f17221d0b1eab2b7a3228b1e5d7142bae668d7 +2023-06-03.d.6fdfdb847597f91086d9fb5c1fa0593c63fd6d2b +2023-06-04.d.844caf51f9dd9a426b1274ba8300516db932f03e +2023-06-04.d.844caf51f9dd9a426b1274ba8300516db932f03e +2023-06-04.d.31b93f8d4820c51431911a97d80bdfc34c334c0e +2023-06-06.d.a0a1b89dfbe43bae95df0c307d35e994d7bcea1b +2023-06-06.d.18c2bc8320e7cdd0e0e8709b15d2ead5ec3c6e42 +2023-06-06.d.5c3a6d9170f56350fa867a2ed2ab8d7633733734 +2023-06-06.d.73c48ff5f0b3a1c07799196711ad59a60f9cc667 +2023-06-07.d.5a8f13d57ffb63efdfdaa01a578f46af63cc321e +2023-06-07.d.f572d93ac6580f8f45147a2ac1d72cd82948deae +2023-06-07.d.4ce3e5c544cc4577ba998646e7882ad2e71c8089 +2023-06-08.d.2ffd4311c3afc4a3fa30e4c01d43aa8994a0697f +2023-06-08.d.ae67c6cfa1cb793cb35b4a8d4ac314a27aadc48d +2023-06-08.d.676165f3f6e5b62201c422ab6ca3c1d216a1c79e +2023-06-09.d.fc92dc0995b9f430725f8d41babf590de4b20975 +2023-06-09.d.6aed929e17d6367cf48e046994881d52b17d8be0 +2023-06-10.d.63cc575c8b3a0af4254e3d7592a426a50f78a8fd +2023-06-10.d.2f616eef2c0b414c7683b69b2218ab76dcad59fc +2023-06-10.d.827c14e4bdd8d599abd43e7bc52898188a63ba3f +2023-06-10.d.5cb9bae72c1297a7aa415efa96d1e4a3a472503c +2023-06-10.d.5da84c52ff696203e2bb004b503816cc2547e5d5 +2023-06-11.d.a014f5495b406d03243f56cb59c2779af0ec3191 +2023-06-11.d.c88bff5a4698813ce37435af6a00d07435835c02 +2023-06-11.d.badf064ab4f490742f379d4fdd604d9fdef16404 +2023-06-12.d.ae773895f83083dede1c180e5941cc517ab9d920 +2023-06-12.d.bc213289cdd24c26f801cab10b6f1a0c26cd835f +2023-06-12.d.69b2b93d611b3f1a64cd039d7dea1313318445da +2023-06-12.d.69b2b93d611b3f1a64cd039d7dea1313318445da +2023-06-13.d.558819c7488e4d67c2f2ecb05ab46601024af070 +2023-06-14.d.bbd6fa7202f74aac61dcecfac602cecbdc4dac2c +2023-06-14.d.156a3551b0f663158c5723f12ddd51c5ece6d00c +2023-06-14.d.bd6aff77f7536edca6e9532c7d4be796ee246389 +2023-06-14.d.28861821a684886637470b0f7a7603ce902843b8 +2023-06-16.d.3fc932d38aa56cf58bb348d6623facf8e75e2a62 +2023-06-18.d.4a3b6457ca4c21f587f2e6de7fca2ab4a9130e07 +2023-06-18.d.5059a11b9f835cf3c452ceafc47722fe07ae377a +2023-06-18.d.d5c727129ed071557b383f9bc65795edb3968f1e +2023-06-20.d.2d515dc91f7a8ed26b0343922c0fb4a19cf97581 +2023-06-21.d.635e240293e18eacb79c49a8a0e91e4f2375b4df +2023-06-21.d.1a460926f61443f7328c50e26f08d6ebc1e9583e +2023-06-21.d.325ceef839707a51daff1ee9b06aed5170b51649 +2023-06-22.d.04521e554223811ec12a4b77eb32a49a57bd4877 +2023-06-22.d.85f357096a94aea663a538efb202076c700a48b2 +2023-06-22.d.bf36868813d1d5e2b2e479f97b96ef7f71a6aad3 +2023-06-23.d.7d68c55b380c2b317fa6b77ee64b59fd6eb1721f +2023-06-23.d.5792dad12bb56f3cfb155f5f2c55b977074a6145 +2023-06-23.d.0ac5d0945b6d1d8a1cacb5bf3f9d5cd360180093 +2023-06-24.d.9a3d3988a2ceeaf35eab30b8bf42e238049667d9 +2023-06-24.d.01abf97410f5df22468f3d59c376e6f00b08c0cd +2023-06-24.d.81ded35a2c9506fe4da5210502f552e1e32a58b8 +2023-06-25.d.89a815f196061278baee61b78d27bc0c6d575e8d +2023-06-25.d.3642d8ef37faf406cbf1b6fc1093de6997941858 +2023-06-25.d.99a0f2add16c459f739be034fd2b96cfe91da489 +2023-06-25.d.30a65edd7abe56021b5222d2e73960005f3e9647 +2023-06-25.d.090a4bb4b523ff8735c6384a3c5b01a9b3b86bb8 +2023-06-26.d.b53a161106fc8498e12386552a05947e8d8e2d3a +2023-06-26.d.d9a66547aae9a5058cdf53f782141b37e0c46073 +2023-06-26.d.0930bbddf5d3c566b173fad54b7fbe2bc8d557fa +2023-06-26.d.7892a3879589cb7c9aed6409baed1dc6504f273a +2023-06-27.d.9cf3d16065e37c320ac624af14a8f03b07c1497e +2023-06-27.d.694bebb5741cbe276a43030e96306990d9faa0ab +2023-06-27.d.b9588e6192a870e6483469c1c102616e3f565b25 +2023-06-27.d.1e19e13c6f0bec007d41586c80a8b923763b65f8 +2023-06-28.d.504b51a9b4d74a8006bc6da2950770f5647868ee +2023-06-28.d.952811b4eba64770aca3e6b935b92cd690ddd1ad +2023-06-29.d.c303c80add230258827f64d471a6a8b0e3b3bb97 +2023-06-29.d.48e1dd4d7fce82400db90e5c49182e1a03e6ea0f +2023-06-29.d.ef304a8ba84bd7900beec5e192305bc03a4b24d2 +2023-06-29.d.465ae023ab65d45a9878a9088a22ce843424c54e +2023-06-29.d.ff865d8005b287dd7dbc9c75b118a57a82c0a114 +2023-06-29.d.52392a2b48131b209ff082ffd7d3947048236f10 +2023-06-30.d.ad404dfc0c86d0463ce771ecd730b36ee37d2d02 +2023-06-30.d.ad404dfc0c86d0463ce771ecd730b36ee37d2d02 +2023-06-30.d.2705374160bb0cd6f2c14ea9fa2d9093315caf82 +2023-07-01.d.3edb5bb0964e92a9000cafd8be950974b94067bd +2023-07-01.d.85aed3a17de1cb74d3f147d51a7fa5cfecb713a7 +2023-07-02.d.7cd2d78b2611e5b03e6f5b43ea3a276995b262a2 +2023-07-02.d.d72f3b99782fb926e0fa57c62b914cafea9c2478 +2023-07-03.d.8f06552eeeedda4e8ac694e327d58b10bfc153a9 +2023-07-03.d.cc55cf0bb18af44f3a5eb184b56d4220b03bfcf6 +2023-07-06.d.4c0535687f901d4c8dcab5b7022d77dbb0a1a84b +2023-07-06.d.dd2dab4609de7061ccc66a823d22a615badde81d +2023-07-06.d.f462fa772dedc5dd228e42d3e5f9963163037e9a +2023-07-06.d.57c4825ccd1ef0f34defb4161f4559fc0065f336 +2023-07-06.d.5c9c4e6dad2a9156cc27240d331a0e68bf024878 +2023-07-07.d.d9d9ca2651363ac364f720403657e557e8a0efe8 +2023-07-08.d.7afc4865e191474702c32c3b8079d90b0b9ef4c7 +2023-07-08.d.0502c15ce34c230d0b80bd178fc2e54be7871ee6 +2023-07-08.d.05d589f2d74256419bb74688f08e721ebdcddaa1 +2023-07-08.d.8d161d04f7dbf0b42c570f24a5f3114840d73bc2 +2023-07-09.d.b7c9182c1433a31ff68b4d4efc2ef11ebfa1d78e +2023-07-09.d.fcfc3ecb3780983fe5106334096849747ccbe290 +2023-07-10.d.b1cc87d24f9eb8f5dfd7836307cc040038d11d12 +2023-07-10.d.43bc81010fb7a042a402355214981b2879d2bb02 +2023-07-10.d.cefd42c820ba54da24dc3443fc85614b42153fc9 +2023-07-11.d.8c31acd3769766ba8528845c38baeb91ef2b5f65 +2023-07-11.d.889e6ea54d8541ba713eb305d7d15d7695abc5e5 +2023-07-12.d.5b6a25a7a00791986a1a0596f4470b933e4e2697 +2023-07-12.d.9638beacec1418b2d18d97a3fe0aaf148f3ebdba +2023-07-14.d.ebca2f0a075b9635883572307253bf1f1c60f293 +2023-07-15.d.ada754c582ed835798dbc66e023e997e2059e0a9 +2023-07-15.d.af27d65a8a0aa57d5258679928aa2220d94e44e0 +2023-07-15.d.0c0ca82198fe7d5fba650d0aaef9b8dc7f6c1cd8 +2023-07-15.d.ca8ec6a0066b3475d9d411c380f195c134569743 +2023-07-15.d.315fe36727e2089f67d970acdb3cac0c872aef0c +2023-07-16.d.f4ff0010af0a12d13f2745bce303f794ba387094 +2023-07-16.d.410a6b99d9c7c8155f89cf1cc64fb0335f756105 +2023-07-18.d.6382c2806cceac90c6068a613545ded9b9ec3728 +2023-07-19.d.3da5124348958d9cc7f4669fc27edb3f15b7d014 +2023-07-20.d.d1a4296867fb8d48d06de1f05761fe6db2f2fe20 +2023-07-20.d.2cc0964a5fe0dff8ba0dcdb8d51ac6ebec77fb37 +2023-07-21.d.c7a22f175b11da35aee55146a30401f69d883c36 +2023-07-22.d.bc41500d9c4045a66e4a240b72c0b717c221e7c4 +2023-07-22.d.421c95a51bd9bee13667e20cfe26368b8c392702 +2023-07-22.d.6d3aedcafe6851bee060b860d25b563f5bb8f6a5 +2023-07-23.d.31c3555d4de1f91f22ff721efb0dc0e25b27a2b2 +2023-07-23.d.994c105bdaa4e55ef62add32da30af0bc74f15dc +2023-07-23.d.c5be85f4437333bab6965649a0e16bf122933ec9 +2023-07-24.d.f626539c1845175eef43e36ae18de238f31da1df +2023-07-24.d.17cf73595f77b2d1bfc0c767aa301098d4b7789d +2023-07-24.d.978a21240cb98ee06912c51e9b41d2120ba543c7 +2023-07-24.d.3b9ae4c553f613b7de14423f201a07d28ae1a983 +2023-07-26.d.9f16f09f29548c9e86a23906c4a31fea14b2cf67 +2023-07-26.d.11f056040ed72bc41464aa9e549b02a92749d29f +2023-07-29.d.fb45e73384e9bc2f260694489a99dae00c271be4 +2023-07-29.d.2e9cd6a57d76c0272481117f0e65c8d179ef1976 +2023-07-29.d.2c15cfe4da37610a52095bf55d487fbc3c4ae025 +2023-07-30.d.355b1e3b746fc89cfa657a8fa1442dc520c008e1 +2023-07-31.d.80617e96e1238a57bc3f2df1ecaae0a64e3e0963 +2023-07-31.d.222b47627f9cce81733ed10c79d8beb4516266ef +2023-08-02.d.58fce333123c84cc8e027815a4259f1111474d2d +2023-08-02.d.76662ab236d6fd4b267f97144b228666cccfc38b +2023-08-03.d.39643611d498ecadd612af312b4723469888566b +2023-08-03.d.b6129f2ab7a6a28dbed56946dac066ec6bed82b8 +2023-08-04.d.7736ba8af1c073bc8447edfa3b134f84d2dd4c87 +2023-08-04.d.e2c79b45e4689af88ba2b0c04947e934cdcf2912 +2023-08-04.d.732e4106b83dcd075f9d4e3b18c47faabb3c84e1 +2023-08-05.d.70ced65aafe744a18970cda30c228c210ab73551 +2023-08-05.d.fc798540b7dd717760e9d0fdf38aa0d4ada43946 +2023-08-05.d.7c3c3855c4a30236da538863d38193891a588509 +2023-08-05.d.e52c6105c6e74c7cbcd924195689d1e45748aba8 +2023-08-05.d.0b3d6fd146722eb92c57f5a0855facbac0a98be1 +2023-08-06.d.7488ed03f0753f7608968e49cc9b904a64ece94f +2023-08-06.d.76aa6747a5058a7804e4033bfd13c037a3847353 +2023-08-08.d.c3fadde3e8aa16b0de25b18587c16cece553f7aa +2023-08-09.d.bfe0857094211a4c0c7084353be076d908d79bf5 +2023-08-09.d.d85557711d176100b293d6e203a8ccfa3286426f +2023-08-10.d.7544d2f23c52d79a93052efd6c1803974304e375 +2023-08-10.d.314af22ae3bd41a55b4d09d5f6831c219809625a +2023-08-12.d.df1a526f028e9599d9a5e4399f0bbdc503363f80 +2023-08-12.d.f40f4a1947f0a1f8004cae1f7d70a03201bfcc7c +2023-08-14.d.7d18dd0e9e5d46f880cc3aadc7bcfd6d2fe16c22 +2023-08-14.d.2710693453886bb23e44affe8ed5a83432d74998 +2023-08-14.d.fd46fb5acaf1da31bd845ca894c990ffe2a90137 +2023-08-15.d.be88e701d9e5e69d5aafa3c376b4233f3adbb727 +2023-08-15.d.d9530f32a66e29f64a602354a75ae30f05bfb3bc +2023-08-15.d.53819a146505caf3d89e3b6807aebeb61d37f5ba +2023-08-16.d.aa097e9034cea4cf7aac171e842a06415767e165 +2023-08-17.d.b8804cf2a8fc85b2235d18d4921121ce4c487722 +2023-08-17.d.2eaa0fcb67c0c7e24c883c625c74091c8d7fe8c8 +2023-08-18.d.7927c989c4655cdb5aa961b28d4c2981333714c8 +2023-08-18.d.5b3b2a7a62c8e8e50b1efb1e876ff7d642f3afcd +2023-08-20.d.0acd5335d52e24eb319eb029f3ea22b5d651b1c0 +2023-08-20.d.eccfbc334ceb8627487f588c7d30fc4680b3637e +2023-08-21.d.37a527696a040e7af0a3de1a3534f37ed93da7b6 +2023-08-21.d.dc68232f421aa1ba44ea446cd170847d491b1218 +2023-08-21.d.dc68232f421aa1ba44ea446cd170847d491b1218 +2023-08-22.d.c9b5e5ab1f35139d9182fd77df8796b2b5dfd2bb +2023-08-22.d.ca14dc550744bbd6fbeb4e340ca9bfc71b063643 +2023-08-23.d.fe6a0fd7b0bbd70a07934c1d809dfb1d11a2a41f +2023-08-23.d.0d80e639efc171625b0153bfdbae88ba12e6b467 +2023-08-23.d.8861e779e3d7b309860ec474b4fce61512ac8960 +2023-08-24.d.65a1a4feeb85d30c450e6c124b9cdd9aa815cfe4 +2023-08-24.d.d1e85635e3bdc48fbd53ae45995e134385cc2575 +2023-08-24.d.75e4a4654ca5e3e7df724b45511c51eaa3a7495e +2023-08-24.d.312bbbb7b6082ae028a08ab866ff5a1bb0f31f8b +2023-08-24.d.c4e57e49c242666bdb5707a865eb2e4770e35686 +2023-08-24.d.d340c91cd717f4d8cd2a9769e919c25a473c63a0 +2023-08-25.d.87735fb23226c99a50283044e65739e510d50672 +2023-08-25.d.b1fba92e87ee3fd858d94e76cbbed0d74b5bb568 +2023-08-25.d.343618411c00ec496a1b26ab81e461557ca38009 +2023-08-25.d.16b1c5577a60dde78d43b4fed41271de16e5a3e2 +2023-08-25.d.7f24d2027f81717bcc42807fce3625d157e14b00 +2023-08-26.d.4ad30705580e8b0009cf8f67f9298607afc940b8 +2023-08-26.d.ab94b16d8dfb692820f317d5431cb661812ba3e9 +2023-08-26.d.3ed1bead44a3146b2eb109b5ebe26ea819b6547b +2023-08-27.d.dd8b85282a29c115495eb1eac280568b89fa68df +2023-08-27.d.23d6c0f5d5f2882a3c744669cdcbfee832f5ab52 +2023-08-27.d.5395b8c4bd76550a86cf97fbc1fff676b3864c26 +2023-08-29.d.34a26fea2280fe31f045d210046b349cc928ab02 +2023-08-29.d.39083b6add93df27b3fde0976b386e7a67df26b1 +2023-08-30.d.8e8e019e0fda0ed756a7626e9e3e5248aa33d14d +2023-08-30.d.62c36a49b3109ba942d7901c31dacd9af80067d6 +2023-08-30.d.1e57419e713b69780a6e259139da6a969c22ffcf +2023-08-30.d.2872e1b3792b32f59d4a853d1bdeba5681a745ea +2023-08-31.d.33018759833057f100d3d36b745fb91172ab1ef0 +2023-08-31.d.2bae1f4368fa44f5c2dd1b9061c7a8901a3a2401 +2023-08-31.d.48cf04db3a94d89d101e019f926ad07f67a76ed1 +2023-09-01.d.f7c4c16a9c5973746021a024298534b7d1794b59 +2023-09-02.d.f4b3574ed4dd34c78ed48a06953068e14dc501f6 +2023-09-02.d.4f6afbf8498588125e3d9fc2482c7aa57f5efd17 +2023-09-03.d.262c8b421bf7fc4f6d4dd7811105ee0f5de25dd0 +2023-09-03.d.8a514a07580ccf3c45c8d45873befeb11249f79e +2023-09-03.d.a781ba3fc2bfcb07f1884c67d46ecc5856d1a57e +2023-09-03.d.fe0423c6cdd77e589367b7cfeb58e4adf2e3b337 +2023-09-03.d.c6938e2048fb7a91ad4bf987717d822c8588011b +2023-09-04.d.434da4a62ae32260e158a87b17407169361c0609 +2023-09-04.d.1ea12583d1c9c9947013a94b05ecbf5cdd9726c8 +2023-09-05.d.3cd7950d3b5dd19a7819170d1f61e13be2afd508 +2023-09-06.d.1c6db35d96c184cd9018cc4c0a6c7d5795f36a08 +2023-09-06.d.f4bc7c34c6387a542320cb6f5f32dfb612660b29 +2023-09-06.d.f7775b5194f036ab7931d52bba4b6782e5306f6b +2023-09-06.d.41006822973d50c4f1af9e4684b9f24da98123f8 +2023-09-06.d.d9acd2adb0697da17c10fbbef27e0d9b70e0eeb1 +2023-09-07.d.7726f1eef430d7c64159ae14d058c0f1781b33e9 +2023-09-09.d.4cc81f0dbc399bb01263f41ac671cf28fad71057 +2023-09-09.d.4c6ff44e420de991bcb12d093c85e20e25552125 +2023-09-09.d.0e6a0124996f212550c232a5f3ea0378ae7acab6 +2023-09-10.d.ad00d9ec5bfe8323c5a5aaaffc9d0dcb5a2accda +2023-09-10.d.728b1b2d369ab2dd943dfa62140942774b0274aa +2023-09-11.d.16aab339e788c4841cdd7231836f8192cd3be689 +2023-09-12.d.ee43b43add9af833871a09fc4b3068a13358e9f6 +2023-09-12.d.088ac1815b2e71f80e4d1780753bcdeaacad0991 +2023-09-13.d.cb4671ee8833fbc695c3aff36ea92cfe1c223e9c +2023-09-13.d.6d0b2f6bc38d62698e229a5fbe0ec917cffe7c34 +2023-09-13.d.f9bfa1c41bafbfd1de932c76391db95ce64bcb49 +2023-09-13.d.860e12b88a9118a2c14e0a72ea8871b8ae5a4218 +2023-09-13.d.156f1988b211402e7128bee40274660fc2be3c19 +2023-09-13.d.2682d82628186ce10525e81963d50aa91f9a1085 +2023-09-14.d.81fc4e336b554a3cf08628d420cb8570b14e8af6 +2023-09-14.d.d595e646007f07967441d12ca485291baa533ec1 +2023-09-14.d.e5916337ef4f83ccfb8bb110a5e75c72fdc75b70 +2023-09-14.d.d6f0b7595970f03ae22d6ed4194308b460630391 +2023-09-15.d.d2aee662fdb8dd6f4d4c56c972e30b8cbf484939 +2023-09-16.d.141a38191af595420e19fb7433a0f6eef1f2dbb1 +2023-09-16.d.ed33d61ab73efa1719567a85ac317730ffd6f191 +2023-09-17.d.2d0339e8bf2b6d05f634f179e6920ec9df3ecbd5 +2023-09-18.d.d6a9eaf8aa32cebcc7d86b9bfa9cb3f7e4756e91 +2023-09-18.d.aa4464389f691bf98645b6f0b3b08deaa1780972 +2023-09-18.d.ddeb380a19f7252bf5d10402222a786f1d1d82f9 +2023-09-19.d.ffd09da89a80d72d39c55bbcda08c3fba195c9a1 +2023-09-20.d.f8b5a38dc9df46a5c02ff9fd58d1112cc41196bb +2023-09-20.d.fc513af351e43d06bc3675e0e54946896448fc55 +2023-09-21.d.7de25acac0a8ddd171dd6a745bde377fc2d5d4e1 +2023-09-21.d.257112e2a787bb73ff1457bc33b2d01334d5b404 +2023-09-22.d.7a75eb7021d7321cea5f5e7b9207f6c448a46599 +2023-09-22.d.3061b06f3b57a226022ed421e88d75b736aa7055 +2023-09-22.d.63fd3e753a1ff4598d699576cee469f3818551e9 +2023-09-23.d.375c825d32325f02150aa7d8edb02e328e35ba3b +2023-09-23.d.81d287a3b0fead9c2dc00c4b4b7dcd8a15a620ac +2023-09-23.d.9ff65d76ccfca3467e716014fccd4200cc106e70 +2023-09-24.d.0d7c2dee721738b3838031a2567b04ab1e53468e +2023-09-24.d.74900edc96bb8d5b615c26647aeb2c77946a5011 +2023-09-25.d.0f6b59f67e45c4b79b6f8475c36b098d8fd2e81d +2023-09-25.d.0f6b59f67e45c4b79b6f8475c36b098d8fd2e81d +2023-09-25.d.31e56903c502de1ce315afbd913a057c9d42051e +2023-09-27.d.955d2d86dd4002b373d4471633841602e377f988 +2023-09-27.d.3bcdf9487d5e59150bc78471ef145176e9af5b66 +2023-09-28.d.d79ef1bb2ad92cfa883960a9037c463bdc86f9d3 +2023-09-29.d.335e18e8cbea52de200c573686a5ff47d6a75e7b +2023-09-29.d.f0b79844661c8aa9d93e27ce2e509c86b80aaaef +2023-09-30.d.f0b79844661c8aa9d93e27ce2e509c86b80aaaef +2023-09-30.d.d1c643a591857bfe28ab044755de5df622ccccf1 +2023-10-01.d.2e0c958b9795c82df3c63743e98cfd074ebbe7f8 +2023-10-01.d.0be4613cf95e733939e19819cca356460bf84eea +2023-10-02.d.795a194d6552a6f799cad87883976cf083723d8e +2023-10-02.d.86deee4e85697c606ccf5b96fb9a4393b643a2e2 +2023-10-02.d.2ad6353a2dda459fd40b3b56ca904c037da0a23f +2023-10-02.d.77cba731b91ec9cf8dd88b2046e0efff9791dee5 +2023-10-03.d.ee7e3cab150bed502fc373b5847ba7979227c689 +2023-10-03.d.58d43333f5d22a43e6a3b3477e81816463ddca7a +2023-10-03.d.e32c39f21dd1cd45c34b28a0922e173736535e5b +2023-10-03.d.473a8ee99981545c278acda031ce879a720b918b +2023-10-04.d.99df8edc2dee3b311c5744852d3f9c5b725b4f04 +2023-10-04.d.d96ed15e95d9e31b839d3bb78bad30bb98b64160 +2023-10-04.d.9e142c1d3c2afc2613ef7a7e2f6d1b8d75874660 +2023-10-05.d.69a3573f7ec2412e31d0b8b0dafd3dc8808999ce +2023-10-05.d.11aad19800ca8f534ffff5abf1955211b7f15a01 +2023-10-06.d.c5c78f45d00a0e0dafa706db11dc18ccfd384ceb +2023-10-06.d.21ac018d70d87670c050df236f19504f8d9ab000 +2023-10-06.d.74bcbd898e07c4612abc4fd19dd34d78298c32bc +2023-10-06.d.bf9c5b86c6f0d5bc7f65fc5fd0fc525395284fb7 +2023-10-06.d.23a3c3396815efb0af3866359da6701988548365 +2023-10-06.d.906a12f21d855b189d6c8cf20b05e7b502b01773 +2023-10-07.d.cad9d5fdd821885adcd20fd67bf071331532bfd7 +2023-10-07.d.6bde92eef81525ca7e38a811d5bbf67aa4489144 +2023-10-07.d.8c6788c6bc88fff1349f8ef22e499012015759bd +2023-10-07.d.c8679df3ff5185b5c094dd6421f539647ac19eba +2023-10-08.d.9fbb4a8b0b78ed7f414a9074bc033fae378e3c26 +2023-10-09.d.6bec09b23fcc3297ef056b9106471e03e4048e5f +2023-10-09.d.a1cce95c08036c2ab6d874eef7fe8d91bbd9513d +2023-10-09.d.39e0cf574d02e19cb7adfe7a68d53f93715ef4bf +2023-10-09.d.663e6ab21b8deffa892950ac37acbf97a68b50bb +2023-10-09.d.663e6ab21b8deffa892950ac37acbf97a68b50bb +2023-10-10.d.b5d11091631fca031c41156c5b589610e09f34ec +2023-10-11.d.4eefed79ac27be72605bb2b0cb822ea9704f3ea5 +2023-10-12.d.a3dcbc666107c632de88d4e340c289e4a31e94e9 +2023-10-13.d.32cbd330aa760691440ffcbe08a0dd56db479035 +2023-10-13.d.5cee525d022e9a387a9de9ce5ae3f8c5953333a8 +2023-10-13.d.0984c018285709b9e45bf6fb163004ca30abce9d +2023-10-13.d.17087d1b08f77c955d2ffae6c435415a0bac8233 +2023-10-13.d.2950de0016e6d4e34bf1300ccfdde4e54a0e47be +2023-10-13.d.67deceeba840c9e33515b3c9f2e389ab126fb42a +2023-10-14.d.7e6267313b91395f834eaa8c990a644b7cb1924c +2023-10-14.d.2d1ee3903ab0a8a2cf456590ee34fc2a1968346e +2023-10-14.d.baef3eed91f40a027ef70a1b4baba2d6e3108819 +2023-10-15.d.715b64dc2821f4cb6e03404118ec49b8afa33cb0 +2023-10-15.d.715b64dc2821f4cb6e03404118ec49b8afa33cb0 +2023-10-15.d.56314e5423ef966607aec0da5bee233b5a252733 +2023-10-15.d.124fbf8dcbf4a062a78d51ba7e6f11951fac705e +2023-10-15.d.d3784a26ab8ddf91394170545133c4cf5798fe5d +2023-10-16.d.91ba05ac3b3494cce7157654aec8af6e6f81e622 +2023-10-16.d.a04995a3f4106472ac2e0c7bf78073068b82d576 +2023-10-16.d.367768b00e0d10042e40272d19730171a79133c2 +2023-10-16.d.b8988d91a0ce27ca8771358d765bb9fca423acf1 +2023-10-16.d.d05d76b4812dd391e3b366814bd8ac9c3c49bb51 +2023-10-16.d.8e9299ec9757a85b4f21dbcd801c603173e99b8e +2023-10-17.d.82858616f678c513f6f7ad553a7e7c1ed334fe2b +2023-10-17.d.ab420b6cc1d52f17f6540ee3899d4ed94c78cccb +2023-10-17.d.17143cea4453077a0926743a972b9e12c8860109 +2023-10-18.d.2daaa367ff1f1139db676d5a0909a36f827c6920 +2023-10-18.d.13c6bc91cced21ef2ef9626acd5ea4138243c7c1 +2023-10-18.d.58324da242487c04f7e8f75bd34d05e48a587e57 +2023-10-18.d.26e9d7e49c7606628c1373aadb5ade751ede410b +2023-10-18.d.385408dcfd1347dc8298991fa70c54f71625a584 +2023-10-18.d.d5f506b1e3df9396253c6754900e2f18367699cb +2023-10-19.d.d5f506b1e3df9396253c6754900e2f18367699cb +2023-10-19.d.70287d90ad0bb166b594be5e48614f8fd0bb3904 +2023-10-19.d.b6811b2f4e50deaf8e0fc499f858ae82f437b0a0 +2023-10-19.d.88a3d6cb7e54139f86f35c48e40d75dabc0239da +2023-10-19.d.6844bb606d3f379bf5c252cf57c1869c08249b95 +2023-10-20.d.f05470bf81dcb67a4b7cf33f322c2813ba40a922 +2023-10-20.d.7238d857e9fc4fe646e4554443a53081df2ff18e +2023-10-20.d.c91882daeb216e2b699ce4b35f26dd7f72374f48 +2023-10-20.d.3412c17e2d772ed8f0ea6797c959a1e9c279d2e9 +2023-10-21.d.bd90363565a0a3e8eac81093d31e44356d1b708e +2023-10-21.d.356de1a16aaa9b8aa0d02261286156560ccc870a +2023-10-21.d.0ae793a8d4fbebd09c3ce0ec4a60474776e4e1e2 +2023-10-22.d.30521027ab8aab6c7760f519fc8f66b27991fc68 +2023-10-22.d.4fb02cd22e9da67a08caf5c6a6c011b1d0c7d1cb +2023-10-22.d.4f9c7ada0485da6963fb5631ee46724da485214c +2023-10-23.d.1d5f55d3748162b87bcfad344626716ff5821f3d +2023-10-24.d.84eaae572c8026e33e88ad399463f180c49a54b9 +2023-10-24.d.d2b370ab44dc49c3562aa591b497b16c9460e223 +2023-10-26.d.f45b55a18b17cffc95a780507ceb3ecfcb516705 +2023-10-27.d.18c56f92bb819600d311b95e640cfc9a4fb407a2 +2023-10-28.d.dfa6f9a7714584289b97acdb5927c383c9c50e40 +2023-10-28.d.75ec9da8a297223152f392b796c0f499339bade0 +2023-10-28.d.75ec9da8a297223152f392b796c0f499339bade0 +2023-10-28.d.b65f32c5f3f3a080a9439ded193fd27d221232e7 +2023-10-28.d.26f14caee9df9d053927e41e853d352467bdeae4 +2023-10-29.d.be94a6cac84a645e3e962c05f3ee36c7de49dd6b +2023-10-30.d.8540ee37fcf9c3cac76a65d4650b0d9c558d3ac1 +2023-10-30.d.444f4fcd626253243ad7449b063fd6d8fb7bf309 +2023-10-30.d.b0d5cffe16b35e86aad03aceffe2cd30cf539e70 +2023-10-30.d.6410e72b6c58e1e9649e62aeafa2f54c0660c79a +2023-10-31.d.53bd4635d934e4735c86a93e8270bc261f017e85 +2023-10-31.d.d148cc21f61ec355f9e76946cea835b9d49aa96b +2023-10-31.d.0cd1ae965c1b2bad97d4fb96b9de3a5ae8a66841 +2023-11-01.d.ba4d031cc65f54bcfcebe1229523b450b850fa5b +2023-11-01.d.2e95f454586c2fac18ad4f98e8623128c10412fb +2023-11-01.d.c238d8d4d1a84b648b53424fce2b6ab56beb5c36 +2023-11-01.d.8d9f76d52dc3c20836c06f4457acb2bb585b1baa +2023-11-02.d.62675a37a0e7b46283e2fdfe459bb8fd29d1cc2a +2023-11-02.d.580c46177f4282380366cfabe517c308c51ab404 +2023-11-02.d.63297ec5c9c7957d78288a970672e7dc7ea91caf +2023-11-02.d.217c568301e96d46edf2845530493f1a96914f22 +2023-11-03.d.2791087f3c6474d89ebf37875c8f293ae7cb700c +2023-11-03.d.2791087f3c6474d89ebf37875c8f293ae7cb700c +2023-11-03.d.dab1a5302ea3504e123c99dd1b8dbe96e9db6d04 +2023-11-03.d.11e9b7375d30d874423a6dde793c40ba955b4bd6 +2023-11-03.d.8e6a8b6cff6017b39068b74ef62bbaf83c686279 +2023-11-03.d.dcbb22a25617d4d6706dcdae588cf57eec84338c +2023-11-04.d.fbe31ab294d869855b2aae014096b4b357946a5e +2023-11-04.d.fbe31ab294d869855b2aae014096b4b357946a5e +2023-11-04.d.361c15d63b28316f6ce63197eb2351ac1b364700 +2023-11-04.d.5d4330611afe1175de47d3c4c608d4221ff50a15 +2023-11-04.d.3207d542c148a9c73deb53fd3f36fc3097457487 +2023-11-05.d.625b204cb22139f069fdc7cd72e5988d2e1a8312 +2023-11-06.d.9cfe78a8a09bd8576ac47f9465dbb0d61dc5eebc +2023-11-06.d.4e8e01fd62711e2a567873ee9be81cd65f4e1428 +2023-11-06.d.ceda8782c87936f030d04a330e4aae871023128e +2023-11-07.d.1e4f069c3fddc5344a61b633ff262e34d3ee794d +2023-11-07.d.06bacdf48b49e3a7f52f7a7b7d194c140d0df478 +2023-11-08.d.b04d26a7a32b5814308b3a59c6520a6e15003aa0 +2023-11-09.d.c6ca0ff10fe422c227ad3029124c7db320a11b82 +2023-11-09.d.c6ca0ff10fe422c227ad3029124c7db320a11b82 +2023-11-09.d.211da123425173b3790f4e7ee2bc1d9587c99ebd +2023-11-10.d.7febc11b8c284790907400d6d40e8a7400abfd57 +2023-11-10.d.098e29d7e07d00f3aae0814229c037d56c4911d9 +2023-11-11.d.c88b773dd3aa99fea557b70d597517b9c092890b +2023-11-11.d.de1b5929b83f9706c7d0d1f122e0fac589b1825b +2023-11-12.d.64f0520b23ae9f07cd8bb8ce2a70ed6abee61669 +2023-11-12.d.5021b917da5a92f1a624ed27a21132bcdd66e8d9 +2023-11-12.d.44ef425b89dd5838a6db8966a35360044377e1b4 +2023-11-12.d.65e07e838703d2f91b5f5379050289088f1d895f +2023-11-12.d.34fba6e21e58edbbba421c8802ce3ac075b4c9c7 +2023-11-13.d.c1fa07dd51abdb9292c8fc5bb112ece7951bb6e8 +2023-11-13.d.c1fa07dd51abdb9292c8fc5bb112ece7951bb6e8 +2023-11-13.d.0ee62e597bcb877f3c4b2c4a2e8d0197d0ee51cf +2023-11-13.d.null +2023-11-14.d.0b54b7df40c86f7496a8f96fe40629225602d2c8 +2023-11-14.d.52a0d5b365c9dbf4dc8d5bbcf14c3dcd26d602f6 +2023-11-14.d.7abf8c469b76acd4380f9e27e74dcfd392463578 +2023-11-14.d.dd9e2a7409148c3d4e5894816ef3b20d8a43221f +2023-11-14.d.dd9e2a7409148c3d4e5894816ef3b20d8a43221f +2023-11-14.d.bc8dd8894e7ebafe6ca7b4ae9ca502a24fdb0f14 +2023-11-14.d.a01bed3928d74306f5f138c0b9a341ae5ddf981e +2023-11-15.d.a01bed3928d74306f5f138c0b9a341ae5ddf981e +2023-11-15.d.a01bed3928d74306f5f138c0b9a341ae5ddf981e +2023-11-16.d.df2bb8e95cecaf6c6e40de5f3cd736f12511f923 +2023-11-17.d.040e25a92c8b91c7e5ad0a81f1fd71b5db6c457b +2023-11-17.d.b02a66a1b6440b61c0fdb8e2a3e4527a136ed8ba +2023-11-17.d.5297bab041ffe63faf5e1edaa33a5758b65fcd78 +2023-11-17.d.74aa056650e2bfb9a3c4910bad3c14af38a2b51d diff --git a/tag_latest.txt b/tag_latest.txt new file mode 100644 index 0000000000..169122edcf --- /dev/null +++ b/tag_latest.txt @@ -0,0 +1 @@ +2023-11-17.d.74aa056650e2bfb9a3c4910bad3c14af38a2b51d