diff -Nru thunderbird-91.8.1+build1/browser/actors/AboutReaderParent.jsm thunderbird-91.9.1+build1/browser/actors/AboutReaderParent.jsm --- thunderbird-91.8.1+build1/browser/actors/AboutReaderParent.jsm 2022-04-15 07:40:51.000000000 +0000 +++ thunderbird-91.9.1+build1/browser/actors/AboutReaderParent.jsm 2022-05-20 05:46:55.000000000 +0000 @@ -157,6 +157,13 @@ break; } + case "RedirectTo": { + gCachedArticles.set(message.data.newURL, message.data.article); + // This is setup as a query so we can navigate the page after we've + // cached the relevant info in the parent. + return true; + } + default: this.callListeners(message); break; diff -Nru thunderbird-91.8.1+build1/browser/config/version_display.txt thunderbird-91.9.1+build1/browser/config/version_display.txt --- thunderbird-91.8.1+build1/browser/config/version_display.txt 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/browser/config/version_display.txt 2022-05-20 05:58:33.000000000 +0000 @@ -1 +1 @@ -91.8.0esr +91.9.1esr diff -Nru thunderbird-91.8.1+build1/browser/config/version.txt thunderbird-91.9.1+build1/browser/config/version.txt --- thunderbird-91.8.1+build1/browser/config/version.txt 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/browser/config/version.txt 2022-05-20 05:58:33.000000000 +0000 @@ -1 +1 @@ -91.8.0 +91.9.1 diff -Nru thunderbird-91.8.1+build1/BUILDID thunderbird-91.9.1+build1/BUILDID --- thunderbird-91.8.1+build1/BUILDID 2022-04-15 08:10:45.000000000 +0000 +++ thunderbird-91.9.1+build1/BUILDID 2022-05-20 06:15:04.000000000 +0000 @@ -1 +1 @@ -20220413002405 \ No newline at end of file +20220520005021 \ No newline at end of file diff -Nru thunderbird-91.8.1+build1/CLOBBER thunderbird-91.9.1+build1/CLOBBER --- thunderbird-91.8.1+build1/CLOBBER 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/CLOBBER 2022-05-20 05:58:33.000000000 +0000 @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Merge day clobber \ No newline at end of file +Merge day clobber 2022-04-04 \ No newline at end of file diff -Nru thunderbird-91.8.1+build1/comm/build/moz.configure/gecko_source.configure thunderbird-91.9.1+build1/comm/build/moz.configure/gecko_source.configure --- thunderbird-91.8.1+build1/comm/build/moz.configure/gecko_source.configure 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/build/moz.configure/gecko_source.configure 2022-05-20 05:59:31.000000000 +0000 @@ -4,9 +4,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -# Attempt to ascertain the Gecko source repository information. This is -# necessary because MOZ_SOURCE_REPOSITORY and MOZ_SOURCE_CHANGESET both refer -# to the Thunderbird (comm) repository. +# Attempt to ascertain the Gecko source repository information. # We need to have accurate source repository information for MPL compliance. @@ -105,12 +103,12 @@ """ Read the Thunderbird source repository information from the environment. - Taskcluster builds set MOZ_SOURCE_REPO and MOZ_SOURCE_CHANGESET pointing + Taskcluster builds set COMM_HEAD_REPOSITORY and COMM_HEAD_REV pointing to the comm-* repository. """ log.info("Determining COMM source information from environment...") - comm_repo = environ.get("MOZ_SOURCE_REPO", None) - comm_rev = environ.get("MOZ_SOURCE_CHANGESET", None) + comm_repo = environ.get("COMM_HEAD_REPOSITORY", None) + comm_rev = environ.get("COMM_HEAD_REV", None) if all([comm_repo, comm_rev]): comm_repo = ensure_text(comm_repo) @@ -130,21 +128,13 @@ def comm_repo_heuristics(comm_environ, paths, hg, sourcestamp): """ Determine the Thunderbird Mercurial repository and revision from Mercurial - or sourcestamp.txt when MOZ_SOURCE_REPO and MOZ_SOURCE_CHANGESET are unset + or sourcestamp.txt when COMM_HEAD_REPOSITORY and COMM_HEAD_REV are unset (local developer builds). - - In that case, MOZ_SOURCE_REPO and MOZ_SOURCE_CHANGESET are set - by build/variables.py, but will refer to the mozilla- repository, - which is incorrect for Thunderbird builds. - - There's no set_config call for MOZ_SOURCE_REPO or MOZ_SOURCE_CHANGESET - here as that will be done when old-configure runs later. Here we just - set the environment variables the same as Taskcluster would. """ if not comm_environ: comm_repo = comm_rev = None if hg: - log.info("Determining COMM source information from " "Mercurial...") + log.info("Determining COMM source information from Mercurial...") comm_rev = hg_cmd_output( hg, "-R", paths.commtopsrcdir, "parent", "--template={node}" ) @@ -162,16 +152,12 @@ except: pass - # If values are found, set MOZ_SOURCE_REPO and MOZ_SOURCE_CHANGESET - if comm_repo and comm_rev: - environ["MOZ_SOURCE_REPO"] = comm_repo - environ["MOZ_SOURCE_CHANGESET"] = comm_rev - if comm_repo and comm_rev: return namespace(comm_repo=comm_repo, comm_rev=comm_rev) @depends(comm_repo_from_environ, comm_repo_heuristics, "MOZ_AUTOMATION") +@imports(_from="os", _import="environ") def comm_source_repo(from_environ, from_config, automation): rv = None if from_environ: @@ -179,13 +165,19 @@ elif from_config: rv = from_config elif automation: - die(get_fail_msg("COMM", "MOZ_SOURCE_REPO", "MOZ_SOURCE_CHANGESET")) + die(get_fail_msg("COMM", "COMM_HEAD_REPOSITORY", "COMM_HEAD_REV")) else: - log.info(get_fail_msg("COMM", "MOZ_SOURCE_REPO", "MOZ_SOURCE_CHANGESET")) + log.info(get_fail_msg("COMM", "COMM_HEAD_REPOSITORY", "COMM_HEAD_REV")) rv = namespace(comm_repo="unknown", comm_rev="unknown") log.info("COMM_SOURCE_REPOSITORY: {}".format(rv.comm_repo)) log.info("COMM_SOURCE_CHANGESET: {}".format(rv.comm_rev)) + + # Used by old-configure to set in buildconfig. This is configure's environment + # not the same as used by the build itself. + environ["MOZ_SOURCE_REPO"] = rv.comm_repo + environ["MOZ_SOURCE_CHANGESET"] = rv.comm_rev + return rv @@ -238,9 +230,7 @@ # "default" when a revision hash is needed. Try to query # Mercurial first. if hg: - log.info( - "Determining GECKO source information from " "Mercurial..." - ) + log.info("Determining GECKO source information from Mercurial...") gecko_rev = hg_cmd_output( hg, "-R", paths.moztopsrcdir, "parent", "--template={node}" ) diff -Nru thunderbird-91.8.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css thunderbird-91.9.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css --- thunderbird-91.8.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/calendar/base/themes/osx/calendar-task-view.css 2022-05-20 05:59:31.000000000 +0000 @@ -13,8 +13,9 @@ border-bottom-color: #bebebe } -/* Hide the search glass */ -.task-edit-field { +/* Hide the magnifying glass icon */ +#view-task-edit-field, +#unifinder-task-edit-field { margin-block: 0; background-image: none; padding-inline-start: 4px !important; diff -Nru thunderbird-91.8.1+build1/comm/calendar/providers/caldav/modules/CalDavRequest.jsm thunderbird-91.9.1+build1/comm/calendar/providers/caldav/modules/CalDavRequest.jsm --- thunderbird-91.8.1+build1/comm/calendar/providers/caldav/modules/CalDavRequest.jsm 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/calendar/providers/caldav/modules/CalDavRequest.jsm 2022-05-20 05:59:31.000000000 +0000 @@ -755,6 +755,20 @@ } /** + * Returns a Set for the "current-user-privilege-set" properties. If a 404 + * status is detected, null is returned indicating the server does not + * support this directive. + * + * @param {string} path The css path to search + * @param {Element} parent The parent element to search in + * @param {string} status The status of the enclosing + * @return {Set} + */ + function privSet(path, parent, status = "") { + return status.includes("404") ? null : nodeNames(path, parent); + } + + /** * Returns a Set with the respective attribute values in the path * * @param {String} path The css path to search @@ -787,7 +801,7 @@ "C:calendar-home-set": href, "C:calendar-user-address-set": href, "D:current-user-principal": singleHref, - "D:current-user-privilege-set": nodeNames.bind(null, ":scope > privilege > *"), + "D:current-user-privilege-set": privSet.bind(null, ":scope > privilege > *"), "D:owner": singleHref, "D:supported-report-set": nodeNames.bind(null, ":scope > supported-report > report > *"), "D:resourcetype": nodeNames.bind(null, ":scope > *"), @@ -811,13 +825,16 @@ // This will throw 200's and 400's in one pot, but since 400's are empty that is ok // for our needs. - for (let prop of response.querySelectorAll(":scope > propstat > prop > *")) { - let prefix = CalDavNsUnresolver(prop.namespaceURI) || prop.prefix; - let qname = prefix + ":" + prop.localName; - if (qname in this.decorators) { - this._data[href][qname] = this.decorators[qname](prop) || null; - } else { - this._data[href][qname] = prop.textContent.trim() || null; + for (let propStat of response.querySelectorAll(":scope > propstat")) { + let status = propStat.querySelector(":scope > status").textContent; + for (let prop of propStat.querySelectorAll(":scope > prop > *")) { + let prefix = CalDavNsUnresolver(prop.namespaceURI) || prop.prefix; + let qname = prefix + ":" + prop.localName; + if (qname in this.decorators) { + this._data[href][qname] = this.decorators[qname](prop, status) || null; + } else { + this._data[href][qname] = prop.textContent.trim() || null; + } } } } diff -Nru thunderbird-91.8.1+build1/comm/calendar/providers/memory/CalMemoryCalendar.jsm thunderbird-91.9.1+build1/comm/calendar/providers/memory/CalMemoryCalendar.jsm --- thunderbird-91.8.1+build1/comm/calendar/providers/memory/CalMemoryCalendar.jsm 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/calendar/providers/memory/CalMemoryCalendar.jsm 2022-05-20 05:59:31.000000000 +0000 @@ -61,7 +61,7 @@ }, get shortName() { - return this.displayName(); + return this.displayName; }, createCalendar() { diff -Nru thunderbird-91.8.1+build1/comm/calendar/test/browser/browser_calDAV_discovery.js thunderbird-91.9.1+build1/comm/calendar/test/browser/browser_calDAV_discovery.js --- thunderbird-91.8.1+build1/comm/calendar/test/browser/browser_calDAV_discovery.js 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/calendar/test/browser/browser_calDAV_discovery.js 2022-05-20 05:59:31.000000000 +0000 @@ -83,8 +83,15 @@ expectedCalendars[i].color ); Assert.equal(item.querySelector(".calendar-name").value, expectedCalendars[i].name); - } + if (expectedCalendars[i].hasOwnProperty("readOnly")) { + Assert.equal( + item.calendar.readOnly, + expectedCalendars[i].readOnly, + `calendar read-only property is ${expectedCalendars[i].readOnly}` + ); + } + } EventUtils.synthesizeMouseAtCenter(cancelButton, {}, wizardWindow); } @@ -161,3 +168,72 @@ CalDAVServer.close(); }); + +/** + * Tests calendars with only the "read" "current-user-privilege-set" are + * flagged read-only. + */ +add_task(async function testCalendarWithOnlyReadPriv() { + CalDAVServer.open("alice", "alice"); + CalDAVServer.privileges = ""; + await openWizard({ + username: "alice", + url: CalDAVServer.origin, + password: "alice", + expectedCalendars: [ + { + uri: CalDAVServer.url, + name: "CalDAV Test", + color: "rgb(255, 128, 0)", + readOnly: true, + }, + ], + }); + CalDAVServer.close(); +}); + +/** + * Tests calendars that return none of the expected values for "current-user-privilege-set" + * are flagged read-only. + */ +add_task(async function testCalendarWithoutPrivs() { + CalDAVServer.open("alice", "alice"); + CalDAVServer.privileges = ""; + await openWizard({ + username: "alice", + url: CalDAVServer.origin, + password: "alice", + expectedCalendars: [ + { + uri: CalDAVServer.url, + name: "CalDAV Test", + color: "rgb(255, 128, 0)", + readOnly: true, + }, + ], + }); + CalDAVServer.close(); +}); + +/** + * Tests calendars that return status 404 for "current-user-privilege-set" are + * not flagged read-only. + */ +add_task(async function testCalendarWithNoPrivSupport() { + CalDAVServer.open("alice", "alice"); + CalDAVServer.privileges = null; + await openWizard({ + username: "alice", + url: CalDAVServer.origin, + password: "alice", + expectedCalendars: [ + { + uri: CalDAVServer.url, + name: "CalDAV Test", + color: "rgb(255, 128, 0)", + readOnly: false, + }, + ], + }); + CalDAVServer.close(); +}); diff -Nru thunderbird-91.8.1+build1/comm/calendar/test/CalDAVServer.jsm thunderbird-91.9.1+build1/comm/calendar/test/CalDAVServer.jsm --- thunderbird-91.8.1+build1/comm/calendar/test/CalDAVServer.jsm 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/calendar/test/CalDAVServer.jsm 2022-05-20 05:59:31.000000000 +0000 @@ -27,6 +27,11 @@ server: null, isOpen: false, + /** + * The "current-user-privilege-set" in responses. Set to null to have no privilege set. + */ + privileges: "", + open(username, password) { this.server = new HttpServer(); this.server.start(-1); @@ -43,6 +48,7 @@ this.items.clear(); this.deletedItems.clear(); this.changeCount = 0; + this.privileges = ""; this.resetHandlers(); }, @@ -194,6 +200,12 @@ ); let propNames = this._inputProps(input); + let propValues = { + "d:resourcetype": "", + "d:displayname": "CalDAV Test", + "i:calendar-color": "#ff8000", + "d:current-user-privilege-set": this.privileges, + }; response.setStatusLine("1.1", 207, "Multi-Status"); response.setHeader("Content-Type", "text/xml"); @@ -208,11 +220,7 @@ ${this.path} - ${this._outputProps(propNames, { - "d:resourcetype": "", - "d:displayname": "CalDAV Test", - "i:calendar-color": "#ff8000", - })} + ${this._outputProps(propNames, propValues)} `.replace(/>\s+<") ); @@ -301,7 +309,7 @@ "d:resourcetype": "", "d:owner": "/principals/me/", "d:current-user-principal": "/principals/me/", - "d:current-user-privilege-set": "", + "d:current-user-privilege-set": this.privileges, "d:supported-report-set": "", "c:supported-calendar-component-set": "", @@ -426,7 +434,7 @@ let found = []; let notFound = []; for (let p of propNames) { - if (p in propValues) { + if (p in propValues && propValues[p] != null) { found.push(`<${p}>${propValues[p]}`); } else { notFound.push(`<${p}/>`); diff -Nru thunderbird-91.8.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_cached.js thunderbird-91.9.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_cached.js --- thunderbird-91.8.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_cached.js 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_cached.js 2022-05-20 05:59:31.000000000 +0000 @@ -44,3 +44,18 @@ info("deleting the item"); await runDeleteItem(calendar); }); + +/** + * Tests calendars that return status 404 for "current-user-privilege-set" are + * not flagged read-only. + */ +add_task(async function testCalendarWithNoPrivSupport() { + CalDAVServer.privileges = null; + calendarObserver._onLoadPromise = PromiseUtils.defer(); + + let calendar = createCalendar("caldav", CalDAVServer.url, true); + await calendarObserver._onLoadPromise.promise; + info("calendar set-up complete"); + + Assert.ok(!calendar.readOnly, "calendar was not marked read-only"); +}); diff -Nru thunderbird-91.8.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_uncached.js thunderbird-91.9.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_uncached.js --- thunderbird-91.8.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_uncached.js 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/calendar/test/unit/providers/test_caldavCalendar_uncached.js 2022-05-20 05:59:31.000000000 +0000 @@ -44,3 +44,18 @@ info("deleting the item"); await runDeleteItem(calendar); }); + +/** + * Tests calendars that return status 404 for "current-user-privilege-set" are + * not flagged read-only. + */ +add_task(async function testCalendarWithNoPrivSupport() { + CalDAVServer.privileges = null; + calendarObserver._onLoadPromise = PromiseUtils.defer(); + + let calendar = createCalendar("caldav", CalDAVServer.url, false); + await calendarObserver._onLoadPromise.promise; + info("calendar set-up complete"); + + Assert.ok(!calendar.readOnly, "calendar was not marked read-only"); +}); diff -Nru thunderbird-91.8.1+build1/comm/.gecko_rev.yml thunderbird-91.9.1+build1/comm/.gecko_rev.yml --- thunderbird-91.8.1+build1/comm/.gecko_rev.yml 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/.gecko_rev.yml 2022-05-20 05:59:31.000000000 +0000 @@ -1,8 +1,8 @@ --- GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/releases/mozilla-esr91 -GECKO_HEAD_REF: FIREFOX_91_8_0esr_BUILD1 -GECKO_HEAD_REV: 3b54d6b5407fca03efdb2e2f57a9838498e0d038 +GECKO_HEAD_REF: FIREFOX_91_9_1esr_BUILD1 +GECKO_HEAD_REV: 262b3b86a564b17e3397b519488698bc530f0858 ### For comm-central # GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified Binary files /tmp/tmpjnqazsee/uTcQLMXcSe/thunderbird-91.8.1+build1/comm/mail/branding/nightly/background.png and /tmp/tmpjnqazsee/2IeCUXiphB/thunderbird-91.9.1+build1/comm/mail/branding/nightly/background.png differ Binary files /tmp/tmpjnqazsee/uTcQLMXcSe/thunderbird-91.8.1+build1/comm/mail/branding/nightly/dsstore and /tmp/tmpjnqazsee/2IeCUXiphB/thunderbird-91.9.1+build1/comm/mail/branding/nightly/dsstore differ Binary files /tmp/tmpjnqazsee/uTcQLMXcSe/thunderbird-91.8.1+build1/comm/mail/branding/thunderbird/dsstore and /tmp/tmpjnqazsee/2IeCUXiphB/thunderbird-91.9.1+build1/comm/mail/branding/thunderbird/dsstore differ diff -Nru thunderbird-91.8.1+build1/comm/mail/config/version_display.txt thunderbird-91.9.1+build1/comm/mail/config/version_display.txt --- thunderbird-91.8.1+build1/comm/mail/config/version_display.txt 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/config/version_display.txt 2022-05-20 05:59:32.000000000 +0000 @@ -1 +1 @@ -91.8.1 +91.9.1 diff -Nru thunderbird-91.8.1+build1/comm/mail/config/version.txt thunderbird-91.9.1+build1/comm/mail/config/version.txt --- thunderbird-91.8.1+build1/comm/mail/config/version.txt 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/config/version.txt 2022-05-20 05:59:32.000000000 +0000 @@ -1 +1 @@ -91.8.1 +91.9.1 diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/GnuPGCryptoAPI.jsm thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/GnuPGCryptoAPI.jsm --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/GnuPGCryptoAPI.jsm 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/GnuPGCryptoAPI.jsm 2022-05-20 05:59:32.000000000 +0000 @@ -72,6 +72,18 @@ } /** + * Obtain signatures for a given key. + * + * @param {KeyObj} keyObj: the signatures of this key will be returned + * @param {Boolean} ignoreUnknownUid: if true, filter out unknown signer's UIDs + * + * @return {Promise} - see extractSignatures() + */ + async getKeyObjSignatures(keyObj, ignoreUnknownUid = false) { + throw new Error("Not implemented"); + } + + /** * Export the minimum key for the public key object: * public key, primary user ID, newest encryption subkey * diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/interface.js thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/interface.js --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/interface.js 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/interface.js 2022-05-20 05:59:32.000000000 +0000 @@ -70,6 +70,18 @@ } /** + * Obtain signatures for a given key. + * + * @param {KeyObj} keyObj: the signatures of this key will be returned + * @param {Boolean} ignoreUnknownUid: if true, filter out unknown signer's UIDs + * + * @return {Promise} - see extractSignatures() + */ + async getKeyObjSignatures(keyObj, ignoreUnknownUid = false) { + return null; + } + + /** * Export the minimum key for the public key object: * public key, user ID, newest encryption subkey * diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/RNPCryptoAPI.jsm thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/RNPCryptoAPI.jsm --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/RNPCryptoAPI.jsm 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/cryptoAPI/RNPCryptoAPI.jsm 2022-05-20 05:59:32.000000000 +0000 @@ -60,6 +60,18 @@ } /** + * Obtain signatures for a given key. + * + * @param {KeyObj} keyObj: the signatures of this key will be returned + * @param {Boolean} ignoreUnknownUid: if true, filter out unknown signer's UIDs + * + * @return {Promise} - see extractSignatures() + */ + async getKeyObjSignatures(keyId, ignoreUnknownUid = false) { + return RNP.getKeyObjSignatures(keyId, ignoreUnknownUid); + } + + /** * Export the minimum key for the public key object: * public key, primary user ID, newest encryption subkey * diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/keyObj.jsm thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/keyObj.jsm --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/keyObj.jsm 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/keyObj.jsm 2022-05-20 05:59:32.000000000 +0000 @@ -139,6 +139,7 @@ "secretMaterial", "photoAvailable", "userId", + "hasIgnoredAttributes", ]; for (let i of ATTRS) { if (i in keyData) { @@ -159,7 +160,7 @@ get signatures() { if (this._sigList === null) { const cApi = EnigmailCryptoAPI(); - this._sigList = cApi.sync(cApi.getKeySignatures(this.keyId)); + this._sigList = cApi.sync(cApi.getKeyObjSignatures(this)); } return this._sigList; diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/mimeDecrypt.jsm thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/mimeDecrypt.jsm --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/mimeDecrypt.jsm 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/mimeDecrypt.jsm 2022-05-20 05:59:32.000000000 +0000 @@ -61,17 +61,10 @@ emptyAttachment() { EnigmailLog.DEBUG("mimeDecrypt.jsm: emptyAttachment()\n"); - let encPart = l10n.formatValueSync( - "mime-decrypt-encrypted-part-attachment-label" - ); let concealed = l10n.formatValueSync( "mime-decrypt-encrypted-part-concealed-data" ); - let retData = `Content-Type: message/rfc822; name="${encPart}.eml" -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; filename="${encPart}.eml" - -Content-Type: text/html + let retData = `Content-Type: text/html

${concealed}

`; @@ -404,6 +397,15 @@ this.msgWindow = EnigmailVerify.lastMsgWindow; this.msgUriSpec = EnigmailVerify.lastMsgUri; + let href = Services.wm.getMostRecentWindow(null)?.document?.location.href; + + if ( + href == "about:blank" || + href == "chrome://messenger/content/viewSource.xhtml" + ) { + return; + } + let url = {}; let currMsg = EnigmailURIs.msgIdentificationFromUrl(this.uri); diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/mimeVerify.jsm thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/mimeVerify.jsm --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/mimeVerify.jsm 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/mimeVerify.jsm 2022-05-20 05:59:32.000000000 +0000 @@ -411,6 +411,66 @@ return -1; }, + isAllowedSigPart(queryMimePartNumber, loadedUriSpec) { + // allowed are: + // - the top part 1 + // - the child 1.1 if 1 is an encryption layer + // - a part that is the one we are loading + // - a part that is the first child of the one we are loading, + // and the child we are loading is an encryption layer + + if (queryMimePartNumber.length === 0) { + return false; + } + + if (queryMimePartNumber === "1") { + return true; + } + + if (queryMimePartNumber == "1.1") { + // We are processing "1.1", which means we're the child of the + // top mime part. Don't process the signature unless the top + // level mime part is an encryption layer. + let currMsg = EnigmailURIs.msgIdentificationFromUrl(this.uri); + if ( + EnigmailSingletons.isLastDecryptedMessagePart( + currMsg.folder, + currMsg.msgNum, + "1" + ) + ) { + return true; + } + } + + if (!loadedUriSpec) { + return false; + } + + // is the message a subpart of a complete attachment? + let msgPart = EnigmailMime.getMimePartNumber(loadedUriSpec); + + if (msgPart.length > 0) { + if (queryMimePartNumber === msgPart + ".1") { + return true; + } + + let currMsg = EnigmailURIs.msgIdentificationFromUrl(this.uri); + if ( + queryMimePartNumber === msgPart + ".1.1" && + EnigmailSingletons.isLastDecryptedMessagePart( + currMsg.folder, + currMsg.msgNum, + msgPart + ".1" + ) + ) { + return true; + } + } + + return false; + }, + onStopRequest() { EnigmailLog.DEBUG("mimeVerify.jsm: onStopRequest\n"); @@ -422,6 +482,15 @@ // don't try to verify if no message found // if (this.verifyEmbedded && (!this.foundMsg)) return; // TODO - check + let href = Services.wm.getMostRecentWindow(null)?.document?.location.href; + + if ( + href == "about:blank" || + href == "chrome://messenger/content/viewSource.xhtml" + ) { + return; + } + if (this.readMode < 4) { // we got incomplete data; simply return what we got this.returnData( @@ -448,24 +517,8 @@ this.returnData(this.signedData); } - // return if not verifying first mime part - if (this.mimePartNumber != "1") { - if (this.mimePartNumber != "1.1") { - return; - } - // We are processing "1.1", which means we're the child of the - // top mime part. Don't process the signature unless the top - // level mime part is an encryption layer. - let currMsg = EnigmailURIs.msgIdentificationFromUrl(this.uri); - if ( - !EnigmailSingletons.isLastDecryptedMessagePart( - currMsg.folder, - currMsg.msgNum, - "1" - ) - ) { - return; - } + if (!this.isAllowedSigPart(this.mimePartNumber, this.msgUriSpec)) { + return; } if (this.uri) { diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/RNP.jsm thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/RNP.jsm --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/RNP.jsm 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/RNP.jsm 2022-05-20 05:59:32.000000000 +0000 @@ -361,6 +361,73 @@ return this.getPrimaryKeyHandleFromSub(ffi, handle); }, + hasKeyWeakSelfSignature(selfId, handle) { + let sig_count = new ctypes.size_t(); + if (RNPLib.rnp_key_get_signature_count(handle, sig_count.address())) { + throw new Error("rnp_key_get_signature_count failed"); + } + + let hasWeak = false; + for (let i = 0; !hasWeak && i < sig_count.value; i++) { + let sig_handle = new RNPLib.rnp_signature_handle_t(); + + if (RNPLib.rnp_key_get_signature_at(handle, i, sig_handle.address())) { + throw new Error("rnp_key_get_signature_at failed"); + } + + hasWeak = RNP.isWeakSelfSignature(selfId, sig_handle); + RNPLib.rnp_signature_handle_destroy(sig_handle); + } + return hasWeak; + }, + + isWeakSelfSignature(selfId, sig_handle) { + let sig_id_str = new ctypes.char.ptr(); + if (RNPLib.rnp_signature_get_keyid(sig_handle, sig_id_str.address())) { + throw new Error("rnp_signature_get_keyid failed"); + } + + let sigId = sig_id_str.readString(); + RNPLib.rnp_buffer_destroy(sig_id_str); + + // Is it a self-signature? + if (sigId != selfId) { + return false; + } + + let creation = new ctypes.uint32_t(); + if (RNPLib.rnp_signature_get_creation(sig_handle, creation.address())) { + throw new Error("rnp_signature_get_creation failed"); + } + + let hash_str = new ctypes.char.ptr(); + if (RNPLib.rnp_signature_get_hash_alg(sig_handle, hash_str.address())) { + throw new Error("rnp_signature_get_hash_alg failed"); + } + + let creation64 = new ctypes.uint64_t(); + creation64.value = creation.value; + + let level = new ctypes.uint32_t(); + + if ( + RNPLib.rnp_get_security_rule( + RNPLib.ffi, + RNPLib.RNP_FEATURE_HASH_ALG, + hash_str, + creation64, + null, + null, + level.address() + ) + ) { + throw new Error("rnp_get_security_rule failed"); + } + + RNPLib.rnp_buffer_destroy(hash_str); + return level.value < RNPLib.RNP_SECURITY_DEFAULT; + }, + // return false if handle refers to subkey and should be ignored getKeyInfoFromHandle( ffi, @@ -375,6 +442,7 @@ keyObj.userIds = []; keyObj.subKeys = []; keyObj.photoAvailable = false; + keyObj.hasIgnoredAttributes = false; let is_subkey = new ctypes.bool(); let sub_count = new ctypes.size_t(); @@ -442,13 +510,23 @@ if (uidOkToUse) { // Usually, we don't allow user IDs reported as not valid uidOkToUse = !this.isBadUid(uid_handle); + + let { + hasGoodSignature, + hasWeakSignature, + } = this.getUidSignatureQuality(keyObj.keyId, uid_handle); + + if (hasWeakSignature) { + keyObj.hasIgnoredAttributes = true; + } + if (!uidOkToUse && keyObj.keyTrust == "e") { // However, a user might be not valid, because it has // expired. If the primary key has expired, we should show // some user ID, even if all user IDs have expired, // otherwise the user cannot see any text description. // We allow showing user IDs with a good self-signature. - uidOkToUse = this.uidHasGoodSignature(keyObj.keyId, uid_handle); + uidOkToUse = hasGoodSignature; } } @@ -504,6 +582,10 @@ throw new Error("rnp_key_get_subkey_at failed"); } + if (RNP.hasKeyWeakSelfSignature(keyObj.keyId, sub_handle)) { + keyObj.hasIgnoredAttributes = true; + } + if (!RNP.isBadKey(sub_handle)) { let subKeyObj = {}; this.addKeyAttributes(sub_handle, meta, subKeyObj, true, forListing); @@ -639,6 +721,10 @@ if (meta.e) { keyObj.keyUseFor += "E"; } + + if (RNP.hasKeyWeakSelfSignature(keyObj.keyId, handle)) { + keyObj.hasIgnoredAttributes = true; + } } return true; @@ -703,15 +789,18 @@ return is_primary.value; }, - uidHasGoodSignature(self_key_id, uid_handle) { + getUidSignatureQuality(self_key_id, uid_handle) { + let result = { + hasGoodSignature: false, + hasWeakSignature: false, + }; + let sig_count = new ctypes.size_t(); if (RNPLib.rnp_uid_get_signature_count(uid_handle, sig_count.address())) { throw new Error("rnp_uid_get_signature_count failed"); } - let found_result = false; - let is_good = false; - for (let i = 0; !found_result && i < sig_count.value; i++) { + for (let i = 0; i < sig_count.value; i++) { let sig_handle = new RNPLib.rnp_signature_handle_t(); if ( @@ -726,18 +815,26 @@ } if (sig_id_str.readString() == self_key_id) { - found_result = true; + if (!result.hasGoodSignature) { + let sig_validity = RNPLib.rnp_signature_is_valid(sig_handle, 0); + result.hasGoodSignature = + sig_validity == RNPLib.RNP_SUCCESS || + sig_validity == RNPLib.RNP_ERROR_SIGNATURE_EXPIRED; + } - let sig_validity = RNPLib.rnp_signature_is_valid(sig_handle, 0); - is_good = - sig_validity == RNPLib.RNP_SUCCESS || - sig_validity == RNPLib.RNP_ERROR_SIGNATURE_EXPIRED; + if (!result.hasWeakSignature) { + result.hasWeakSignature = RNP.isWeakSelfSignature( + self_key_id, + sig_handle + ); + } } + RNPLib.rnp_buffer_destroy(sig_id_str); RNPLib.rnp_signature_handle_destroy(sig_handle); } - return is_good; + return result; }, isBadUid(uid_handle) { @@ -779,6 +876,26 @@ false ); + let result = RNP._getSignatures(mainKeyObj, handle, ignoreUnknownUid); + RNPLib.rnp_key_handle_destroy(handle); + return result; + }, + + getKeyObjSignatures(keyObj, ignoreUnknownUid) { + let handle = this.getKeyHandleByKeyIdOrFingerprint( + RNPLib.ffi, + "0x" + keyObj.keyId + ); + if (handle.isNull()) { + return null; + } + + let result = RNP._getSignatures(keyObj, handle, ignoreUnknownUid); + RNPLib.rnp_key_handle_destroy(handle); + return result; + }, + + _getSignatures(keyObj, handle, ignoreUnknownUid) { let rList = {}; try { @@ -809,9 +926,9 @@ let subList = {}; subList = {}; - subList.created = mainKeyObj.created; - subList.fpr = mainKeyObj.fpr; - subList.keyId = mainKeyObj.keyId; + subList.created = keyObj.created; + subList.fpr = keyObj.fpr; + subList.keyId = keyObj.keyId; subList.userId = userIdStr; subList.sigList = []; @@ -907,8 +1024,6 @@ } } catch (ex) { console.log(ex); - } finally { - RNPLib.rnp_key_handle_destroy(handle); } return rList; }, diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/RNPLib.jsm thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/RNPLib.jsm --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/modules/RNPLib.jsm 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/modules/RNPLib.jsm 2022-05-20 05:59:32.000000000 +0000 @@ -1377,6 +1377,31 @@ rnp_signature_handle_t.ptr ), + rnp_key_get_signature_count: librnp.declare( + "rnp_key_get_signature_count", + abi, + rnp_result_t, + rnp_uid_handle_t, + ctypes.size_t.ptr + ), + + rnp_key_get_signature_at: librnp.declare( + "rnp_key_get_signature_at", + abi, + rnp_result_t, + rnp_key_handle_t, + ctypes.size_t, + rnp_signature_handle_t.ptr + ), + + rnp_signature_get_hash_alg: librnp.declare( + "rnp_signature_get_hash_alg", + abi, + rnp_result_t, + rnp_signature_handle_t, + ctypes.char.ptr.ptr + ), + rnp_signature_get_creation: librnp.declare( "rnp_signature_get_creation", abi, @@ -1642,6 +1667,19 @@ ctypes.char.ptr.ptr ), + rnp_get_security_rule: librnp.declare( + "rnp_get_security_rule", + abi, + rnp_result_t, + rnp_ffi_t, + ctypes.char.ptr, + ctypes.char.ptr, + ctypes.uint64_t, + ctypes.uint32_t.ptr, + ctypes.uint64_t.ptr, + ctypes.uint32_t.ptr + ), + rnp_result_t, rnp_ffi_t, rnp_password_cb_t, @@ -1675,6 +1713,9 @@ RNP_SUCCESS: 0x00000000, + RNP_FEATURE_HASH_ALG: "hash algorithm", + RNP_SECURITY_DEFAULT: 2, + /* Common error codes */ RNP_ERROR_GENERIC: 0x10000000, // 268435456 RNP_ERROR_BAD_FORMAT: 0x10000001, // 268435457 diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.js thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.js --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.js 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.js 2022-05-20 05:59:32.000000000 +0000 @@ -279,6 +279,10 @@ document.l10n.setAttributes(acceptanceIntro2, acceptanceIntro2Text); } + document.getElementById( + "key-detail-has-insecure" + ).hidden = !keyObj.hasIgnoredAttributes; + // Resize the dialog only if the data was changed since the first load. if (!firstLoad) { resizeDialog(); diff -Nru thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.xhtml thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.xhtml --- thunderbird-91.8.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.xhtml 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/extensions/openpgp/content/ui/keyDetailsDlg.xhtml 2022-05-20 05:59:32.000000000 +0000 @@ -82,6 +82,16 @@ data-l10n-id="openpgp-key-details-also-known-label"/> + + diff -Nru thunderbird-91.8.1+build1/comm/mail/locales/en-US/messenger/openpgp/openpgp.ftl thunderbird-91.9.1+build1/comm/mail/locales/en-US/messenger/openpgp/openpgp.ftl --- thunderbird-91.8.1+build1/comm/mail/locales/en-US/messenger/openpgp/openpgp.ftl 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/locales/en-US/messenger/openpgp/openpgp.ftl 2022-05-20 05:59:32.000000000 +0000 @@ -246,6 +246,7 @@ openpgp-key-details-key-type-label = Type openpgp-key-details-key-part-label = .label = Key Part +openpgp-key-details-attr-ignored = Warning: This key might not work as expected, because some of its properties are unsafe and might be ignored. openpgp-key-details-algorithm-label = .label = Algorithm openpgp-key-details-size-label = @@ -382,7 +383,6 @@ window-locked = Compose window is locked; send cancelled # Strings in mimeDecrypt.jsm -mime-decrypt-encrypted-part-attachment-label = Encrypted message part mime-decrypt-encrypted-part-concealed-data = This is an encrypted message part. You need to open it in a separate window by clicking on the attachment. # Strings in keyserver.jsm diff -Nru thunderbird-91.8.1+build1/comm/mail/test/browser/openpgp/browser_viewMessage.js thunderbird-91.9.1+build1/comm/mail/test/browser/openpgp/browser_viewMessage.js --- thunderbird-91.8.1+build1/comm/mail/test/browser/openpgp/browser_viewMessage.js 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/test/browser/openpgp/browser_viewMessage.js 2022-05-20 05:59:32.000000000 +0000 @@ -8,12 +8,18 @@ "use strict"; -const { open_message_from_file } = ChromeUtils.import( +const { + open_message_from_file, + wait_for_message_display_completion, +} = ChromeUtils.import( "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" ); -const { close_window } = ChromeUtils.import( - "resource://testing-common/mozmill/WindowHelpers.jsm" -); +const { + async_plan_for_new_window, + close_window, + wait_for_new_window, + wait_for_window_focused, +} = ChromeUtils.import("resource://testing-common/mozmill/WindowHelpers.jsm"); const { waitForCondition } = ChromeUtils.import( "resource://testing-common/mozmill/utils.jsm" ); @@ -171,6 +177,68 @@ close_window(mc); }); +/** + * Test that opening an attached encrypted message has no effect + * on security status icons of the parent message window. + */ +add_task(async function testOpenForwardedEncrypted() { + let mc = await open_message_from_file( + new FileUtils.File(getTestFilePath("data/eml/fwd-unsigned-encrypted.eml")) + ); + + Assert.ok( + getMsgBodyTxt(mc).includes("wrapper message with plain text"), + "wrapper message text should be shown" + ); + Assert.ok( + !getMsgBodyTxt(mc).includes(MSG_TEXT), + "message text should not be shown" + ); + Assert.ok( + OpenPGPTestUtils.hasNoSignedIconState(mc.window.document), + "signed icon is not displayed" + ); + Assert.ok( + !OpenPGPTestUtils.hasEncryptedIconState(mc.window.document, "ok"), + "encrypted icon is not displayed" + ); + + let newWindowPromise = async_plan_for_new_window("mail:messageWindow"); + mc.click(mc.e("attachmentName")); + let mc2 = await newWindowPromise; + wait_for_message_display_completion(mc2, true); + wait_for_window_focused(mc2.window); + + // Check properties of the opened attachment window. + Assert.ok( + getMsgBodyTxt(mc2).includes(MSG_TEXT), + "message text should be shown" + ); + Assert.ok( + OpenPGPTestUtils.hasNoSignedIconState(mc2.window.document), + "signed icon is not displayed" + ); + Assert.ok( + OpenPGPTestUtils.hasEncryptedIconState(mc2.window.document, "ok"), + "encrypted icon is displayed" + ); + close_window(mc2); + + wait_for_window_focused(mc.window); + + // Ensure there were no side effects for the primary window. + Assert.ok( + OpenPGPTestUtils.hasNoSignedIconState(mc.window.document), + "signed icon is still not displayed" + ); + Assert.ok( + !OpenPGPTestUtils.hasEncryptedIconState(mc.window.document, "ok"), + "encrypted icon is still not displayed" + ); + + close_window(mc); +}); + /** * Test that opening a message that is signed by a verified key shows as such. */ diff -Nru thunderbird-91.8.1+build1/comm/mail/test/browser/openpgp/data/eml/fwd-unsigned-encrypted.eml thunderbird-91.9.1+build1/comm/mail/test/browser/openpgp/data/eml/fwd-unsigned-encrypted.eml --- thunderbird-91.8.1+build1/comm/mail/test/browser/openpgp/data/eml/fwd-unsigned-encrypted.eml 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/test/browser/openpgp/data/eml/fwd-unsigned-encrypted.eml 2022-05-20 05:59:32.000000000 +0000 @@ -0,0 +1,75 @@ +Content-Type: multipart/mixed; boundary="------------LkTnU6PdkUwoxLbEONGg5YWI" +Message-ID: <51b2b268-52a6-c8a6-3a9e-6222653b9338@openpgp.example> +Date: Wed, 15 Oct 2020 14:46:19 -0400 +MIME-Version: 1.0 +References: <41b2b268-52a6-c8a6-3a9e-6222653b9338@openpgp.example> +Subject: encrypted message forwarded as attachment +To: alice@openpgp.example +From: alice@openpgp.example +In-Reply-To: <41b2b268-52a6-c8a6-3a9e-6222653b9338@openpgp.example> +X-Forwarded-Message-Id: <41b2b268-52a6-c8a6-3a9e-6222653b9338@openpgp.example> + +This is a multi-part message in MIME format. +--------------LkTnU6PdkUwoxLbEONGg5YWI +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 7bit + +wrapper message with plain text + + +--------------LkTnU6PdkUwoxLbEONGg5YWI +Content-Type: message/rfc822; name="attached-message.eml" +Content-Disposition: attachment; filename="attached-message.eml" +Content-Transfer-Encoding: 7bit + +To: alice@openpgp.example +From: Bob Babbage +Message-ID: <41b2b268-52a6-c8a6-3a9e-6222653b9338@openpgp.example> +Date: Wed, 14 Oct 2020 14:46:19 -0400 +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 + Thunderbird/83.0a1 +MIME-Version: 1.0 +Subject: ... +Content-Type: multipart/encrypted; + protocol="application/pgp-encrypted"; + boundary="2W16lTBQJ4ZzVzryxZDTtDj0yHOSWfd6l" + +This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156) +--2W16lTBQJ4ZzVzryxZDTtDj0yHOSWfd6l +Content-Type: application/pgp-encrypted +Content-Description: PGP/MIME version identification + +Version: 1 + +--2W16lTBQJ4ZzVzryxZDTtDj0yHOSWfd6l +Content-Type: application/octet-stream; name="encrypted.asc" +Content-Description: OpenPGP encrypted message +Content-Disposition: inline; filename="encrypted.asc" + +-----BEGIN PGP MESSAGE----- + +wcDMA3wvqk35PDeyAQwAx/6/zGSIvT4IyNpRmcM00iVQhUfdfxUTL/o1hV+MdB7rKZIr+qWJEgiJ +F7IyNPJW0ps2W4myyCkDQtIy1682ahq6D6kHCNmDFxMSpElrG5Xup4Ibf1es3g9n/OytGXx8699m +RymR4EA5yAiLEiGYO37N+nwnWhP5BNpk8jgzDSNTD9qbOrXb7Tx32rvOwFCrBHqZsx6LbaD5BWp9 +WdeSqNjJ6c35dhBxy7MlIZWOK27y5TQArsgyoq//3645cQX3jYV0jJbJeWHuPMoMxYfdRHi8oEIm +P3HnqjtSLUtOTwAcc7Vmp5k9/+PG0IZGLtoR0QLNqrJO607mWrCgYowXZofqt3Bs+Nrtf6cuetWd +pBcGkfdYldCWgG55dER67jP7rKyx6QjFPgPBPbYPFl/H0lqLBH4YrwyVTQDFDcmXe11k1s9JdrlJ +JXEqITi4gFFF9E4mj7voC97Fhy2GLPdKH+343gCgTVU5stz8+NyNX7wC2QSogtxEIcBd6FQbTj/j +wV4DR2b2udXyHrYSAQdAJwk2G0weJUqgb4P+/9f76USsiwNpQO9m0k0FxS5OPGowdVTr0bB/bHyV +fo2DKIkfmgYKnmoiL99VsigzSMIVh1+visa0mDW2a2oVfJBnHS/D0sF5AfHIvERSb7+yLgpMQPkk +4cizr+7wiQ6BNbTN6FwG/yhrFbBXp+r//y3ZcTGh6G6IDlAbkAwj4VhTTnxdvBHJCpfnAj2G3AZR +arZ3nC1IC9RLccV66K0oUOdvehgOMBF37Y+BLHXSL6RMc9PZIvtwH4gVMzATUeOQ1SYENGf5LSYq +5zXs0sfRCXmC74FwM+PF9h4mBm0zOvEbyL6uqxTEMYDwAACkl8QzsHqhUe8VEhZTu2c1BcGhES4b +9ajkctWgzG/bA4a8kTwyXDaREZoywIHro0iR5+gzbf3aUm+akWGlCRHCOmaF4ZcYpvFfH65tKgwv +pRzYheCdjK367qiAOwPXh16vBYB1YOZtm7tSot/jBZ60qaIi5BP9FHXAFoR4Y+VWfx8lZYuE1ZNE +k/VMN47PJPXgK+f8aMXDbalXuuq+sFl1XezGW3osppOkcL7reOZ/0heH1Say3wLLADnb3NyYaBg6 +ihl8FrVMdvzCFt59ytXn+H33BbrrYb2PfiEABPjzEPoeFItpQxltY5E0SGRYSOCKnpN2G7M1yoKf +eG7/fXa0EUf1KLLzz+Pj88i4Ht6MQkkb19rwYHgxrxPKhmbV8zJfID5ne2PaE28XPa69wzRIyM2+ +DD5IF7iYLF4KcPURqrF7wYuAtTmOQTSWVv6mlHCxjz/ECeCXJhA+24W0m4/O55h0C3dG4looraOD +JJMITsjObyRasT5sgS1y7axqlJY8NmJrEdZMn735+kjR1HPPinZiat4= +=s0kk +-----END PGP MESSAGE----- + +--2W16lTBQJ4ZzVzryxZDTtDj0yHOSWfd6l-- + +--------------LkTnU6PdkUwoxLbEONGg5YWI-- diff -Nru thunderbird-91.8.1+build1/comm/mail/themes/shared/openpgp/keyDetails.css thunderbird-91.9.1+build1/comm/mail/themes/shared/openpgp/keyDetails.css --- thunderbird-91.8.1+build1/comm/mail/themes/shared/openpgp/keyDetails.css 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/themes/shared/openpgp/keyDetails.css 2022-05-20 05:59:32.000000000 +0000 @@ -41,3 +41,13 @@ .additional-key-identity > richlistitem { padding: 2px 4px; } + +.tail-with-learn-more { + margin-inline-end: 10px; + font-weight: bold; +} + +#key-detail-has-insecure { + max-width: 50em; + margin-inline: 2em; +} diff -Nru thunderbird-91.8.1+build1/comm/mail/themes/windows/mail/messenger.css thunderbird-91.9.1+build1/comm/mail/themes/windows/mail/messenger.css --- thunderbird-91.8.1+build1/comm/mail/themes/windows/mail/messenger.css 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/mail/themes/windows/mail/messenger.css 2022-05-20 05:59:32.000000000 +0000 @@ -66,7 +66,7 @@ --tabs-border-color: ThreeDShadow; --tabline-color: Highlight; --item-focus-selected-border-color: HighlightText; - --new-folder-color: Highligt; + --new-folder-color: Highlight; --menuitem-vertical-padding: 3px; --arrowpanel-dimmed: Highlight; --arrowpanel-dimmed-further: Highlight; diff -Nru thunderbird-91.8.1+build1/comm/SOURCE_CHANGESET thunderbird-91.9.1+build1/comm/SOURCE_CHANGESET --- thunderbird-91.8.1+build1/comm/SOURCE_CHANGESET 2022-04-15 07:49:38.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/SOURCE_CHANGESET 2022-05-20 06:00:00.000000000 +0000 @@ -1 +1 @@ -79f1a34ff6596c36fd01ceee26ae1881cebc4756 \ No newline at end of file +a52d41376d0374e23a0848e42a21454150c4d6a2 \ No newline at end of file diff -Nru thunderbird-91.8.1+build1/comm/taskcluster/ci/build/kind.yml thunderbird-91.9.1+build1/comm/taskcluster/ci/build/kind.yml --- thunderbird-91.8.1+build1/comm/taskcluster/ci/build/kind.yml 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/taskcluster/ci/build/kind.yml 2022-05-20 05:59:33.000000000 +0000 @@ -13,6 +13,7 @@ - taskgraph.transforms.build_attrs:transforms - taskgraph.transforms.build_lints:transforms - taskgraph.transforms.job:transforms + - comm_taskgraph.transforms.tb_build:transforms - taskgraph.transforms.task:transforms jobs-from: diff -Nru thunderbird-91.8.1+build1/comm/taskcluster/comm_taskgraph/transforms/tb_build.py thunderbird-91.9.1+build1/comm/taskcluster/comm_taskgraph/transforms/tb_build.py --- thunderbird-91.8.1+build1/comm/taskcluster/comm_taskgraph/transforms/tb_build.py 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/taskcluster/comm_taskgraph/transforms/tb_build.py 2022-05-20 05:59:33.000000000 +0000 @@ -0,0 +1,24 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import logging + +from taskgraph.transforms.base import TransformSequence + +logger = logging.getLogger(__name__) + +transforms = TransformSequence() + + +@transforms.add +def munge_environment(config, jobs): + for job in jobs: + env = job["worker"]["env"] + # Remove MOZ_SOURCE_CHANGESET/REPO from the job environment and discard + # if present. Having these variables set in the environment causes problems + # with generating debug sym files. Bug 1747879. + env.pop("MOZ_SOURCE_CHANGESET", None) + env.pop("MOZ_SOURCE_REPO", None) + + yield job diff -Nru thunderbird-91.8.1+build1/comm/.taskcluster.yml thunderbird-91.9.1+build1/comm/.taskcluster.yml --- thunderbird-91.8.1+build1/comm/.taskcluster.yml 2022-04-15 07:49:20.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/.taskcluster.yml 2022-05-20 05:59:31.000000000 +0000 @@ -212,7 +212,7 @@ ACTION_CALLBACK: '${action.cb_name}' cache: - "${trustDomain}-level-${repository.level}-checkouts-sparse-v2": /builds/worker/checkouts + "${trustDomain}-level-${repository.level}-checkouts-sparse-v3": /builds/worker/checkouts features: taskclusterProxy: true @@ -220,7 +220,7 @@ # Note: This task is built server side without the context or tooling that # exist in tree so we must hard code the hash - image: 'mozillareleases/gecko_decision:3.0.1@sha256:9964730ed951584e65032bd1d6a2b7ede6d880a8b7aefb72d0d7f82346d834e3' + image: 'mozillareleases/gecko_decision:4.0.0@sha256:9f69fe08c28e3cb3cc296451f0a2735df6e25d0e3c877ea735ef1b7f0b345b06' maxRunTime: 1800 diff -Nru thunderbird-91.8.1+build1/comm/third_party/rnp/src/lib/crypto/signatures.cpp thunderbird-91.9.1+build1/comm/third_party/rnp/src/lib/crypto/signatures.cpp --- thunderbird-91.8.1+build1/comm/third_party/rnp/src/lib/crypto/signatures.cpp 2022-04-15 07:49:21.000000000 +0000 +++ thunderbird-91.9.1+build1/comm/third_party/rnp/src/lib/crypto/signatures.cpp 2022-05-20 05:59:33.000000000 +0000 @@ -263,10 +263,40 @@ return RNP_ERROR_BAD_PARAMETERS; } - /* Check signature security */ - if (ctx.profile.hash_level(sig.halg, sig.creation()) < rnp::SecurityLevel::Default) { - RNP_LOG("Insecure hash algorithm %d, marking signature as invalid.", sig.halg); - return RNP_ERROR_SIGNATURE_INVALID; + bool check_security_level = true; + if (hash.alg() == PGP_HASH_SHA1) { + /* Check signature security */ + switch (sig.type()) { + /* key certifications */ + case PGP_CERT_GENERIC: + case PGP_CERT_PERSONA: + case PGP_CERT_CASUAL: + case PGP_CERT_POSITIVE: + /* subkey binding signature */ + case PGP_SIG_SUBKEY: + case PGP_SIG_PRIMARY: + /* direct-key signature */ + case PGP_SIG_DIRECT: + /* revocation signatures */ + case PGP_SIG_REV_KEY: + case PGP_SIG_REV_SUBKEY: + case PGP_SIG_REV_CERT: + /* Allow */ + check_security_level = false; + break; + + default: + break; + } + } + + if (check_security_level) { + /* Only allow if the additional check passes. */ + if (ctx.profile.hash_level(sig.halg, sig.creation()) < rnp::SecurityLevel::Default) { + RNP_LOG("Insecure hash algorithm %d, marking signature as invalid.", sig.halg); + return RNP_ERROR_SIGNATURE_INVALID; + + } } /* Finalize hash */ diff -Nru thunderbird-91.8.1+build1/config/milestone.txt thunderbird-91.9.1+build1/config/milestone.txt --- thunderbird-91.8.1+build1/config/milestone.txt 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/config/milestone.txt 2022-05-20 05:58:33.000000000 +0000 @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -91.8.0 +91.9.1 diff -Nru thunderbird-91.8.1+build1/debian/changelog thunderbird-91.9.1+build1/debian/changelog --- thunderbird-91.8.1+build1/debian/changelog 2022-04-15 09:45:20.000000000 +0000 +++ thunderbird-91.9.1+build1/debian/changelog 2022-05-20 06:33:55.000000000 +0000 @@ -1,3 +1,27 @@ +thunderbird (1:91.9.1+build1-0ubuntu0.21.10.1) impish; urgency=medium + + * New upstream stable release (91.9.1build1) + + -- Olivier Tilloy Fri, 20 May 2022 08:33:55 +0200 + +thunderbird (1:91.9.0+build3-0ubuntu0.21.10.1) impish; urgency=medium + + * New upstream stable release (91.9.0build3) + + -- Olivier Tilloy Wed, 04 May 2022 11:18:30 +0200 + +thunderbird (1:91.9.0+build2-0ubuntu0.21.10.1) impish; urgency=medium + + * New upstream stable release (91.9.0build2) + + -- Olivier Tilloy Mon, 02 May 2022 09:22:35 +0200 + +thunderbird (1:91.9.0+build1-0ubuntu0.21.10.1) impish; urgency=medium + + * New upstream stable release (91.9.0build1) + + -- Olivier Tilloy Fri, 29 Apr 2022 16:02:54 +0200 + thunderbird (1:91.8.1+build1-0ubuntu0.21.10.1) impish; urgency=medium * New upstream stable release (91.8.1build1) diff -Nru thunderbird-91.8.1+build1/docshell/base/BaseHistory.cpp thunderbird-91.9.1+build1/docshell/base/BaseHistory.cpp --- thunderbird-91.8.1+build1/docshell/base/BaseHistory.cpp 2022-04-15 07:40:53.000000000 +0000 +++ thunderbird-91.9.1+build1/docshell/base/BaseHistory.cpp 2022-05-20 05:46:57.000000000 +0000 @@ -116,10 +116,6 @@ // This will not catch a case where it is registered for two different URIs. MOZ_DIAGNOSTIC_ASSERT(!links->mLinks.Contains(aLink), "Already tracking this Link object!"); - // FIXME(emilio): We should consider changing this (see the entry.Remove() - // call in NotifyVisitedInThisProcess). - MOZ_DIAGNOSTIC_ASSERT(links->mStatus != VisitedStatus::Visited, - "We don't keep tracking known-visited links"); links->mLinks.AppendElement(aLink); @@ -205,15 +201,6 @@ for (Link* link : links.mLinks.BackwardRange()) { link->VisitedQueryFinished(visited); } - - // We never go from visited -> unvisited. - // - // FIXME(emilio): It seems unfortunate to remove a link to a visited uri and - // then re-add it to the document to trigger a new visited query. It shouldn't - // if we keep track of mStatus. - if (visited) { - entry.Remove(); - } } void BaseHistory::SendPendingVisitedResultsToChildProcesses() { diff -Nru thunderbird-91.8.1+build1/dom/base/Document.cpp thunderbird-91.9.1+build1/dom/base/Document.cpp --- thunderbird-91.8.1+build1/dom/base/Document.cpp 2022-04-15 07:40:53.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/base/Document.cpp 2022-05-20 05:46:57.000000000 +0000 @@ -3692,6 +3692,20 @@ return NS_OK; } +static Document* GetInProcessParentDocumentFrom(BrowsingContext* aContext) { + BrowsingContext* parentContext = aContext->GetParent(); + if (!parentContext) { + return nullptr; + } + + WindowContext* windowContext = parentContext->GetCurrentWindowContext(); + if (!windowContext) { + return nullptr; + } + + return windowContext->GetDocument(); +} + already_AddRefed Document::GetParentFeaturePolicy() { BrowsingContext* browsingContext = GetBrowsingContext(); if (!browsingContext) { @@ -3711,6 +3725,11 @@ return do_AddRef(browsingContext->Canonical()->GetContainerFeaturePolicy()); } + if (Document* parentDocument = + GetInProcessParentDocumentFrom(browsingContext)) { + return do_AddRef(parentDocument->FeaturePolicy()); + } + WindowContext* windowContext = browsingContext->GetCurrentWindowContext(); if (!windowContext) { return nullptr; diff -Nru thunderbird-91.8.1+build1/dom/base/Link.cpp thunderbird-91.9.1+build1/dom/base/Link.cpp --- thunderbird-91.8.1+build1/dom/base/Link.cpp 2022-04-15 07:40:53.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/base/Link.cpp 2022-05-20 05:46:57.000000000 +0000 @@ -60,25 +60,17 @@ void Link::VisitedQueryFinished(bool aVisited) { MOZ_ASSERT(mRegistered, "Setting the link state of an unregistered Link!"); - MOZ_ASSERT(mState == State::Unvisited, - "Why would we want to know our visited state otherwise?"); auto newState = aVisited ? State::Visited : State::Unvisited; // Set our current state as appropriate. mState = newState; - // We will be no longer registered if we're visited, as it'd be pointless, we - // never transition from visited -> unvisited. - if (aVisited) { - mRegistered = false; - } - MOZ_ASSERT(LinkState() == NS_EVENT_STATE_VISITED || LinkState() == NS_EVENT_STATE_UNVISITED, "Unexpected state obtained from LinkState()!"); - // Tell the element to update its visited state + // Tell the element to update its visited state. mElement->UpdateState(true); if (StaticPrefs::layout_css_always_repaint_on_unvisited()) { diff -Nru thunderbird-91.8.1+build1/dom/base/nsObjectLoadingContent.cpp thunderbird-91.9.1+build1/dom/base/nsObjectLoadingContent.cpp --- thunderbird-91.8.1+build1/dom/base/nsObjectLoadingContent.cpp 2022-04-15 07:40:53.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/base/nsObjectLoadingContent.cpp 2022-05-20 05:46:57.000000000 +0000 @@ -83,6 +83,7 @@ #include "mozilla/IMEStateManager.h" #include "mozilla/widget/IMEData.h" #include "mozilla/IntegerPrintfMacros.h" +#include "mozilla/dom/ContentChild.h" #include "mozilla/dom/HTMLObjectElementBinding.h" #include "mozilla/dom/HTMLEmbedElement.h" #include "mozilla/dom/HTMLObjectElement.h" @@ -362,6 +363,8 @@ return nullptr; } + MaybeStoreCrossOriginFeaturePolicy(); + return docShell.forget(); } @@ -2364,3 +2367,31 @@ sdf->SubdocumentIntrinsicSizeOrRatioChanged(); } } + +void nsObjectLoadingContent::MaybeStoreCrossOriginFeaturePolicy() { + MOZ_DIAGNOSTIC_ASSERT(mFrameLoader); + + // If the browsingContext is not ready (because docshell is dead), don't try + // to create one. + if (!mFrameLoader->IsRemoteFrame() && !mFrameLoader->GetExistingDocShell()) { + return; + } + + RefPtr browsingContext = mFrameLoader->GetBrowsingContext(); + + if (!browsingContext || !browsingContext->IsContentSubframe()) { + return; + } + + nsCOMPtr thisContent = AsContent(); + + if (!thisContent->IsInComposedDoc()) { + return; + } + + FeaturePolicy* featurePolicy = thisContent->OwnerDoc()->FeaturePolicy(); + + if (ContentChild* cc = ContentChild::GetSingleton()) { + Unused << cc->SendSetContainerFeaturePolicy(browsingContext, featurePolicy); + } +} diff -Nru thunderbird-91.8.1+build1/dom/base/nsObjectLoadingContent.h thunderbird-91.9.1+build1/dom/base/nsObjectLoadingContent.h --- thunderbird-91.8.1+build1/dom/base/nsObjectLoadingContent.h 2022-04-15 07:40:53.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/base/nsObjectLoadingContent.h 2022-05-20 05:46:57.000000000 +0000 @@ -490,6 +490,12 @@ // Utility for firing an error event, if we're an . void MaybeFireErrorEvent(); + /** + * Store feature policy in container browsing context so that it can be + * accessed cross process. + */ + void MaybeStoreCrossOriginFeaturePolicy(); + // The final listener for mChannel (uriloader, pluginstreamlistener, etc.) nsCOMPtr mFinalListener; diff -Nru thunderbird-91.8.1+build1/dom/html/test/file_fullscreen-resize.html thunderbird-91.9.1+build1/dom/html/test/file_fullscreen-resize.html --- thunderbird-91.8.1+build1/dom/html/test/file_fullscreen-resize.html 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/html/test/file_fullscreen-resize.html 2022-05-20 05:46:59.000000000 +0000 @@ -0,0 +1,39 @@ + + + + + Test for Bug 1742421 + + + + + +Mozilla Bug 1742421 +

+ +
+
+
+ + diff -Nru thunderbird-91.8.1+build1/dom/html/test/mochitest.ini thunderbird-91.9.1+build1/dom/html/test/mochitest.ini --- thunderbird-91.8.1+build1/dom/html/test/mochitest.ini 2022-04-15 07:40:54.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/html/test/mochitest.ini 2022-05-20 05:46:59.000000000 +0000 @@ -471,6 +471,7 @@ file_fullscreen-table.html file_fullscreen-top-layer.html file_fullscreen-utils.js + file_fullscreen-resize.html [test_fullscreen_meta_viewport.html] support-files = file_fullscreen_meta_viewport.html diff -Nru thunderbird-91.8.1+build1/dom/html/test/test_fullscreen-api.html thunderbird-91.9.1+build1/dom/html/test/test_fullscreen-api.html --- thunderbird-91.8.1+build1/dom/html/test/test_fullscreen-api.html 2022-04-15 07:40:54.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/html/test/test_fullscreen-api.html 2022-05-20 05:46:59.000000000 +0000 @@ -54,6 +54,7 @@ ["dom.security.featurePolicy.webidl.enabled", true]] }, { test: "file_fullscreen-async.html" }, { test: "file_fullscreen-sub-iframe.html" }, + { test: "file_fullscreen-resize.html" }, ]; var testWindow = null; diff -Nru thunderbird-91.8.1+build1/dom/ipc/ContentParent.cpp thunderbird-91.9.1+build1/dom/ipc/ContentParent.cpp --- thunderbird-91.8.1+build1/dom/ipc/ContentParent.cpp 2022-04-15 07:40:54.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/ipc/ContentParent.cpp 2022-05-20 05:46:59.000000000 +0000 @@ -4368,6 +4368,9 @@ #ifdef MOZ_WEBSPEECH PSpeechSynthesisParent* ContentParent::AllocPSpeechSynthesisParent() { + if (!StaticPrefs::media_webspeech_synth_enabled()) { + return nullptr; + } return new mozilla::dom::SpeechSynthesisParent(); } diff -Nru thunderbird-91.8.1+build1/dom/jsurl/nsJSProtocolHandler.cpp thunderbird-91.9.1+build1/dom/jsurl/nsJSProtocolHandler.cpp --- thunderbird-91.8.1+build1/dom/jsurl/nsJSProtocolHandler.cpp 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/jsurl/nsJSProtocolHandler.cpp 2022-05-20 05:46:59.000000000 +0000 @@ -232,18 +232,19 @@ mozilla::dom::Document* targetDoc = innerWin->GetExtantDoc(); - if (targetDoc) { - // Sandboxed document check: javascript: URI execution is disabled - // in a sandboxed document unless 'allow-scripts' was specified. - if (targetDoc->HasScriptsBlockedBySandbox()) { - if (nsCOMPtr obs = - mozilla::services::GetObserverService()) { - obs->NotifyWhenScriptSafe(ToSupports(innerWin), - "javascript-uri-blocked-by-sandbox"); - } - return NS_ERROR_DOM_RETVAL_UNDEFINED; + // Sandboxed document check: javascript: URI execution is disabled in a + // sandboxed document unless 'allow-scripts' was specified. + if ((targetDoc && !targetDoc->IsScriptEnabled()) || + (loadInfo->GetTriggeringSandboxFlags() & SANDBOXED_SCRIPTS)) { + if (nsCOMPtr obs = + mozilla::services::GetObserverService()) { + obs->NotifyWhenScriptSafe(ToSupports(innerWin), + "javascript-uri-blocked-by-sandbox"); } + return NS_ERROR_DOM_RETVAL_UNDEFINED; + } + if (targetDoc) { // Perform a Security check against the CSP of the document we are // running against. javascript: URIs are disabled unless "inline" // scripts are allowed. We only do that if targetDoc->NodePrincipal() diff -Nru thunderbird-91.8.1+build1/dom/media/AudioConverter.cpp thunderbird-91.9.1+build1/dom/media/AudioConverter.cpp --- thunderbird-91.8.1+build1/dom/media/AudioConverter.cpp 2022-04-15 07:40:54.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/media/AudioConverter.cpp 2022-05-20 05:46:59.000000000 +0000 @@ -156,8 +156,10 @@ for (int32_t j = 0; j < commonChannels; j++) { aOut[i * aOutChannels + j] = aIn[i * aInChannels + j]; } - for (int32_t j = 0; j < aInChannels - aOutChannels; j++) { - aOut[i * aOutChannels + j] = 0; + if (aOutChannels > aInChannels) { + for (int32_t j = 0; j < aInChannels - aOutChannels; j++) { + aOut[i * aOutChannels + j] = 0; + } } } } diff -Nru thunderbird-91.8.1+build1/dom/media/BaseMediaResource.cpp thunderbird-91.9.1+build1/dom/media/BaseMediaResource.cpp --- thunderbird-91.8.1+build1/dom/media/BaseMediaResource.cpp 2022-04-15 07:40:55.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/media/BaseMediaResource.cpp 2022-05-20 05:46:59.000000000 +0000 @@ -136,24 +136,25 @@ } else { loadFlags &= ~nsIRequest::LOAD_BACKGROUND; } - ModifyLoadFlags(loadFlags); + Unused << NS_WARN_IF(NS_FAILED(ModifyLoadFlags(loadFlags))); } } -void BaseMediaResource::ModifyLoadFlags(nsLoadFlags aFlags) { +nsresult BaseMediaResource::ModifyLoadFlags(nsLoadFlags aFlags) { nsCOMPtr loadGroup; nsresult rv = mChannel->GetLoadGroup(getter_AddRefs(loadGroup)); MOZ_ASSERT(NS_SUCCEEDED(rv), "GetLoadGroup() failed!"); - nsresult status; - mChannel->GetStatus(&status); - bool inLoadGroup = false; if (loadGroup) { + nsresult status; + mChannel->GetStatus(&status); + rv = loadGroup->RemoveRequest(mChannel, nullptr, status); - if (NS_SUCCEEDED(rv)) { - inLoadGroup = true; + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; } + inLoadGroup = true; } rv = mChannel->SetLoadFlags(aFlags); @@ -163,6 +164,8 @@ rv = loadGroup->AddRequest(mChannel, nullptr); MOZ_ASSERT(NS_SUCCEEDED(rv), "AddRequest() failed!"); } + + return NS_OK; } } // namespace mozilla diff -Nru thunderbird-91.8.1+build1/dom/media/BaseMediaResource.h thunderbird-91.9.1+build1/dom/media/BaseMediaResource.h --- thunderbird-91.8.1+build1/dom/media/BaseMediaResource.h 2022-04-15 07:40:54.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/media/BaseMediaResource.h 2022-05-20 05:46:59.000000000 +0000 @@ -127,7 +127,7 @@ // Set the request's load flags to aFlags. If the request is part of a // load group, the request is removed from the group, the flags are set, and // then the request is added back to the load group. - void ModifyLoadFlags(nsLoadFlags aFlags); + nsresult ModifyLoadFlags(nsLoadFlags aFlags); RefPtr mCallback; diff -Nru thunderbird-91.8.1+build1/dom/media/ChannelMediaResource.cpp thunderbird-91.9.1+build1/dom/media/ChannelMediaResource.cpp --- thunderbird-91.8.1+build1/dom/media/ChannelMediaResource.cpp 2022-04-15 07:40:54.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/media/ChannelMediaResource.cpp 2022-05-20 05:58:33.000000000 +0000 @@ -339,7 +339,7 @@ NS_ASSERTION(NS_SUCCEEDED(rv), "GetLoadFlags() failed!"); if (loadFlags & nsIRequest::LOAD_BACKGROUND) { - ModifyLoadFlags(loadFlags & ~nsIRequest::LOAD_BACKGROUND); + Unused << NS_WARN_IF(NS_FAILED(ModifyLoadFlags(loadFlags & ~nsIRequest::LOAD_BACKGROUND))); } // Note that aStatus might have succeeded --- this might be a normal close diff -Nru thunderbird-91.8.1+build1/dom/notification/old/NotificationDB.jsm thunderbird-91.9.1+build1/dom/notification/old/NotificationDB.jsm --- thunderbird-91.8.1+build1/dom/notification/old/NotificationDB.jsm 2022-04-15 07:40:55.000000000 +0000 +++ thunderbird-91.9.1+build1/dom/notification/old/NotificationDB.jsm 2022-05-20 05:47:00.000000000 +0000 @@ -40,8 +40,8 @@ return; } - this.notifications = {}; - this.byTag = {}; + this.notifications = Object.create(null); + this.byTag = Object.create(null); this.loaded = false; this.tasks = []; // read/write operation queue @@ -75,13 +75,14 @@ }, filterNonAppNotifications(notifications) { + let result = Object.create(null); for (let origin in notifications) { + result[origin] = Object.create(null); let persistentNotificationCount = 0; for (let id in notifications[origin]) { if (notifications[origin][id].serviceWorkerRegistrationScope) { persistentNotificationCount++; - } else { - delete notifications[origin][id]; + result[origin][id] = notifications[origin][id]; } } if (persistentNotificationCount == 0) { @@ -90,11 +91,11 @@ "Origin " + origin + " is not linked to an app manifest, deleting." ); } - delete notifications[origin]; + delete result[origin]; } } - return notifications; + return result; }, // Attempt to read notification file, if it's not there we will create it. @@ -111,7 +112,7 @@ // populate the list of notifications by tag if (this.notifications) { for (var origin in this.notifications) { - this.byTag[origin] = {}; + this.byTag[origin] = Object.create(null); for (var id in this.notifications[origin]) { var curNotification = this.notifications[origin][id]; if (curNotification.tag) { @@ -344,8 +345,8 @@ var origin = data.origin; var notification = data.notification; if (!this.notifications[origin]) { - this.notifications[origin] = {}; - this.byTag[origin] = {}; + this.notifications[origin] = Object.create(null); + this.byTag[origin] = Object.create(null); } // We might have existing notification with this tag, diff -Nru thunderbird-91.8.1+build1/gfx/wr/swgl/src/composite.h thunderbird-91.9.1+build1/gfx/wr/swgl/src/composite.h --- thunderbird-91.8.1+build1/gfx/wr/swgl/src/composite.h 2022-04-15 07:40:57.000000000 +0000 +++ thunderbird-91.9.1+build1/gfx/wr/swgl/src/composite.h 2022-05-20 05:47:03.000000000 +0000 @@ -518,7 +518,8 @@ // [ yScale, g_from_u, g_from_v ] x ([cb] - ycbcr_bias ) // [ yScale, b_from_u, 0 ] ([cr] ) static YUVMatrix From(const vec3_scalar& ycbcr_bias, - const mat3_scalar& rgb_from_debiased_ycbcr) { + const mat3_scalar& rgb_from_debiased_ycbcr, + int rescale_factor = 0) { assert(ycbcr_bias.z == ycbcr_bias.y); const auto rgb_from_y = rgb_from_debiased_ycbcr[0].y; @@ -528,14 +529,14 @@ if (rgb_from_debiased_ycbcr[0].x == 0.0) { // gbr-identity matrix? assert(rgb_from_debiased_ycbcr[0].x == 0); - assert(rgb_from_debiased_ycbcr[0].y == 1); + assert(rgb_from_debiased_ycbcr[0].y >= 1); assert(rgb_from_debiased_ycbcr[0].z == 0); assert(rgb_from_debiased_ycbcr[1].x == 0); assert(rgb_from_debiased_ycbcr[1].y == 0); - assert(rgb_from_debiased_ycbcr[1].z == 1); + assert(rgb_from_debiased_ycbcr[1].z >= 1); - assert(rgb_from_debiased_ycbcr[2].x == 1); + assert(rgb_from_debiased_ycbcr[2].x >= 1); assert(rgb_from_debiased_ycbcr[2].y == 0); assert(rgb_from_debiased_ycbcr[2].z == 0); @@ -557,24 +558,30 @@ assert(rgb_from_debiased_ycbcr[2].z == 0.0); return YUVMatrix({ycbcr_bias.x, ycbcr_bias.y}, rgb_from_y, br_from_y_mask, - r_from_v, g_from_u, g_from_v, b_from_u); + r_from_v, g_from_u, g_from_v, b_from_u, rescale_factor); } - // Convert matrix coefficients to fixed-point representation. + // Convert matrix coefficients to fixed-point representation. If the matrix + // has a rescaling applied to it, then we need to take care to undo the + // scaling so that we can convert the coefficients to fixed-point range. The + // bias still requires shifting to apply the rescaling. The rescaling will be + // applied to the actual YCbCr sample data later by manually shifting it + // before applying this matrix. YUVMatrix(vec2_scalar yuv_bias, double yCoeff, int16_t br_yMask_, double rv, - double gu, double gv, double bu) - : br_uvCoeffs(zip(I16(int16_t(bu * (1 << 6) + 0.5)), - I16(int16_t(rv * (1 << 6) + 0.5)))), - gg_uvCoeffs(zip(I16(-int16_t(-gu * (1 << 6) + - 0.5)), // These are negative coeffs, so - // round them away from zero - I16(-int16_t(-gv * (1 << 6) + 0.5)))), - yCoeffs(uint16_t(yCoeff * (1 << (6 + 1)) + 0.5)), + double gu, double gv, double bu, int rescale_factor = 0) + : br_uvCoeffs(zip(I16(int16_t(bu * (1 << (6 - rescale_factor)) + 0.5)), + I16(int16_t(rv * (1 << (6 - rescale_factor)) + 0.5)))), + gg_uvCoeffs( + zip(I16(-int16_t(-gu * (1 << (6 - rescale_factor)) + + 0.5)), // These are negative coeffs, so + // round them away from zero + I16(-int16_t(-gv * (1 << (6 - rescale_factor)) + 0.5)))), + yCoeffs(uint16_t(yCoeff * (1 << (6 + 1 - rescale_factor)) + 0.5)), // We have a +0.5 fudge-factor for -ybias. // Without this, we get white=254 not 255. // This approximates rounding rather than truncation during `gg >>= 6`. - yBias(int16_t( ((yuv_bias.x * 255 * yCoeff) - 0.5 ) * (1<<6) )), - uvBias(int16_t(yuv_bias.y * 255 + 0.5)), + yBias(int16_t(((yuv_bias.x * 255 * yCoeff) - 0.5) * (1 << 6))), + uvBias(int16_t(yuv_bias.y * (255 << rescale_factor) + 0.5)), br_yMask(br_yMask_) { assert(yuv_bias.x >= 0); assert(yuv_bias.y >= 0); @@ -584,6 +591,7 @@ assert(rv > 0); assert(gu <= 0); assert(gv <= 0); + assert(rescale_factor <= 6); } ALWAYS_INLINE PackedRGBA8 convert(V8 yy, V8 uv) const { @@ -865,11 +873,15 @@ // If the source row has less than 2 pixels, it's not safe to use a linear // filter because it may overread the row. Just convert the single pixel // with nearest filtering and fill the row with it. - I16 yuv = CONVERT( - round_pixel((Float){texelFetch(samplerY, ivec2(srcUV)).x.x, - texelFetch(samplerU, ivec2(chromaUV)).x.x, - texelFetch(samplerV, ivec2(chromaUV)).x.x, 1.0f}), - I16); + Float yuvF = {texelFetch(samplerY, ivec2(srcUV)).x.x, + texelFetch(samplerU, ivec2(chromaUV)).x.x, + texelFetch(samplerV, ivec2(chromaUV)).x.x, 1.0f}; + // If this is an HDR LSB format, we need to renormalize the result. + if (colorDepth > 8) { + int rescaleFactor = 16 - colorDepth; + yuvF *= float(1 << rescaleFactor); + } + I16 yuv = CONVERT(round_pixel(yuvF), I16); commit_solid_span( dest, unpack(colorSpace.convert(V8(yuv.x), diff -Nru thunderbird-91.8.1+build1/gfx/wr/swgl/src/swgl_ext.h thunderbird-91.9.1+build1/gfx/wr/swgl/src/swgl_ext.h --- thunderbird-91.8.1+build1/gfx/wr/swgl/src/swgl_ext.h 2022-04-15 07:40:56.000000000 +0000 +++ thunderbird-91.9.1+build1/gfx/wr/swgl/src/swgl_ext.h 2022-05-20 05:47:03.000000000 +0000 @@ -413,26 +413,36 @@ swgl_LinearQuantizeScale)) - uv.x.x; if (uv_step.x > 0.0f && insideDist >= uv_step.x) { - int inside = int(end - buf); + int32_t inside = int(end - buf); if (filter == LINEAR_FILTER_DOWNSCALE) { - inside = clamp(int(insideDist * (0.5f / swgl_LinearQuantizeScale)) & - ~(swgl_StepSize - 1), - 0, inside); - blendTextureLinearDownscale(sampler, uv, inside, min_uv, max_uv, - color, buf); + inside = min(int(insideDist * (0.5f / swgl_LinearQuantizeScale)) & + ~(swgl_StepSize - 1), + inside); + if (inside > 0) { + blendTextureLinearDownscale(sampler, uv, inside, min_uv, + max_uv, color, buf); + buf += inside; + uv.x += (inside / swgl_StepSize) * uv_step.x; + } } else if (filter == LINEAR_FILTER_UPSCALE) { - inside = clamp(int(insideDist / uv_step.x) * swgl_StepSize, 0, inside); - blendTextureLinearUpscale(sampler, uv, inside, uv_step, min_uv, - max_uv, color, buf); + inside = min(int(insideDist / uv_step.x) * swgl_StepSize, inside); + if (inside > 0) { + blendTextureLinearUpscale(sampler, uv, inside, uv_step, min_uv, + max_uv, color, buf); + buf += inside; + uv.x += (inside / swgl_StepSize) * uv_step.x; + } } else { - inside = clamp(int(insideDist * (1.0f / swgl_LinearQuantizeScale)) & - ~(swgl_StepSize - 1), - 0, inside); - blendTextureLinearFast(sampler, uv, inside, min_uv, max_uv, - color, buf); + inside = min(int(insideDist * (1.0f / swgl_LinearQuantizeScale)) & + ~(swgl_StepSize - 1), + inside); + if (inside > 0) { + blendTextureLinearFast(sampler, uv, inside, min_uv, max_uv, + color, buf); + buf += inside; + uv.x += (inside / swgl_StepSize) * uv_step.x; + } } - buf += inside; - uv.x += (inside / swgl_StepSize) * uv_step.x; } } // If the fallback filter was requested, or if there are any samples left that @@ -1019,7 +1029,7 @@ } LINEAR_QUANTIZE_UV(sampler0, uv0, uv_step0, uv_rect0, min_uv0, max_uv0); const auto rgb_from_ycbcr = - YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr); + YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr, rescaleFactor); auto c = packColor(buf, color); auto* end = buf + span; for (; buf < end; buf += swgl_StepSize, uv0 += uv_step0) { @@ -1070,7 +1080,7 @@ LINEAR_QUANTIZE_UV(sampler0, uv0, uv_step0, uv_rect0, min_uv0, max_uv0); LINEAR_QUANTIZE_UV(sampler1, uv1, uv_step1, uv_rect1, min_uv1, max_uv1); const auto rgb_from_ycbcr = - YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr); + YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr, rescaleFactor); auto c = packColor(buf, color); auto* end = buf + span; for (; buf < end; buf += swgl_StepSize, uv0 += uv_step0, uv1 += uv_step1) { @@ -1132,7 +1142,7 @@ const mat3_scalar& rgb_from_debiased_ycbcr, int rescaleFactor, C color) { const auto rgb_from_ycbcr = - YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr); + YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr, rescaleFactor); for (auto* end = buf + span; buf < end; buf += swgl_StepSize, uv0 += uv_step0, uv1 += uv_step1, uv2 += uv_step2) { commit_blend_span( @@ -1230,7 +1240,7 @@ (sampler0->format == TextureFormat::R16 ? 16 : 8) - rescaleFactor; // Finally, call the inner loop of CompositeYUV. const auto rgb_from_ycbcr = - YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr); + YUVMatrix::From(ycbcr_bias, rgb_from_debiased_ycbcr, rescaleFactor); linear_row_yuv( buf, inside * swgl_StepSize, sampler0, force_scalar(uv0), uv_step0.x / swgl_StepSize, sampler1, sampler2, force_scalar(uv1), diff -Nru thunderbird-91.8.1+build1/gfx/wr/webrender/res/brush_yuv_image.glsl thunderbird-91.9.1+build1/gfx/wr/webrender/res/brush_yuv_image.glsl --- thunderbird-91.8.1+build1/gfx/wr/webrender/res/brush_yuv_image.glsl 2022-04-15 07:40:57.000000000 +0000 +++ thunderbird-91.9.1+build1/gfx/wr/webrender/res/brush_yuv_image.glsl 2022-05-20 05:47:03.000000000 +0000 @@ -58,9 +58,6 @@ if (prim.channel_bit_depth > 8) { vRescaleFactor = 16 - prim.channel_bit_depth; } - // Since SWGL rescales filtered YUV values to 8bpc before yuv->rgb - // conversion, don't embed a 10bpc channel multiplier into the yuv matrix. - prim.channel_bit_depth = 8; #endif YuvColorMatrixInfo mat_info = get_rgb_from_ycbcr_info(prim); diff -Nru thunderbird-91.8.1+build1/gfx/wr/webrender/res/composite.glsl thunderbird-91.9.1+build1/gfx/wr/webrender/res/composite.glsl --- thunderbird-91.8.1+build1/gfx/wr/webrender/res/composite.glsl 2022-04-15 07:40:57.000000000 +0000 +++ thunderbird-91.9.1+build1/gfx/wr/webrender/res/composite.glsl 2022-05-20 05:47:03.000000000 +0000 @@ -96,9 +96,6 @@ if (prim.channel_bit_depth > 8) { vRescaleFactor = 16 - prim.channel_bit_depth; } - // Since SWGL rescales filtered YUV values to 8bpc before yuv->rgb - // conversion, don't embed a 10bpc channel multiplier into the yuv matrix. - prim.channel_bit_depth = 8; #endif YuvColorMatrixInfo mat_info = get_rgb_from_ycbcr_info(prim); diff -Nru thunderbird-91.8.1+build1/js/src/builtin/Array.cpp thunderbird-91.9.1+build1/js/src/builtin/Array.cpp --- thunderbird-91.8.1+build1/js/src/builtin/Array.cpp 2022-04-15 07:40:57.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/builtin/Array.cpp 2022-05-20 05:47:04.000000000 +0000 @@ -4243,3 +4243,35 @@ return SetLengthProperty(cx, obj, length); } + +bool js::intrinsic_newList(JSContext* cx, unsigned argc, js::Value* vp) { + CallArgs args = CallArgsFromVp(argc, vp); + MOZ_ASSERT(args.length() == 0); + + size_t length = 0; + gc::AllocKind allocKind = GuessArrayGCKind(length); + MOZ_ASSERT(CanChangeToBackgroundAllocKind(allocKind, &ArrayObject::class_)); + allocKind = ForegroundToBackgroundAllocKind(allocKind); + + /* + * Get a shape with zero fixed slots, regardless of the size class. + * See JSObject::createArray. + */ + RootedShape shape( + cx, SharedShape::getInitialShape(cx, &ArrayObject::class_, cx->realm(), + TaggedProto(), gc::AllocKind::OBJECT0)); + if (!shape) { + return false; + } + + gc::InitialHeap heap = gc::InitialHeap::DefaultHeap; + AutoSetNewObjectMetadata metadata(cx); + RootedArrayObject list(cx, ArrayObject::createArray(cx, allocKind, heap, + shape, length, metadata)); + if (!list || !AddLengthProperty(cx, list)) { + return false; + } + + args.rval().setObject(*list); + return true; +} diff -Nru thunderbird-91.8.1+build1/js/src/builtin/Array.h thunderbird-91.9.1+build1/js/src/builtin/Array.h --- thunderbird-91.8.1+build1/js/src/builtin/Array.h 2022-04-15 07:40:58.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/builtin/Array.h 2022-05-20 05:47:04.000000000 +0000 @@ -116,6 +116,8 @@ extern JSObject* ArraySliceDense(JSContext* cx, HandleObject obj, int32_t begin, int32_t end, HandleObject result); +extern bool intrinsic_newList(JSContext* cx, unsigned argc, js::Value* vp); + /* * Append the given (non-hole) value to the end of an array. The array must be * a newborn array -- that is, one which has not been exposed to script for diff -Nru thunderbird-91.8.1+build1/js/src/builtin/Module.js thunderbird-91.9.1+build1/js/src/builtin/Module.js --- thunderbird-91.8.1+build1/js/src/builtin/Module.js 2022-04-15 07:40:57.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/builtin/Module.js 2022-05-20 05:47:05.000000000 +0000 @@ -14,7 +14,7 @@ // https://tc39.es/ecma262/#sec-getexportednames // ES2020 15.2.1.17.2 GetExportedNames -function ModuleGetExportedNames(exportStarSet = []) +function ModuleGetExportedNames(exportStarSet = new_List()) { if (!IsObject(this) || !IsModule(this)) { return callFunction(CallModuleMethodIfWrapped, this, exportStarSet, @@ -26,13 +26,13 @@ // Step 4 if (callFunction(ArrayIncludes, exportStarSet, module)) - return []; + return new_List(); // Step 5 DefineDataProperty(exportStarSet, exportStarSet.length, module); // Step 6 - let exportedNames = []; + let exportedNames = new_List(); let namesCount = 0; // Step 7 @@ -99,7 +99,7 @@ // - If the request is found to be ambiguous, the string `"ambiguous"` is // returned. // -function ModuleResolveExport(exportName, resolveSet = []) +function ModuleResolveExport(exportName, resolveSet = new_List()) { assert(typeof exportName === "string", "ModuleResolveExport"); @@ -206,7 +206,7 @@ // Step 4 if (typeof namespace === "undefined") { let exportedNames = callFunction(module.getExportedNames, module); - let unambiguousNames = []; + let unambiguousNames = new_List(); for (let i = 0; i < exportedNames.length; i++) { let name = exportedNames[i]; let resolution = callFunction(module.resolveExport, module, name); @@ -312,7 +312,7 @@ } // Step 3 - let stack = []; + let stack = new_List(); // Steps 4-5 try { @@ -606,7 +606,7 @@ } // Step 4 - let stack = []; + let stack = new_List(); // Steps 5-6 try { @@ -769,7 +769,7 @@ } // https://tc39.es/proposal-top-level-await/#sec-gather-async-parent-completions -function GatherAsyncParentCompletions(module, execList = []) { +function GatherAsyncParentCompletions(module, execList = new_List()) { assert(module.status == MODULE_STATUS_EVALUATED, "bad status for async module"); // Step 5. @@ -809,4 +809,3 @@ ExecuteModule(module); } - diff -Nru thunderbird-91.8.1+build1/js/src/builtin/RegExp.js thunderbird-91.9.1+build1/js/src/builtin/RegExp.js --- thunderbird-91.8.1+build1/js/src/builtin/RegExp.js 2022-04-15 07:40:58.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/builtin/RegExp.js 2022-05-20 05:47:04.000000000 +0000 @@ -349,7 +349,7 @@ } // Step 9. - var results = []; + var results = new_List(); var nResults = 0; // Step 11. @@ -456,7 +456,7 @@ functionalReplace, firstDollarIndex) { // Step 14.h. - var captures = []; + var captures = new_List(); var capturesLength = 0; // Step 14.k.i (reordered). @@ -546,7 +546,7 @@ } // Steps 14.g-i, 14.k.i-ii. - var captures = []; + var captures = new_List(); for (var n = 0; n <= nCaptures; n++) { assert(typeof result[n] === "string" || result[n] === undefined, "RegExpMatcher returns only strings and undefined"); diff -Nru thunderbird-91.8.1+build1/js/src/builtin/Utilities.js thunderbird-91.9.1+build1/js/src/builtin/Utilities.js --- thunderbird-91.8.1+build1/js/src/builtin/Utilities.js 2022-04-15 07:40:58.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/builtin/Utilities.js 2022-05-20 05:47:04.000000000 +0000 @@ -27,16 +27,7 @@ // code are installed via the std_functions JSFunctionSpec[] in // SelfHosting.cpp. -/********** List / Record specification types **********/ - -// A "List" is an internal type used in the ECMAScript spec to define a simple -// ordered list of values. It is never exposed to user script, but we use a -// simple Object (with null prototype) as a convenient implementation. -// -// NOTE: This does not track a `length` field. -function new_List() { - return std_Object_create(null); -} +/********** Specification types **********/ // A "Record" is an internal type used in the ECMAScript spec to define a struct diff -Nru thunderbird-91.8.1+build1/js/src/jit/arm64/CodeGenerator-arm64.cpp thunderbird-91.9.1+build1/js/src/jit/arm64/CodeGenerator-arm64.cpp --- thunderbird-91.8.1+build1/js/src/jit/arm64/CodeGenerator-arm64.cpp 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/jit/arm64/CodeGenerator-arm64.cpp 2022-05-20 05:47:05.000000000 +0000 @@ -2489,7 +2489,14 @@ } // Act on flag. - Assembler::Condition cond = JSOpToCondition(ins->compareType(), ins->jsop()); + Assembler::Condition cond; + if (compTy == MCompare::Compare_Float32 || + compTy == MCompare::Compare_Double) { + cond = Assembler::ConditionFromDoubleCondition( + JSOpToDoubleCondition(ins->jsop())); + } else { + cond = JSOpToCondition(compTy, ins->jsop()); + } MIRType insTy = ins->mir()->type(); if (insTy == MIRType::Int32) { Register outReg = ToRegister(ins->output()); diff -Nru thunderbird-91.8.1+build1/js/src/jit/arm64/Lowering-arm64.cpp thunderbird-91.9.1+build1/js/src/jit/arm64/Lowering-arm64.cpp --- thunderbird-91.8.1+build1/js/src/jit/arm64/Lowering-arm64.cpp 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/jit/arm64/Lowering-arm64.cpp 2022-05-20 05:58:33.000000000 +0000 @@ -961,7 +961,9 @@ lir->setOperand(0, useRegisterAtStart(lhs)); lir->setOperand(1, useRegisterAtStart(rhs)); - define(lir, ins); + // The copySignDouble and copySignFloat32 are optimized for lhs == output. + // It also prevents rhs == output when lhs != output, avoids clobbering. + defineReuseInput(lir, ins, 0); } void LIRGenerator::visitExtendInt32ToInt64(MExtendInt32ToInt64* ins) { diff -Nru thunderbird-91.8.1+build1/js/src/jit-test/tests/wasm/binop-arm64-ion-codegen.js thunderbird-91.9.1+build1/js/src/jit-test/tests/wasm/binop-arm64-ion-codegen.js --- thunderbird-91.8.1+build1/js/src/jit-test/tests/wasm/binop-arm64-ion-codegen.js 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/jit-test/tests/wasm/binop-arm64-ion-codegen.js 2022-05-20 05:47:05.000000000 +0000 @@ -300,7 +300,7 @@ 'f', `9e6703e0 fmov d0, xzr 1e622000 fcmp d0, d2 - 1e63bc20 fcsel d0, d1, d3, lt`) + 1e633c20 fcsel d0, d1, d3, lo`) // FP ABS should not tie its input to its output. diff -Nru thunderbird-91.8.1+build1/js/src/jit-test/tests/wasm/regress/bug1761850.js thunderbird-91.9.1+build1/js/src/jit-test/tests/wasm/regress/bug1761850.js --- thunderbird-91.8.1+build1/js/src/jit-test/tests/wasm/regress/bug1761850.js 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/jit-test/tests/wasm/regress/bug1761850.js 2022-05-20 05:47:05.000000000 +0000 @@ -0,0 +1,96 @@ +// Testing runtime execution of select + comparison operations. +// Normally they are folded into shorter/faster sequence than select alone. + +function cross(xs) { + let results = []; + for ( let x of xs ) + for ( let y of xs ) + results.push([x,y]); + return results; +} + +const floatOps = { + lt(a, b) { return a < b ? 0 : 1; }, + le(a, b) { return a <= b ? 0 : 1; }, + gt(a, b) { return a > b ? 0 : 1; }, + ge(a, b) { return a >= b ? 0 : 1; }, + eq(a, b) { return a === b ? 0 : 1; }, + ne(a, b) { return a !== b ? 0 : 1; }, +} + +for (let ty of ['f32', 'f64']) { + for (let op of ['lt', 'le', 'gt', 'ge', 'eq', 'ne']) { + const module = new WebAssembly.Module(wasmTextToBinary(`(module + (memory (export "memory") 1 1) + (func (export "test") (result i32) + i32.const 128 + i32.load8_u + i32.const 129 + i32.load8_u + i32.const 0 + ${ty}.load + i32.const ${ty == 'f32' ? 4 : 8} + ${ty}.load + ${ty}.${op} + select + ) + (data (i32.const 128) "\\00\\01"))`)); + const instance = new WebAssembly.Instance(module); + const arr = new (ty == 'f32' ? Float32Array : Float64Array)(instance.exports.memory.buffer); + for (let [a, b] of cross( + [0, 1, -1e100, Infinity, -Infinity, 1e100, -1e-10, 1/-Infinity, NaN] + )) { + arr[0] = a; arr[1] = b; + assertEq(instance.exports.test(), floatOps[op](arr[0], arr[1])) + } + } +} + +const intOps = { + lt(a, b) { return a < b ? 0 : 1; }, + le(a, b) { return a <= b ? 0 : 1; }, + gt(a, b) { return a > b ? 0 : 1; }, + ge(a, b) { return a >= b ? 0 : 1; }, + eq(a, b) { return a === b ? 0 : 1; }, + ne(a, b) { return a !== b ? 0 : 1; }, +} + +for (let [ty, signed] of [['i32', true], ['i32', false], ['i64', true], ['i64', false]]) { + for (let op of ['lt', 'le', 'gt', 'ge', 'eq', 'ne']) { + const module = new WebAssembly.Module(wasmTextToBinary(`(module + (memory (export "memory") 1 1) + (func (export "test") (result i32) + i32.const 128 + i32.load8_u + i32.const 129 + i32.load8_u + i32.const 0 + ${ty}.load + i32.const ${ty == 'i32' ? 4 : 8} + ${ty}.load + ${ty}.${op}${op[0] == 'l' || op[0] == 'g' ? (signed ? '_s' : '_u') : ''} + select + ) + (data (i32.const 128) "\\00\\01"))`)); + const instance = new WebAssembly.Instance(module); + const arr = new (ty == 'i32' ? (signed ? Int32Array : Uint32Array) : + (signed ? BigInt64Array : BigUint64Array)) + (instance.exports.memory.buffer); + const c = ty == 'i32' ? (a => a|0) : BigInt; + for (let [a, b] of cross( + [c(0), ~c(0), c(1), ~c(1), c(1) << c(8), ~c(1) << c(12)] + )) { + arr[0] = a; arr[1] = b; + assertEq(instance.exports.test(), intOps[op](arr[0], arr[1])) + } + } +} + + +function cross(xs) { + let results = []; + for ( let x of xs ) + for ( let y of xs ) + results.push([x,y]); + return results; +} diff -Nru thunderbird-91.8.1+build1/js/src/jit-test/tests/wasm/regress/bug1762899.js thunderbird-91.9.1+build1/js/src/jit-test/tests/wasm/regress/bug1762899.js --- thunderbird-91.8.1+build1/js/src/jit-test/tests/wasm/regress/bug1762899.js 1970-01-01 00:00:00.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/jit-test/tests/wasm/regress/bug1762899.js 2022-05-20 05:58:33.000000000 +0000 @@ -0,0 +1,19 @@ +var ins = wasmEvalText(` +(module + (func (export "copysign_f64") (param f64 f64) (result f64) + f64.const 0x1.921fb54442d18p+0 (;=1.5708;) + local.get 0 + f64.copysign + ) + (func (export "copysign_f32") (param f32 f32) (result f32) + f32.const 0x1.921fb54442d18p+0 (;=1.5708;) + local.get 0 + f32.copysign + ) +) +`); + +assertEq(ins.exports.copysign_f64(1, 0), 1.5707963267948966); +assertEq(ins.exports.copysign_f64(-1, 0), -1.5707963267948966); +assertEq(ins.exports.copysign_f32(1, 0), 1.5707963705062866); +assertEq(ins.exports.copysign_f32(-1, 0), -1.5707963705062866); diff -Nru thunderbird-91.8.1+build1/js/src/vm/SelfHosting.cpp thunderbird-91.9.1+build1/js/src/vm/SelfHosting.cpp --- thunderbird-91.8.1+build1/js/src/vm/SelfHosting.cpp 2022-04-15 07:41:03.000000000 +0000 +++ thunderbird-91.9.1+build1/js/src/vm/SelfHosting.cpp 2022-05-20 05:47:13.000000000 +0000 @@ -2386,7 +2386,7 @@ JS_INLINABLE_FN("UnsafeSetReservedSlot", intrinsic_UnsafeSetReservedSlot, 3, 0, IntrinsicUnsafeSetReservedSlot), - // Intrinsics and standard functions used by Intl API implementation. +// Intrinsics and standard functions used by Intl API implementation. #ifdef JS_HAS_INTL_API JS_FN("intl_BestAvailableLocale", intl_BestAvailableLocale, 3, 0), JS_FN("intl_CallCollatorMethodIfWrapped", @@ -2476,6 +2476,7 @@ #endif // JS_HAS_INTL_API // Standard builtins used by self-hosting. + JS_FN("new_List", intrinsic_newList, 0, 0), JS_INLINABLE_FN("std_Array", array_construct, 1, 0, Array), JS_INLINABLE_FN("std_Array_pop", array_pop, 0, 0, ArrayPop), JS_INLINABLE_FN("std_Array_push", array_push, 1, 0, ArrayPush), diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/arch.h thunderbird-91.9.1+build1/media/libopus/celt/arch.h --- thunderbird-91.8.1+build1/media/libopus/celt/arch.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/arch.h 2022-05-20 05:47:19.000000000 +0000 @@ -73,6 +73,9 @@ void celt_fatal(const char *str, const char *file, int line) { fprintf (stderr, "Fatal (internal) error in %s, line %d: %s\n", file, line, str); +#if defined(_MSC_VER) + _set_abort_behavior( 0, _WRITE_ABORT_MSG); +#endif abort(); } #endif @@ -160,7 +163,7 @@ #ifdef OPUS_ARM_PRESUME_AARCH64_NEON_INTR #include "arm/fixed_arm64.h" -#elif OPUS_ARM_INLINE_EDSP +#elif defined (OPUS_ARM_INLINE_EDSP) #include "arm/fixed_armv5e.h" #elif defined (OPUS_ARM_INLINE_ASM) #include "arm/fixed_armv4.h" diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/arm/armcpu.c thunderbird-91.9.1+build1/media/libopus/celt/arm/armcpu.c --- thunderbird-91.8.1+build1/media/libopus/celt/arm/armcpu.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/arm/armcpu.c 2022-05-20 05:47:16.000000000 +0000 @@ -93,6 +93,8 @@ #elif defined(__linux__) /* Linux based */ +#include + opus_uint32 opus_cpu_capabilities(void) { opus_uint32 flags = 0; diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/arm/celt_ne10_fft.c thunderbird-91.9.1+build1/media/libopus/celt/arm/celt_ne10_fft.c --- thunderbird-91.8.1+build1/media/libopus/celt/arm/celt_ne10_fft.c 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/arm/celt_ne10_fft.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ -/* Copyright (c) 2015 Xiph.Org Foundation - Written by Viswanath Puttagunta */ -/** - @file celt_ne10_fft.c - @brief ARM Neon optimizations for fft using NE10 library - */ - -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef SKIP_CONFIG_H -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#endif - -#include -#include "os_support.h" -#include "kiss_fft.h" -#include "stack_alloc.h" - -#if !defined(FIXED_POINT) -# define NE10_FFT_ALLOC_C2C_TYPE_NEON ne10_fft_alloc_c2c_float32_neon -# define NE10_FFT_CFG_TYPE_T ne10_fft_cfg_float32_t -# define NE10_FFT_STATE_TYPE_T ne10_fft_state_float32_t -# define NE10_FFT_DESTROY_C2C_TYPE ne10_fft_destroy_c2c_float32 -# define NE10_FFT_CPX_TYPE_T ne10_fft_cpx_float32_t -# define NE10_FFT_C2C_1D_TYPE_NEON ne10_fft_c2c_1d_float32_neon -#else -# define NE10_FFT_ALLOC_C2C_TYPE_NEON(nfft) ne10_fft_alloc_c2c_int32_neon(nfft) -# define NE10_FFT_CFG_TYPE_T ne10_fft_cfg_int32_t -# define NE10_FFT_STATE_TYPE_T ne10_fft_state_int32_t -# define NE10_FFT_DESTROY_C2C_TYPE ne10_fft_destroy_c2c_int32 -# define NE10_FFT_DESTROY_C2C_TYPE ne10_fft_destroy_c2c_int32 -# define NE10_FFT_CPX_TYPE_T ne10_fft_cpx_int32_t -# define NE10_FFT_C2C_1D_TYPE_NEON ne10_fft_c2c_1d_int32_neon -#endif - -#if defined(CUSTOM_MODES) - -/* nfft lengths in NE10 that support scaled fft */ -# define NE10_FFTSCALED_SUPPORT_MAX 4 -static const int ne10_fft_scaled_support[NE10_FFTSCALED_SUPPORT_MAX] = { - 480, 240, 120, 60 -}; - -int opus_fft_alloc_arm_neon(kiss_fft_state *st) -{ - int i; - size_t memneeded = sizeof(struct arch_fft_state); - - st->arch_fft = (arch_fft_state *)opus_alloc(memneeded); - if (!st->arch_fft) - return -1; - - for (i = 0; i < NE10_FFTSCALED_SUPPORT_MAX; i++) { - if(st->nfft == ne10_fft_scaled_support[i]) - break; - } - if (i == NE10_FFTSCALED_SUPPORT_MAX) { - /* This nfft length (scaled fft) is not supported in NE10 */ - st->arch_fft->is_supported = 0; - st->arch_fft->priv = NULL; - } - else { - st->arch_fft->is_supported = 1; - st->arch_fft->priv = (void *)NE10_FFT_ALLOC_C2C_TYPE_NEON(st->nfft); - if (st->arch_fft->priv == NULL) { - return -1; - } - } - return 0; -} - -void opus_fft_free_arm_neon(kiss_fft_state *st) -{ - NE10_FFT_CFG_TYPE_T cfg; - - if (!st->arch_fft) - return; - - cfg = (NE10_FFT_CFG_TYPE_T)st->arch_fft->priv; - if (cfg) - NE10_FFT_DESTROY_C2C_TYPE(cfg); - opus_free(st->arch_fft); -} -#endif - -void opus_fft_neon(const kiss_fft_state *st, - const kiss_fft_cpx *fin, - kiss_fft_cpx *fout) -{ - NE10_FFT_STATE_TYPE_T state; - NE10_FFT_CFG_TYPE_T cfg = &state; - VARDECL(NE10_FFT_CPX_TYPE_T, buffer); - SAVE_STACK; - ALLOC(buffer, st->nfft, NE10_FFT_CPX_TYPE_T); - - if (!st->arch_fft->is_supported) { - /* This nfft length (scaled fft) not supported in NE10 */ - opus_fft_c(st, fin, fout); - } - else { - memcpy((void *)cfg, st->arch_fft->priv, sizeof(NE10_FFT_STATE_TYPE_T)); - state.buffer = (NE10_FFT_CPX_TYPE_T *)&buffer[0]; -#if !defined(FIXED_POINT) - state.is_forward_scaled = 1; - - NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout, - (NE10_FFT_CPX_TYPE_T *)fin, - cfg, 0); -#else - NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout, - (NE10_FFT_CPX_TYPE_T *)fin, - cfg, 0, 1); -#endif - } - RESTORE_STACK; -} - -void opus_ifft_neon(const kiss_fft_state *st, - const kiss_fft_cpx *fin, - kiss_fft_cpx *fout) -{ - NE10_FFT_STATE_TYPE_T state; - NE10_FFT_CFG_TYPE_T cfg = &state; - VARDECL(NE10_FFT_CPX_TYPE_T, buffer); - SAVE_STACK; - ALLOC(buffer, st->nfft, NE10_FFT_CPX_TYPE_T); - - if (!st->arch_fft->is_supported) { - /* This nfft length (scaled fft) not supported in NE10 */ - opus_ifft_c(st, fin, fout); - } - else { - memcpy((void *)cfg, st->arch_fft->priv, sizeof(NE10_FFT_STATE_TYPE_T)); - state.buffer = (NE10_FFT_CPX_TYPE_T *)&buffer[0]; -#if !defined(FIXED_POINT) - state.is_backward_scaled = 0; - - NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout, - (NE10_FFT_CPX_TYPE_T *)fin, - cfg, 1); -#else - NE10_FFT_C2C_1D_TYPE_NEON((NE10_FFT_CPX_TYPE_T *)fout, - (NE10_FFT_CPX_TYPE_T *)fin, - cfg, 1, 0); -#endif - } - RESTORE_STACK; -} diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/arm/celt_ne10_mdct.c thunderbird-91.9.1+build1/media/libopus/celt/arm/celt_ne10_mdct.c --- thunderbird-91.8.1+build1/media/libopus/celt/arm/celt_ne10_mdct.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/arm/celt_ne10_mdct.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,258 +0,0 @@ -/* Copyright (c) 2015 Xiph.Org Foundation - Written by Viswanath Puttagunta */ -/** - @file celt_ne10_mdct.c - @brief ARM Neon optimizations for mdct using NE10 library - */ - -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef SKIP_CONFIG_H -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#endif - -#include "kiss_fft.h" -#include "_kiss_fft_guts.h" -#include "mdct.h" -#include "stack_alloc.h" - -void clt_mdct_forward_neon(const mdct_lookup *l, - kiss_fft_scalar *in, - kiss_fft_scalar * OPUS_RESTRICT out, - const opus_val16 *window, - int overlap, int shift, int stride, int arch) -{ - int i; - int N, N2, N4; - VARDECL(kiss_fft_scalar, f); - VARDECL(kiss_fft_cpx, f2); - const kiss_fft_state *st = l->kfft[shift]; - const kiss_twiddle_scalar *trig; - - SAVE_STACK; - - N = l->n; - trig = l->trig; - for (i=0;i>= 1; - trig += N; - } - N2 = N>>1; - N4 = N>>2; - - ALLOC(f, N2, kiss_fft_scalar); - ALLOC(f2, N4, kiss_fft_cpx); - - /* Consider the input to be composed of four blocks: [a, b, c, d] */ - /* Window, shuffle, fold */ - { - /* Temp pointers to make it really clear to the compiler what we're doing */ - const kiss_fft_scalar * OPUS_RESTRICT xp1 = in+(overlap>>1); - const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+N2-1+(overlap>>1); - kiss_fft_scalar * OPUS_RESTRICT yp = f; - const opus_val16 * OPUS_RESTRICT wp1 = window+(overlap>>1); - const opus_val16 * OPUS_RESTRICT wp2 = window+(overlap>>1)-1; - for(i=0;i<((overlap+3)>>2);i++) - { - /* Real part arranged as -d-cR, Imag part arranged as -b+aR*/ - *yp++ = MULT16_32_Q15(*wp2, xp1[N2]) + MULT16_32_Q15(*wp1,*xp2); - *yp++ = MULT16_32_Q15(*wp1, *xp1) - MULT16_32_Q15(*wp2, xp2[-N2]); - xp1+=2; - xp2-=2; - wp1+=2; - wp2-=2; - } - wp1 = window; - wp2 = window+overlap-1; - for(;i>2);i++) - { - /* Real part arranged as a-bR, Imag part arranged as -c-dR */ - *yp++ = *xp2; - *yp++ = *xp1; - xp1+=2; - xp2-=2; - } - for(;ii,t[N4+i]) - S_MUL(fp->r,t[i]); - yi = S_MUL(fp->r,t[N4+i]) + S_MUL(fp->i,t[i]); - *yp1 = yr; - *yp2 = yi; - fp++; - yp1 += 2*stride; - yp2 -= 2*stride; - } - } - RESTORE_STACK; -} - -void clt_mdct_backward_neon(const mdct_lookup *l, - kiss_fft_scalar *in, - kiss_fft_scalar * OPUS_RESTRICT out, - const opus_val16 * OPUS_RESTRICT window, - int overlap, int shift, int stride, int arch) -{ - int i; - int N, N2, N4; - VARDECL(kiss_fft_scalar, f); - const kiss_twiddle_scalar *trig; - const kiss_fft_state *st = l->kfft[shift]; - - N = l->n; - trig = l->trig; - for (i=0;i>= 1; - trig += N; - } - N2 = N>>1; - N4 = N>>2; - - ALLOC(f, N2, kiss_fft_scalar); - - /* Pre-rotate */ - { - /* Temp pointers to make it really clear to the compiler what we're doing */ - const kiss_fft_scalar * OPUS_RESTRICT xp1 = in; - const kiss_fft_scalar * OPUS_RESTRICT xp2 = in+stride*(N2-1); - kiss_fft_scalar * OPUS_RESTRICT yp = f; - const kiss_twiddle_scalar * OPUS_RESTRICT t = &trig[0]; - for(i=0;i>1)), arch); - - /* Post-rotate and de-shuffle from both ends of the buffer at once to make - it in-place. */ - { - kiss_fft_scalar * yp0 = out+(overlap>>1); - kiss_fft_scalar * yp1 = out+(overlap>>1)+N2-2; - const kiss_twiddle_scalar *t = &trig[0]; - /* Loop to (N4+1)>>1 to handle odd N4. When N4 is odd, the - middle pair will be computed twice. */ - for(i=0;i<(N4+1)>>1;i++) - { - kiss_fft_scalar re, im, yr, yi; - kiss_twiddle_scalar t0, t1; - re = yp0[0]; - im = yp0[1]; - t0 = t[i]; - t1 = t[N4+i]; - /* We'd scale up by 2 here, but instead it's done when mixing the windows */ - yr = S_MUL(re,t0) + S_MUL(im,t1); - yi = S_MUL(re,t1) - S_MUL(im,t0); - re = yp1[0]; - im = yp1[1]; - yp0[0] = yr; - yp1[1] = yi; - - t0 = t[(N4-i-1)]; - t1 = t[(N2-i-1)]; - /* We'd scale up by 2 here, but instead it's done when mixing the windows */ - yr = S_MUL(re,t0) + S_MUL(im,t1); - yi = S_MUL(re,t1) - S_MUL(im,t0); - yp1[0] = yr; - yp0[1] = yi; - yp0 += 2; - yp1 -= 2; - } - } - - /* Mirror on both sides for TDAC */ - { - kiss_fft_scalar * OPUS_RESTRICT xp1 = out+overlap-1; - kiss_fft_scalar * OPUS_RESTRICT yp1 = out; - const opus_val16 * OPUS_RESTRICT wp1 = window; - const opus_val16 * OPUS_RESTRICT wp2 = window+overlap-1; - - for(i = 0; i < overlap/2; i++) - { - kiss_fft_scalar x1, x2; - x1 = *xp1; - x2 = *yp1; - *yp1++ = MULT16_32_Q15(*wp2, x2) - MULT16_32_Q15(*wp1, x1); - *xp1-- = MULT16_32_Q15(*wp1, x2) + MULT16_32_Q15(*wp2, x1); - wp1++; - wp2--; - } - } - RESTORE_STACK; -} diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/bands.c thunderbird-91.9.1+build1/media/libopus/celt/bands.c --- thunderbird-91.8.1+build1/media/libopus/celt/bands.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/bands.c 2022-05-20 05:47:16.000000000 +0000 @@ -371,14 +371,14 @@ static void compute_channel_weights(celt_ener Ex, celt_ener Ey, opus_val16 w[2]) { celt_ener minE; -#if FIXED_POINT +#ifdef FIXED_POINT int shift; #endif minE = MIN32(Ex, Ey); /* Adjustment to make the weights a bit more conservative. */ Ex = ADD32(Ex, minE/3); Ey = ADD32(Ey, minE/3); -#if FIXED_POINT +#ifdef FIXED_POINT shift = celt_ilog2(EPSILON+MAX32(Ex, Ey))-14; #endif w[0] = VSHR32(Ex, shift); @@ -901,7 +901,7 @@ sctx->itheta = itheta; sctx->qalloc = qalloc; } -static unsigned quant_band_n1(struct band_ctx *ctx, celt_norm *X, celt_norm *Y, int b, +static unsigned quant_band_n1(struct band_ctx *ctx, celt_norm *X, celt_norm *Y, celt_norm *lowband_out) { int c; @@ -926,7 +926,6 @@ sign = ec_dec_bits(ec, 1); } ctx->remaining_bits -= 1<resynth) x[0] = sign ? -NORM_SCALING : NORM_SCALING; @@ -1134,7 +1133,7 @@ /* Special case for one sample */ if (N==1) { - return quant_band_n1(ctx, X, NULL, b, lowband_out); + return quant_band_n1(ctx, X, NULL, lowband_out); } if (tf_change>0) @@ -1256,7 +1255,7 @@ /* Special case for one sample */ if (N==1) { - return quant_band_n1(ctx, X, Y, b, lowband_out); + return quant_band_n1(ctx, X, Y, lowband_out); } orig_fill = fill; diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/celt_decoder.c thunderbird-91.9.1+build1/media/libopus/celt/celt_decoder.c --- thunderbird-91.8.1+build1/media/libopus/celt/celt_decoder.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/celt_decoder.c 2022-05-20 05:47:19.000000000 +0000 @@ -117,13 +117,19 @@ #ifndef CUSTOM_MODES celt_assert(st->mode == opus_custom_mode_create(48000, 960, NULL)); celt_assert(st->overlap == 120); + celt_assert(st->end <= 21); +#else +/* From Section 4.3 in the spec: "The normal CELT layer uses 21 of those bands, + though Opus Custom (see Section 6.2) may use a different number of bands" + + Check if it's within the maximum number of Bark frequency bands instead */ + celt_assert(st->end <= 25); #endif celt_assert(st->channels == 1 || st->channels == 2); celt_assert(st->stream_channels == 1 || st->stream_channels == 2); celt_assert(st->downsample > 0); celt_assert(st->start == 0 || st->start == 17); celt_assert(st->start < st->end); - celt_assert(st->end <= 21); #ifdef OPUS_ARCHMASK celt_assert(st->arch >= 0); celt_assert(st->arch <= OPUS_ARCHMASK); @@ -1059,7 +1065,7 @@ ALLOC(pulses, nbEBands, int); ALLOC(fine_priority, nbEBands, int); - codedBands = compute_allocation(mode, start, end, offsets, cap, + codedBands = clt_compute_allocation(mode, start, end, offsets, cap, alloc_trim, &intensity, &dual_stereo, bits, &balance, pulses, fine_quant, fine_priority, C, LM, dec, 0, 0, 0); diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/celt_encoder.c thunderbird-91.9.1+build1/media/libopus/celt/celt_encoder.c --- thunderbird-91.8.1+build1/media/libopus/celt/celt_encoder.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/celt_encoder.c 2022-05-20 05:47:18.000000000 +0000 @@ -1571,7 +1571,7 @@ (tmp+4*mode->Fs)/(8*mode->Fs)-!!st->signalling)); effectiveBytes = nbCompressedBytes - nbFilledBytes; } - equiv_rate = ((opus_int32)nbCompressedBytes*8*50 >> (3-LM)) - (40*C+20)*((400>>LM) - 50); + equiv_rate = ((opus_int32)nbCompressedBytes*8*50 << (3-LM)) - (40*C+20)*((400>>LM) - 50); if (st->bitrate != OPUS_BITRATE_MAX) equiv_rate = IMIN(equiv_rate, st->bitrate - (40*C+20)*((400>>LM) - 50)); @@ -2191,7 +2191,7 @@ #endif if (st->lfe) signalBandwidth = 1; - codedBands = compute_allocation(mode, start, end, offsets, cap, + codedBands = clt_compute_allocation(mode, start, end, offsets, cap, alloc_trim, &st->intensity, &dual_stereo, bits, &balance, pulses, fine_quant, fine_priority, C, LM, enc, 1, st->lastCodedBands, signalBandwidth); if (st->lastCodedBands) diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/celt_lpc.c thunderbird-91.9.1+build1/media/libopus/celt/celt_lpc.c --- thunderbird-91.8.1+build1/media/libopus/celt/celt_lpc.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/celt_lpc.c 2022-05-20 05:47:18.000000000 +0000 @@ -50,17 +50,21 @@ #endif OPUS_CLEAR(lpc, p); +#ifdef FIXED_POINT if (ac[0] != 0) +#else + if (ac[0] > 1e-10f) +#endif { for (i = 0; i < p; i++) { /* Sum up this iteration's reflection coefficient */ opus_val32 rr = 0; for (j = 0; j < i; j++) rr += MULT32_32_Q31(lpc[j],ac[i - j]); - rr += SHR32(ac[i + 1],3); - r = -frac_div32(SHL32(rr,3), error); + rr += SHR32(ac[i + 1],6); + r = -frac_div32(SHL32(rr,6), error); /* Update LPC coefficients and total error */ - lpc[i] = SHR32(r,3); + lpc[i] = SHR32(r,6); for (j = 0; j < (i+1)>>1; j++) { opus_val32 tmp1, tmp2; @@ -73,17 +77,61 @@ error = error - MULT32_32_Q31(MULT32_32_Q31(r,r),error); /* Bail out once we get 30 dB gain */ #ifdef FIXED_POINT - if (error maxabs) { + maxabs = absval; + idx = i; + } + } + maxabs = PSHR32(maxabs, 13); /* Q25->Q12 */ + + if (maxabs > 32767) { + maxabs = MIN32(maxabs, 163838); + chirp_Q16 = QCONST32(0.999, 16) - DIV32(SHL32(maxabs - 32767, 14), + SHR32(MULT32_32_32(maxabs, idx + 1), 2)); + chirp_minus_one_Q16 = chirp_Q16 - 65536; + + /* Apply bandwidth expansion. */ + for (i = 0; i < p - 1; i++) { + lpc[i] = MULT32_32_Q16(chirp_Q16, lpc[i]); + chirp_Q16 += PSHR32(MULT32_32_32(chirp_Q16, chirp_minus_one_Q16), 16); + } + lpc[p - 1] = MULT32_32_Q16(chirp_Q16, lpc[p - 1]); + } else { + break; + } + } + + if (iter == 10) { + /* If the coeffs still do not fit into the 16 bit range after 10 iterations, + fall back to the A(z)=1 filter. */ + OPUS_CLEAR(lpc, p); + _lpc[0] = 4096; /* Q12 */ + } else { + for (i = 0; i < p; i++) { + _lpc[i] = EXTRACT16(PSHR32(lpc[i], 13)); /* Q25->Q12 */ + } + } + } #endif } diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/ecintrin.h thunderbird-91.9.1+build1/media/libopus/celt/ecintrin.h --- thunderbird-91.8.1+build1/media/libopus/celt/ecintrin.h 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/ecintrin.h 2022-05-20 05:47:17.000000000 +0000 @@ -49,7 +49,11 @@ This macro should only be used for implementing ec_ilog(), if it is defined. All other code should use EC_ILOG() instead.*/ #if defined(_MSC_VER) && (_MSC_VER >= 1400) +#if defined(_MSC_VER) && (_MSC_VER >= 1910) +# include /* Improve compiler throughput. */ +#else # include +#endif /*In _DEBUG mode this is not an intrinsic by default.*/ # pragma intrinsic(_BitScanReverse) diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/fixed_debug.h thunderbird-91.9.1+build1/media/libopus/celt/fixed_debug.h --- thunderbird-91.8.1+build1/media/libopus/celt/fixed_debug.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/fixed_debug.h 2022-05-20 05:47:18.000000000 +0000 @@ -410,6 +410,51 @@ return res; } +/* result fits in 32 bits */ +static OPUS_INLINE int MULT32_32_32(opus_int64 a, opus_int64 b) +{ + opus_int64 res; + if (!VERIFY_INT(a) || !VERIFY_INT(b)) + { + fprintf (stderr, "MULT32_32_32: inputs are not int: %d %d\n", a, b); +#ifdef FIXED_DEBUG_ASSERT + celt_assert(0); +#endif + } + res = a*b; + if (!VERIFY_INT(res)) + { + fprintf (stderr, "MULT32_32_32: output is not int: %d\n", res); +#ifdef FIXED_DEBUG_ASSERT + celt_assert(0); +#endif + } + celt_mips+=5; + return res; +} + +static OPUS_INLINE int MULT32_32_Q16(opus_int64 a, opus_int64 b) +{ + opus_int64 res; + if (!VERIFY_INT(a) || !VERIFY_INT(b)) + { + fprintf (stderr, "MULT32_32_Q16: inputs are not int: %d %d\n", a, b); +#ifdef FIXED_DEBUG_ASSERT + celt_assert(0); +#endif + } + res = ((opus_int64)(a)*(opus_int64)(b)) >> 16; + if (!VERIFY_INT(res)) + { + fprintf (stderr, "MULT32_32_Q16: output is not int: %d*%d=%d\n", a, b, (int)res); +#ifdef FIXED_DEBUG_ASSERT + celt_assert(0); +#endif + } + celt_mips+=5; + return res; +} + #define MULT16_16(a, b) MULT16_16_(a, b, __FILE__, __LINE__) static OPUS_INLINE int MULT16_16_(int a, int b, char *file, int line) { diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/fixed_generic.h thunderbird-91.9.1+build1/media/libopus/celt/fixed_generic.h --- thunderbird-91.8.1+build1/media/libopus/celt/fixed_generic.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/fixed_generic.h 2022-05-20 05:47:16.000000000 +0000 @@ -57,6 +57,13 @@ #define MULT16_32_Q15(a,b) ADD32(SHL(MULT16_16((a),SHR((b),16)),1), SHR(MULT16_16SU((a),((b)&0x0000ffff)),15)) #endif +/** 32x32 multiplication, followed by a 16-bit shift right. Results fits in 32 bits */ +#if OPUS_FAST_INT64 +#define MULT32_32_Q16(a,b) ((opus_val32)SHR((opus_int64)(a)*(opus_int64)(b),16)) +#else +#define MULT32_32_Q16(a,b) (ADD32(ADD32(ADD32((opus_val32)(SHR32(((opus_uint32)((a)&0x0000ffff)*(opus_uint32)((b)&0x0000ffff)),16)), MULT16_16SU(SHR32(a,16),((b)&0x0000ffff))), MULT16_16SU(SHR32(b,16),((a)&0x0000ffff))), SHL32(MULT16_16(SHR32(a,16),SHR32(b,16)),16))) +#endif + /** 32x32 multiplication, followed by a 31-bit shift right. Results fits in 32 bits */ #if OPUS_FAST_INT64 #define MULT32_32_Q31(a,b) ((opus_val32)SHR((opus_int64)(a)*(opus_int64)(b),31)) @@ -102,9 +109,9 @@ #define SATURATE16(x) (EXTRACT16((x)>32767 ? 32767 : (x)<-32768 ? -32768 : (x))) -/** Shift by a and round-to-neareast 32-bit value. Result is a 16-bit value */ +/** Shift by a and round-to-nearest 32-bit value. Result is a 16-bit value */ #define ROUND16(x,a) (EXTRACT16(PSHR32((x),(a)))) -/** Shift by a and round-to-neareast 32-bit value. Result is a saturated 16-bit value */ +/** Shift by a and round-to-nearest 32-bit value. Result is a saturated 16-bit value */ #define SROUND16(x,a) EXTRACT16(SATURATE(PSHR32(x,a), 32767)); /** Divide by two */ @@ -131,6 +138,9 @@ /** 16x16 multiplication where the result fits in 16 bits */ #define MULT16_16_16(a,b) ((((opus_val16)(a))*((opus_val16)(b)))) +/** 32x32 multiplication where the result fits in 32 bits */ +#define MULT32_32_32(a,b) ((((opus_val32)(a))*((opus_val32)(b)))) + /* (opus_val32)(opus_val16) gives TI compiler a hint that it's 16x16->32 multiply */ /** 16x16 multiplication where the result fits in 32 bits */ #define MULT16_16(a,b) (((opus_val32)(opus_val16)(a))*((opus_val32)(opus_val16)(b))) diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/float_cast.h thunderbird-91.9.1+build1/media/libopus/celt/float_cast.h --- thunderbird-91.8.1+build1/media/libopus/celt/float_cast.h 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/float_cast.h 2022-05-20 05:47:18.000000000 +0000 @@ -67,6 +67,38 @@ #include static OPUS_INLINE opus_int32 float2int(float x) {return _mm_cvt_ss2si(_mm_set_ss(x));} +#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && (defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1)) + + #include + static OPUS_INLINE opus_int32 float2int(float value) + { + /* _mm_load_ss will generate same code as _mm_set_ss + ** in _MSC_VER >= 1914 /02 so keep __mm_load__ss + ** for backward compatibility. + */ + return _mm_cvtss_si32(_mm_load_ss(&value)); + } + +#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && defined (_M_IX86) + + #include + + /* Win32 doesn't seem to have these functions. + ** Therefore implement OPUS_INLINE versions of these functions here. + */ + + static OPUS_INLINE opus_int32 + float2int (float flt) + { int intgr; + + _asm + { fld flt + fistp intgr + } ; + + return intgr ; + } + #elif defined(HAVE_LRINTF) /* These defines enable functionality introduced with the 1999 ISO C @@ -96,32 +128,6 @@ #include #define float2int(x) lrint(x) -#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && defined (_M_X64) - #include - - __inline long int float2int(float value) - { - return _mm_cvtss_si32(_mm_load_ss(&value)); - } -#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && defined (_M_IX86) - #include - - /* Win32 doesn't seem to have these functions. - ** Therefore implement OPUS_INLINE versions of these functions here. - */ - - __inline long int - float2int (float flt) - { int intgr; - - _asm - { fld flt - fistp intgr - } ; - - return intgr ; - } - #else #if (defined(__GNUC__) && defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/mathops.h thunderbird-91.9.1+build1/media/libopus/celt/mathops.h --- thunderbird-91.8.1+build1/media/libopus/celt/mathops.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/mathops.h 2022-05-20 05:47:18.000000000 +0000 @@ -137,7 +137,7 @@ } in; in.f = x; integer = (in.i>>23)-127; - in.i -= integer<<23; + in.i -= (opus_uint32)integer<<23; frac = in.f - 1.5f; frac = -0.41445418f + frac*(0.95909232f + frac*(-0.33951290f + frac*0.16541097f)); @@ -160,7 +160,7 @@ /* K0 = 1, K1 = log(2), K2 = 3-4*log(2), K3 = 3*log(2) - 2 */ res.f = 0.99992522f + frac * (0.69583354f + frac * (0.22606716f + 0.078024523f*frac)); - res.i = (res.i + (integer<<23)) & 0x7fffffff; + res.i = (res.i + ((opus_uint32)integer<<23)) & 0x7fffffff; return res.f; } diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/mips/celt_mipsr1.h thunderbird-91.9.1+build1/media/libopus/celt/mips/celt_mipsr1.h --- thunderbird-91.8.1+build1/media/libopus/celt/mips/celt_mipsr1.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/mips/celt_mipsr1.h 2022-05-20 05:47:18.000000000 +0000 @@ -53,6 +53,7 @@ #include "celt_lpc.h" #include "vq.h" +#define OVERRIDE_COMB_FILTER_CONST #define OVERRIDE_comb_filter void comb_filter(opus_val32 *y, opus_val32 *x, int T0, int T1, int N, opus_val16 g0, opus_val16 g1, int tapset0, int tapset1, diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/mips/vq_mipsr1.h thunderbird-91.9.1+build1/media/libopus/celt/mips/vq_mipsr1.h --- thunderbird-91.8.1+build1/media/libopus/celt/mips/vq_mipsr1.h 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/mips/vq_mipsr1.h 2022-05-20 05:47:17.000000000 +0000 @@ -36,8 +36,6 @@ #include "mathops.h" #include "arch.h" -static void renormalise_vector_mips(celt_norm *X, int N, opus_val16 gain, int arch); - #define OVERRIDE_vq_exp_rotation1 static void exp_rotation1(celt_norm *X, int len, int stride, opus_val16 c, opus_val16 s) { @@ -66,11 +64,7 @@ } #define OVERRIDE_renormalise_vector - -#define renormalise_vector(X, N, gain, arch) \ - (renormalise_vector_mips(X, N, gain, arch)) - -void renormalise_vector_mips(celt_norm *X, int N, opus_val16 gain, int arch) +void renormalise_vector(celt_norm *X, int N, opus_val16 gain, int arch) { int i; #ifdef FIXED_POINT diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/os_support.h thunderbird-91.9.1+build1/media/libopus/celt/os_support.h --- thunderbird-91.8.1+build1/media/libopus/celt/os_support.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/os_support.h 2022-05-20 05:47:18.000000000 +0000 @@ -39,7 +39,6 @@ #include "opus_defines.h" #include -#include #include /** Opus wrapper for malloc(). To do your own dynamic allocation, all you need to do is replace this function and opus_free */ diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/rate.c thunderbird-91.9.1+build1/media/libopus/celt/rate.c --- thunderbird-91.8.1+build1/media/libopus/celt/rate.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/rate.c 2022-05-20 05:47:16.000000000 +0000 @@ -529,7 +529,7 @@ return codedBands; } -int compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stereo, +int clt_compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stereo, opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth) { int lo, hi, len, j; diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/rate.h thunderbird-91.9.1+build1/media/libopus/celt/rate.h --- thunderbird-91.8.1+build1/media/libopus/celt/rate.h 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/rate.h 2022-05-20 05:47:18.000000000 +0000 @@ -95,7 +95,7 @@ @param pulses Number of pulses per band (returned) @return Total number of bits allocated */ -int compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stero, +int clt_compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stereo, opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth); #endif diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/stack_alloc.h thunderbird-91.9.1+build1/media/libopus/celt/stack_alloc.h --- thunderbird-91.8.1+build1/media/libopus/celt/stack_alloc.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/stack_alloc.h 2022-05-20 05:47:18.000000000 +0000 @@ -40,7 +40,7 @@ #endif #ifdef USE_ALLOCA -# ifdef WIN32 +# ifdef _WIN32 # include # else # ifdef HAVE_ALLOCA_H @@ -102,7 +102,7 @@ #define VARDECL(type, var) type *var -# ifdef WIN32 +# ifdef _WIN32 # define ALLOC(var, size, type) var = ((type*)_alloca(sizeof(type)*(size))) # else # define ALLOC(var, size, type) var = ((type*)alloca(sizeof(type)*(size))) diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/vq.c thunderbird-91.9.1+build1/media/libopus/celt/vq.c --- thunderbird-91.8.1+build1/media/libopus/celt/vq.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/vq.c 2022-05-20 05:47:18.000000000 +0000 @@ -39,6 +39,10 @@ #include "rate.h" #include "pitch.h" +#if defined(MIPSr1_ASM) +#include "mips/vq_mipsr1.h" +#endif + #ifndef OVERRIDE_vq_exp_rotation1 static void exp_rotation1(celt_norm *X, int len, int stride, opus_val16 c, opus_val16 s) { diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/vq.h thunderbird-91.9.1+build1/media/libopus/celt/vq.h --- thunderbird-91.8.1+build1/media/libopus/celt/vq.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/vq.h 2022-05-20 05:47:16.000000000 +0000 @@ -41,10 +41,6 @@ #include "x86/vq_sse.h" #endif -#if defined(MIPSr1_ASM) -#include "mips/vq_mipsr1.h" -#endif - void exp_rotation(celt_norm *X, int len, int dir, int stride, int K, int spread); opus_val16 op_pvq_search_c(celt_norm *X, int *iy, int K, int N, int arch); diff -Nru thunderbird-91.8.1+build1/media/libopus/celt/x86/celt_lpc_sse.c thunderbird-91.9.1+build1/media/libopus/celt/x86/celt_lpc_sse.c --- thunderbird-91.8.1+build1/media/libopus/celt/x86/celt_lpc_sse.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/celt/x86/celt_lpc_sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include "celt_lpc.h" -#include "stack_alloc.h" -#include "mathops.h" -#include "pitch.h" -#include "x86cpu.h" - -#if defined(FIXED_POINT) - -void celt_fir_sse4_1(const opus_val16 *x, - const opus_val16 *num, - opus_val16 *y, - int N, - int ord, - int arch) -{ - int i,j; - VARDECL(opus_val16, rnum); - - __m128i vecNoA; - opus_int32 noA ; - SAVE_STACK; - - ALLOC(rnum, ord, opus_val16); - for(i=0;i> 1; - vecNoA = _mm_set_epi32(noA, noA, noA, noA); - - for (i=0;i= 3); sum0 = _mm_setzero_si128(); @@ -177,19 +185,56 @@ vecSum = _mm_add_epi32(vecSum, sum2); } - for (;jOpusCustomEncoder*: State to be freed. */ OPUS_CUSTOM_EXPORT void opus_custom_encoder_destroy(OpusCustomEncoder *st); @@ -286,7 +286,7 @@ int *error ) OPUS_ARG_NONNULL(1); -/** Destroys a an decoder state. +/** Destroys a decoder state. * @param[in] st OpusCustomDecoder*: State to be freed. */ OPUS_CUSTOM_EXPORT void opus_custom_decoder_destroy(OpusCustomDecoder *st); diff -Nru thunderbird-91.8.1+build1/media/libopus/include/opus_defines.h thunderbird-91.9.1+build1/media/libopus/include/opus_defines.h --- thunderbird-91.8.1+build1/media/libopus/include/opus_defines.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/include/opus_defines.h 2022-05-20 05:47:18.000000000 +0000 @@ -64,7 +64,7 @@ /**Export control for opus functions */ #ifndef OPUS_EXPORT -# if defined(WIN32) +# if defined(_WIN32) # if defined(OPUS_BUILD) && defined(DLL_EXPORT) # define OPUS_EXPORT __declspec(dllexport) # else @@ -168,6 +168,7 @@ /* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */ #define OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST 4046 #define OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST 4047 +#define OPUS_GET_IN_DTX_REQUEST 4049 /** Defines for the presence of extended APIs. */ #define OPUS_HAVE_OPUS_PROJECTION_H @@ -715,6 +716,16 @@ * * @hideinitializer */ #define OPUS_GET_PHASE_INVERSION_DISABLED(x) OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int_ptr(x) +/** Gets the DTX state of the encoder. + * Returns whether the last encoded frame was either a comfort noise update + * during DTX or not encoded because of DTX. + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
The encoder is not in DTX.
+ *
1
The encoder is in DTX.
+ *
+ * @hideinitializer */ +#define OPUS_GET_IN_DTX(x) OPUS_GET_IN_DTX_REQUEST, __opus_check_int_ptr(x) /**@}*/ diff -Nru thunderbird-91.8.1+build1/media/libopus/moz.build thunderbird-91.9.1+build1/media/libopus/moz.build --- thunderbird-91.8.1+build1/media/libopus/moz.build 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/moz.build 2022-05-20 05:47:17.000000000 +0000 @@ -20,7 +20,7 @@ FINAL_LIBRARY = 'gkmedias' DEFINES['OPUS_BUILD'] = True -DEFINES['OPUS_VERSION'] = '"v1.3-rc-19-g5cbd7d5f-mozilla"' +DEFINES['OPUS_VERSION'] = '2654707e86cc94413998976d179b2ab4a2aa3114' DEFINES['USE_ALLOCA'] = True DEFINES['ENABLE_HARDENING'] = True diff -Nru thunderbird-91.8.1+build1/media/libopus/nonunified2.patch thunderbird-91.9.1+build1/media/libopus/nonunified2.patch --- thunderbird-91.8.1+build1/media/libopus/nonunified2.patch 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/nonunified2.patch 2022-05-20 05:47:16.000000000 +0000 @@ -1,5 +1,3 @@ -diff --git a/media/libopus/nonunified2.patch b/media/libopus/nonunified2.patch -new file mode 100644 diff --git a/media/libopus/sources.mozbuild b/media/libopus/sources.mozbuild --- a/media/libopus/sources.mozbuild +++ b/media/libopus/sources.mozbuild diff -Nru thunderbird-91.8.1+build1/media/libopus/README_MOZILLA thunderbird-91.9.1+build1/media/libopus/README_MOZILLA --- thunderbird-91.8.1+build1/media/libopus/README_MOZILLA 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/README_MOZILLA 2022-05-20 05:47:18.000000000 +0000 @@ -8,4 +8,4 @@ The upstream repository is https://git.xiph.org/opus.git -The git tag/revision used was v1.3-rc-19-g5cbd7d5f. +The git tag/revision used was 2654707e86cc94413998976d179b2ab4a2aa3114. diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/arm/LPC_inv_pred_gain_neon_intr.c thunderbird-91.9.1+build1/media/libopus/silk/arm/LPC_inv_pred_gain_neon_intr.c --- thunderbird-91.8.1+build1/media/libopus/silk/arm/LPC_inv_pred_gain_neon_intr.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/arm/LPC_inv_pred_gain_neon_intr.c 2022-05-20 05:47:18.000000000 +0000 @@ -210,19 +210,23 @@ /* Increase Q domain of the AR coefficients */ t0_s16x8 = vld1q_s16( A_Q12 + 0 ); t1_s16x8 = vld1q_s16( A_Q12 + 8 ); - t2_s16x8 = vld1q_s16( A_Q12 + 16 ); + if ( order > 16 ) { + t2_s16x8 = vld1q_s16( A_Q12 + 16 ); + } t0_s32x4 = vpaddlq_s16( t0_s16x8 ); switch( order - leftover ) { case 24: t0_s32x4 = vpadalq_s16( t0_s32x4, t2_s16x8 ); + vst1q_s32( Atmp_QA + 16, vshll_n_s16( vget_low_s16 ( t2_s16x8 ), QA - 12 ) ); + vst1q_s32( Atmp_QA + 20, vshll_n_s16( vget_high_s16( t2_s16x8 ), QA - 12 ) ); /* FALLTHROUGH */ case 16: t0_s32x4 = vpadalq_s16( t0_s32x4, t1_s16x8 ); - vst1q_s32( Atmp_QA + 16, vshll_n_s16( vget_low_s16 ( t2_s16x8 ), QA - 12 ) ); - vst1q_s32( Atmp_QA + 20, vshll_n_s16( vget_high_s16( t2_s16x8 ), QA - 12 ) ); + vst1q_s32( Atmp_QA + 8, vshll_n_s16( vget_low_s16 ( t1_s16x8 ), QA - 12 ) ); + vst1q_s32( Atmp_QA + 12, vshll_n_s16( vget_high_s16( t1_s16x8 ), QA - 12 ) ); /* FALLTHROUGH */ case 8: @@ -230,8 +234,8 @@ const int32x2_t t_s32x2 = vpadd_s32( vget_low_s32( t0_s32x4 ), vget_high_s32( t0_s32x4 ) ); const int64x1_t t_s64x1 = vpaddl_s32( t_s32x2 ); DC_resp = vget_lane_s32( vreinterpret_s32_s64( t_s64x1 ), 0 ); - vst1q_s32( Atmp_QA + 8, vshll_n_s16( vget_low_s16 ( t1_s16x8 ), QA - 12 ) ); - vst1q_s32( Atmp_QA + 12, vshll_n_s16( vget_high_s16( t1_s16x8 ), QA - 12 ) ); + vst1q_s32( Atmp_QA + 0, vshll_n_s16( vget_low_s16 ( t0_s16x8 ), QA - 12 ) ); + vst1q_s32( Atmp_QA + 4, vshll_n_s16( vget_high_s16( t0_s16x8 ), QA - 12 ) ); } break; @@ -246,16 +250,22 @@ case 6: DC_resp += (opus_int32)A_Q12[ 5 ]; DC_resp += (opus_int32)A_Q12[ 4 ]; + Atmp_QA[ order - leftover + 5 ] = silk_LSHIFT32( (opus_int32)A_Q12[ 5 ], QA - 12 ); + Atmp_QA[ order - leftover + 4 ] = silk_LSHIFT32( (opus_int32)A_Q12[ 4 ], QA - 12 ); /* FALLTHROUGH */ case 4: DC_resp += (opus_int32)A_Q12[ 3 ]; DC_resp += (opus_int32)A_Q12[ 2 ]; + Atmp_QA[ order - leftover + 3 ] = silk_LSHIFT32( (opus_int32)A_Q12[ 3 ], QA - 12 ); + Atmp_QA[ order - leftover + 2 ] = silk_LSHIFT32( (opus_int32)A_Q12[ 2 ], QA - 12 ); /* FALLTHROUGH */ case 2: DC_resp += (opus_int32)A_Q12[ 1 ]; DC_resp += (opus_int32)A_Q12[ 0 ]; + Atmp_QA[ order - leftover + 1 ] = silk_LSHIFT32( (opus_int32)A_Q12[ 1 ], QA - 12 ); + Atmp_QA[ order - leftover + 0 ] = silk_LSHIFT32( (opus_int32)A_Q12[ 0 ], QA - 12 ); /* FALLTHROUGH */ default: @@ -266,8 +276,6 @@ if( DC_resp >= 4096 ) { invGain_Q30 = 0; } else { - vst1q_s32( Atmp_QA + 0, vshll_n_s16( vget_low_s16 ( t0_s16x8 ), QA - 12 ) ); - vst1q_s32( Atmp_QA + 4, vshll_n_s16( vget_high_s16( t0_s16x8 ), QA - 12 ) ); invGain_Q30 = LPC_inverse_pred_gain_QA_neon( Atmp_QA, order ); } } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/bwexpander_32.c thunderbird-91.9.1+build1/media/libopus/silk/bwexpander_32.c --- thunderbird-91.8.1+build1/media/libopus/silk/bwexpander_32.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/bwexpander_32.c 2022-05-20 05:47:18.000000000 +0000 @@ -31,7 +31,8 @@ #include "SigProc_FIX.h" -/* Chirp (bandwidth expand) LP AR filter */ +/* Chirp (bandwidth expand) LP AR filter. + This logic is reused in _celt_lpc(). Any bug fixes should also be applied there. */ void silk_bwexpander_32( opus_int32 *ar, /* I/O AR filter to be expanded (without leading 1) */ const opus_int d, /* I Length of ar */ diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/CNG.c thunderbird-91.9.1+build1/media/libopus/silk/CNG.c --- thunderbird-91.8.1+build1/media/libopus/silk/CNG.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/CNG.c 2022-05-20 05:47:16.000000000 +0000 @@ -118,6 +118,10 @@ /* Smooth gains */ for( i = 0; i < psDec->nb_subfr; i++ ) { psCNG->CNG_smth_Gain_Q16 += silk_SMULWB( psDecCtrl->Gains_Q16[ i ] - psCNG->CNG_smth_Gain_Q16, CNG_GAIN_SMTH_Q16 ); + /* If the smoothed gain is 3 dB greater than this subframe's gain, use this subframe's gain to adapt faster. */ + if( silk_SMULWW( psCNG->CNG_smth_Gain_Q16, CNG_GAIN_SMTH_THRESHOLD_Q16 ) > psDecCtrl->Gains_Q16[ i ] ) { + psCNG->CNG_smth_Gain_Q16 = psDecCtrl->Gains_Q16[ i ]; + } } } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/debug.c thunderbird-91.9.1+build1/media/libopus/silk/debug.c --- thunderbird-91.8.1+build1/media/libopus/silk/debug.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/debug.c 2022-05-20 05:47:19.000000000 +0000 @@ -30,18 +30,20 @@ #endif #include "debug.h" + +#if SILK_DEBUG || SILK_TIC_TOC #include "SigProc_FIX.h" +#endif #if SILK_TIC_TOC -#ifdef _WIN32 - #if (defined(_WIN32) || defined(_WINCE)) #include /* timer */ #else /* Linux or Mac*/ #include #endif +#ifdef _WIN32 unsigned long silk_GetHighResolutionTime(void) /* O time in usec*/ { /* Returns a time counter in microsec */ @@ -65,7 +67,7 @@ int silk_Timer_nTimers = 0; int silk_Timer_depth_ctr = 0; char silk_Timer_tags[silk_NUM_TIMERS_MAX][silk_NUM_TIMERS_MAX_TAG_LEN]; -#ifdef WIN32 +#ifdef _WIN32 LARGE_INTEGER silk_Timer_start[silk_NUM_TIMERS_MAX]; #else unsigned long silk_Timer_start[silk_NUM_TIMERS_MAX]; @@ -76,7 +78,7 @@ opus_int64 silk_Timer_max[silk_NUM_TIMERS_MAX]; opus_int64 silk_Timer_depth[silk_NUM_TIMERS_MAX]; -#ifdef WIN32 +#ifdef _WIN32 void silk_TimerSave(char *file_name) { if( silk_Timer_nTimers > 0 ) diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/debug.h thunderbird-91.9.1+build1/media/libopus/silk/debug.h --- thunderbird-91.8.1+build1/media/libopus/silk/debug.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/debug.h 2022-05-20 05:47:18.000000000 +0000 @@ -28,28 +28,29 @@ #ifndef SILK_DEBUG_H #define SILK_DEBUG_H -#include "typedef.h" -#include /* file writing */ -#include /* strcpy, strcmp */ - -#ifdef __cplusplus -extern "C" -{ -#endif - -unsigned long GetHighResolutionTime(void); /* O time in usec*/ - /* Set to 1 to enable DEBUG_STORE_DATA() macros for dumping * intermediate signals from the codec. */ #define SILK_DEBUG 0 /* Flag for using timers */ -#define SILK_TIC_TOC 0 +#define SILK_TIC_TOC 0 +#if SILK_DEBUG || SILK_TIC_TOC +#include "typedef.h" +#include /* strcpy, strcmp */ +#include /* file writing */ +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif #if SILK_TIC_TOC +unsigned long GetHighResolutionTime(void); /* O time in usec*/ + #if (defined(_WIN32) || defined(_WINCE)) #include /* timer */ #else /* Linux or Mac*/ diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/decode_frame.c thunderbird-91.9.1+build1/media/libopus/silk/decode_frame.c --- thunderbird-91.8.1+build1/media/libopus/silk/decode_frame.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/decode_frame.c 2022-05-20 05:47:18.000000000 +0000 @@ -97,7 +97,6 @@ psDec->first_frame_after_reset = 0; } else { /* Handle packet loss by extrapolation */ - psDec->indices.signalType = psDec->prevSignalType; silk_PLC( psDec, psDecCtrl, pOut, 1, arch ); } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/define.h thunderbird-91.9.1+build1/media/libopus/silk/define.h --- thunderbird-91.8.1+build1/media/libopus/silk/define.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/define.h 2022-05-20 05:47:18.000000000 +0000 @@ -225,6 +225,7 @@ /* Defines for CN generation */ #define CNG_BUF_MASK_MAX 255 /* 2^floor(log2(MAX_FRAME_LENGTH))-1 */ #define CNG_GAIN_SMTH_Q16 4634 /* 0.25^(1/4) */ +#define CNG_GAIN_SMTH_THRESHOLD_Q16 46396 /* -3 dB */ #define CNG_NLSF_SMTH_Q16 16348 /* 0.25 */ #ifdef __cplusplus diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c 2022-05-20 05:47:17.000000000 +0000 @@ -84,7 +84,9 @@ silk_assert( ( order & 1 ) == 0 ); silk_assert( 2 * QS - QC >= 0 ); - ALLOC( input_QST, length + 2 * MAX_SHAPE_LPC_ORDER, opus_int32 ); + /* The additional +4 is to ensure a later vld1q_s32 call does not overflow. */ + /* Strictly, only +3 is needed but +4 simplifies initialization using the 4x32 neon load. */ + ALLOC( input_QST, length + 2 * MAX_SHAPE_LPC_ORDER + 4, opus_int32 ); input_QS = input_QST; /* input_QS has zero paddings in the beginning and end. */ @@ -121,6 +123,8 @@ vst1q_s32( input_QS, vdupq_n_s32( 0 ) ); input_QS += 4; vst1q_s32( input_QS, vdupq_n_s32( 0 ) ); + input_QS += 4; + vst1q_s32( input_QS, vdupq_n_s32( 0 ) ); input_QS = input_QST + MAX_SHAPE_LPC_ORDER - orderT; /* The following loop runs ( length + order ) times, with ( order ) extra epilogues. */ @@ -153,7 +157,8 @@ opus_int o = orderT; int32x4_t state_QS_s32x4[ 3 ][ 2 ]; - ALLOC( state, length + orderT, opus_int32 ); + /* The additional +4 is to ensure a later vld1q_s32 call does not overflow. */ + ALLOC( state, length + order + 4, opus_int32 ); state_QS_s32x4[ 2 ][ 1 ] = vdupq_n_s32( 0 ); /* Calculate 8 taps of all inputs in each loop. */ diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/burg_modified_FIX.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/burg_modified_FIX.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/burg_modified_FIX.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/burg_modified_FIX.c 2022-05-20 05:47:18.000000000 +0000 @@ -68,7 +68,7 @@ celt_assert( subfr_length * nb_subfr <= MAX_FRAME_SIZE ); /* Compute autocorrelations, added over subframes */ - C0_64 = silk_inner_prod16_aligned_64( x, x, subfr_length*nb_subfr, arch ); + C0_64 = silk_inner_prod16( x, x, subfr_length*nb_subfr, arch ); lz = silk_CLZ64(C0_64); rshifts = 32 + 1 + N_BITS_HEAD_ROOM - lz; if (rshifts > MAX_RSHIFTS) rshifts = MAX_RSHIFTS; @@ -87,7 +87,7 @@ x_ptr = x + s * subfr_length; for( n = 1; n < D + 1; n++ ) { C_first_row[ n - 1 ] += (opus_int32)silk_RSHIFT64( - silk_inner_prod16_aligned_64( x_ptr, x_ptr + n, subfr_length - n, arch ), rshifts ); + silk_inner_prod16( x_ptr, x_ptr + n, subfr_length - n, arch ), rshifts ); } } } else { @@ -150,7 +150,7 @@ C_first_row[ k ] = silk_MLA( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */ C_last_row[ k ] = silk_MLA( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */ Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 17 ); /* Q17 */ - /* We sometimes have get overflows in the multiplications (even beyond +/- 2^32), + /* We sometimes get overflows in the multiplications (even beyond +/- 2^32), but they cancel each other and the real result seems to always fit in a 32-bit signed integer. This was determined experimentally, not theoretically (unfortunately). */ tmp1 = silk_MLA_ovflw( tmp1, x_ptr[ n - k - 1 ], Atmp1 ); /* Q17 */ @@ -253,7 +253,7 @@ if( rshifts > 0 ) { for( s = 0; s < nb_subfr; s++ ) { x_ptr = x + s * subfr_length; - C0 -= (opus_int32)silk_RSHIFT64( silk_inner_prod16_aligned_64( x_ptr, x_ptr, D, arch ), rshifts ); + C0 -= (opus_int32)silk_RSHIFT64( silk_inner_prod16( x_ptr, x_ptr, D, arch ), rshifts ); } } else { for( s = 0; s < nb_subfr; s++ ) { diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h thunderbird-91.9.1+build1/media/libopus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h 2022-05-20 05:47:16.000000000 +0000 @@ -41,15 +41,14 @@ #define QS 14 /* Autocorrelations for a warped frequency axis */ -#define OVERRIDE_silk_warped_autocorrelation_FIX -void silk_warped_autocorrelation_FIX( +#define OVERRIDE_silk_warped_autocorrelation_FIX_c +void silk_warped_autocorrelation_FIX_c( opus_int32 *corr, /* O Result [order + 1] */ opus_int *scale, /* O Scaling of the correlation vector */ const opus_int16 *input, /* I Input data to correlate */ const opus_int warping_Q16, /* I Warping coefficient */ const opus_int length, /* I Length of input */ - const opus_int order, /* I Correlation order (even) */ - int arch /* I Run-time architecture */ + const opus_int order /* I Correlation order (even) */ ) { opus_int n, i, lsh; diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/vector_ops_FIX.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/vector_ops_FIX.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/vector_ops_FIX.c 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/vector_ops_FIX.c 2022-05-20 05:47:17.000000000 +0000 @@ -87,7 +87,7 @@ #endif } -opus_int64 silk_inner_prod16_aligned_64_c( +opus_int64 silk_inner_prod16_c( const opus_int16 *inVec1, /* I input vector 1 */ const opus_int16 *inVec2, /* I input vector 2 */ const opus_int len /* I vector lengths */ diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/warped_autocorrelation_FIX.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/warped_autocorrelation_FIX.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/warped_autocorrelation_FIX.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/warped_autocorrelation_FIX.c 2022-05-20 05:47:17.000000000 +0000 @@ -37,6 +37,7 @@ /* Autocorrelations for a warped frequency axis */ +#ifndef OVERRIDE_silk_warped_autocorrelation_FIX_c void silk_warped_autocorrelation_FIX_c( opus_int32 *corr, /* O Result [order + 1] */ opus_int *scale, /* O Scaling of the correlation vector */ @@ -88,3 +89,4 @@ } silk_assert( corr_QC[ 0 ] >= 0 ); /* If breaking, decrease QC*/ } +#endif /* OVERRIDE_silk_warped_autocorrelation_FIX_c */ diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse4_1.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse4_1.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse4_1.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse4_1.c 2022-05-20 05:47:16.000000000 +0000 @@ -1,5 +1,5 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang +/* Copyright (c) 2014-2020, Cisco Systems, INC + Written by XiangMingZhu WeiZhou MinPeng YanWang FrancisQuiers Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -42,7 +42,7 @@ #define MAX_FRAME_SIZE 384 /* subfr_length * nb_subfr = ( 0.005 * 16000 + 16 ) * 4 = 384 */ #define QA 25 -#define N_BITS_HEAD_ROOM 2 +#define N_BITS_HEAD_ROOM 3 #define MIN_RSHIFTS -16 #define MAX_RSHIFTS (32 - QA) @@ -59,7 +59,7 @@ int arch /* I Run-time architecture */ ) { - opus_int k, n, s, lz, rshifts, rshifts_extra, reached_max_gain; + opus_int k, n, s, lz, rshifts, reached_max_gain; opus_int32 C0, num, nrg, rc_Q31, invGain_Q30, Atmp_QA, Atmp1, tmp1, tmp2, x1, x2; const opus_int16 *x_ptr; opus_int32 C_first_row[ SILK_MAX_ORDER_LPC ]; @@ -68,6 +68,7 @@ opus_int32 CAf[ SILK_MAX_ORDER_LPC + 1 ]; opus_int32 CAb[ SILK_MAX_ORDER_LPC + 1 ]; opus_int32 xcorr[ SILK_MAX_ORDER_LPC ]; + opus_int64 C0_64; __m128i FIRST_3210, LAST_3210, ATMP_3210, TMP1_3210, TMP2_3210, T1_3210, T2_3210, PTR_3210, SUBFR_3210, X1_3210, X2_3210; __m128i CONST1 = _mm_set1_epi32(1); @@ -75,23 +76,18 @@ celt_assert( subfr_length * nb_subfr <= MAX_FRAME_SIZE ); /* Compute autocorrelations, added over subframes */ - silk_sum_sqr_shift( &C0, &rshifts, x, nb_subfr * subfr_length ); - if( rshifts > MAX_RSHIFTS ) { - C0 = silk_LSHIFT32( C0, rshifts - MAX_RSHIFTS ); - silk_assert( C0 > 0 ); - rshifts = MAX_RSHIFTS; + C0_64 = silk_inner_prod16( x, x, subfr_length*nb_subfr, arch ); + lz = silk_CLZ64(C0_64); + rshifts = 32 + 1 + N_BITS_HEAD_ROOM - lz; + if (rshifts > MAX_RSHIFTS) rshifts = MAX_RSHIFTS; + if (rshifts < MIN_RSHIFTS) rshifts = MIN_RSHIFTS; + + if (rshifts > 0) { + C0 = (opus_int32)silk_RSHIFT64(C0_64, rshifts ); } else { - lz = silk_CLZ32( C0 ) - 1; - rshifts_extra = N_BITS_HEAD_ROOM - lz; - if( rshifts_extra > 0 ) { - rshifts_extra = silk_min( rshifts_extra, MAX_RSHIFTS - rshifts ); - C0 = silk_RSHIFT32( C0, rshifts_extra ); - } else { - rshifts_extra = silk_max( rshifts_extra, MIN_RSHIFTS - rshifts ); - C0 = silk_LSHIFT32( C0, -rshifts_extra ); - } - rshifts += rshifts_extra; + C0 = silk_LSHIFT32((opus_int32)C0_64, -rshifts ); } + CAb[ 0 ] = CAf[ 0 ] = C0 + silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ) + 1; /* Q(-rshifts) */ silk_memset( C_first_row, 0, SILK_MAX_ORDER_LPC * sizeof( opus_int32 ) ); if( rshifts > 0 ) { @@ -99,7 +95,7 @@ x_ptr = x + s * subfr_length; for( n = 1; n < D + 1; n++ ) { C_first_row[ n - 1 ] += (opus_int32)silk_RSHIFT64( - silk_inner_prod16_aligned_64( x_ptr, x_ptr + n, subfr_length - n, arch ), rshifts ); + silk_inner_prod16( x_ptr, x_ptr + n, subfr_length - n, arch ), rshifts ); } } } else { @@ -203,8 +199,11 @@ C_first_row[ k ] = silk_MLA( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */ C_last_row[ k ] = silk_MLA( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */ Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 17 ); /* Q17 */ - tmp1 = silk_MLA( tmp1, x_ptr[ n - k - 1 ], Atmp1 ); /* Q17 */ - tmp2 = silk_MLA( tmp2, x_ptr[ subfr_length - n + k ], Atmp1 ); /* Q17 */ + /* We sometimes get overflows in the multiplications (even beyond +/- 2^32), + but they cancel each other and the real result seems to always fit in a 32-bit + signed integer. This was determined experimentally, not theoretically (unfortunately). */ + tmp1 = silk_MLA_ovflw( tmp1, x_ptr[ n - k - 1 ], Atmp1 ); /* Q17 */ + tmp2 = silk_MLA_ovflw( tmp2, x_ptr[ subfr_length - n + k ], Atmp1 ); /* Q17 */ } tmp1 = -tmp1; /* Q17 */ @@ -350,7 +349,7 @@ if( rshifts > 0 ) { for( s = 0; s < nb_subfr; s++ ) { x_ptr = x + s * subfr_length; - C0 -= (opus_int32)silk_RSHIFT64( silk_inner_prod16_aligned_64( x_ptr, x_ptr, D, arch ), rshifts ); + C0 -= (opus_int32)silk_RSHIFT64( silk_inner_prod16( x_ptr, x_ptr, D, arch ), rshifts ); } } else { for( s = 0; s < nb_subfr; s++ ) { @@ -374,4 +373,28 @@ *res_nrg = silk_SMLAWW( nrg, silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ), -tmp1 );/* Q( -rshifts ) */ *res_nrg_Q = -rshifts; } + +#ifdef OPUS_CHECK_ASM + { + opus_int32 res_nrg_c = 0; + opus_int res_nrg_Q_c = 0; + opus_int32 A_Q16_c[ MAX_LPC_ORDER ] = {0}; + + silk_burg_modified_c( + &res_nrg_c, + &res_nrg_Q_c, + A_Q16_c, + x, + minInvGain_Q30, + subfr_length, + nb_subfr, + D, + 0 + ); + + silk_assert( *res_nrg == res_nrg_c ); + silk_assert( *res_nrg_Q == res_nrg_Q_c ); + silk_assert( !memcmp( A_Q16, A_Q16_c, D * sizeof( *A_Q16 ) ) ); + } +#endif } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/burg_modified_FIX_sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,377 +0,0 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include - -#include "SigProc_FIX.h" -#include "define.h" -#include "tuning_parameters.h" -#include "pitch.h" -#include "celt/x86/x86cpu.h" - -#define MAX_FRAME_SIZE 384 /* subfr_length * nb_subfr = ( 0.005 * 16000 + 16 ) * 4 = 384 */ - -#define QA 25 -#define N_BITS_HEAD_ROOM 2 -#define MIN_RSHIFTS -16 -#define MAX_RSHIFTS (32 - QA) - -/* Compute reflection coefficients from input signal */ -void silk_burg_modified_sse4_1( - opus_int32 *res_nrg, /* O Residual energy */ - opus_int *res_nrg_Q, /* O Residual energy Q value */ - opus_int32 A_Q16[], /* O Prediction coefficients (length order) */ - const opus_int16 x[], /* I Input signal, length: nb_subfr * ( D + subfr_length ) */ - const opus_int32 minInvGain_Q30, /* I Inverse of max prediction gain */ - const opus_int subfr_length, /* I Input signal subframe length (incl. D preceding samples) */ - const opus_int nb_subfr, /* I Number of subframes stacked in x */ - const opus_int D, /* I Order */ - int arch /* I Run-time architecture */ -) -{ - opus_int k, n, s, lz, rshifts, rshifts_extra, reached_max_gain; - opus_int32 C0, num, nrg, rc_Q31, invGain_Q30, Atmp_QA, Atmp1, tmp1, tmp2, x1, x2; - const opus_int16 *x_ptr; - opus_int32 C_first_row[ SILK_MAX_ORDER_LPC ]; - opus_int32 C_last_row[ SILK_MAX_ORDER_LPC ]; - opus_int32 Af_QA[ SILK_MAX_ORDER_LPC ]; - opus_int32 CAf[ SILK_MAX_ORDER_LPC + 1 ]; - opus_int32 CAb[ SILK_MAX_ORDER_LPC + 1 ]; - opus_int32 xcorr[ SILK_MAX_ORDER_LPC ]; - - __m128i FIRST_3210, LAST_3210, ATMP_3210, TMP1_3210, TMP2_3210, T1_3210, T2_3210, PTR_3210, SUBFR_3210, X1_3210, X2_3210; - __m128i CONST1 = _mm_set1_epi32(1); - - silk_assert( subfr_length * nb_subfr <= MAX_FRAME_SIZE ); - - /* Compute autocorrelations, added over subframes */ - silk_sum_sqr_shift( &C0, &rshifts, x, nb_subfr * subfr_length ); - if( rshifts > MAX_RSHIFTS ) { - C0 = silk_LSHIFT32( C0, rshifts - MAX_RSHIFTS ); - silk_assert( C0 > 0 ); - rshifts = MAX_RSHIFTS; - } else { - lz = silk_CLZ32( C0 ) - 1; - rshifts_extra = N_BITS_HEAD_ROOM - lz; - if( rshifts_extra > 0 ) { - rshifts_extra = silk_min( rshifts_extra, MAX_RSHIFTS - rshifts ); - C0 = silk_RSHIFT32( C0, rshifts_extra ); - } else { - rshifts_extra = silk_max( rshifts_extra, MIN_RSHIFTS - rshifts ); - C0 = silk_LSHIFT32( C0, -rshifts_extra ); - } - rshifts += rshifts_extra; - } - CAb[ 0 ] = CAf[ 0 ] = C0 + silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ) + 1; /* Q(-rshifts) */ - silk_memset( C_first_row, 0, SILK_MAX_ORDER_LPC * sizeof( opus_int32 ) ); - if( rshifts > 0 ) { - for( s = 0; s < nb_subfr; s++ ) { - x_ptr = x + s * subfr_length; - for( n = 1; n < D + 1; n++ ) { - C_first_row[ n - 1 ] += (opus_int32)silk_RSHIFT64( - silk_inner_prod16_aligned_64( x_ptr, x_ptr + n, subfr_length - n, arch ), rshifts ); - } - } - } else { - for( s = 0; s < nb_subfr; s++ ) { - int i; - opus_int32 d; - x_ptr = x + s * subfr_length; - celt_pitch_xcorr(x_ptr, x_ptr + 1, xcorr, subfr_length - D, D, arch ); - for( n = 1; n < D + 1; n++ ) { - for ( i = n + subfr_length - D, d = 0; i < subfr_length; i++ ) - d = MAC16_16( d, x_ptr[ i ], x_ptr[ i - n ] ); - xcorr[ n - 1 ] += d; - } - for( n = 1; n < D + 1; n++ ) { - C_first_row[ n - 1 ] += silk_LSHIFT32( xcorr[ n - 1 ], -rshifts ); - } - } - } - silk_memcpy( C_last_row, C_first_row, SILK_MAX_ORDER_LPC * sizeof( opus_int32 ) ); - - /* Initialize */ - CAb[ 0 ] = CAf[ 0 ] = C0 + silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ) + 1; /* Q(-rshifts) */ - - invGain_Q30 = (opus_int32)1 << 30; - reached_max_gain = 0; - for( n = 0; n < D; n++ ) { - /* Update first row of correlation matrix (without first element) */ - /* Update last row of correlation matrix (without last element, stored in reversed order) */ - /* Update C * Af */ - /* Update C * flipud(Af) (stored in reversed order) */ - if( rshifts > -2 ) { - for( s = 0; s < nb_subfr; s++ ) { - x_ptr = x + s * subfr_length; - x1 = -silk_LSHIFT32( (opus_int32)x_ptr[ n ], 16 - rshifts ); /* Q(16-rshifts) */ - x2 = -silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], 16 - rshifts ); /* Q(16-rshifts) */ - tmp1 = silk_LSHIFT32( (opus_int32)x_ptr[ n ], QA - 16 ); /* Q(QA-16) */ - tmp2 = silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], QA - 16 ); /* Q(QA-16) */ - for( k = 0; k < n; k++ ) { - C_first_row[ k ] = silk_SMLAWB( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */ - C_last_row[ k ] = silk_SMLAWB( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */ - Atmp_QA = Af_QA[ k ]; - tmp1 = silk_SMLAWB( tmp1, Atmp_QA, x_ptr[ n - k - 1 ] ); /* Q(QA-16) */ - tmp2 = silk_SMLAWB( tmp2, Atmp_QA, x_ptr[ subfr_length - n + k ] ); /* Q(QA-16) */ - } - tmp1 = silk_LSHIFT32( -tmp1, 32 - QA - rshifts ); /* Q(16-rshifts) */ - tmp2 = silk_LSHIFT32( -tmp2, 32 - QA - rshifts ); /* Q(16-rshifts) */ - for( k = 0; k <= n; k++ ) { - CAf[ k ] = silk_SMLAWB( CAf[ k ], tmp1, x_ptr[ n - k ] ); /* Q( -rshift ) */ - CAb[ k ] = silk_SMLAWB( CAb[ k ], tmp2, x_ptr[ subfr_length - n + k - 1 ] ); /* Q( -rshift ) */ - } - } - } else { - for( s = 0; s < nb_subfr; s++ ) { - x_ptr = x + s * subfr_length; - x1 = -silk_LSHIFT32( (opus_int32)x_ptr[ n ], -rshifts ); /* Q( -rshifts ) */ - x2 = -silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], -rshifts ); /* Q( -rshifts ) */ - tmp1 = silk_LSHIFT32( (opus_int32)x_ptr[ n ], 17 ); /* Q17 */ - tmp2 = silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n - 1 ], 17 ); /* Q17 */ - - X1_3210 = _mm_set1_epi32( x1 ); - X2_3210 = _mm_set1_epi32( x2 ); - TMP1_3210 = _mm_setzero_si128(); - TMP2_3210 = _mm_setzero_si128(); - for( k = 0; k < n - 3; k += 4 ) { - PTR_3210 = OP_CVTEPI16_EPI32_M64( &x_ptr[ n - k - 1 - 3 ] ); - SUBFR_3210 = OP_CVTEPI16_EPI32_M64( &x_ptr[ subfr_length - n + k ] ); - FIRST_3210 = _mm_loadu_si128( (__m128i *)&C_first_row[ k ] ); - PTR_3210 = _mm_shuffle_epi32( PTR_3210, _MM_SHUFFLE( 0, 1, 2, 3 ) ); - LAST_3210 = _mm_loadu_si128( (__m128i *)&C_last_row[ k ] ); - ATMP_3210 = _mm_loadu_si128( (__m128i *)&Af_QA[ k ] ); - - T1_3210 = _mm_mullo_epi32( PTR_3210, X1_3210 ); - T2_3210 = _mm_mullo_epi32( SUBFR_3210, X2_3210 ); - - ATMP_3210 = _mm_srai_epi32( ATMP_3210, 7 ); - ATMP_3210 = _mm_add_epi32( ATMP_3210, CONST1 ); - ATMP_3210 = _mm_srai_epi32( ATMP_3210, 1 ); - - FIRST_3210 = _mm_add_epi32( FIRST_3210, T1_3210 ); - LAST_3210 = _mm_add_epi32( LAST_3210, T2_3210 ); - - PTR_3210 = _mm_mullo_epi32( ATMP_3210, PTR_3210 ); - SUBFR_3210 = _mm_mullo_epi32( ATMP_3210, SUBFR_3210 ); - - _mm_storeu_si128( (__m128i *)&C_first_row[ k ], FIRST_3210 ); - _mm_storeu_si128( (__m128i *)&C_last_row[ k ], LAST_3210 ); - - TMP1_3210 = _mm_add_epi32( TMP1_3210, PTR_3210 ); - TMP2_3210 = _mm_add_epi32( TMP2_3210, SUBFR_3210 ); - } - - TMP1_3210 = _mm_add_epi32( TMP1_3210, _mm_unpackhi_epi64(TMP1_3210, TMP1_3210 ) ); - TMP2_3210 = _mm_add_epi32( TMP2_3210, _mm_unpackhi_epi64(TMP2_3210, TMP2_3210 ) ); - TMP1_3210 = _mm_add_epi32( TMP1_3210, _mm_shufflelo_epi16(TMP1_3210, 0x0E ) ); - TMP2_3210 = _mm_add_epi32( TMP2_3210, _mm_shufflelo_epi16(TMP2_3210, 0x0E ) ); - - tmp1 += _mm_cvtsi128_si32( TMP1_3210 ); - tmp2 += _mm_cvtsi128_si32( TMP2_3210 ); - - for( ; k < n; k++ ) { - C_first_row[ k ] = silk_MLA( C_first_row[ k ], x1, x_ptr[ n - k - 1 ] ); /* Q( -rshifts ) */ - C_last_row[ k ] = silk_MLA( C_last_row[ k ], x2, x_ptr[ subfr_length - n + k ] ); /* Q( -rshifts ) */ - Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 17 ); /* Q17 */ - tmp1 = silk_MLA( tmp1, x_ptr[ n - k - 1 ], Atmp1 ); /* Q17 */ - tmp2 = silk_MLA( tmp2, x_ptr[ subfr_length - n + k ], Atmp1 ); /* Q17 */ - } - - tmp1 = -tmp1; /* Q17 */ - tmp2 = -tmp2; /* Q17 */ - - { - __m128i xmm_tmp1, xmm_tmp2; - __m128i xmm_x_ptr_n_k_x2x0, xmm_x_ptr_n_k_x3x1; - __m128i xmm_x_ptr_sub_x2x0, xmm_x_ptr_sub_x3x1; - - xmm_tmp1 = _mm_set1_epi32( tmp1 ); - xmm_tmp2 = _mm_set1_epi32( tmp2 ); - - for( k = 0; k <= n - 3; k += 4 ) { - xmm_x_ptr_n_k_x2x0 = OP_CVTEPI16_EPI32_M64( &x_ptr[ n - k - 3 ] ); - xmm_x_ptr_sub_x2x0 = OP_CVTEPI16_EPI32_M64( &x_ptr[ subfr_length - n + k - 1 ] ); - - xmm_x_ptr_n_k_x2x0 = _mm_shuffle_epi32( xmm_x_ptr_n_k_x2x0, _MM_SHUFFLE( 0, 1, 2, 3 ) ); - - xmm_x_ptr_n_k_x2x0 = _mm_slli_epi32( xmm_x_ptr_n_k_x2x0, -rshifts - 1 ); - xmm_x_ptr_sub_x2x0 = _mm_slli_epi32( xmm_x_ptr_sub_x2x0, -rshifts - 1 ); - - /* equal shift right 4 bytes, xmm_x_ptr_n_k_x3x1 = _mm_srli_si128(xmm_x_ptr_n_k_x2x0, 4)*/ - xmm_x_ptr_n_k_x3x1 = _mm_shuffle_epi32( xmm_x_ptr_n_k_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - xmm_x_ptr_sub_x3x1 = _mm_shuffle_epi32( xmm_x_ptr_sub_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - - xmm_x_ptr_n_k_x2x0 = _mm_mul_epi32( xmm_x_ptr_n_k_x2x0, xmm_tmp1 ); - xmm_x_ptr_n_k_x3x1 = _mm_mul_epi32( xmm_x_ptr_n_k_x3x1, xmm_tmp1 ); - xmm_x_ptr_sub_x2x0 = _mm_mul_epi32( xmm_x_ptr_sub_x2x0, xmm_tmp2 ); - xmm_x_ptr_sub_x3x1 = _mm_mul_epi32( xmm_x_ptr_sub_x3x1, xmm_tmp2 ); - - xmm_x_ptr_n_k_x2x0 = _mm_srli_epi64( xmm_x_ptr_n_k_x2x0, 16 ); - xmm_x_ptr_n_k_x3x1 = _mm_slli_epi64( xmm_x_ptr_n_k_x3x1, 16 ); - xmm_x_ptr_sub_x2x0 = _mm_srli_epi64( xmm_x_ptr_sub_x2x0, 16 ); - xmm_x_ptr_sub_x3x1 = _mm_slli_epi64( xmm_x_ptr_sub_x3x1, 16 ); - - xmm_x_ptr_n_k_x2x0 = _mm_blend_epi16( xmm_x_ptr_n_k_x2x0, xmm_x_ptr_n_k_x3x1, 0xCC ); - xmm_x_ptr_sub_x2x0 = _mm_blend_epi16( xmm_x_ptr_sub_x2x0, xmm_x_ptr_sub_x3x1, 0xCC ); - - X1_3210 = _mm_loadu_si128( (__m128i *)&CAf[ k ] ); - PTR_3210 = _mm_loadu_si128( (__m128i *)&CAb[ k ] ); - - X1_3210 = _mm_add_epi32( X1_3210, xmm_x_ptr_n_k_x2x0 ); - PTR_3210 = _mm_add_epi32( PTR_3210, xmm_x_ptr_sub_x2x0 ); - - _mm_storeu_si128( (__m128i *)&CAf[ k ], X1_3210 ); - _mm_storeu_si128( (__m128i *)&CAb[ k ], PTR_3210 ); - } - - for( ; k <= n; k++ ) { - CAf[ k ] = silk_SMLAWW( CAf[ k ], tmp1, - silk_LSHIFT32( (opus_int32)x_ptr[ n - k ], -rshifts - 1 ) ); /* Q( -rshift ) */ - CAb[ k ] = silk_SMLAWW( CAb[ k ], tmp2, - silk_LSHIFT32( (opus_int32)x_ptr[ subfr_length - n + k - 1 ], -rshifts - 1 ) ); /* Q( -rshift ) */ - } - } - } - } - - /* Calculate nominator and denominator for the next order reflection (parcor) coefficient */ - tmp1 = C_first_row[ n ]; /* Q( -rshifts ) */ - tmp2 = C_last_row[ n ]; /* Q( -rshifts ) */ - num = 0; /* Q( -rshifts ) */ - nrg = silk_ADD32( CAb[ 0 ], CAf[ 0 ] ); /* Q( 1-rshifts ) */ - for( k = 0; k < n; k++ ) { - Atmp_QA = Af_QA[ k ]; - lz = silk_CLZ32( silk_abs( Atmp_QA ) ) - 1; - lz = silk_min( 32 - QA, lz ); - Atmp1 = silk_LSHIFT32( Atmp_QA, lz ); /* Q( QA + lz ) */ - - tmp1 = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( C_last_row[ n - k - 1 ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */ - tmp2 = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( C_first_row[ n - k - 1 ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */ - num = silk_ADD_LSHIFT32( num, silk_SMMUL( CAb[ n - k ], Atmp1 ), 32 - QA - lz ); /* Q( -rshifts ) */ - nrg = silk_ADD_LSHIFT32( nrg, silk_SMMUL( silk_ADD32( CAb[ k + 1 ], CAf[ k + 1 ] ), - Atmp1 ), 32 - QA - lz ); /* Q( 1-rshifts ) */ - } - CAf[ n + 1 ] = tmp1; /* Q( -rshifts ) */ - CAb[ n + 1 ] = tmp2; /* Q( -rshifts ) */ - num = silk_ADD32( num, tmp2 ); /* Q( -rshifts ) */ - num = silk_LSHIFT32( -num, 1 ); /* Q( 1-rshifts ) */ - - /* Calculate the next order reflection (parcor) coefficient */ - if( silk_abs( num ) < nrg ) { - rc_Q31 = silk_DIV32_varQ( num, nrg, 31 ); - } else { - rc_Q31 = ( num > 0 ) ? silk_int32_MAX : silk_int32_MIN; - } - - /* Update inverse prediction gain */ - tmp1 = ( (opus_int32)1 << 30 ) - silk_SMMUL( rc_Q31, rc_Q31 ); - tmp1 = silk_LSHIFT( silk_SMMUL( invGain_Q30, tmp1 ), 2 ); - if( tmp1 <= minInvGain_Q30 ) { - /* Max prediction gain exceeded; set reflection coefficient such that max prediction gain is exactly hit */ - tmp2 = ( (opus_int32)1 << 30 ) - silk_DIV32_varQ( minInvGain_Q30, invGain_Q30, 30 ); /* Q30 */ - rc_Q31 = silk_SQRT_APPROX( tmp2 ); /* Q15 */ - if( rc_Q31 > 0 ) { - /* Newton-Raphson iteration */ - rc_Q31 = silk_RSHIFT32( rc_Q31 + silk_DIV32( tmp2, rc_Q31 ), 1 ); /* Q15 */ - rc_Q31 = silk_LSHIFT32( rc_Q31, 16 ); /* Q31 */ - if( num < 0 ) { - /* Ensure adjusted reflection coefficients has the original sign */ - rc_Q31 = -rc_Q31; - } - } - invGain_Q30 = minInvGain_Q30; - reached_max_gain = 1; - } else { - invGain_Q30 = tmp1; - } - - /* Update the AR coefficients */ - for( k = 0; k < (n + 1) >> 1; k++ ) { - tmp1 = Af_QA[ k ]; /* QA */ - tmp2 = Af_QA[ n - k - 1 ]; /* QA */ - Af_QA[ k ] = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( tmp2, rc_Q31 ), 1 ); /* QA */ - Af_QA[ n - k - 1 ] = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( tmp1, rc_Q31 ), 1 ); /* QA */ - } - Af_QA[ n ] = silk_RSHIFT32( rc_Q31, 31 - QA ); /* QA */ - - if( reached_max_gain ) { - /* Reached max prediction gain; set remaining coefficients to zero and exit loop */ - for( k = n + 1; k < D; k++ ) { - Af_QA[ k ] = 0; - } - break; - } - - /* Update C * Af and C * Ab */ - for( k = 0; k <= n + 1; k++ ) { - tmp1 = CAf[ k ]; /* Q( -rshifts ) */ - tmp2 = CAb[ n - k + 1 ]; /* Q( -rshifts ) */ - CAf[ k ] = silk_ADD_LSHIFT32( tmp1, silk_SMMUL( tmp2, rc_Q31 ), 1 ); /* Q( -rshifts ) */ - CAb[ n - k + 1 ] = silk_ADD_LSHIFT32( tmp2, silk_SMMUL( tmp1, rc_Q31 ), 1 ); /* Q( -rshifts ) */ - } - } - - if( reached_max_gain ) { - for( k = 0; k < D; k++ ) { - /* Scale coefficients */ - A_Q16[ k ] = -silk_RSHIFT_ROUND( Af_QA[ k ], QA - 16 ); - } - /* Subtract energy of preceding samples from C0 */ - if( rshifts > 0 ) { - for( s = 0; s < nb_subfr; s++ ) { - x_ptr = x + s * subfr_length; - C0 -= (opus_int32)silk_RSHIFT64( silk_inner_prod16_aligned_64( x_ptr, x_ptr, D, arch ), rshifts ); - } - } else { - for( s = 0; s < nb_subfr; s++ ) { - x_ptr = x + s * subfr_length; - C0 -= silk_LSHIFT32( silk_inner_prod_aligned( x_ptr, x_ptr, D, arch ), -rshifts ); - } - } - /* Approximate residual energy */ - *res_nrg = silk_LSHIFT( silk_SMMUL( invGain_Q30, C0 ), 2 ); - *res_nrg_Q = -rshifts; - } else { - /* Return residual energy */ - nrg = CAf[ 0 ]; /* Q( -rshifts ) */ - tmp1 = (opus_int32)1 << 16; /* Q16 */ - for( k = 0; k < D; k++ ) { - Atmp1 = silk_RSHIFT_ROUND( Af_QA[ k ], QA - 16 ); /* Q16 */ - nrg = silk_SMLAWW( nrg, CAf[ k + 1 ], Atmp1 ); /* Q( -rshifts ) */ - tmp1 = silk_SMLAWW( tmp1, Atmp1, Atmp1 ); /* Q16 */ - A_Q16[ k ] = -Atmp1; - } - *res_nrg = silk_SMLAWW( nrg, silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ), -tmp1 );/* Q( -rshifts ) */ - *res_nrg_Q = -rshifts; - } -} diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse4_1.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse4_1.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse4_1.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse4_1.c 2022-05-20 05:47:18.000000000 +0000 @@ -37,39 +37,36 @@ #include "SigProc_FIX.h" #include "pitch.h" -opus_int64 silk_inner_prod16_aligned_64_sse4_1( +opus_int64 silk_inner_prod16_sse4_1( const opus_int16 *inVec1, /* I input vector 1 */ const opus_int16 *inVec2, /* I input vector 2 */ const opus_int len /* I vector lengths */ ) { - opus_int i, dataSize8; + opus_int i, dataSize4; opus_int64 sum; - __m128i xmm_tempa; - __m128i inVec1_76543210, acc1; - __m128i inVec2_76543210, acc2; + __m128i xmm_prod_20, xmm_prod_31; + __m128i inVec1_3210, acc1; + __m128i inVec2_3210, acc2; sum = 0; - dataSize8 = len & ~7; + dataSize4 = len & ~3; acc1 = _mm_setzero_si128(); acc2 = _mm_setzero_si128(); - for( i = 0; i < dataSize8; i += 8 ) { - inVec1_76543210 = _mm_loadu_si128( (__m128i *)(&inVec1[i + 0] ) ); - inVec2_76543210 = _mm_loadu_si128( (__m128i *)(&inVec2[i + 0] ) ); - - /* only when all 4 operands are -32768 (0x8000), this results in wrap around */ - inVec1_76543210 = _mm_madd_epi16( inVec1_76543210, inVec2_76543210 ); - - xmm_tempa = _mm_cvtepi32_epi64( inVec1_76543210 ); - /* equal shift right 8 bytes */ - inVec1_76543210 = _mm_shuffle_epi32( inVec1_76543210, _MM_SHUFFLE( 0, 0, 3, 2 ) ); - inVec1_76543210 = _mm_cvtepi32_epi64( inVec1_76543210 ); + for( i = 0; i < dataSize4; i += 4 ) { + inVec1_3210 = OP_CVTEPI16_EPI32_M64( &inVec1[i + 0] ); + inVec2_3210 = OP_CVTEPI16_EPI32_M64( &inVec2[i + 0] ); + xmm_prod_20 = _mm_mul_epi32( inVec1_3210, inVec2_3210 ); + + inVec1_3210 = _mm_shuffle_epi32( inVec1_3210, _MM_SHUFFLE( 0, 3, 2, 1 ) ); + inVec2_3210 = _mm_shuffle_epi32( inVec2_3210, _MM_SHUFFLE( 0, 3, 2, 1 ) ); + xmm_prod_31 = _mm_mul_epi32( inVec1_3210, inVec2_3210 ); - acc1 = _mm_add_epi64( acc1, xmm_tempa ); - acc2 = _mm_add_epi64( acc2, inVec1_76543210 ); + acc1 = _mm_add_epi64( acc1, xmm_prod_20 ); + acc2 = _mm_add_epi64( acc2, xmm_prod_31 ); } acc1 = _mm_add_epi64( acc1, acc2 ); @@ -84,5 +81,12 @@ sum = silk_SMLABB( sum, inVec1[ i ], inVec2[ i ] ); } +#ifdef OPUS_CHECK_ASM + { + opus_int64 sum_c = silk_inner_prod16_c( inVec1, inVec2, len ); + silk_assert( sum == sum_c ); + } +#endif + return sum; } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse.c thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse.c --- thunderbird-91.8.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/fixed/x86/vector_ops_FIX_sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include "main.h" - -#include "SigProc_FIX.h" -#include "pitch.h" - -opus_int64 silk_inner_prod16_aligned_64_sse4_1( - const opus_int16 *inVec1, /* I input vector 1 */ - const opus_int16 *inVec2, /* I input vector 2 */ - const opus_int len /* I vector lengths */ -) -{ - opus_int i, dataSize8; - opus_int64 sum; - - __m128i xmm_tempa; - __m128i inVec1_76543210, acc1; - __m128i inVec2_76543210, acc2; - - sum = 0; - dataSize8 = len & ~7; - - acc1 = _mm_setzero_si128(); - acc2 = _mm_setzero_si128(); - - for( i = 0; i < dataSize8; i += 8 ) { - inVec1_76543210 = _mm_loadu_si128( (__m128i *)(&inVec1[i + 0] ) ); - inVec2_76543210 = _mm_loadu_si128( (__m128i *)(&inVec2[i + 0] ) ); - - /* only when all 4 operands are -32768 (0x8000), this results in wrap around */ - inVec1_76543210 = _mm_madd_epi16( inVec1_76543210, inVec2_76543210 ); - - xmm_tempa = _mm_cvtepi32_epi64( inVec1_76543210 ); - /* equal shift right 8 bytes */ - inVec1_76543210 = _mm_shuffle_epi32( inVec1_76543210, _MM_SHUFFLE( 0, 0, 3, 2 ) ); - inVec1_76543210 = _mm_cvtepi32_epi64( inVec1_76543210 ); - - acc1 = _mm_add_epi64( acc1, xmm_tempa ); - acc2 = _mm_add_epi64( acc2, inVec1_76543210 ); - } - - acc1 = _mm_add_epi64( acc1, acc2 ); - - /* equal shift right 8 bytes */ - acc2 = _mm_shuffle_epi32( acc1, _MM_SHUFFLE( 0, 0, 3, 2 ) ); - acc1 = _mm_add_epi64( acc1, acc2 ); - - _mm_storel_epi64( (__m128i *)&sum, acc1 ); - - for( ; i < len; i++ ) { - sum = silk_SMLABB( sum, inVec1[ i ], inVec2[ i ] ); - } - - return sum; -} diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/float/warped_autocorrelation_FLP.c thunderbird-91.9.1+build1/media/libopus/silk/float/warped_autocorrelation_FLP.c --- thunderbird-91.8.1+build1/media/libopus/silk/float/warped_autocorrelation_FLP.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/float/warped_autocorrelation_FLP.c 2022-05-20 05:47:16.000000000 +0000 @@ -42,8 +42,8 @@ { opus_int n, i; double tmp1, tmp2; - double state[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; - double C[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; + double state[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 }; + double C[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 }; /* Order must be even */ celt_assert( ( order & 1 ) == 0 ); diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/LPC_fit.c thunderbird-91.9.1+build1/media/libopus/silk/LPC_fit.c --- thunderbird-91.8.1+build1/media/libopus/silk/LPC_fit.c 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/LPC_fit.c 2022-05-20 05:47:16.000000000 +0000 @@ -31,7 +31,8 @@ #include "SigProc_FIX.h" -/* Convert int32 coefficients to int16 coefs and make sure there's no wrap-around */ +/* Convert int32 coefficients to int16 coefs and make sure there's no wrap-around. + This logic is reused in _celt_lpc(). Any bug fixes should also be applied there. */ void silk_LPC_fit( opus_int16 *a_QOUT, /* O Output signal */ opus_int32 *a_QIN, /* I/O Input signal */ diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/MacroCount.h thunderbird-91.9.1+build1/media/libopus/silk/MacroCount.h --- thunderbird-91.8.1+build1/media/libopus/silk/MacroCount.h 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/MacroCount.h 2022-05-20 05:47:17.000000000 +0000 @@ -27,9 +27,9 @@ #ifndef SIGPROCFIX_API_MACROCOUNT_H #define SIGPROCFIX_API_MACROCOUNT_H -#include #ifdef silk_MACRO_COUNT +#include #define varDefine opus_int64 ops_count = 0; extern opus_int64 ops_count; diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/main.h thunderbird-91.9.1+build1/media/libopus/silk/main.h --- thunderbird-91.8.1+build1/media/libopus/silk/main.h 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/main.h 2022-05-20 05:47:19.000000000 +0000 @@ -247,21 +247,21 @@ /************************************/ void silk_NSQ_c( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int16 x16[], /* I Input */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ); #if !defined(OVERRIDE_silk_NSQ) @@ -273,21 +273,21 @@ /* Noise shaping using delayed decision */ void silk_NSQ_del_dec_c( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int16 x16[], /* I Input */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ); #if !defined(OVERRIDE_silk_NSQ_del_dec) diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/NSQ.c thunderbird-91.9.1+build1/media/libopus/silk/NSQ.c --- thunderbird-91.8.1+build1/media/libopus/silk/NSQ.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/NSQ.c 2022-05-20 05:47:18.000000000 +0000 @@ -75,21 +75,21 @@ void silk_NSQ_c ( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ const opus_int16 x16[], /* I Input */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ) { opus_int k, lag, start_idx, LSF_interpolation_flag; @@ -173,9 +173,9 @@ RESTORE_STACK; } -/***********************************/ -/* silk_noise_shape_quantizer */ -/***********************************/ +/******************************/ +/* silk_noise_shape_quantizer */ +/******************************/ #if !defined(OPUS_X86_MAY_HAVE_SSE4_1) static OPUS_INLINE @@ -262,7 +262,7 @@ tmp1 = silk_SUB32( tmp1, n_LF_Q12 ); /* Q12 */ if( lag > 0 ) { /* Symmetric, packed FIR coefficients */ - n_LTP_Q13 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); + n_LTP_Q13 = silk_SMULWB( silk_ADD_SAT32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); n_LTP_Q13 = silk_SMLAWT( n_LTP_Q13, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); n_LTP_Q13 = silk_LSHIFT( n_LTP_Q13, 1 ); shp_lag_ptr++; diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/NSQ_del_dec.c thunderbird-91.9.1+build1/media/libopus/silk/NSQ_del_dec.c --- thunderbird-91.8.1+build1/media/libopus/silk/NSQ_del_dec.c 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/NSQ_del_dec.c 2022-05-20 05:47:17.000000000 +0000 @@ -115,21 +115,21 @@ ); void silk_NSQ_del_dec_c( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ const opus_int16 x16[], /* I Input */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ) { opus_int i, k, lag, start_idx, LSF_interpolation_flag, Winner_ind, subfr; @@ -394,8 +394,8 @@ /* Long-term shaping */ if( lag > 0 ) { /* Symmetric, packed FIR coefficients */ - n_LTP_Q14 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); - n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); + n_LTP_Q14 = silk_SMULWB( silk_ADD_SAT32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); + n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); n_LTP_Q14 = silk_SUB_LSHIFT32( LTP_pred_Q14, n_LTP_Q14, 2 ); /* Q12 -> Q14 */ shp_lag_ptr++; } else { @@ -451,9 +451,9 @@ /* Input minus prediction plus noise feedback */ /* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */ - tmp1 = silk_ADD32( n_AR_Q14, n_LF_Q14 ); /* Q14 */ + tmp1 = silk_ADD_SAT32( n_AR_Q14, n_LF_Q14 ); /* Q14 */ tmp2 = silk_ADD32( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */ - tmp1 = silk_SUB32( tmp2, tmp1 ); /* Q13 */ + tmp1 = silk_SUB_SAT32( tmp2, tmp1 ); /* Q13 */ tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */ r_Q10 = silk_SUB32( x_Q10[ i ], tmp1 ); /* residual error Q10 */ @@ -535,7 +535,7 @@ /* Update states */ psSS[ 0 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 ); sLF_AR_shp_Q14 = silk_SUB32( psSS[ 0 ].Diff_Q14, n_AR_Q14 ); - psSS[ 0 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 ); + psSS[ 0 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 ); psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14; psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14; psSS[ 0 ].xq_Q14 = xq_Q14; @@ -555,7 +555,7 @@ /* Update states */ psSS[ 1 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 ); sLF_AR_shp_Q14 = silk_SUB32( psSS[ 1 ].Diff_Q14, n_AR_Q14 ); - psSS[ 1 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 ); + psSS[ 1 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 ); psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14; psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14; psSS[ 1 ].xq_Q14 = xq_Q14; diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/PLC.c thunderbird-91.9.1+build1/media/libopus/silk/PLC.c --- thunderbird-91.8.1+build1/media/libopus/silk/PLC.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/PLC.c 2022-05-20 05:47:17.000000000 +0000 @@ -328,10 +328,8 @@ for( j = 0; j < LTP_ORDER; j++ ) { B_Q14[ j ] = silk_RSHIFT( silk_SMULBB( harm_Gain_Q15, B_Q14[ j ] ), 15 ); } - if ( psDec->indices.signalType != TYPE_NO_VOICE_ACTIVITY ) { - /* Gradually reduce excitation gain */ - rand_scale_Q14 = silk_RSHIFT( silk_SMULBB( rand_scale_Q14, rand_Gain_Q15 ), 15 ); - } + /* Gradually reduce excitation gain */ + rand_scale_Q14 = silk_RSHIFT( silk_SMULBB( rand_scale_Q14, rand_Gain_Q15 ), 15 ); /* Slowly increase pitch lag */ psPLC->pitchL_Q8 = silk_SMLAWB( psPLC->pitchL_Q8, psPLC->pitchL_Q8, PITCH_DRIFT_FAC_Q16 ); diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/SigProc_FIX.h thunderbird-91.9.1+build1/media/libopus/silk/SigProc_FIX.h --- thunderbird-91.8.1+build1/media/libopus/silk/SigProc_FIX.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/SigProc_FIX.h 2022-05-20 05:47:18.000000000 +0000 @@ -381,7 +381,7 @@ const opus_int len /* I vector lengths */ ); -opus_int64 silk_inner_prod16_aligned_64_c( +opus_int64 silk_inner_prod16_c( const opus_int16 *inVec1, /* I input vector 1 */ const opus_int16 *inVec2, /* I input vector 2 */ const opus_int len /* I vector lengths */ @@ -613,8 +613,8 @@ #define silk_burg_modified(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch) \ ((void)(arch), silk_burg_modified_c(res_nrg, res_nrg_Q, A_Q16, x, minInvGain_Q30, subfr_length, nb_subfr, D, arch)) -#define silk_inner_prod16_aligned_64(inVec1, inVec2, len, arch) \ - ((void)(arch),silk_inner_prod16_aligned_64_c(inVec1, inVec2, len)) +#define silk_inner_prod16(inVec1, inVec2, len, arch) \ + ((void)(arch),silk_inner_prod16_c(inVec1, inVec2, len)) #endif #include "Inlines.h" diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/typedef.h thunderbird-91.9.1+build1/media/libopus/silk/typedef.h --- thunderbird-91.8.1+build1/media/libopus/silk/typedef.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/typedef.h 2022-05-20 05:47:18.000000000 +0000 @@ -67,6 +67,9 @@ static OPUS_INLINE void _silk_fatal(const char *str, const char *file, int line) { fprintf (stderr, "Fatal (internal) error in %s, line %d: %s\n", file, line, str); +#if defined(_MSC_VER) + _set_abort_behavior( 0, _WRITE_ABORT_MSG); +#endif abort(); } # define silk_assert(COND) {if (!(COND)) {silk_fatal("assertion failed: " #COND);}} diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/VAD.c thunderbird-91.9.1+build1/media/libopus/silk/VAD.c --- thunderbird-91.8.1+build1/media/libopus/silk/VAD.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/VAD.c 2022-05-20 05:47:18.000000000 +0000 @@ -312,6 +312,8 @@ /* Initially faster smoothing */ if( psSilk_VAD->counter < 1000 ) { /* 1000 = 20 sec */ min_coef = silk_DIV32_16( silk_int16_MAX, silk_RSHIFT( psSilk_VAD->counter, 4 ) + 1 ); + /* Increment frame counter */ + psSilk_VAD->counter++; } else { min_coef = 0; } @@ -355,7 +357,4 @@ /* Store as part of state */ psSilk_VAD->NL[ k ] = nl; } - - /* Increment frame counter */ - psSilk_VAD->counter++; } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/VQ_WMat_EC.c thunderbird-91.9.1+build1/media/libopus/silk/VQ_WMat_EC.c --- thunderbird-91.8.1+build1/media/libopus/silk/VQ_WMat_EC.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/VQ_WMat_EC.c 2022-05-20 05:47:16.000000000 +0000 @@ -64,7 +64,7 @@ *rate_dist_Q8 = silk_int32_MAX; *res_nrg_Q15 = silk_int32_MAX; cb_row_Q7 = cb_Q7; - /* In things go really bad, at least *ind is set to something safe. */ + /* If things go really bad, at least *ind is set to something safe. */ *ind = 0; for( k = 0; k < L; k++ ) { opus_int32 penalty; @@ -115,7 +115,7 @@ if( sum1_Q15 >= 0 ) { /* Translate residual energy to bits using high-rate assumption (6 dB ==> 1 bit/sample) */ bits_res_Q8 = silk_SMULBB( subfr_len, silk_lin2log( sum1_Q15 + penalty) - (15 << 7) ); - /* In the following line we reduce the codelength component by half ("-1"); seems to slghtly improve quality */ + /* In the following line we reduce the codelength component by half ("-1"); seems to slightly improve quality */ bits_tot_Q8 = silk_ADD_LSHIFT32( bits_res_Q8, cl_Q5[ k ], 3-1 ); if( bits_tot_Q8 <= *rate_dist_Q8 ) { *rate_dist_Q8 = bits_tot_Q8; diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/main_sse.h thunderbird-91.9.1+build1/media/libopus/silk/x86/main_sse.h --- thunderbird-91.8.1+build1/media/libopus/silk/x86/main_sse.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/main_sse.h 2022-05-20 05:47:16.000000000 +0000 @@ -34,73 +34,72 @@ # if defined(OPUS_X86_MAY_HAVE_SSE4_1) -#if 0 /* FIXME: SSE disabled until silk_VQ_WMat_EC_sse4_1() gets updated. */ # define OVERRIDE_silk_VQ_WMat_EC void silk_VQ_WMat_EC_sse4_1( opus_int8 *ind, /* O index of best codebook vector */ - opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */ + opus_int32 *res_nrg_Q15, /* O best residual energy */ + opus_int32 *rate_dist_Q8, /* O best total bitrate */ opus_int *gain_Q7, /* O sum of absolute LTP coefficients */ - const opus_int16 *in_Q14, /* I input vector to be quantized */ - const opus_int32 *W_Q18, /* I weighting matrix */ + const opus_int32 *XX_Q17, /* I correlation matrix */ + const opus_int32 *xX_Q17, /* I correlation vector */ const opus_int8 *cb_Q7, /* I codebook */ const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */ const opus_uint8 *cl_Q5, /* I code length for each codebook vector */ - const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */ + const opus_int subfr_len, /* I number of samples per subframe */ const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */ - opus_int L /* I number of vectors in codebook */ + const opus_int L /* I number of vectors in codebook */ ); #if defined OPUS_X86_PRESUME_SSE4_1 -#define silk_VQ_WMat_EC(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \ - mu_Q9, max_gain_Q7, L, arch) \ - ((void)(arch),silk_VQ_WMat_EC_sse4_1(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \ - mu_Q9, max_gain_Q7, L)) +#define silk_VQ_WMat_EC(ind, res_nrg_Q15, rate_dist_Q8, gain_Q7, XX_Q17, xX_Q17, cb_Q7, cb_gain_Q7, cl_Q5, \ + subfr_len, max_gain_Q7, L, arch) \ + ((void)(arch),silk_VQ_WMat_EC_sse4_1(ind, res_nrg_Q15, rate_dist_Q8, gain_Q7, XX_Q17, xX_Q17, cb_Q7, cb_gain_Q7, cl_Q5, \ + subfr_len, max_gain_Q7, L)) #else extern void (*const SILK_VQ_WMAT_EC_IMPL[OPUS_ARCHMASK + 1])( opus_int8 *ind, /* O index of best codebook vector */ - opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */ + opus_int32 *res_nrg_Q15, /* O best residual energy */ + opus_int32 *rate_dist_Q8, /* O best total bitrate */ opus_int *gain_Q7, /* O sum of absolute LTP coefficients */ - const opus_int16 *in_Q14, /* I input vector to be quantized */ - const opus_int32 *W_Q18, /* I weighting matrix */ + const opus_int32 *XX_Q17, /* I correlation matrix */ + const opus_int32 *xX_Q17, /* I correlation vector */ const opus_int8 *cb_Q7, /* I codebook */ const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */ const opus_uint8 *cl_Q5, /* I code length for each codebook vector */ - const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */ + const opus_int subfr_len, /* I number of samples per subframe */ const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */ - opus_int L /* I number of vectors in codebook */ + const opus_int L /* I number of vectors in codebook */ ); -# define silk_VQ_WMat_EC(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \ - mu_Q9, max_gain_Q7, L, arch) \ - ((*SILK_VQ_WMAT_EC_IMPL[(arch) & OPUS_ARCHMASK])(ind, rate_dist_Q14, gain_Q7, in_Q14, W_Q18, cb_Q7, cb_gain_Q7, cl_Q5, \ - mu_Q9, max_gain_Q7, L)) +# define silk_VQ_WMat_EC(ind, res_nrg_Q15, rate_dist_Q8, gain_Q7, XX_Q17, xX_Q17, cb_Q7, cb_gain_Q7, cl_Q5, \ + subfr_len, max_gain_Q7, L, arch) \ + ((*SILK_VQ_WMAT_EC_IMPL[(arch) & OPUS_ARCHMASK])(ind, res_nrg_Q15, rate_dist_Q8, gain_Q7, XX_Q17, xX_Q17, cb_Q7, cb_gain_Q7, cl_Q5, \ + subfr_len, max_gain_Q7, L)) #endif -#endif -#if 0 /* FIXME: SSE disabled until the NSQ code gets updated. */ # define OVERRIDE_silk_NSQ void silk_NSQ_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ); #if defined OPUS_X86_PRESUME_SSE4_1 @@ -113,21 +112,21 @@ #else extern void (*const SILK_NSQ_IMPL[OPUS_ARCHMASK + 1])( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ); # define silk_NSQ(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \ @@ -140,57 +139,56 @@ # define OVERRIDE_silk_NSQ_del_dec void silk_NSQ_del_dec_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ); #if defined OPUS_X86_PRESUME_SSE4_1 -#define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \ +#define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, LTPCoef_Q14, AR_Q13, \ HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \ - ((void)(arch),silk_NSQ_del_dec_sse4_1(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \ + ((void)(arch),silk_NSQ_del_dec_sse4_1(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, LTPCoef_Q14, AR_Q13, \ HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14)) #else extern void (*const SILK_NSQ_DEL_DEC_IMPL[OPUS_ARCHMASK + 1])( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ); -# define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \ +# define silk_NSQ_del_dec(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, LTPCoef_Q14, AR_Q13, \ HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14, arch) \ - ((*SILK_NSQ_DEL_DEC_IMPL[(arch) & OPUS_ARCHMASK])(psEncC, NSQ, psIndices, x_Q3, pulses, PredCoef_Q12, LTPCoef_Q14, AR2_Q13, \ + ((*SILK_NSQ_DEL_DEC_IMPL[(arch) & OPUS_ARCHMASK])(psEncC, NSQ, psIndices, x16, pulses, PredCoef_Q12, LTPCoef_Q14, AR_Q13, \ HarmShapeGain_Q14, Tilt_Q14, LF_shp_Q14, Gains_Q16, pitchL, Lambda_Q10, LTP_scale_Q14)) #endif -#endif void silk_noise_shape_quantizer( silk_nsq_state *NSQ, /* I/O NSQ state */ diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse4_1.c thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse4_1.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse4_1.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse4_1.c 2022-05-20 05:47:17.000000000 +0000 @@ -1,5 +1,5 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang +/* Copyright (c) 2014-2020, Cisco Systems, INC + Written by XiangMingZhu WeiZhou MinPeng YanWang FrancisQuiers Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -46,6 +46,7 @@ opus_int32 Shape_Q14[ DECISION_DELAY ]; opus_int32 sAR2_Q14[ MAX_SHAPE_LPC_ORDER ]; opus_int32 LF_AR_Q14; + opus_int32 Diff_Q14; opus_int32 Seed; opus_int32 SeedInit; opus_int32 RD_Q10; @@ -56,6 +57,7 @@ opus_int32 RD_Q10; opus_int32 xq_Q14; opus_int32 LF_AR_Q14; + opus_int32 Diff_Q14; opus_int32 sLTP_shp_Q14; opus_int32 LPC_exc_Q14; } NSQ_sample_struct; @@ -66,7 +68,7 @@ const silk_encoder_state *psEncC, /* I Encoder State */ silk_nsq_state *NSQ, /* I/O NSQ state */ NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */ - const opus_int32 x_Q3[], /* I Input in Q3 */ + const opus_int16 x16[], /* I Input */ opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */ const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */ opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ @@ -112,21 +114,21 @@ ); void silk_NSQ_del_dec_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ) { opus_int i, k, lag, start_idx, LSF_interpolation_flag, Winner_ind, subfr; @@ -142,8 +144,39 @@ VARDECL( opus_int32, delayedGain_Q10 ); VARDECL( NSQ_del_dec_struct, psDelDec ); NSQ_del_dec_struct *psDD; +#ifdef OPUS_CHECK_ASM + silk_nsq_state NSQ_c; + SideInfoIndices psIndices_c; + opus_int8 pulses_c[ MAX_FRAME_LENGTH ]; + const opus_int8 *const pulses_a = pulses; +#endif SAVE_STACK; +#ifdef OPUS_CHECK_ASM + ( void )pulses_a; + silk_memcpy( &NSQ_c, NSQ, sizeof( NSQ_c ) ); + silk_memcpy( &psIndices_c, psIndices, sizeof( psIndices_c ) ); + silk_assert( psEncC->nb_subfr * psEncC->subfr_length <= MAX_FRAME_LENGTH ); + silk_memcpy( pulses_c, pulses, psEncC->nb_subfr * psEncC->subfr_length * sizeof( pulses[0] ) ); + silk_NSQ_del_dec_c( + psEncC, + &NSQ_c, + &psIndices_c, + x16, + pulses_c, + PredCoef_Q12, + LTPCoef_Q14, + AR_Q13, + HarmShapeGain_Q14, + Tilt_Q14, + LF_shp_Q14, + Gains_Q16, + pitchL, + Lambda_Q10, + LTP_scale_Q14 + ); +#endif + /* Set unvoiced lag to the previous one, overwrite later for voiced */ lag = NSQ->lagPrev; @@ -158,6 +191,7 @@ psDD->SeedInit = psDD->Seed; psDD->RD_Q10 = 0; psDD->LF_AR_Q14 = NSQ->sLF_AR_shp_Q14; + psDD->Diff_Q14 = NSQ->sDiff_shp_Q14; psDD->Shape_Q14[ 0 ] = NSQ->sLTP_shp_Q14[ psEncC->ltp_mem_length - 1 ]; silk_memcpy( psDD->sLPC_Q14, NSQ->sLPC_Q14, NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) ); silk_memcpy( psDD->sAR2_Q14, NSQ->sAR2_Q14, sizeof( NSQ->sAR2_Q14 ) ); @@ -185,8 +219,7 @@ LSF_interpolation_flag = 1; } - ALLOC( sLTP_Q15, - psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 ); + ALLOC( sLTP_Q15, psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 ); ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 ); ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 ); ALLOC( delayedGain_Q10, DECISION_DELAY, opus_int32 ); @@ -198,7 +231,7 @@ for( k = 0; k < psEncC->nb_subfr; k++ ) { A_Q12 = &PredCoef_Q12[ ( ( k >> 1 ) | ( 1 - LSF_interpolation_flag ) ) * MAX_LPC_ORDER ]; B_Q14 = <PCoef_Q14[ k * LTP_ORDER ]; - AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ]; + AR_shp_Q13 = &AR_Q13[ k * MAX_SHAPE_LPC_ORDER ]; /* Noise shape parameters */ silk_assert( HarmShapeGain_Q14[ k ] >= 0 ); @@ -257,7 +290,7 @@ } } - silk_nsq_del_dec_scale_states_sse4_1( psEncC, NSQ, psDelDec, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k, + silk_nsq_del_dec_scale_states_sse4_1( psEncC, NSQ, psDelDec, x16, x_sc_Q10, sLTP, sLTP_Q15, k, psEncC->nStatesDelayedDecision, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType, decisionDelay ); silk_noise_shape_quantizer_del_dec_sse4_1( NSQ, psDelDec, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, @@ -265,7 +298,7 @@ Gains_Q16[ k ], Lambda_Q10, offset_Q10, psEncC->subfr_length, subfr++, psEncC->shapingLPCOrder, psEncC->predictLPCOrder, psEncC->warping_Q16, psEncC->nStatesDelayedDecision, &smpl_buf_idx, decisionDelay ); - x_Q3 += psEncC->subfr_length; + x16 += psEncC->subfr_length; pulses += psEncC->subfr_length; pxq += psEncC->subfr_length; } @@ -288,6 +321,7 @@ for( i = 0; i < decisionDelay; i++ ) { last_smple_idx = ( last_smple_idx - 1 ) % DECISION_DELAY; if( last_smple_idx < 0 ) last_smple_idx += DECISION_DELAY; + pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 ); pxq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], Gain_Q10 ), 8 ) ); @@ -298,11 +332,19 @@ /* Update states */ NSQ->sLF_AR_shp_Q14 = psDD->LF_AR_Q14; + NSQ->sDiff_shp_Q14 = psDD->Diff_Q14; NSQ->lagPrev = pitchL[ psEncC->nb_subfr - 1 ]; /* Save quantized speech signal */ silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) ); silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) ); + +#ifdef OPUS_CHECK_ASM + silk_assert( !memcmp( &NSQ_c, NSQ, sizeof( NSQ_c ) ) ); + silk_assert( !memcmp( &psIndices_c, psIndices, sizeof( psIndices_c ) ) ); + silk_assert( !memcmp( pulses_c, pulses_a, psEncC->nb_subfr * psEncC->subfr_length * sizeof( pulses[0] ) ) ); +#endif + RESTORE_STACK; } @@ -345,6 +387,7 @@ opus_int32 q1_Q0, q1_Q10, q2_Q10, exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10; opus_int32 tmp1, tmp2, sLF_AR_shp_Q14; opus_int32 *pred_lag_ptr, *shp_lag_ptr, *psLPC_Q14; + VARDECL( NSQ_sample_pair, psSampleState ); NSQ_del_dec_struct *psDD; NSQ_sample_struct *psSS; @@ -356,6 +399,8 @@ celt_assert( nStatesDelayedDecision > 0 ); ALLOC( psSampleState, nStatesDelayedDecision, NSQ_sample_pair ); + int rdo_offset = (Lambda_Q10 >> 1) - 512; + shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ]; pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ]; Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 ); @@ -407,8 +452,8 @@ /* Long-term shaping */ if( lag > 0 ) { /* Symmetric, packed FIR coefficients */ - n_LTP_Q14 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); - n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); + n_LTP_Q14 = silk_SMULWB( silk_ADD_SAT32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); + n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); n_LTP_Q14 = silk_SUB_LSHIFT32( LTP_pred_Q14, n_LTP_Q14, 2 ); /* Q12 -> Q14 */ shp_lag_ptr++; } else { @@ -478,7 +523,7 @@ psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 ); tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp ); - /* setp 4 */ + /* step 4 */ psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -15 ] ) ); psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B ); tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_CDEF ); @@ -511,9 +556,9 @@ LPC_pred_Q14 = silk_LSHIFT( LPC_pred_Q14, 4 ); /* Q10 -> Q14 */ /* Noise shape feedback */ - silk_assert( ( shapingLPCOrder & 1 ) == 0 ); /* check that order is even */ + celt_assert( ( shapingLPCOrder & 1 ) == 0 ); /* check that order is even */ /* Output of lowpass section */ - tmp2 = silk_SMLAWB( psLPC_Q14[ 0 ], psDD->sAR2_Q14[ 0 ], warping_Q16 ); + tmp2 = silk_SMLAWB( psDD->Diff_Q14, psDD->sAR2_Q14[ 0 ], warping_Q16 ); /* Output of allpass section */ tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], psDD->sAR2_Q14[ 1 ] - tmp2, warping_Q16 ); psDD->sAR2_Q14[ 0 ] = tmp2; @@ -543,9 +588,9 @@ /* Input minus prediction plus noise feedback */ /* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */ - tmp1 = silk_ADD32( n_AR_Q14, n_LF_Q14 ); /* Q14 */ + tmp1 = silk_ADD_SAT32( n_AR_Q14, n_LF_Q14 ); /* Q14 */ tmp2 = silk_ADD32( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */ - tmp1 = silk_SUB32( tmp2, tmp1 ); /* Q13 */ + tmp1 = silk_SUB_SAT32( tmp2, tmp1 ); /* Q13 */ tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */ r_Q10 = silk_SUB32( x_Q10[ i ], tmp1 ); /* residual error Q10 */ @@ -559,6 +604,18 @@ /* Find two quantization level candidates and measure their rate-distortion */ q1_Q10 = silk_SUB32( r_Q10, offset_Q10 ); q1_Q0 = silk_RSHIFT( q1_Q10, 10 ); + if (Lambda_Q10 > 2048) { + /* For aggressive RDO, the bias becomes more than one pulse. */ + if (q1_Q10 > rdo_offset) { + q1_Q0 = silk_RSHIFT( q1_Q10 - rdo_offset, 10 ); + } else if (q1_Q10 < -rdo_offset) { + q1_Q0 = silk_RSHIFT( q1_Q10 + rdo_offset, 10 ); + } else if (q1_Q10 < 0) { + q1_Q0 = -1; + } else { + q1_Q0 = 0; + } + } if( q1_Q0 > 0 ) { q1_Q10 = silk_SUB32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 ); q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 ); @@ -612,8 +669,9 @@ xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 ); /* Update states */ - sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 ); - psSS[ 0 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 ); + psSS[ 0 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 ); + sLF_AR_shp_Q14 = silk_SUB32( psSS[ 0 ].Diff_Q14, n_AR_Q14 ); + psSS[ 0 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 ); psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14; psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14; psSS[ 0 ].xq_Q14 = xq_Q14; @@ -626,14 +684,14 @@ exc_Q14 = -exc_Q14; } - /* Add predictions */ LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 ); xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 ); /* Update states */ - sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 ); - psSS[ 1 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 ); + psSS[ 1 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 ); + sLF_AR_shp_Q14 = silk_SUB32( psSS[ 1 ].Diff_Q14, n_AR_Q14 ); + psSS[ 1 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 ); psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14; psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14; psSS[ 1 ].xq_Q14 = xq_Q14; @@ -705,6 +763,7 @@ psDD = &psDelDec[ k ]; psSS = &psSampleState[ k ][ 0 ]; psDD->LF_AR_Q14 = psSS->LF_AR_Q14; + psDD->Diff_Q14 = psSS->Diff_Q14; psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH + i ] = psSS->xq_Q14; psDD->Xq_Q14[ *smpl_buf_idx ] = psSS->xq_Q14; psDD->Q_Q10[ *smpl_buf_idx ] = psSS->Q_Q10; @@ -728,7 +787,7 @@ const silk_encoder_state *psEncC, /* I Encoder State */ silk_nsq_state *NSQ, /* I/O NSQ state */ NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */ - const opus_int32 x_Q3[], /* I Input in Q3 */ + const opus_int16 x16[], /* I Input */ opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */ const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */ opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ @@ -742,51 +801,41 @@ ) { opus_int i, k, lag; - opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23; + opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q26; NSQ_del_dec_struct *psDD; - __m128i xmm_inv_gain_Q23, xmm_x_Q3_x2x0, xmm_x_Q3_x3x1; + __m128i xmm_inv_gain_Q26, xmm_x16_x2x0, xmm_x16_x3x1; lag = pitchL[ subfr ]; inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 ); - silk_assert( inv_gain_Q31 != 0 ); - /* Calculate gain adjustment factor */ - if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) { - gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 ); - } else { - gain_adj_Q16 = (opus_int32)1 << 16; - } - /* Scale input */ - inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 ); + inv_gain_Q26 = silk_RSHIFT_ROUND( inv_gain_Q31, 5 ); - /* prepare inv_gain_Q23 in packed 4 32-bits */ - xmm_inv_gain_Q23 = _mm_set1_epi32(inv_gain_Q23); + /* prepare inv_gain_Q26 in packed 4 32-bits */ + xmm_inv_gain_Q26 = _mm_set1_epi32(inv_gain_Q26); for( i = 0; i < psEncC->subfr_length - 3; i += 4 ) { - xmm_x_Q3_x2x0 = _mm_loadu_si128( (__m128i *)(&(x_Q3[ i ] ) ) ); + xmm_x16_x2x0 = OP_CVTEPI16_EPI32_M64( &(x16[ i ] ) ); + /* equal shift right 4 bytes*/ - xmm_x_Q3_x3x1 = _mm_shuffle_epi32( xmm_x_Q3_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); + xmm_x16_x3x1 = _mm_shuffle_epi32( xmm_x16_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - xmm_x_Q3_x2x0 = _mm_mul_epi32( xmm_x_Q3_x2x0, xmm_inv_gain_Q23 ); - xmm_x_Q3_x3x1 = _mm_mul_epi32( xmm_x_Q3_x3x1, xmm_inv_gain_Q23 ); + xmm_x16_x2x0 = _mm_mul_epi32( xmm_x16_x2x0, xmm_inv_gain_Q26 ); + xmm_x16_x3x1 = _mm_mul_epi32( xmm_x16_x3x1, xmm_inv_gain_Q26 ); - xmm_x_Q3_x2x0 = _mm_srli_epi64( xmm_x_Q3_x2x0, 16 ); - xmm_x_Q3_x3x1 = _mm_slli_epi64( xmm_x_Q3_x3x1, 16 ); + xmm_x16_x2x0 = _mm_srli_epi64( xmm_x16_x2x0, 16 ); + xmm_x16_x3x1 = _mm_slli_epi64( xmm_x16_x3x1, 16 ); - xmm_x_Q3_x2x0 = _mm_blend_epi16( xmm_x_Q3_x2x0, xmm_x_Q3_x3x1, 0xCC ); + xmm_x16_x2x0 = _mm_blend_epi16( xmm_x16_x2x0, xmm_x16_x3x1, 0xCC ); - _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ])), xmm_x_Q3_x2x0 ); + _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ] ) ), xmm_x16_x2x0 ); } for( ; i < psEncC->subfr_length; i++ ) { - x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 ); + x_sc_Q10[ i ] = silk_SMULWW( x16[ i ], inv_gain_Q26 ); } - /* Save inverse gain */ - NSQ->prev_gain_Q16 = Gains_Q16[ subfr ]; - /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */ if( NSQ->rewhite_flag ) { if( subfr == 0 ) { @@ -800,7 +849,9 @@ } /* Adjust for changing gain */ - if( gain_adj_Q16 != (opus_int32)1 << 16 ) { + if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) { + gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 ); + /* Scale long-term shaping state */ { __m128i xmm_gain_adj_Q16, xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1; @@ -841,6 +892,7 @@ /* Scale scalar states */ psDD->LF_AR_Q14 = silk_SMULWW( gain_adj_Q16, psDD->LF_AR_Q14 ); + psDD->Diff_Q14 = silk_SMULWW( gain_adj_Q16, psDD->Diff_Q14 ); /* Scale short-term prediction and shaping states */ for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) { @@ -855,5 +907,8 @@ } } } + + /* Save inverse gain */ + NSQ->prev_gain_Q16 = Gains_Q16[ subfr ]; } } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse.c thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_del_dec_sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,859 +0,0 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include "main.h" -#include "celt/x86/x86cpu.h" - -#include "stack_alloc.h" - -typedef struct { - opus_int32 sLPC_Q14[ MAX_SUB_FRAME_LENGTH + NSQ_LPC_BUF_LENGTH ]; - opus_int32 RandState[ DECISION_DELAY ]; - opus_int32 Q_Q10[ DECISION_DELAY ]; - opus_int32 Xq_Q14[ DECISION_DELAY ]; - opus_int32 Pred_Q15[ DECISION_DELAY ]; - opus_int32 Shape_Q14[ DECISION_DELAY ]; - opus_int32 sAR2_Q14[ MAX_SHAPE_LPC_ORDER ]; - opus_int32 LF_AR_Q14; - opus_int32 Seed; - opus_int32 SeedInit; - opus_int32 RD_Q10; -} NSQ_del_dec_struct; - -typedef struct { - opus_int32 Q_Q10; - opus_int32 RD_Q10; - opus_int32 xq_Q14; - opus_int32 LF_AR_Q14; - opus_int32 sLTP_shp_Q14; - opus_int32 LPC_exc_Q14; -} NSQ_sample_struct; - -typedef NSQ_sample_struct NSQ_sample_pair[ 2 ]; - -static OPUS_INLINE void silk_nsq_del_dec_scale_states_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */ - const opus_int32 x_Q3[], /* I Input in Q3 */ - opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */ - const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */ - opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ - opus_int subfr, /* I Subframe number */ - opus_int nStatesDelayedDecision, /* I Number of del dec states */ - const opus_int LTP_scale_Q14, /* I LTP state scaling */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ - const opus_int signal_type, /* I Signal type */ - const opus_int decisionDelay /* I Decision delay */ -); - -/******************************************/ -/* Noise shape quantizer for one subframe */ -/******************************************/ -static OPUS_INLINE void silk_noise_shape_quantizer_del_dec_sse4_1( - silk_nsq_state *NSQ, /* I/O NSQ state */ - NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */ - opus_int signalType, /* I Signal type */ - const opus_int32 x_Q10[], /* I */ - opus_int8 pulses[], /* O */ - opus_int16 xq[], /* O */ - opus_int32 sLTP_Q15[], /* I/O LTP filter state */ - opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */ - const opus_int16 a_Q12[], /* I Short term prediction coefs */ - const opus_int16 b_Q14[], /* I Long term prediction coefs */ - const opus_int16 AR_shp_Q13[], /* I Noise shaping coefs */ - opus_int lag, /* I Pitch lag */ - opus_int32 HarmShapeFIRPacked_Q14, /* I */ - opus_int Tilt_Q14, /* I Spectral tilt */ - opus_int32 LF_shp_Q14, /* I */ - opus_int32 Gain_Q16, /* I */ - opus_int Lambda_Q10, /* I */ - opus_int offset_Q10, /* I */ - opus_int length, /* I Input length */ - opus_int subfr, /* I Subframe number */ - opus_int shapingLPCOrder, /* I Shaping LPC filter order */ - opus_int predictLPCOrder, /* I Prediction filter order */ - opus_int warping_Q16, /* I */ - opus_int nStatesDelayedDecision, /* I Number of states in decision tree */ - opus_int *smpl_buf_idx, /* I/O Index to newest samples in buffers */ - opus_int decisionDelay /* I */ -); - -void silk_NSQ_del_dec_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ -) -{ - opus_int i, k, lag, start_idx, LSF_interpolation_flag, Winner_ind, subfr; - opus_int last_smple_idx, smpl_buf_idx, decisionDelay; - const opus_int16 *A_Q12, *B_Q14, *AR_shp_Q13; - opus_int16 *pxq; - VARDECL( opus_int32, sLTP_Q15 ); - VARDECL( opus_int16, sLTP ); - opus_int32 HarmShapeFIRPacked_Q14; - opus_int offset_Q10; - opus_int32 RDmin_Q10, Gain_Q10; - VARDECL( opus_int32, x_sc_Q10 ); - VARDECL( opus_int32, delayedGain_Q10 ); - VARDECL( NSQ_del_dec_struct, psDelDec ); - NSQ_del_dec_struct *psDD; - SAVE_STACK; - - /* Set unvoiced lag to the previous one, overwrite later for voiced */ - lag = NSQ->lagPrev; - - silk_assert( NSQ->prev_gain_Q16 != 0 ); - - /* Initialize delayed decision states */ - ALLOC( psDelDec, psEncC->nStatesDelayedDecision, NSQ_del_dec_struct ); - silk_memset( psDelDec, 0, psEncC->nStatesDelayedDecision * sizeof( NSQ_del_dec_struct ) ); - for( k = 0; k < psEncC->nStatesDelayedDecision; k++ ) { - psDD = &psDelDec[ k ]; - psDD->Seed = ( k + psIndices->Seed ) & 3; - psDD->SeedInit = psDD->Seed; - psDD->RD_Q10 = 0; - psDD->LF_AR_Q14 = NSQ->sLF_AR_shp_Q14; - psDD->Shape_Q14[ 0 ] = NSQ->sLTP_shp_Q14[ psEncC->ltp_mem_length - 1 ]; - silk_memcpy( psDD->sLPC_Q14, NSQ->sLPC_Q14, NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) ); - silk_memcpy( psDD->sAR2_Q14, NSQ->sAR2_Q14, sizeof( NSQ->sAR2_Q14 ) ); - } - - offset_Q10 = silk_Quantization_Offsets_Q10[ psIndices->signalType >> 1 ][ psIndices->quantOffsetType ]; - smpl_buf_idx = 0; /* index of oldest samples */ - - decisionDelay = silk_min_int( DECISION_DELAY, psEncC->subfr_length ); - - /* For voiced frames limit the decision delay to lower than the pitch lag */ - if( psIndices->signalType == TYPE_VOICED ) { - for( k = 0; k < psEncC->nb_subfr; k++ ) { - decisionDelay = silk_min_int( decisionDelay, pitchL[ k ] - LTP_ORDER / 2 - 1 ); - } - } else { - if( lag > 0 ) { - decisionDelay = silk_min_int( decisionDelay, lag - LTP_ORDER / 2 - 1 ); - } - } - - if( psIndices->NLSFInterpCoef_Q2 == 4 ) { - LSF_interpolation_flag = 0; - } else { - LSF_interpolation_flag = 1; - } - - ALLOC( sLTP_Q15, - psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 ); - ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 ); - ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 ); - ALLOC( delayedGain_Q10, DECISION_DELAY, opus_int32 ); - /* Set up pointers to start of sub frame */ - pxq = &NSQ->xq[ psEncC->ltp_mem_length ]; - NSQ->sLTP_shp_buf_idx = psEncC->ltp_mem_length; - NSQ->sLTP_buf_idx = psEncC->ltp_mem_length; - subfr = 0; - for( k = 0; k < psEncC->nb_subfr; k++ ) { - A_Q12 = &PredCoef_Q12[ ( ( k >> 1 ) | ( 1 - LSF_interpolation_flag ) ) * MAX_LPC_ORDER ]; - B_Q14 = <PCoef_Q14[ k * LTP_ORDER ]; - AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ]; - - /* Noise shape parameters */ - silk_assert( HarmShapeGain_Q14[ k ] >= 0 ); - HarmShapeFIRPacked_Q14 = silk_RSHIFT( HarmShapeGain_Q14[ k ], 2 ); - HarmShapeFIRPacked_Q14 |= silk_LSHIFT( (opus_int32)silk_RSHIFT( HarmShapeGain_Q14[ k ], 1 ), 16 ); - - NSQ->rewhite_flag = 0; - if( psIndices->signalType == TYPE_VOICED ) { - /* Voiced */ - lag = pitchL[ k ]; - - /* Re-whitening */ - if( ( k & ( 3 - silk_LSHIFT( LSF_interpolation_flag, 1 ) ) ) == 0 ) { - if( k == 2 ) { - /* RESET DELAYED DECISIONS */ - /* Find winner */ - RDmin_Q10 = psDelDec[ 0 ].RD_Q10; - Winner_ind = 0; - for( i = 1; i < psEncC->nStatesDelayedDecision; i++ ) { - if( psDelDec[ i ].RD_Q10 < RDmin_Q10 ) { - RDmin_Q10 = psDelDec[ i ].RD_Q10; - Winner_ind = i; - } - } - for( i = 0; i < psEncC->nStatesDelayedDecision; i++ ) { - if( i != Winner_ind ) { - psDelDec[ i ].RD_Q10 += ( silk_int32_MAX >> 4 ); - silk_assert( psDelDec[ i ].RD_Q10 >= 0 ); - } - } - - /* Copy final part of signals from winner state to output and long-term filter states */ - psDD = &psDelDec[ Winner_ind ]; - last_smple_idx = smpl_buf_idx + decisionDelay; - for( i = 0; i < decisionDelay; i++ ) { - last_smple_idx = ( last_smple_idx - 1 ) % DECISION_DELAY; - if( last_smple_idx < 0 ) last_smple_idx += DECISION_DELAY; - pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 ); - pxq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( - silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], Gains_Q16[ 1 ] ), 14 ) ); - NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay + i ] = psDD->Shape_Q14[ last_smple_idx ]; - } - - subfr = 0; - } - - /* Rewhiten with new A coefs */ - start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrder - LTP_ORDER / 2; - silk_assert( start_idx > 0 ); - - silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_idx + k * psEncC->subfr_length ], - A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLPCOrder, psEncC->arch ); - - NSQ->sLTP_buf_idx = psEncC->ltp_mem_length; - NSQ->rewhite_flag = 1; - } - } - - silk_nsq_del_dec_scale_states_sse4_1( psEncC, NSQ, psDelDec, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k, - psEncC->nStatesDelayedDecision, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType, decisionDelay ); - - silk_noise_shape_quantizer_del_dec_sse4_1( NSQ, psDelDec, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, - delayedGain_Q10, A_Q12, B_Q14, AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], - Gains_Q16[ k ], Lambda_Q10, offset_Q10, psEncC->subfr_length, subfr++, psEncC->shapingLPCOrder, - psEncC->predictLPCOrder, psEncC->warping_Q16, psEncC->nStatesDelayedDecision, &smpl_buf_idx, decisionDelay ); - - x_Q3 += psEncC->subfr_length; - pulses += psEncC->subfr_length; - pxq += psEncC->subfr_length; - } - - /* Find winner */ - RDmin_Q10 = psDelDec[ 0 ].RD_Q10; - Winner_ind = 0; - for( k = 1; k < psEncC->nStatesDelayedDecision; k++ ) { - if( psDelDec[ k ].RD_Q10 < RDmin_Q10 ) { - RDmin_Q10 = psDelDec[ k ].RD_Q10; - Winner_ind = k; - } - } - - /* Copy final part of signals from winner state to output and long-term filter states */ - psDD = &psDelDec[ Winner_ind ]; - psIndices->Seed = psDD->SeedInit; - last_smple_idx = smpl_buf_idx + decisionDelay; - Gain_Q10 = silk_RSHIFT32( Gains_Q16[ psEncC->nb_subfr - 1 ], 6 ); - for( i = 0; i < decisionDelay; i++ ) { - last_smple_idx = ( last_smple_idx - 1 ) % DECISION_DELAY; - if( last_smple_idx < 0 ) last_smple_idx += DECISION_DELAY; - pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 ); - pxq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( - silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], Gain_Q10 ), 8 ) ); - NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay + i ] = psDD->Shape_Q14[ last_smple_idx ]; - } - silk_memcpy( NSQ->sLPC_Q14, &psDD->sLPC_Q14[ psEncC->subfr_length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) ); - silk_memcpy( NSQ->sAR2_Q14, psDD->sAR2_Q14, sizeof( psDD->sAR2_Q14 ) ); - - /* Update states */ - NSQ->sLF_AR_shp_Q14 = psDD->LF_AR_Q14; - NSQ->lagPrev = pitchL[ psEncC->nb_subfr - 1 ]; - - /* Save quantized speech signal */ - silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) ); - silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) ); - RESTORE_STACK; -} - -/******************************************/ -/* Noise shape quantizer for one subframe */ -/******************************************/ -static OPUS_INLINE void silk_noise_shape_quantizer_del_dec_sse4_1( - silk_nsq_state *NSQ, /* I/O NSQ state */ - NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */ - opus_int signalType, /* I Signal type */ - const opus_int32 x_Q10[], /* I */ - opus_int8 pulses[], /* O */ - opus_int16 xq[], /* O */ - opus_int32 sLTP_Q15[], /* I/O LTP filter state */ - opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */ - const opus_int16 a_Q12[], /* I Short term prediction coefs */ - const opus_int16 b_Q14[], /* I Long term prediction coefs */ - const opus_int16 AR_shp_Q13[], /* I Noise shaping coefs */ - opus_int lag, /* I Pitch lag */ - opus_int32 HarmShapeFIRPacked_Q14, /* I */ - opus_int Tilt_Q14, /* I Spectral tilt */ - opus_int32 LF_shp_Q14, /* I */ - opus_int32 Gain_Q16, /* I */ - opus_int Lambda_Q10, /* I */ - opus_int offset_Q10, /* I */ - opus_int length, /* I Input length */ - opus_int subfr, /* I Subframe number */ - opus_int shapingLPCOrder, /* I Shaping LPC filter order */ - opus_int predictLPCOrder, /* I Prediction filter order */ - opus_int warping_Q16, /* I */ - opus_int nStatesDelayedDecision, /* I Number of states in decision tree */ - opus_int *smpl_buf_idx, /* I/O Index to newest samples in buffers */ - opus_int decisionDelay /* I */ -) -{ - opus_int i, j, k, Winner_ind, RDmin_ind, RDmax_ind, last_smple_idx; - opus_int32 Winner_rand_state; - opus_int32 LTP_pred_Q14, LPC_pred_Q14, n_AR_Q14, n_LTP_Q14; - opus_int32 n_LF_Q14, r_Q10, rr_Q10, rd1_Q10, rd2_Q10, RDmin_Q10, RDmax_Q10; - opus_int32 q1_Q0, q1_Q10, q2_Q10, exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10; - opus_int32 tmp1, tmp2, sLF_AR_shp_Q14; - opus_int32 *pred_lag_ptr, *shp_lag_ptr, *psLPC_Q14; - VARDECL( NSQ_sample_pair, psSampleState ); - NSQ_del_dec_struct *psDD; - NSQ_sample_struct *psSS; - - __m128i a_Q12_0123, a_Q12_4567, a_Q12_89AB, a_Q12_CDEF; - __m128i b_Q12_0123, b_sr_Q12_0123; - SAVE_STACK; - - silk_assert( nStatesDelayedDecision > 0 ); - ALLOC( psSampleState, nStatesDelayedDecision, NSQ_sample_pair ); - - shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ]; - pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ]; - Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 ); - - a_Q12_0123 = OP_CVTEPI16_EPI32_M64( a_Q12 ); - a_Q12_4567 = OP_CVTEPI16_EPI32_M64( a_Q12 + 4 ); - - if( opus_likely( predictLPCOrder == 16 ) ) { - a_Q12_89AB = OP_CVTEPI16_EPI32_M64( a_Q12 + 8 ); - a_Q12_CDEF = OP_CVTEPI16_EPI32_M64( a_Q12 + 12 ); - } - - if( signalType == TYPE_VOICED ){ - b_Q12_0123 = OP_CVTEPI16_EPI32_M64( b_Q14 ); - b_sr_Q12_0123 = _mm_shuffle_epi32( b_Q12_0123, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - } - for( i = 0; i < length; i++ ) { - /* Perform common calculations used in all states */ - - /* Long-term prediction */ - if( signalType == TYPE_VOICED ) { - /* Unrolled loop */ - /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */ - LTP_pred_Q14 = 2; - { - __m128i tmpa, tmpb, pred_lag_ptr_tmp; - pred_lag_ptr_tmp = _mm_loadu_si128( (__m128i *)(&pred_lag_ptr[ -3 ] ) ); - pred_lag_ptr_tmp = _mm_shuffle_epi32( pred_lag_ptr_tmp, 0x1B ); - tmpa = _mm_mul_epi32( pred_lag_ptr_tmp, b_Q12_0123 ); - tmpa = _mm_srli_si128( tmpa, 2 ); - - pred_lag_ptr_tmp = _mm_shuffle_epi32( pred_lag_ptr_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) );/* equal shift right 4 bytes */ - pred_lag_ptr_tmp = _mm_mul_epi32( pred_lag_ptr_tmp, b_sr_Q12_0123 ); - pred_lag_ptr_tmp = _mm_srli_si128( pred_lag_ptr_tmp, 2 ); - pred_lag_ptr_tmp = _mm_add_epi32( pred_lag_ptr_tmp, tmpa ); - - tmpb = _mm_shuffle_epi32( pred_lag_ptr_tmp, _MM_SHUFFLE( 0, 0, 3, 2 ) );/* equal shift right 8 bytes */ - pred_lag_ptr_tmp = _mm_add_epi32( pred_lag_ptr_tmp, tmpb ); - LTP_pred_Q14 += _mm_cvtsi128_si32( pred_lag_ptr_tmp ); - - LTP_pred_Q14 = silk_SMLAWB( LTP_pred_Q14, pred_lag_ptr[ -4 ], b_Q14[ 4 ] ); - LTP_pred_Q14 = silk_LSHIFT( LTP_pred_Q14, 1 ); /* Q13 -> Q14 */ - pred_lag_ptr++; - } - } else { - LTP_pred_Q14 = 0; - } - - /* Long-term shaping */ - if( lag > 0 ) { - /* Symmetric, packed FIR coefficients */ - n_LTP_Q14 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); - n_LTP_Q14 = silk_SMLAWT( n_LTP_Q14, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); - n_LTP_Q14 = silk_SUB_LSHIFT32( LTP_pred_Q14, n_LTP_Q14, 2 ); /* Q12 -> Q14 */ - shp_lag_ptr++; - } else { - n_LTP_Q14 = 0; - } - { - __m128i tmpa, tmpb, psLPC_Q14_tmp, a_Q12_tmp; - - for( k = 0; k < nStatesDelayedDecision; k++ ) { - /* Delayed decision state */ - psDD = &psDelDec[ k ]; - - /* Sample state */ - psSS = psSampleState[ k ]; - - /* Generate dither */ - psDD->Seed = silk_RAND( psDD->Seed ); - - /* Pointer used in short term prediction and shaping */ - psLPC_Q14 = &psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH - 1 + i ]; - /* Short-term prediction */ - silk_assert( predictLPCOrder == 10 || predictLPCOrder == 16 ); - /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */ - LPC_pred_Q14 = silk_RSHIFT( predictLPCOrder, 1 ); - - tmpb = _mm_setzero_si128(); - - /* step 1 */ - psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -3 ] ) ); /* -3, -2 , -1, 0 */ - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B ); /* 0, -1, -2, -3 */ - tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_0123 ); /* 0, -1, -2, -3 * 0123 -> 0*0, 2*-2 */ - - tmpa = _mm_srli_epi64( tmpa, 16 ); - tmpb = _mm_add_epi32( tmpb, tmpa ); - - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - a_Q12_tmp = _mm_shuffle_epi32( a_Q12_0123, _MM_SHUFFLE(0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp ); /* 1*-1, 3*-3 */ - psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 ); - tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp ); - - /* step 2 */ - psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -7 ] ) ); - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B ); - tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_4567 ); - tmpa = _mm_srli_epi64( tmpa, 16 ); - tmpb = _mm_add_epi32( tmpb, tmpa ); - - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - a_Q12_tmp = _mm_shuffle_epi32( a_Q12_4567, _MM_SHUFFLE(0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp ); - psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 ); - tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp ); - - if ( opus_likely( predictLPCOrder == 16 ) ) - { - /* step 3 */ - psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -11 ] ) ); - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B ); - tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_89AB ); - tmpa = _mm_srli_epi64( tmpa, 16 ); - tmpb = _mm_add_epi32( tmpb, tmpa ); - - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - a_Q12_tmp = _mm_shuffle_epi32( a_Q12_89AB, _MM_SHUFFLE(0, 3, 2, 1 ) );/* equal shift right 4 bytes */ - psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp ); - psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 ); - tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp ); - - /* setp 4 */ - psLPC_Q14_tmp = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -15 ] ) ); - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, 0x1B ); - tmpa = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_CDEF ); - tmpa = _mm_srli_epi64( tmpa, 16 ); - tmpb = _mm_add_epi32( tmpb, tmpa ); - - psLPC_Q14_tmp = _mm_shuffle_epi32( psLPC_Q14_tmp, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - a_Q12_tmp = _mm_shuffle_epi32( a_Q12_CDEF, _MM_SHUFFLE(0, 3, 2, 1 ) ); /* equal shift right 4 bytes */ - psLPC_Q14_tmp = _mm_mul_epi32( psLPC_Q14_tmp, a_Q12_tmp ); - psLPC_Q14_tmp = _mm_srli_epi64( psLPC_Q14_tmp, 16 ); - tmpb = _mm_add_epi32( tmpb, psLPC_Q14_tmp ); - - /* add at last */ - /* equal shift right 8 bytes*/ - tmpa = _mm_shuffle_epi32( tmpb, _MM_SHUFFLE( 0, 0, 3, 2 ) ); - tmpb = _mm_add_epi32( tmpb, tmpa ); - LPC_pred_Q14 += _mm_cvtsi128_si32( tmpb ); - } - else - { - /* add at last */ - tmpa = _mm_shuffle_epi32( tmpb, _MM_SHUFFLE( 0, 0, 3, 2 ) ); /* equal shift right 8 bytes*/ - tmpb = _mm_add_epi32( tmpb, tmpa ); - LPC_pred_Q14 += _mm_cvtsi128_si32( tmpb ); - - LPC_pred_Q14 = silk_SMLAWB( LPC_pred_Q14, psLPC_Q14[ -8 ], a_Q12[ 8 ] ); - LPC_pred_Q14 = silk_SMLAWB( LPC_pred_Q14, psLPC_Q14[ -9 ], a_Q12[ 9 ] ); - } - - LPC_pred_Q14 = silk_LSHIFT( LPC_pred_Q14, 4 ); /* Q10 -> Q14 */ - - /* Noise shape feedback */ - silk_assert( ( shapingLPCOrder & 1 ) == 0 ); /* check that order is even */ - /* Output of lowpass section */ - tmp2 = silk_SMLAWB( psLPC_Q14[ 0 ], psDD->sAR2_Q14[ 0 ], warping_Q16 ); - /* Output of allpass section */ - tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], psDD->sAR2_Q14[ 1 ] - tmp2, warping_Q16 ); - psDD->sAR2_Q14[ 0 ] = tmp2; - n_AR_Q14 = silk_RSHIFT( shapingLPCOrder, 1 ); - n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ 0 ] ); - /* Loop over allpass sections */ - for( j = 2; j < shapingLPCOrder; j += 2 ) { - /* Output of allpass section */ - tmp2 = silk_SMLAWB( psDD->sAR2_Q14[ j - 1 ], psDD->sAR2_Q14[ j + 0 ] - tmp1, warping_Q16 ); - psDD->sAR2_Q14[ j - 1 ] = tmp1; - n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ j - 1 ] ); - /* Output of allpass section */ - tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ j + 0 ], psDD->sAR2_Q14[ j + 1 ] - tmp2, warping_Q16 ); - psDD->sAR2_Q14[ j + 0 ] = tmp2; - n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ j ] ); - } - psDD->sAR2_Q14[ shapingLPCOrder - 1 ] = tmp1; - n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ shapingLPCOrder - 1 ] ); - - n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 1 ); /* Q11 -> Q12 */ - n_AR_Q14 = silk_SMLAWB( n_AR_Q14, psDD->LF_AR_Q14, Tilt_Q14 ); /* Q12 */ - n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 2 ); /* Q12 -> Q14 */ - - n_LF_Q14 = silk_SMULWB( psDD->Shape_Q14[ *smpl_buf_idx ], LF_shp_Q14 ); /* Q12 */ - n_LF_Q14 = silk_SMLAWT( n_LF_Q14, psDD->LF_AR_Q14, LF_shp_Q14 ); /* Q12 */ - n_LF_Q14 = silk_LSHIFT( n_LF_Q14, 2 ); /* Q12 -> Q14 */ - - /* Input minus prediction plus noise feedback */ - /* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */ - tmp1 = silk_ADD32( n_AR_Q14, n_LF_Q14 ); /* Q14 */ - tmp2 = silk_ADD32( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */ - tmp1 = silk_SUB32( tmp2, tmp1 ); /* Q13 */ - tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */ - - r_Q10 = silk_SUB32( x_Q10[ i ], tmp1 ); /* residual error Q10 */ - - /* Flip sign depending on dither */ - if ( psDD->Seed < 0 ) { - r_Q10 = -r_Q10; - } - r_Q10 = silk_LIMIT_32( r_Q10, -(31 << 10), 30 << 10 ); - - /* Find two quantization level candidates and measure their rate-distortion */ - q1_Q10 = silk_SUB32( r_Q10, offset_Q10 ); - q1_Q0 = silk_RSHIFT( q1_Q10, 10 ); - if( q1_Q0 > 0 ) { - q1_Q10 = silk_SUB32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 ); - q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 ); - q2_Q10 = silk_ADD32( q1_Q10, 1024 ); - rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 ); - rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 ); - } else if( q1_Q0 == 0 ) { - q1_Q10 = offset_Q10; - q2_Q10 = silk_ADD32( q1_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 ); - rd1_Q10 = silk_SMULBB( q1_Q10, Lambda_Q10 ); - rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 ); - } else if( q1_Q0 == -1 ) { - q2_Q10 = offset_Q10; - q1_Q10 = silk_SUB32( q2_Q10, 1024 - QUANT_LEVEL_ADJUST_Q10 ); - rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 ); - rd2_Q10 = silk_SMULBB( q2_Q10, Lambda_Q10 ); - } else { /* q1_Q0 < -1 */ - q1_Q10 = silk_ADD32( silk_LSHIFT( q1_Q0, 10 ), QUANT_LEVEL_ADJUST_Q10 ); - q1_Q10 = silk_ADD32( q1_Q10, offset_Q10 ); - q2_Q10 = silk_ADD32( q1_Q10, 1024 ); - rd1_Q10 = silk_SMULBB( -q1_Q10, Lambda_Q10 ); - rd2_Q10 = silk_SMULBB( -q2_Q10, Lambda_Q10 ); - } - rr_Q10 = silk_SUB32( r_Q10, q1_Q10 ); - rd1_Q10 = silk_RSHIFT( silk_SMLABB( rd1_Q10, rr_Q10, rr_Q10 ), 10 ); - rr_Q10 = silk_SUB32( r_Q10, q2_Q10 ); - rd2_Q10 = silk_RSHIFT( silk_SMLABB( rd2_Q10, rr_Q10, rr_Q10 ), 10 ); - - if( rd1_Q10 < rd2_Q10 ) { - psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 ); - psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 ); - psSS[ 0 ].Q_Q10 = q1_Q10; - psSS[ 1 ].Q_Q10 = q2_Q10; - } else { - psSS[ 0 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd2_Q10 ); - psSS[ 1 ].RD_Q10 = silk_ADD32( psDD->RD_Q10, rd1_Q10 ); - psSS[ 0 ].Q_Q10 = q2_Q10; - psSS[ 1 ].Q_Q10 = q1_Q10; - } - - /* Update states for best quantization */ - - /* Quantized excitation */ - exc_Q14 = silk_LSHIFT32( psSS[ 0 ].Q_Q10, 4 ); - if ( psDD->Seed < 0 ) { - exc_Q14 = -exc_Q14; - } - - /* Add predictions */ - LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 ); - xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 ); - - /* Update states */ - sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 ); - psSS[ 0 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 ); - psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14; - psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14; - psSS[ 0 ].xq_Q14 = xq_Q14; - - /* Update states for second best quantization */ - - /* Quantized excitation */ - exc_Q14 = silk_LSHIFT32( psSS[ 1 ].Q_Q10, 4 ); - if ( psDD->Seed < 0 ) { - exc_Q14 = -exc_Q14; - } - - - /* Add predictions */ - LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 ); - xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 ); - - /* Update states */ - sLF_AR_shp_Q14 = silk_SUB32( xq_Q14, n_AR_Q14 ); - psSS[ 1 ].sLTP_shp_Q14 = silk_SUB32( sLF_AR_shp_Q14, n_LF_Q14 ); - psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14; - psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14; - psSS[ 1 ].xq_Q14 = xq_Q14; - } - } - *smpl_buf_idx = ( *smpl_buf_idx - 1 ) % DECISION_DELAY; - if( *smpl_buf_idx < 0 ) *smpl_buf_idx += DECISION_DELAY; - last_smple_idx = ( *smpl_buf_idx + decisionDelay ) % DECISION_DELAY; - - /* Find winner */ - RDmin_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10; - Winner_ind = 0; - for( k = 1; k < nStatesDelayedDecision; k++ ) { - if( psSampleState[ k ][ 0 ].RD_Q10 < RDmin_Q10 ) { - RDmin_Q10 = psSampleState[ k ][ 0 ].RD_Q10; - Winner_ind = k; - } - } - - /* Increase RD values of expired states */ - Winner_rand_state = psDelDec[ Winner_ind ].RandState[ last_smple_idx ]; - for( k = 0; k < nStatesDelayedDecision; k++ ) { - if( psDelDec[ k ].RandState[ last_smple_idx ] != Winner_rand_state ) { - psSampleState[ k ][ 0 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 0 ].RD_Q10, silk_int32_MAX >> 4 ); - psSampleState[ k ][ 1 ].RD_Q10 = silk_ADD32( psSampleState[ k ][ 1 ].RD_Q10, silk_int32_MAX >> 4 ); - silk_assert( psSampleState[ k ][ 0 ].RD_Q10 >= 0 ); - } - } - - /* Find worst in first set and best in second set */ - RDmax_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10; - RDmin_Q10 = psSampleState[ 0 ][ 1 ].RD_Q10; - RDmax_ind = 0; - RDmin_ind = 0; - for( k = 1; k < nStatesDelayedDecision; k++ ) { - /* find worst in first set */ - if( psSampleState[ k ][ 0 ].RD_Q10 > RDmax_Q10 ) { - RDmax_Q10 = psSampleState[ k ][ 0 ].RD_Q10; - RDmax_ind = k; - } - /* find best in second set */ - if( psSampleState[ k ][ 1 ].RD_Q10 < RDmin_Q10 ) { - RDmin_Q10 = psSampleState[ k ][ 1 ].RD_Q10; - RDmin_ind = k; - } - } - - /* Replace a state if best from second set outperforms worst in first set */ - if( RDmin_Q10 < RDmax_Q10 ) { - silk_memcpy( ( (opus_int32 *)&psDelDec[ RDmax_ind ] ) + i, - ( (opus_int32 *)&psDelDec[ RDmin_ind ] ) + i, sizeof( NSQ_del_dec_struct ) - i * sizeof( opus_int32) ); - silk_memcpy( &psSampleState[ RDmax_ind ][ 0 ], &psSampleState[ RDmin_ind ][ 1 ], sizeof( NSQ_sample_struct ) ); - } - - /* Write samples from winner to output and long-term filter states */ - psDD = &psDelDec[ Winner_ind ]; - if( subfr > 0 || i >= decisionDelay ) { - pulses[ i - decisionDelay ] = (opus_int8)silk_RSHIFT_ROUND( psDD->Q_Q10[ last_smple_idx ], 10 ); - xq[ i - decisionDelay ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( - silk_SMULWW( psDD->Xq_Q14[ last_smple_idx ], delayedGain_Q10[ last_smple_idx ] ), 8 ) ); - NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - decisionDelay ] = psDD->Shape_Q14[ last_smple_idx ]; - sLTP_Q15[ NSQ->sLTP_buf_idx - decisionDelay ] = psDD->Pred_Q15[ last_smple_idx ]; - } - NSQ->sLTP_shp_buf_idx++; - NSQ->sLTP_buf_idx++; - - /* Update states */ - for( k = 0; k < nStatesDelayedDecision; k++ ) { - psDD = &psDelDec[ k ]; - psSS = &psSampleState[ k ][ 0 ]; - psDD->LF_AR_Q14 = psSS->LF_AR_Q14; - psDD->sLPC_Q14[ NSQ_LPC_BUF_LENGTH + i ] = psSS->xq_Q14; - psDD->Xq_Q14[ *smpl_buf_idx ] = psSS->xq_Q14; - psDD->Q_Q10[ *smpl_buf_idx ] = psSS->Q_Q10; - psDD->Pred_Q15[ *smpl_buf_idx ] = silk_LSHIFT32( psSS->LPC_exc_Q14, 1 ); - psDD->Shape_Q14[ *smpl_buf_idx ] = psSS->sLTP_shp_Q14; - psDD->Seed = silk_ADD32_ovflw( psDD->Seed, silk_RSHIFT_ROUND( psSS->Q_Q10, 10 ) ); - psDD->RandState[ *smpl_buf_idx ] = psDD->Seed; - psDD->RD_Q10 = psSS->RD_Q10; - } - delayedGain_Q10[ *smpl_buf_idx ] = Gain_Q10; - } - /* Update LPC states */ - for( k = 0; k < nStatesDelayedDecision; k++ ) { - psDD = &psDelDec[ k ]; - silk_memcpy( psDD->sLPC_Q14, &psDD->sLPC_Q14[ length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) ); - } - RESTORE_STACK; -} - -static OPUS_INLINE void silk_nsq_del_dec_scale_states_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */ - const opus_int32 x_Q3[], /* I Input in Q3 */ - opus_int32 x_sc_Q10[], /* O Input scaled with 1/Gain in Q10 */ - const opus_int16 sLTP[], /* I Re-whitened LTP state in Q0 */ - opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ - opus_int subfr, /* I Subframe number */ - opus_int nStatesDelayedDecision, /* I Number of del dec states */ - const opus_int LTP_scale_Q14, /* I LTP state scaling */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ - const opus_int signal_type, /* I Signal type */ - const opus_int decisionDelay /* I Decision delay */ -) -{ - opus_int i, k, lag; - opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23; - NSQ_del_dec_struct *psDD; - __m128i xmm_inv_gain_Q23, xmm_x_Q3_x2x0, xmm_x_Q3_x3x1; - - lag = pitchL[ subfr ]; - inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 ); - - silk_assert( inv_gain_Q31 != 0 ); - - /* Calculate gain adjustment factor */ - if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) { - gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 ); - } else { - gain_adj_Q16 = (opus_int32)1 << 16; - } - - /* Scale input */ - inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 ); - - /* prepare inv_gain_Q23 in packed 4 32-bits */ - xmm_inv_gain_Q23 = _mm_set1_epi32(inv_gain_Q23); - - for( i = 0; i < psEncC->subfr_length - 3; i += 4 ) { - xmm_x_Q3_x2x0 = _mm_loadu_si128( (__m128i *)(&(x_Q3[ i ] ) ) ); - /* equal shift right 4 bytes*/ - xmm_x_Q3_x3x1 = _mm_shuffle_epi32( xmm_x_Q3_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - - xmm_x_Q3_x2x0 = _mm_mul_epi32( xmm_x_Q3_x2x0, xmm_inv_gain_Q23 ); - xmm_x_Q3_x3x1 = _mm_mul_epi32( xmm_x_Q3_x3x1, xmm_inv_gain_Q23 ); - - xmm_x_Q3_x2x0 = _mm_srli_epi64( xmm_x_Q3_x2x0, 16 ); - xmm_x_Q3_x3x1 = _mm_slli_epi64( xmm_x_Q3_x3x1, 16 ); - - xmm_x_Q3_x2x0 = _mm_blend_epi16( xmm_x_Q3_x2x0, xmm_x_Q3_x3x1, 0xCC ); - - _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ])), xmm_x_Q3_x2x0 ); - } - - for( ; i < psEncC->subfr_length; i++ ) { - x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 ); - } - - /* Save inverse gain */ - NSQ->prev_gain_Q16 = Gains_Q16[ subfr ]; - - /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */ - if( NSQ->rewhite_flag ) { - if( subfr == 0 ) { - /* Do LTP downscaling */ - inv_gain_Q31 = silk_LSHIFT( silk_SMULWB( inv_gain_Q31, LTP_scale_Q14 ), 2 ); - } - for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) { - silk_assert( i < MAX_FRAME_LENGTH ); - sLTP_Q15[ i ] = silk_SMULWB( inv_gain_Q31, sLTP[ i ] ); - } - } - - /* Adjust for changing gain */ - if( gain_adj_Q16 != (opus_int32)1 << 16 ) { - /* Scale long-term shaping state */ - { - __m128i xmm_gain_adj_Q16, xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1; - - /* prepare gain_adj_Q16 in packed 4 32-bits */ - xmm_gain_adj_Q16 = _mm_set1_epi32( gain_adj_Q16 ); - - for( i = NSQ->sLTP_shp_buf_idx - psEncC->ltp_mem_length; i < NSQ->sLTP_shp_buf_idx - 3; i += 4 ) - { - xmm_sLTP_shp_Q14_x2x0 = _mm_loadu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ) ); - /* equal shift right 4 bytes*/ - xmm_sLTP_shp_Q14_x3x1 = _mm_shuffle_epi32( xmm_sLTP_shp_Q14_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - - xmm_sLTP_shp_Q14_x2x0 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x2x0, xmm_gain_adj_Q16 ); - xmm_sLTP_shp_Q14_x3x1 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x3x1, xmm_gain_adj_Q16 ); - - xmm_sLTP_shp_Q14_x2x0 = _mm_srli_epi64( xmm_sLTP_shp_Q14_x2x0, 16 ); - xmm_sLTP_shp_Q14_x3x1 = _mm_slli_epi64( xmm_sLTP_shp_Q14_x3x1, 16 ); - - xmm_sLTP_shp_Q14_x2x0 = _mm_blend_epi16( xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1, 0xCC ); - - _mm_storeu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ), xmm_sLTP_shp_Q14_x2x0 ); - } - - for( ; i < NSQ->sLTP_shp_buf_idx; i++ ) { - NSQ->sLTP_shp_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLTP_shp_Q14[ i ] ); - } - - /* Scale long-term prediction state */ - if( signal_type == TYPE_VOICED && NSQ->rewhite_flag == 0 ) { - for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx - decisionDelay; i++ ) { - sLTP_Q15[ i ] = silk_SMULWW( gain_adj_Q16, sLTP_Q15[ i ] ); - } - } - - for( k = 0; k < nStatesDelayedDecision; k++ ) { - psDD = &psDelDec[ k ]; - - /* Scale scalar states */ - psDD->LF_AR_Q14 = silk_SMULWW( gain_adj_Q16, psDD->LF_AR_Q14 ); - - /* Scale short-term prediction and shaping states */ - for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) { - psDD->sLPC_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sLPC_Q14[ i ] ); - } - for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) { - psDD->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sAR2_Q14[ i ] ); - } - for( i = 0; i < DECISION_DELAY; i++ ) { - psDD->Pred_Q15[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Pred_Q15[ i ] ); - psDD->Shape_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Shape_Q14[ i ] ); - } - } - } - } -} diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_sse4_1.c thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_sse4_1.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_sse4_1.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_sse4_1.c 2022-05-20 05:47:17.000000000 +0000 @@ -1,5 +1,5 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang +/* Copyright (c) 2014-2020, Cisco Systems, INC + Written by XiangMingZhu WeiZhou MinPeng YanWang FrancisQuiers Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,17 +37,17 @@ #include "stack_alloc.h" static OPUS_INLINE void silk_nsq_scale_states_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - const opus_int32 x_Q3[], /* I input in Q3 */ - opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */ - const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */ - opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ - opus_int subfr, /* I subframe number */ - const opus_int LTP_scale_Q14, /* I */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ - const opus_int signal_type /* I Signal type */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + const opus_int16 x16[], /* I input */ + opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */ + const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */ + opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ + opus_int subfr, /* I subframe number */ + const opus_int LTP_scale_Q14, /* I */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ + const opus_int signal_type /* I Signal type */ ); static OPUS_INLINE void silk_noise_shape_quantizer_10_16_sse4_1( @@ -65,27 +65,28 @@ opus_int Tilt_Q14, /* I Spectral tilt */ opus_int32 LF_shp_Q14, /* I */ opus_int32 Gain_Q16, /* I */ + opus_int Lambda_Q10, /* I */ opus_int offset_Q10, /* I */ opus_int length, /* I Input length */ opus_int32 table[][4] /* I */ ); void silk_NSQ_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ) { opus_int k, lag, start_idx, LSF_interpolation_flag; @@ -101,8 +102,41 @@ opus_int32 tmp1; opus_int32 q1_Q10, q2_Q10, rd1_Q20, rd2_Q20; +#ifdef OPUS_CHECK_ASM + silk_nsq_state NSQ_c; + SideInfoIndices psIndices_c; + opus_int8 pulses_c[ MAX_FRAME_LENGTH ]; + const opus_int8 *const pulses_a = pulses; +#endif + SAVE_STACK; +#ifdef OPUS_CHECK_ASM + ( void )pulses_a; + silk_memcpy( &NSQ_c, NSQ, sizeof( NSQ_c ) ); + silk_memcpy( &psIndices_c, psIndices, sizeof( psIndices_c ) ); + silk_assert( psEncC->nb_subfr * psEncC->subfr_length <= MAX_FRAME_LENGTH ); + silk_memcpy( pulses_c, pulses, psEncC->nb_subfr * psEncC->subfr_length * sizeof( pulses[0] ) ); + + silk_NSQ_c( + psEncC, + &NSQ_c, + &psIndices_c, + x16, + pulses_c, + PredCoef_Q12, + LTPCoef_Q14, + AR_Q13, + HarmShapeGain_Q14, + Tilt_Q14, + LF_shp_Q14, + Gains_Q16, + pitchL, + Lambda_Q10, + LTP_scale_Q14 + ); +#endif + NSQ->rand_seed = psIndices->Seed; /* Set unvoiced lag to the previous one, overwrite later for voiced */ @@ -172,8 +206,7 @@ LSF_interpolation_flag = 1; } - ALLOC( sLTP_Q15, - psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 ); + ALLOC( sLTP_Q15, psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 ); ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 ); ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 ); /* Set up pointers to start of sub frame */ @@ -183,7 +216,7 @@ for( k = 0; k < psEncC->nb_subfr; k++ ) { A_Q12 = &PredCoef_Q12[ (( k >> 1 ) | ( 1 - LSF_interpolation_flag )) * MAX_LPC_ORDER ]; B_Q14 = <PCoef_Q14[ k * LTP_ORDER ]; - AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ]; + AR_shp_Q13 = &AR_Q13[ k * MAX_SHAPE_LPC_ORDER ]; /* Noise shape parameters */ silk_assert( HarmShapeGain_Q14[ k ] >= 0 ); @@ -209,12 +242,12 @@ } } - silk_nsq_scale_states_sse4_1( psEncC, NSQ, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType ); + silk_nsq_scale_states_sse4_1( psEncC, NSQ, x16, x_sc_Q10, sLTP, sLTP_Q15, k, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType ); if ( opus_likely( ( 10 == psEncC->shapingLPCOrder ) && ( 16 == psEncC->predictLPCOrder) ) ) { silk_noise_shape_quantizer_10_16_sse4_1( NSQ, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, A_Q12, B_Q14, - AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], Gains_Q16[ k ], + AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], Gains_Q16[ k ], Lambda_Q10, offset_Q10, psEncC->subfr_length, &(table[32]) ); } else @@ -224,7 +257,7 @@ offset_Q10, psEncC->subfr_length, psEncC->shapingLPCOrder, psEncC->predictLPCOrder, psEncC->arch ); } - x_Q3 += psEncC->subfr_length; + x16 += psEncC->subfr_length; pulses += psEncC->subfr_length; pxq += psEncC->subfr_length; } @@ -235,12 +268,19 @@ /* Save quantized speech and noise shaping signals */ silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) ); silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) ); + +#ifdef OPUS_CHECK_ASM + silk_assert( !memcmp( &NSQ_c, NSQ, sizeof( NSQ_c ) ) ); + silk_assert( !memcmp( &psIndices_c, psIndices, sizeof( psIndices_c ) ) ); + silk_assert( !memcmp( pulses_c, pulses_a, psEncC->nb_subfr * psEncC->subfr_length * sizeof( pulses[0] ) ) ); +#endif + RESTORE_STACK; } -/***********************************/ -/* silk_noise_shape_quantizer_10_16 */ -/***********************************/ +/************************************/ +/* silk_noise_shape_quantizer_10_16 */ +/************************************/ static OPUS_INLINE void silk_noise_shape_quantizer_10_16_sse4_1( silk_nsq_state *NSQ, /* I/O NSQ state */ opus_int signalType, /* I Signal type */ @@ -256,6 +296,7 @@ opus_int Tilt_Q14, /* I Spectral tilt */ opus_int32 LF_shp_Q14, /* I */ opus_int32 Gain_Q16, /* I */ + opus_int Lambda_Q10, /* I */ opus_int offset_Q10, /* I */ opus_int length, /* I Input length */ opus_int32 table[][4] /* I */ @@ -264,7 +305,7 @@ opus_int i; opus_int32 LTP_pred_Q13, LPC_pred_Q10, n_AR_Q12, n_LTP_Q13; opus_int32 n_LF_Q12, r_Q10, q1_Q0, q1_Q10, q2_Q10; - opus_int32 exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10; + opus_int32 exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10, sDiff_shp_Q14; opus_int32 tmp1, tmp2, sLF_AR_shp_Q14; opus_int32 *psLPC_Q14, *shp_lag_ptr, *pred_lag_ptr; @@ -279,6 +320,8 @@ __m128i sAR2_Q14_hi_76543210, sAR2_Q14_lo_76543210; __m128i AR_shp_Q13_76543210; + int rdo_offset = (Lambda_Q10 >> 1) - 512; + shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ]; pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ]; Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 ); @@ -288,6 +331,7 @@ sLF_AR_shp_Q14 = NSQ->sLF_AR_shp_Q14; xq_Q14 = psLPC_Q14[ 0 ]; + sDiff_shp_Q14 = NSQ->sDiff_shp_Q14; LTP_pred_Q13 = 0; /* load a_Q12 */ @@ -430,8 +474,8 @@ sAR2_Q14_hi_76543210 = _mm_slli_si128( sAR2_Q14_hi_76543210, 2 ); sAR2_Q14_lo_76543210 = _mm_slli_si128( sAR2_Q14_lo_76543210, 2 ); - sAR2_Q14_hi_76543210 = _mm_insert_epi16( sAR2_Q14_hi_76543210, (xq_Q14 >> 16), 0 ); - sAR2_Q14_lo_76543210 = _mm_insert_epi16( sAR2_Q14_lo_76543210, (xq_Q14), 0 ); + sAR2_Q14_hi_76543210 = _mm_insert_epi16( sAR2_Q14_hi_76543210, (sDiff_shp_Q14 >> 16), 0 ); + sAR2_Q14_lo_76543210 = _mm_insert_epi16( sAR2_Q14_lo_76543210, (sDiff_shp_Q14), 0 ); /* high part, use pmaddwd, results in 4 32-bit */ xmm_hi_07 = _mm_madd_epi16( sAR2_Q14_hi_76543210, AR_shp_Q13_76543210 ); @@ -462,14 +506,14 @@ n_LF_Q12 = silk_SMULWB( NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - 1 ], LF_shp_Q14 ); n_LF_Q12 = silk_SMLAWT( n_LF_Q12, sLF_AR_shp_Q14, LF_shp_Q14 ); - silk_assert( lag > 0 || signalType != TYPE_VOICED ); + celt_assert( lag > 0 || signalType != TYPE_VOICED ); /* Combine prediction and noise shaping signals */ tmp1 = silk_SUB32( silk_LSHIFT32( LPC_pred_Q10, 2 ), n_AR_Q12 ); /* Q12 */ tmp1 = silk_SUB32( tmp1, n_LF_Q12 ); /* Q12 */ if( lag > 0 ) { /* Symmetric, packed FIR coefficients */ - n_LTP_Q13 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); + n_LTP_Q13 = silk_SMULWB( silk_ADD_SAT32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); n_LTP_Q13 = silk_SMLAWT( n_LTP_Q13, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); n_LTP_Q13 = silk_LSHIFT( n_LTP_Q13, 1 ); shp_lag_ptr++; @@ -495,6 +539,18 @@ /* Find two quantization level candidates and measure their rate-distortion */ q1_Q10 = silk_SUB32( r_Q10, offset_Q10 ); q1_Q0 = silk_RSHIFT( q1_Q10, 10 ); + if (Lambda_Q10 > 2048) { + /* For aggressive RDO, the bias becomes more than one pulse. */ + if (q1_Q10 > rdo_offset) { + q1_Q0 = silk_RSHIFT( q1_Q10 - rdo_offset, 10 ); + } else if (q1_Q10 < -rdo_offset) { + q1_Q0 = silk_RSHIFT( q1_Q10 + rdo_offset, 10 ); + } else if (q1_Q10 < 0) { + q1_Q0 = -1; + } else { + q1_Q0 = 0; + } + } q1_Q10 = table[q1_Q0][0]; q2_Q10 = table[q1_Q0][1]; @@ -519,7 +575,8 @@ /* Update states */ psLPC_Q14++; *psLPC_Q14 = xq_Q14; - sLF_AR_shp_Q14 = silk_SUB_LSHIFT32( xq_Q14, n_AR_Q12, 2 ); + NSQ->sDiff_shp_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_sc_Q10[ i ], 4 ); + sLF_AR_shp_Q14 = silk_SUB_LSHIFT32( NSQ->sDiff_shp_Q14, n_AR_Q12, 2 ); NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx ] = silk_SUB_LSHIFT32( sLF_AR_shp_Q14, n_LF_Q12, 2 ); sLTP_Q15[ NSQ->sLTP_buf_idx ] = silk_LSHIFT( LPC_exc_Q14, 1 ); @@ -600,64 +657,54 @@ } static OPUS_INLINE void silk_nsq_scale_states_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - const opus_int32 x_Q3[], /* I input in Q3 */ - opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */ - const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */ - opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ - opus_int subfr, /* I subframe number */ - const opus_int LTP_scale_Q14, /* I */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ - const opus_int signal_type /* I Signal type */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + const opus_int16 x16[], /* I input */ + opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */ + const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */ + opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ + opus_int subfr, /* I subframe number */ + const opus_int LTP_scale_Q14, /* I */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ + const opus_int signal_type /* I Signal type */ ) { opus_int i, lag; - opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23; - __m128i xmm_inv_gain_Q23, xmm_x_Q3_x2x0, xmm_x_Q3_x3x1; + opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q26; + __m128i xmm_inv_gain_Q26, xmm_x16_x2x0, xmm_x16_x3x1; lag = pitchL[ subfr ]; inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 ); silk_assert( inv_gain_Q31 != 0 ); - /* Calculate gain adjustment factor */ - if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) { - gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 ); - } else { - gain_adj_Q16 = (opus_int32)1 << 16; - } - /* Scale input */ - inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 ); + inv_gain_Q26 = silk_RSHIFT_ROUND( inv_gain_Q31, 5 ); - /* prepare inv_gain_Q23 in packed 4 32-bits */ - xmm_inv_gain_Q23 = _mm_set1_epi32(inv_gain_Q23); + /* prepare inv_gain_Q26 in packed 4 32-bits */ + xmm_inv_gain_Q26 = _mm_set1_epi32(inv_gain_Q26); for( i = 0; i < psEncC->subfr_length - 3; i += 4 ) { - xmm_x_Q3_x2x0 = _mm_loadu_si128( (__m128i *)(&(x_Q3[ i ] ) ) ); + xmm_x16_x2x0 = OP_CVTEPI16_EPI32_M64( &(x16[ i ] ) ); /* equal shift right 4 bytes*/ - xmm_x_Q3_x3x1 = _mm_shuffle_epi32( xmm_x_Q3_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); + xmm_x16_x3x1 = _mm_shuffle_epi32( xmm_x16_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - xmm_x_Q3_x2x0 = _mm_mul_epi32( xmm_x_Q3_x2x0, xmm_inv_gain_Q23 ); - xmm_x_Q3_x3x1 = _mm_mul_epi32( xmm_x_Q3_x3x1, xmm_inv_gain_Q23 ); + xmm_x16_x2x0 = _mm_mul_epi32( xmm_x16_x2x0, xmm_inv_gain_Q26 ); + xmm_x16_x3x1 = _mm_mul_epi32( xmm_x16_x3x1, xmm_inv_gain_Q26 ); - xmm_x_Q3_x2x0 = _mm_srli_epi64( xmm_x_Q3_x2x0, 16 ); - xmm_x_Q3_x3x1 = _mm_slli_epi64( xmm_x_Q3_x3x1, 16 ); + xmm_x16_x2x0 = _mm_srli_epi64( xmm_x16_x2x0, 16 ); + xmm_x16_x3x1 = _mm_slli_epi64( xmm_x16_x3x1, 16 ); - xmm_x_Q3_x2x0 = _mm_blend_epi16( xmm_x_Q3_x2x0, xmm_x_Q3_x3x1, 0xCC ); + xmm_x16_x2x0 = _mm_blend_epi16( xmm_x16_x2x0, xmm_x16_x3x1, 0xCC ); - _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ] ) ), xmm_x_Q3_x2x0 ); + _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ] ) ), xmm_x16_x2x0 ); } for( ; i < psEncC->subfr_length; i++ ) { - x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 ); + x_sc_Q10[ i ] = silk_SMULWW( x16[ i ], inv_gain_Q26 ); } - /* Save inverse gain */ - NSQ->prev_gain_Q16 = Gains_Q16[ subfr ]; - /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */ if( NSQ->rewhite_flag ) { if( subfr == 0 ) { @@ -671,7 +718,9 @@ } /* Adjust for changing gain */ - if( gain_adj_Q16 != (opus_int32)1 << 16 ) { + if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) { + gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 ); + /* Scale long-term shaping state */ __m128i xmm_gain_adj_Q16, xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1; @@ -707,6 +756,7 @@ } NSQ->sLF_AR_shp_Q14 = silk_SMULWW( gain_adj_Q16, NSQ->sLF_AR_shp_Q14 ); + NSQ->sDiff_shp_Q14 = silk_SMULWW( gain_adj_Q16, NSQ->sDiff_shp_Q14 ); /* Scale short-term prediction and shaping states */ for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) { @@ -715,5 +765,8 @@ for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) { NSQ->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sAR2_Q14[ i ] ); } + + /* Save inverse gain */ + NSQ->prev_gain_Q16 = Gains_Q16[ subfr ]; } } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_sse.c thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_sse.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/NSQ_sse.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/NSQ_sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,719 +0,0 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include "main.h" -#include "celt/x86/x86cpu.h" -#include "stack_alloc.h" - -static OPUS_INLINE void silk_nsq_scale_states_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - const opus_int32 x_Q3[], /* I input in Q3 */ - opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */ - const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */ - opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ - opus_int subfr, /* I subframe number */ - const opus_int LTP_scale_Q14, /* I */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ - const opus_int signal_type /* I Signal type */ -); - -static OPUS_INLINE void silk_noise_shape_quantizer_10_16_sse4_1( - silk_nsq_state *NSQ, /* I/O NSQ state */ - opus_int signalType, /* I Signal type */ - const opus_int32 x_sc_Q10[], /* I */ - opus_int8 pulses[], /* O */ - opus_int16 xq[], /* O */ - opus_int32 sLTP_Q15[], /* I/O LTP state */ - const opus_int16 a_Q12[], /* I Short term prediction coefs */ - const opus_int16 b_Q14[], /* I Long term prediction coefs */ - const opus_int16 AR_shp_Q13[], /* I Noise shaping AR coefs */ - opus_int lag, /* I Pitch lag */ - opus_int32 HarmShapeFIRPacked_Q14, /* I */ - opus_int Tilt_Q14, /* I Spectral tilt */ - opus_int32 LF_shp_Q14, /* I */ - opus_int32 Gain_Q16, /* I */ - opus_int offset_Q10, /* I */ - opus_int length, /* I Input length */ - opus_int32 table[][4] /* I */ -); - -void silk_NSQ_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ -) -{ - opus_int k, lag, start_idx, LSF_interpolation_flag; - const opus_int16 *A_Q12, *B_Q14, *AR_shp_Q13; - opus_int16 *pxq; - VARDECL( opus_int32, sLTP_Q15 ); - VARDECL( opus_int16, sLTP ); - opus_int32 HarmShapeFIRPacked_Q14; - opus_int offset_Q10; - VARDECL( opus_int32, x_sc_Q10 ); - - opus_int32 table[ 64 ][ 4 ]; - opus_int32 tmp1; - opus_int32 q1_Q10, q2_Q10, rd1_Q20, rd2_Q20; - - SAVE_STACK; - - NSQ->rand_seed = psIndices->Seed; - - /* Set unvoiced lag to the previous one, overwrite later for voiced */ - lag = NSQ->lagPrev; - - silk_assert( NSQ->prev_gain_Q16 != 0 ); - - offset_Q10 = silk_Quantization_Offsets_Q10[ psIndices->signalType >> 1 ][ psIndices->quantOffsetType ]; - - /* 0 */ - q1_Q10 = offset_Q10; - q2_Q10 = offset_Q10 + ( 1024 - QUANT_LEVEL_ADJUST_Q10 ); - rd1_Q20 = q1_Q10 * Lambda_Q10; - rd2_Q20 = q2_Q10 * Lambda_Q10; - - table[ 32 ][ 0 ] = q1_Q10; - table[ 32 ][ 1 ] = q2_Q10; - table[ 32 ][ 2 ] = 2 * (q1_Q10 - q2_Q10); - table[ 32 ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10); - - /* -1 */ - q1_Q10 = offset_Q10 - ( 1024 - QUANT_LEVEL_ADJUST_Q10 ); - q2_Q10 = offset_Q10; - rd1_Q20 = - q1_Q10 * Lambda_Q10; - rd2_Q20 = q2_Q10 * Lambda_Q10; - - table[ 31 ][ 0 ] = q1_Q10; - table[ 31 ][ 1 ] = q2_Q10; - table[ 31 ][ 2 ] = 2 * (q1_Q10 - q2_Q10); - table[ 31 ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10); - - /* > 0 */ - for (k = 1; k <= 31; k++) - { - tmp1 = offset_Q10 + silk_LSHIFT( k, 10 ); - - q1_Q10 = tmp1 - QUANT_LEVEL_ADJUST_Q10; - q2_Q10 = tmp1 - QUANT_LEVEL_ADJUST_Q10 + 1024; - rd1_Q20 = q1_Q10 * Lambda_Q10; - rd2_Q20 = q2_Q10 * Lambda_Q10; - - table[ 32 + k ][ 0 ] = q1_Q10; - table[ 32 + k ][ 1 ] = q2_Q10; - table[ 32 + k ][ 2 ] = 2 * (q1_Q10 - q2_Q10); - table[ 32 + k ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10); - } - - /* < -1 */ - for (k = -32; k <= -2; k++) - { - tmp1 = offset_Q10 + silk_LSHIFT( k, 10 ); - - q1_Q10 = tmp1 + QUANT_LEVEL_ADJUST_Q10; - q2_Q10 = tmp1 + QUANT_LEVEL_ADJUST_Q10 + 1024; - rd1_Q20 = - q1_Q10 * Lambda_Q10; - rd2_Q20 = - q2_Q10 * Lambda_Q10; - - table[ 32 + k ][ 0 ] = q1_Q10; - table[ 32 + k ][ 1 ] = q2_Q10; - table[ 32 + k ][ 2 ] = 2 * (q1_Q10 - q2_Q10); - table[ 32 + k ][ 3 ] = (rd1_Q20 - rd2_Q20) + (q1_Q10 * q1_Q10 - q2_Q10 * q2_Q10); - } - - if( psIndices->NLSFInterpCoef_Q2 == 4 ) { - LSF_interpolation_flag = 0; - } else { - LSF_interpolation_flag = 1; - } - - ALLOC( sLTP_Q15, - psEncC->ltp_mem_length + psEncC->frame_length, opus_int32 ); - ALLOC( sLTP, psEncC->ltp_mem_length + psEncC->frame_length, opus_int16 ); - ALLOC( x_sc_Q10, psEncC->subfr_length, opus_int32 ); - /* Set up pointers to start of sub frame */ - NSQ->sLTP_shp_buf_idx = psEncC->ltp_mem_length; - NSQ->sLTP_buf_idx = psEncC->ltp_mem_length; - pxq = &NSQ->xq[ psEncC->ltp_mem_length ]; - for( k = 0; k < psEncC->nb_subfr; k++ ) { - A_Q12 = &PredCoef_Q12[ (( k >> 1 ) | ( 1 - LSF_interpolation_flag )) * MAX_LPC_ORDER ]; - B_Q14 = <PCoef_Q14[ k * LTP_ORDER ]; - AR_shp_Q13 = &AR2_Q13[ k * MAX_SHAPE_LPC_ORDER ]; - - /* Noise shape parameters */ - silk_assert( HarmShapeGain_Q14[ k ] >= 0 ); - HarmShapeFIRPacked_Q14 = silk_RSHIFT( HarmShapeGain_Q14[ k ], 2 ); - HarmShapeFIRPacked_Q14 |= silk_LSHIFT( (opus_int32)silk_RSHIFT( HarmShapeGain_Q14[ k ], 1 ), 16 ); - - NSQ->rewhite_flag = 0; - if( psIndices->signalType == TYPE_VOICED ) { - /* Voiced */ - lag = pitchL[ k ]; - - /* Re-whitening */ - if( ( k & ( 3 - silk_LSHIFT( LSF_interpolation_flag, 1 ) ) ) == 0 ) { - /* Rewhiten with new A coefs */ - start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrder - LTP_ORDER / 2; - silk_assert( start_idx > 0 ); - - silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_idx + k * psEncC->subfr_length ], - A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLPCOrder, psEncC->arch ); - - NSQ->rewhite_flag = 1; - NSQ->sLTP_buf_idx = psEncC->ltp_mem_length; - } - } - - silk_nsq_scale_states_sse4_1( psEncC, NSQ, x_Q3, x_sc_Q10, sLTP, sLTP_Q15, k, LTP_scale_Q14, Gains_Q16, pitchL, psIndices->signalType ); - - if ( opus_likely( ( 10 == psEncC->shapingLPCOrder ) && ( 16 == psEncC->predictLPCOrder) ) ) - { - silk_noise_shape_quantizer_10_16_sse4_1( NSQ, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, A_Q12, B_Q14, - AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], Gains_Q16[ k ], - offset_Q10, psEncC->subfr_length, &(table[32]) ); - } - else - { - silk_noise_shape_quantizer( NSQ, psIndices->signalType, x_sc_Q10, pulses, pxq, sLTP_Q15, A_Q12, B_Q14, - AR_shp_Q13, lag, HarmShapeFIRPacked_Q14, Tilt_Q14[ k ], LF_shp_Q14[ k ], Gains_Q16[ k ], Lambda_Q10, - offset_Q10, psEncC->subfr_length, psEncC->shapingLPCOrder, psEncC->predictLPCOrder, psEncC->arch ); - } - - x_Q3 += psEncC->subfr_length; - pulses += psEncC->subfr_length; - pxq += psEncC->subfr_length; - } - - /* Update lagPrev for next frame */ - NSQ->lagPrev = pitchL[ psEncC->nb_subfr - 1 ]; - - /* Save quantized speech and noise shaping signals */ - silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) ); - silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) ); - RESTORE_STACK; -} - -/***********************************/ -/* silk_noise_shape_quantizer_10_16 */ -/***********************************/ -static OPUS_INLINE void silk_noise_shape_quantizer_10_16_sse4_1( - silk_nsq_state *NSQ, /* I/O NSQ state */ - opus_int signalType, /* I Signal type */ - const opus_int32 x_sc_Q10[], /* I */ - opus_int8 pulses[], /* O */ - opus_int16 xq[], /* O */ - opus_int32 sLTP_Q15[], /* I/O LTP state */ - const opus_int16 a_Q12[], /* I Short term prediction coefs */ - const opus_int16 b_Q14[], /* I Long term prediction coefs */ - const opus_int16 AR_shp_Q13[], /* I Noise shaping AR coefs */ - opus_int lag, /* I Pitch lag */ - opus_int32 HarmShapeFIRPacked_Q14, /* I */ - opus_int Tilt_Q14, /* I Spectral tilt */ - opus_int32 LF_shp_Q14, /* I */ - opus_int32 Gain_Q16, /* I */ - opus_int offset_Q10, /* I */ - opus_int length, /* I Input length */ - opus_int32 table[][4] /* I */ -) -{ - opus_int i; - opus_int32 LTP_pred_Q13, LPC_pred_Q10, n_AR_Q12, n_LTP_Q13; - opus_int32 n_LF_Q12, r_Q10, q1_Q0, q1_Q10, q2_Q10; - opus_int32 exc_Q14, LPC_exc_Q14, xq_Q14, Gain_Q10; - opus_int32 tmp1, tmp2, sLF_AR_shp_Q14; - opus_int32 *psLPC_Q14, *shp_lag_ptr, *pred_lag_ptr; - - __m128i xmm_tempa, xmm_tempb; - - __m128i xmm_one; - - __m128i psLPC_Q14_hi_01234567, psLPC_Q14_hi_89ABCDEF; - __m128i psLPC_Q14_lo_01234567, psLPC_Q14_lo_89ABCDEF; - __m128i a_Q12_01234567, a_Q12_89ABCDEF; - - __m128i sAR2_Q14_hi_76543210, sAR2_Q14_lo_76543210; - __m128i AR_shp_Q13_76543210; - - shp_lag_ptr = &NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - lag + HARM_SHAPE_FIR_TAPS / 2 ]; - pred_lag_ptr = &sLTP_Q15[ NSQ->sLTP_buf_idx - lag + LTP_ORDER / 2 ]; - Gain_Q10 = silk_RSHIFT( Gain_Q16, 6 ); - - /* Set up short term AR state */ - psLPC_Q14 = &NSQ->sLPC_Q14[ NSQ_LPC_BUF_LENGTH - 1 ]; - - sLF_AR_shp_Q14 = NSQ->sLF_AR_shp_Q14; - xq_Q14 = psLPC_Q14[ 0 ]; - LTP_pred_Q13 = 0; - - /* load a_Q12 */ - xmm_one = _mm_set_epi8( 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 ); - - /* load a_Q12[0] - a_Q12[7] */ - a_Q12_01234567 = _mm_loadu_si128( (__m128i *)(&a_Q12[ 0 ] ) ); - /* load a_Q12[ 8 ] - a_Q12[ 15 ] */ - a_Q12_89ABCDEF = _mm_loadu_si128( (__m128i *)(&a_Q12[ 8 ] ) ); - - a_Q12_01234567 = _mm_shuffle_epi8( a_Q12_01234567, xmm_one ); - a_Q12_89ABCDEF = _mm_shuffle_epi8( a_Q12_89ABCDEF, xmm_one ); - - /* load AR_shp_Q13 */ - AR_shp_Q13_76543210 = _mm_loadu_si128( (__m128i *)(&AR_shp_Q13[0] ) ); - - /* load psLPC_Q14 */ - xmm_one = _mm_set_epi8(15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0 ); - - xmm_tempa = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[-16]) ); - xmm_tempb = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[-12]) ); - - xmm_tempa = _mm_shuffle_epi8( xmm_tempa, xmm_one ); - xmm_tempb = _mm_shuffle_epi8( xmm_tempb, xmm_one ); - - psLPC_Q14_hi_89ABCDEF = _mm_unpackhi_epi64( xmm_tempa, xmm_tempb ); - psLPC_Q14_lo_89ABCDEF = _mm_unpacklo_epi64( xmm_tempa, xmm_tempb ); - - xmm_tempa = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -8 ]) ); - xmm_tempb = _mm_loadu_si128( (__m128i *)(&psLPC_Q14[ -4 ]) ); - - xmm_tempa = _mm_shuffle_epi8( xmm_tempa, xmm_one ); - xmm_tempb = _mm_shuffle_epi8( xmm_tempb, xmm_one ); - - psLPC_Q14_hi_01234567 = _mm_unpackhi_epi64( xmm_tempa, xmm_tempb ); - psLPC_Q14_lo_01234567 = _mm_unpacklo_epi64( xmm_tempa, xmm_tempb ); - - /* load sAR2_Q14 */ - xmm_tempa = _mm_loadu_si128( (__m128i *)(&(NSQ->sAR2_Q14[ 0 ]) ) ); - xmm_tempb = _mm_loadu_si128( (__m128i *)(&(NSQ->sAR2_Q14[ 4 ]) ) ); - - xmm_tempa = _mm_shuffle_epi8( xmm_tempa, xmm_one ); - xmm_tempb = _mm_shuffle_epi8( xmm_tempb, xmm_one ); - - sAR2_Q14_hi_76543210 = _mm_unpackhi_epi64( xmm_tempa, xmm_tempb ); - sAR2_Q14_lo_76543210 = _mm_unpacklo_epi64( xmm_tempa, xmm_tempb ); - - /* prepare 1 in 8 * 16bit */ - xmm_one = _mm_set1_epi16(1); - - for( i = 0; i < length; i++ ) - { - /* Short-term prediction */ - __m128i xmm_hi_07, xmm_hi_8F, xmm_lo_07, xmm_lo_8F; - - /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */ - LPC_pred_Q10 = 8; /* silk_RSHIFT( predictLPCOrder, 1 ); */ - - /* shift psLPC_Q14 */ - psLPC_Q14_hi_89ABCDEF = _mm_alignr_epi8( psLPC_Q14_hi_01234567, psLPC_Q14_hi_89ABCDEF, 2 ); - psLPC_Q14_lo_89ABCDEF = _mm_alignr_epi8( psLPC_Q14_lo_01234567, psLPC_Q14_lo_89ABCDEF, 2 ); - - psLPC_Q14_hi_01234567 = _mm_srli_si128( psLPC_Q14_hi_01234567, 2 ); - psLPC_Q14_lo_01234567 = _mm_srli_si128( psLPC_Q14_lo_01234567, 2 ); - - psLPC_Q14_hi_01234567 = _mm_insert_epi16( psLPC_Q14_hi_01234567, (xq_Q14 >> 16), 7 ); - psLPC_Q14_lo_01234567 = _mm_insert_epi16( psLPC_Q14_lo_01234567, (xq_Q14), 7 ); - - /* high part, use pmaddwd, results in 4 32-bit */ - xmm_hi_07 = _mm_madd_epi16( psLPC_Q14_hi_01234567, a_Q12_01234567 ); - xmm_hi_8F = _mm_madd_epi16( psLPC_Q14_hi_89ABCDEF, a_Q12_89ABCDEF ); - - /* low part, use pmulhw, results in 8 16-bit, note we need simulate unsigned * signed, _mm_srai_epi16(psLPC_Q14_lo_01234567, 15) */ - xmm_tempa = _mm_cmpgt_epi16( _mm_setzero_si128(), psLPC_Q14_lo_01234567 ); - xmm_tempb = _mm_cmpgt_epi16( _mm_setzero_si128(), psLPC_Q14_lo_89ABCDEF ); - - xmm_tempa = _mm_and_si128( xmm_tempa, a_Q12_01234567 ); - xmm_tempb = _mm_and_si128( xmm_tempb, a_Q12_89ABCDEF ); - - xmm_lo_07 = _mm_mulhi_epi16( psLPC_Q14_lo_01234567, a_Q12_01234567 ); - xmm_lo_8F = _mm_mulhi_epi16( psLPC_Q14_lo_89ABCDEF, a_Q12_89ABCDEF ); - - xmm_lo_07 = _mm_add_epi16( xmm_lo_07, xmm_tempa ); - xmm_lo_8F = _mm_add_epi16( xmm_lo_8F, xmm_tempb ); - - xmm_lo_07 = _mm_madd_epi16( xmm_lo_07, xmm_one ); - xmm_lo_8F = _mm_madd_epi16( xmm_lo_8F, xmm_one ); - - /* accumulate */ - xmm_hi_07 = _mm_add_epi32( xmm_hi_07, xmm_hi_8F ); - xmm_lo_07 = _mm_add_epi32( xmm_lo_07, xmm_lo_8F ); - - xmm_hi_07 = _mm_add_epi32( xmm_hi_07, xmm_lo_07 ); - - xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_unpackhi_epi64(xmm_hi_07, xmm_hi_07 ) ); - xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_shufflelo_epi16(xmm_hi_07, 0x0E ) ); - - LPC_pred_Q10 += _mm_cvtsi128_si32( xmm_hi_07 ); - - /* Long-term prediction */ - if ( opus_likely( signalType == TYPE_VOICED ) ) { - /* Unrolled loop */ - /* Avoids introducing a bias because silk_SMLAWB() always rounds to -inf */ - LTP_pred_Q13 = 2; - { - __m128i b_Q14_3210, b_Q14_0123, pred_lag_ptr_0123; - - b_Q14_3210 = OP_CVTEPI16_EPI32_M64( b_Q14 ); - b_Q14_0123 = _mm_shuffle_epi32( b_Q14_3210, 0x1B ); - - /* loaded: [0] [-1] [-2] [-3] */ - pred_lag_ptr_0123 = _mm_loadu_si128( (__m128i *)(&pred_lag_ptr[ -3 ] ) ); - /* shuffle to [-3] [-2] [-1] [0] and to new xmm */ - xmm_tempa = _mm_shuffle_epi32( pred_lag_ptr_0123, 0x1B ); - /*64-bit multiply, a[2] * b[-2], a[0] * b[0] */ - xmm_tempa = _mm_mul_epi32( xmm_tempa, b_Q14_3210 ); - /* right shift 2 bytes (16 bits), zero extended */ - xmm_tempa = _mm_srli_si128( xmm_tempa, 2 ); - - /* a[1] * b[-1], a[3] * b[-3] */ - pred_lag_ptr_0123 = _mm_mul_epi32( pred_lag_ptr_0123, b_Q14_0123 ); - pred_lag_ptr_0123 = _mm_srli_si128( pred_lag_ptr_0123, 2 ); - - pred_lag_ptr_0123 = _mm_add_epi32( pred_lag_ptr_0123, xmm_tempa ); - /* equal shift right 8 bytes*/ - xmm_tempa = _mm_shuffle_epi32( pred_lag_ptr_0123, _MM_SHUFFLE( 0, 0, 3, 2 ) ); - xmm_tempa = _mm_add_epi32( xmm_tempa, pred_lag_ptr_0123 ); - - LTP_pred_Q13 += _mm_cvtsi128_si32( xmm_tempa ); - - LTP_pred_Q13 = silk_SMLAWB( LTP_pred_Q13, pred_lag_ptr[ -4 ], b_Q14[ 4 ] ); - pred_lag_ptr++; - } - } - - /* Noise shape feedback */ - NSQ->sAR2_Q14[ 9 ] = NSQ->sAR2_Q14[ 8 ]; - NSQ->sAR2_Q14[ 8 ] = _mm_cvtsi128_si32( _mm_srli_si128(_mm_unpackhi_epi16( sAR2_Q14_lo_76543210, sAR2_Q14_hi_76543210 ), 12 ) ); - - sAR2_Q14_hi_76543210 = _mm_slli_si128( sAR2_Q14_hi_76543210, 2 ); - sAR2_Q14_lo_76543210 = _mm_slli_si128( sAR2_Q14_lo_76543210, 2 ); - - sAR2_Q14_hi_76543210 = _mm_insert_epi16( sAR2_Q14_hi_76543210, (xq_Q14 >> 16), 0 ); - sAR2_Q14_lo_76543210 = _mm_insert_epi16( sAR2_Q14_lo_76543210, (xq_Q14), 0 ); - - /* high part, use pmaddwd, results in 4 32-bit */ - xmm_hi_07 = _mm_madd_epi16( sAR2_Q14_hi_76543210, AR_shp_Q13_76543210 ); - - /* low part, use pmulhw, results in 8 16-bit, note we need simulate unsigned * signed,_mm_srai_epi16(sAR2_Q14_lo_76543210, 15) */ - xmm_tempa = _mm_cmpgt_epi16( _mm_setzero_si128(), sAR2_Q14_lo_76543210 ); - xmm_tempa = _mm_and_si128( xmm_tempa, AR_shp_Q13_76543210 ); - - xmm_lo_07 = _mm_mulhi_epi16( sAR2_Q14_lo_76543210, AR_shp_Q13_76543210 ); - xmm_lo_07 = _mm_add_epi16( xmm_lo_07, xmm_tempa ); - - xmm_lo_07 = _mm_madd_epi16( xmm_lo_07, xmm_one ); - - /* accumulate */ - xmm_hi_07 = _mm_add_epi32( xmm_hi_07, xmm_lo_07 ); - - xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_unpackhi_epi64(xmm_hi_07, xmm_hi_07 ) ); - xmm_hi_07 = _mm_add_epi32( xmm_hi_07, _mm_shufflelo_epi16(xmm_hi_07, 0x0E ) ); - - n_AR_Q12 = 5 + _mm_cvtsi128_si32( xmm_hi_07 ); - - n_AR_Q12 = silk_SMLAWB( n_AR_Q12, NSQ->sAR2_Q14[ 8 ], AR_shp_Q13[ 8 ] ); - n_AR_Q12 = silk_SMLAWB( n_AR_Q12, NSQ->sAR2_Q14[ 9 ], AR_shp_Q13[ 9 ] ); - - n_AR_Q12 = silk_LSHIFT32( n_AR_Q12, 1 ); /* Q11 -> Q12 */ - n_AR_Q12 = silk_SMLAWB( n_AR_Q12, sLF_AR_shp_Q14, Tilt_Q14 ); - - n_LF_Q12 = silk_SMULWB( NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx - 1 ], LF_shp_Q14 ); - n_LF_Q12 = silk_SMLAWT( n_LF_Q12, sLF_AR_shp_Q14, LF_shp_Q14 ); - - silk_assert( lag > 0 || signalType != TYPE_VOICED ); - - /* Combine prediction and noise shaping signals */ - tmp1 = silk_SUB32( silk_LSHIFT32( LPC_pred_Q10, 2 ), n_AR_Q12 ); /* Q12 */ - tmp1 = silk_SUB32( tmp1, n_LF_Q12 ); /* Q12 */ - if( lag > 0 ) { - /* Symmetric, packed FIR coefficients */ - n_LTP_Q13 = silk_SMULWB( silk_ADD32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 ); - n_LTP_Q13 = silk_SMLAWT( n_LTP_Q13, shp_lag_ptr[ -1 ], HarmShapeFIRPacked_Q14 ); - n_LTP_Q13 = silk_LSHIFT( n_LTP_Q13, 1 ); - shp_lag_ptr++; - - tmp2 = silk_SUB32( LTP_pred_Q13, n_LTP_Q13 ); /* Q13 */ - tmp1 = silk_ADD_LSHIFT32( tmp2, tmp1, 1 ); /* Q13 */ - tmp1 = silk_RSHIFT_ROUND( tmp1, 3 ); /* Q10 */ - } else { - tmp1 = silk_RSHIFT_ROUND( tmp1, 2 ); /* Q10 */ - } - - r_Q10 = silk_SUB32( x_sc_Q10[ i ], tmp1 ); /* residual error Q10 */ - - /* Generate dither */ - NSQ->rand_seed = silk_RAND( NSQ->rand_seed ); - - /* Flip sign depending on dither */ - tmp2 = -r_Q10; - if ( NSQ->rand_seed < 0 ) r_Q10 = tmp2; - - r_Q10 = silk_LIMIT_32( r_Q10, -(31 << 10), 30 << 10 ); - - /* Find two quantization level candidates and measure their rate-distortion */ - q1_Q10 = silk_SUB32( r_Q10, offset_Q10 ); - q1_Q0 = silk_RSHIFT( q1_Q10, 10 ); - - q1_Q10 = table[q1_Q0][0]; - q2_Q10 = table[q1_Q0][1]; - - if (r_Q10 * table[q1_Q0][2] - table[q1_Q0][3] < 0) - { - q1_Q10 = q2_Q10; - } - - pulses[ i ] = (opus_int8)silk_RSHIFT_ROUND( q1_Q10, 10 ); - - /* Excitation */ - exc_Q14 = silk_LSHIFT( q1_Q10, 4 ); - - tmp2 = -exc_Q14; - if ( NSQ->rand_seed < 0 ) exc_Q14 = tmp2; - - /* Add predictions */ - LPC_exc_Q14 = silk_ADD_LSHIFT32( exc_Q14, LTP_pred_Q13, 1 ); - xq_Q14 = silk_ADD_LSHIFT32( LPC_exc_Q14, LPC_pred_Q10, 4 ); - - /* Update states */ - psLPC_Q14++; - *psLPC_Q14 = xq_Q14; - sLF_AR_shp_Q14 = silk_SUB_LSHIFT32( xq_Q14, n_AR_Q12, 2 ); - - NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx ] = silk_SUB_LSHIFT32( sLF_AR_shp_Q14, n_LF_Q12, 2 ); - sLTP_Q15[ NSQ->sLTP_buf_idx ] = silk_LSHIFT( LPC_exc_Q14, 1 ); - NSQ->sLTP_shp_buf_idx++; - NSQ->sLTP_buf_idx++; - - /* Make dither dependent on quantized signal */ - NSQ->rand_seed = silk_ADD32_ovflw( NSQ->rand_seed, pulses[ i ] ); - } - - NSQ->sLF_AR_shp_Q14 = sLF_AR_shp_Q14; - - /* Scale XQ back to normal level before saving */ - psLPC_Q14 = &NSQ->sLPC_Q14[ NSQ_LPC_BUF_LENGTH ]; - - /* write back sAR2_Q14 */ - xmm_tempa = _mm_unpackhi_epi16( sAR2_Q14_lo_76543210, sAR2_Q14_hi_76543210 ); - xmm_tempb = _mm_unpacklo_epi16( sAR2_Q14_lo_76543210, sAR2_Q14_hi_76543210 ); - _mm_storeu_si128( (__m128i *)(&NSQ->sAR2_Q14[ 4 ]), xmm_tempa ); - _mm_storeu_si128( (__m128i *)(&NSQ->sAR2_Q14[ 0 ]), xmm_tempb ); - - /* xq[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( psLPC_Q14[ i ], Gain_Q10 ), 8 ) ); */ - { - __m128i xmm_Gain_Q10; - __m128i xmm_xq_Q14_3210, xmm_xq_Q14_x3x1, xmm_xq_Q14_7654, xmm_xq_Q14_x7x5; - - /* prepare (1 << 7) in packed 4 32-bits */ - xmm_tempa = _mm_set1_epi32( (1 << 7) ); - - /* prepare Gain_Q10 in packed 4 32-bits */ - xmm_Gain_Q10 = _mm_set1_epi32( Gain_Q10 ); - - /* process xq */ - for (i = 0; i < length - 7; i += 8) - { - xmm_xq_Q14_3210 = _mm_loadu_si128( (__m128i *)(&(psLPC_Q14[ i + 0 ] ) ) ); - xmm_xq_Q14_7654 = _mm_loadu_si128( (__m128i *)(&(psLPC_Q14[ i + 4 ] ) ) ); - - /* equal shift right 4 bytes*/ - xmm_xq_Q14_x3x1 = _mm_shuffle_epi32( xmm_xq_Q14_3210, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - /* equal shift right 4 bytes*/ - xmm_xq_Q14_x7x5 = _mm_shuffle_epi32( xmm_xq_Q14_7654, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - - xmm_xq_Q14_3210 = _mm_mul_epi32( xmm_xq_Q14_3210, xmm_Gain_Q10 ); - xmm_xq_Q14_x3x1 = _mm_mul_epi32( xmm_xq_Q14_x3x1, xmm_Gain_Q10 ); - xmm_xq_Q14_7654 = _mm_mul_epi32( xmm_xq_Q14_7654, xmm_Gain_Q10 ); - xmm_xq_Q14_x7x5 = _mm_mul_epi32( xmm_xq_Q14_x7x5, xmm_Gain_Q10 ); - - xmm_xq_Q14_3210 = _mm_srli_epi64( xmm_xq_Q14_3210, 16 ); - xmm_xq_Q14_x3x1 = _mm_slli_epi64( xmm_xq_Q14_x3x1, 16 ); - xmm_xq_Q14_7654 = _mm_srli_epi64( xmm_xq_Q14_7654, 16 ); - xmm_xq_Q14_x7x5 = _mm_slli_epi64( xmm_xq_Q14_x7x5, 16 ); - - xmm_xq_Q14_3210 = _mm_blend_epi16( xmm_xq_Q14_3210, xmm_xq_Q14_x3x1, 0xCC ); - xmm_xq_Q14_7654 = _mm_blend_epi16( xmm_xq_Q14_7654, xmm_xq_Q14_x7x5, 0xCC ); - - /* silk_RSHIFT_ROUND(xq, 8) */ - xmm_xq_Q14_3210 = _mm_add_epi32( xmm_xq_Q14_3210, xmm_tempa ); - xmm_xq_Q14_7654 = _mm_add_epi32( xmm_xq_Q14_7654, xmm_tempa ); - - xmm_xq_Q14_3210 = _mm_srai_epi32( xmm_xq_Q14_3210, 8 ); - xmm_xq_Q14_7654 = _mm_srai_epi32( xmm_xq_Q14_7654, 8 ); - - /* silk_SAT16 */ - xmm_xq_Q14_3210 = _mm_packs_epi32( xmm_xq_Q14_3210, xmm_xq_Q14_7654 ); - - /* save to xq */ - _mm_storeu_si128( (__m128i *)(&xq[ i ] ), xmm_xq_Q14_3210 ); - } - } - for ( ; i < length; i++) - { - xq[i] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( psLPC_Q14[ i ], Gain_Q10 ), 8 ) ); - } - - /* Update LPC synth buffer */ - silk_memcpy( NSQ->sLPC_Q14, &NSQ->sLPC_Q14[ length ], NSQ_LPC_BUF_LENGTH * sizeof( opus_int32 ) ); -} - -static OPUS_INLINE void silk_nsq_scale_states_sse4_1( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - const opus_int32 x_Q3[], /* I input in Q3 */ - opus_int32 x_sc_Q10[], /* O input scaled with 1/Gain */ - const opus_int16 sLTP[], /* I re-whitened LTP state in Q0 */ - opus_int32 sLTP_Q15[], /* O LTP state matching scaled input */ - opus_int subfr, /* I subframe number */ - const opus_int LTP_scale_Q14, /* I */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag */ - const opus_int signal_type /* I Signal type */ -) -{ - opus_int i, lag; - opus_int32 gain_adj_Q16, inv_gain_Q31, inv_gain_Q23; - __m128i xmm_inv_gain_Q23, xmm_x_Q3_x2x0, xmm_x_Q3_x3x1; - - lag = pitchL[ subfr ]; - inv_gain_Q31 = silk_INVERSE32_varQ( silk_max( Gains_Q16[ subfr ], 1 ), 47 ); - silk_assert( inv_gain_Q31 != 0 ); - - /* Calculate gain adjustment factor */ - if( Gains_Q16[ subfr ] != NSQ->prev_gain_Q16 ) { - gain_adj_Q16 = silk_DIV32_varQ( NSQ->prev_gain_Q16, Gains_Q16[ subfr ], 16 ); - } else { - gain_adj_Q16 = (opus_int32)1 << 16; - } - - /* Scale input */ - inv_gain_Q23 = silk_RSHIFT_ROUND( inv_gain_Q31, 8 ); - - /* prepare inv_gain_Q23 in packed 4 32-bits */ - xmm_inv_gain_Q23 = _mm_set1_epi32(inv_gain_Q23); - - for( i = 0; i < psEncC->subfr_length - 3; i += 4 ) { - xmm_x_Q3_x2x0 = _mm_loadu_si128( (__m128i *)(&(x_Q3[ i ] ) ) ); - - /* equal shift right 4 bytes*/ - xmm_x_Q3_x3x1 = _mm_shuffle_epi32( xmm_x_Q3_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - - xmm_x_Q3_x2x0 = _mm_mul_epi32( xmm_x_Q3_x2x0, xmm_inv_gain_Q23 ); - xmm_x_Q3_x3x1 = _mm_mul_epi32( xmm_x_Q3_x3x1, xmm_inv_gain_Q23 ); - - xmm_x_Q3_x2x0 = _mm_srli_epi64( xmm_x_Q3_x2x0, 16 ); - xmm_x_Q3_x3x1 = _mm_slli_epi64( xmm_x_Q3_x3x1, 16 ); - - xmm_x_Q3_x2x0 = _mm_blend_epi16( xmm_x_Q3_x2x0, xmm_x_Q3_x3x1, 0xCC ); - - _mm_storeu_si128( (__m128i *)(&(x_sc_Q10[ i ] ) ), xmm_x_Q3_x2x0 ); - } - - for( ; i < psEncC->subfr_length; i++ ) { - x_sc_Q10[ i ] = silk_SMULWW( x_Q3[ i ], inv_gain_Q23 ); - } - - /* Save inverse gain */ - NSQ->prev_gain_Q16 = Gains_Q16[ subfr ]; - - /* After rewhitening the LTP state is un-scaled, so scale with inv_gain_Q16 */ - if( NSQ->rewhite_flag ) { - if( subfr == 0 ) { - /* Do LTP downscaling */ - inv_gain_Q31 = silk_LSHIFT( silk_SMULWB( inv_gain_Q31, LTP_scale_Q14 ), 2 ); - } - for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) { - silk_assert( i < MAX_FRAME_LENGTH ); - sLTP_Q15[ i ] = silk_SMULWB( inv_gain_Q31, sLTP[ i ] ); - } - } - - /* Adjust for changing gain */ - if( gain_adj_Q16 != (opus_int32)1 << 16 ) { - /* Scale long-term shaping state */ - __m128i xmm_gain_adj_Q16, xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1; - - /* prepare gain_adj_Q16 in packed 4 32-bits */ - xmm_gain_adj_Q16 = _mm_set1_epi32(gain_adj_Q16); - - for( i = NSQ->sLTP_shp_buf_idx - psEncC->ltp_mem_length; i < NSQ->sLTP_shp_buf_idx - 3; i += 4 ) - { - xmm_sLTP_shp_Q14_x2x0 = _mm_loadu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ) ); - /* equal shift right 4 bytes*/ - xmm_sLTP_shp_Q14_x3x1 = _mm_shuffle_epi32( xmm_sLTP_shp_Q14_x2x0, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - - xmm_sLTP_shp_Q14_x2x0 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x2x0, xmm_gain_adj_Q16 ); - xmm_sLTP_shp_Q14_x3x1 = _mm_mul_epi32( xmm_sLTP_shp_Q14_x3x1, xmm_gain_adj_Q16 ); - - xmm_sLTP_shp_Q14_x2x0 = _mm_srli_epi64( xmm_sLTP_shp_Q14_x2x0, 16 ); - xmm_sLTP_shp_Q14_x3x1 = _mm_slli_epi64( xmm_sLTP_shp_Q14_x3x1, 16 ); - - xmm_sLTP_shp_Q14_x2x0 = _mm_blend_epi16( xmm_sLTP_shp_Q14_x2x0, xmm_sLTP_shp_Q14_x3x1, 0xCC ); - - _mm_storeu_si128( (__m128i *)(&(NSQ->sLTP_shp_Q14[ i ] ) ), xmm_sLTP_shp_Q14_x2x0 ); - } - - for( ; i < NSQ->sLTP_shp_buf_idx; i++ ) { - NSQ->sLTP_shp_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLTP_shp_Q14[ i ] ); - } - - /* Scale long-term prediction state */ - if( signal_type == TYPE_VOICED && NSQ->rewhite_flag == 0 ) { - for( i = NSQ->sLTP_buf_idx - lag - LTP_ORDER / 2; i < NSQ->sLTP_buf_idx; i++ ) { - sLTP_Q15[ i ] = silk_SMULWW( gain_adj_Q16, sLTP_Q15[ i ] ); - } - } - - NSQ->sLF_AR_shp_Q14 = silk_SMULWW( gain_adj_Q16, NSQ->sLF_AR_shp_Q14 ); - - /* Scale short-term prediction and shaping states */ - for( i = 0; i < NSQ_LPC_BUF_LENGTH; i++ ) { - NSQ->sLPC_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sLPC_Q14[ i ] ); - } - for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) { - NSQ->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, NSQ->sAR2_Q14[ i ] ); - } - } -} diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/SigProc_FIX_sse.h thunderbird-91.9.1+build1/media/libopus/silk/x86/SigProc_FIX_sse.h --- thunderbird-91.8.1+build1/media/libopus/silk/x86/SigProc_FIX_sse.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/SigProc_FIX_sse.h 2022-05-20 05:47:16.000000000 +0000 @@ -67,7 +67,7 @@ #endif -opus_int64 silk_inner_prod16_aligned_64_sse4_1( +opus_int64 silk_inner_prod16_sse4_1( const opus_int16 *inVec1, const opus_int16 *inVec2, const opus_int len @@ -76,18 +76,18 @@ #if defined(OPUS_X86_PRESUME_SSE4_1) -#define silk_inner_prod16_aligned_64(inVec1, inVec2, len, arch) \ - ((void)(arch),silk_inner_prod16_aligned_64_sse4_1(inVec1, inVec2, len)) +#define silk_inner_prod16(inVec1, inVec2, len, arch) \ + ((void)(arch),silk_inner_prod16_sse4_1(inVec1, inVec2, len)) #else -extern opus_int64 (*const SILK_INNER_PROD16_ALIGNED_64_IMPL[OPUS_ARCHMASK + 1])( +extern opus_int64 (*const SILK_INNER_PROD16_IMPL[OPUS_ARCHMASK + 1])( const opus_int16 *inVec1, const opus_int16 *inVec2, const opus_int len); -# define silk_inner_prod16_aligned_64(inVec1, inVec2, len, arch) \ - ((*SILK_INNER_PROD16_ALIGNED_64_IMPL[(arch) & OPUS_ARCHMASK])(inVec1, inVec2, len)) +# define silk_inner_prod16(inVec1, inVec2, len, arch) \ + ((*SILK_INNER_PROD16_IMPL[(arch) & OPUS_ARCHMASK])(inVec1, inVec2, len)) #endif #endif diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/VAD_sse4_1.c thunderbird-91.9.1+build1/media/libopus/silk/x86/VAD_sse4_1.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/VAD_sse4_1.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/VAD_sse4_1.c 2022-05-20 05:47:18.000000000 +0000 @@ -1,5 +1,5 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang +/* Copyright (c) 2014-2020, Cisco Systems, INC + Written by XiangMingZhu WeiZhou MinPeng YanWang FrancisQuiers Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -63,6 +63,14 @@ SAVE_STACK; +#ifdef OPUS_CHECK_ASM + silk_encoder_state psEncC_c; + opus_int ret_c; + + silk_memcpy( &psEncC_c, psEncC, sizeof( psEncC_c ) ); + ret_c = silk_VAD_GetSA_Q8_c( &psEncC_c, pIn ); +#endif + /* Safety checks */ silk_assert( VAD_N_BANDS == 4 ); celt_assert( MAX_FRAME_LENGTH >= psEncC->frame_length ); @@ -233,15 +241,14 @@ speech_nrg += ( b + 1 ) * silk_RSHIFT( Xnrg[ b ] - psSilk_VAD->NL[ b ], 4 ); } + if( psEncC->frame_length == 20 * psEncC->fs_kHz ) { + speech_nrg = silk_RSHIFT32( speech_nrg, 1 ); + } /* Power scaling */ if( speech_nrg <= 0 ) { SA_Q15 = silk_RSHIFT( SA_Q15, 1 ); - } else if( speech_nrg < 32768 ) { - if( psEncC->frame_length == 10 * psEncC->fs_kHz ) { - speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 ); - } else { - speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 ); - } + } else if( speech_nrg < 16384 ) { + speech_nrg = silk_LSHIFT32( speech_nrg, 16 ); /* square-root */ speech_nrg = silk_SQRT_APPROX( speech_nrg ); @@ -272,6 +279,11 @@ psEncC->input_quality_bands_Q15[ b ] = silk_sigm_Q15( silk_RSHIFT( SNR_Q7 - 16 * 128, 4 ) ); } +#ifdef OPUS_CHECK_ASM + silk_assert( ret == ret_c ); + silk_assert( !memcmp( &psEncC_c, psEncC, sizeof( psEncC_c ) ) ); +#endif + RESTORE_STACK; return( ret ); } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/VAD_sse.c thunderbird-91.9.1+build1/media/libopus/silk/x86/VAD_sse.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/VAD_sse.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/VAD_sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,277 +0,0 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include - -#include "main.h" -#include "stack_alloc.h" - -/* Weighting factors for tilt measure */ -static const opus_int32 tiltWeights[ VAD_N_BANDS ] = { 30000, 6000, -12000, -12000 }; - -/***************************************/ -/* Get the speech activity level in Q8 */ -/***************************************/ -opus_int silk_VAD_GetSA_Q8_sse4_1( /* O Return value, 0 if success */ - silk_encoder_state *psEncC, /* I/O Encoder state */ - const opus_int16 pIn[] /* I PCM input */ -) -{ - opus_int SA_Q15, pSNR_dB_Q7, input_tilt; - opus_int decimated_framelength1, decimated_framelength2; - opus_int decimated_framelength; - opus_int dec_subframe_length, dec_subframe_offset, SNR_Q7, i, b, s; - opus_int32 sumSquared, smooth_coef_Q16; - opus_int16 HPstateTmp; - VARDECL( opus_int16, X ); - opus_int32 Xnrg[ VAD_N_BANDS ]; - opus_int32 NrgToNoiseRatio_Q8[ VAD_N_BANDS ]; - opus_int32 speech_nrg, x_tmp; - opus_int X_offset[ VAD_N_BANDS ]; - opus_int ret = 0; - silk_VAD_state *psSilk_VAD = &psEncC->sVAD; - - SAVE_STACK; - - /* Safety checks */ - silk_assert( VAD_N_BANDS == 4 ); - silk_assert( MAX_FRAME_LENGTH >= psEncC->frame_length ); - silk_assert( psEncC->frame_length <= 512 ); - silk_assert( psEncC->frame_length == 8 * silk_RSHIFT( psEncC->frame_length, 3 ) ); - - /***********************/ - /* Filter and Decimate */ - /***********************/ - decimated_framelength1 = silk_RSHIFT( psEncC->frame_length, 1 ); - decimated_framelength2 = silk_RSHIFT( psEncC->frame_length, 2 ); - decimated_framelength = silk_RSHIFT( psEncC->frame_length, 3 ); - /* Decimate into 4 bands: - 0 L 3L L 3L 5L - - -- - -- -- - 8 8 2 4 4 - - [0-1 kHz| temp. |1-2 kHz| 2-4 kHz | 4-8 kHz | - - They're arranged to allow the minimal ( frame_length / 4 ) extra - scratch space during the downsampling process */ - X_offset[ 0 ] = 0; - X_offset[ 1 ] = decimated_framelength + decimated_framelength2; - X_offset[ 2 ] = X_offset[ 1 ] + decimated_framelength; - X_offset[ 3 ] = X_offset[ 2 ] + decimated_framelength2; - ALLOC( X, X_offset[ 3 ] + decimated_framelength1, opus_int16 ); - - /* 0-8 kHz to 0-4 kHz and 4-8 kHz */ - silk_ana_filt_bank_1( pIn, &psSilk_VAD->AnaState[ 0 ], - X, &X[ X_offset[ 3 ] ], psEncC->frame_length ); - - /* 0-4 kHz to 0-2 kHz and 2-4 kHz */ - silk_ana_filt_bank_1( X, &psSilk_VAD->AnaState1[ 0 ], - X, &X[ X_offset[ 2 ] ], decimated_framelength1 ); - - /* 0-2 kHz to 0-1 kHz and 1-2 kHz */ - silk_ana_filt_bank_1( X, &psSilk_VAD->AnaState2[ 0 ], - X, &X[ X_offset[ 1 ] ], decimated_framelength2 ); - - /*********************************************/ - /* HP filter on lowest band (differentiator) */ - /*********************************************/ - X[ decimated_framelength - 1 ] = silk_RSHIFT( X[ decimated_framelength - 1 ], 1 ); - HPstateTmp = X[ decimated_framelength - 1 ]; - for( i = decimated_framelength - 1; i > 0; i-- ) { - X[ i - 1 ] = silk_RSHIFT( X[ i - 1 ], 1 ); - X[ i ] -= X[ i - 1 ]; - } - X[ 0 ] -= psSilk_VAD->HPstate; - psSilk_VAD->HPstate = HPstateTmp; - - /*************************************/ - /* Calculate the energy in each band */ - /*************************************/ - for( b = 0; b < VAD_N_BANDS; b++ ) { - /* Find the decimated framelength in the non-uniformly divided bands */ - decimated_framelength = silk_RSHIFT( psEncC->frame_length, silk_min_int( VAD_N_BANDS - b, VAD_N_BANDS - 1 ) ); - - /* Split length into subframe lengths */ - dec_subframe_length = silk_RSHIFT( decimated_framelength, VAD_INTERNAL_SUBFRAMES_LOG2 ); - dec_subframe_offset = 0; - - /* Compute energy per sub-frame */ - /* initialize with summed energy of last subframe */ - Xnrg[ b ] = psSilk_VAD->XnrgSubfr[ b ]; - for( s = 0; s < VAD_INTERNAL_SUBFRAMES; s++ ) { - __m128i xmm_X, xmm_acc; - sumSquared = 0; - - xmm_acc = _mm_setzero_si128(); - - for( i = 0; i < dec_subframe_length - 7; i += 8 ) - { - xmm_X = _mm_loadu_si128( (__m128i *)&(X[ X_offset[ b ] + i + dec_subframe_offset ] ) ); - xmm_X = _mm_srai_epi16( xmm_X, 3 ); - xmm_X = _mm_madd_epi16( xmm_X, xmm_X ); - xmm_acc = _mm_add_epi32( xmm_acc, xmm_X ); - } - - xmm_acc = _mm_add_epi32( xmm_acc, _mm_unpackhi_epi64( xmm_acc, xmm_acc ) ); - xmm_acc = _mm_add_epi32( xmm_acc, _mm_shufflelo_epi16( xmm_acc, 0x0E ) ); - - sumSquared += _mm_cvtsi128_si32( xmm_acc ); - - for( ; i < dec_subframe_length; i++ ) { - /* The energy will be less than dec_subframe_length * ( silk_int16_MIN / 8 ) ^ 2. */ - /* Therefore we can accumulate with no risk of overflow (unless dec_subframe_length > 128) */ - x_tmp = silk_RSHIFT( - X[ X_offset[ b ] + i + dec_subframe_offset ], 3 ); - sumSquared = silk_SMLABB( sumSquared, x_tmp, x_tmp ); - - /* Safety check */ - silk_assert( sumSquared >= 0 ); - } - - /* Add/saturate summed energy of current subframe */ - if( s < VAD_INTERNAL_SUBFRAMES - 1 ) { - Xnrg[ b ] = silk_ADD_POS_SAT32( Xnrg[ b ], sumSquared ); - } else { - /* Look-ahead subframe */ - Xnrg[ b ] = silk_ADD_POS_SAT32( Xnrg[ b ], silk_RSHIFT( sumSquared, 1 ) ); - } - - dec_subframe_offset += dec_subframe_length; - } - psSilk_VAD->XnrgSubfr[ b ] = sumSquared; - } - - /********************/ - /* Noise estimation */ - /********************/ - silk_VAD_GetNoiseLevels( &Xnrg[ 0 ], psSilk_VAD ); - - /***********************************************/ - /* Signal-plus-noise to noise ratio estimation */ - /***********************************************/ - sumSquared = 0; - input_tilt = 0; - for( b = 0; b < VAD_N_BANDS; b++ ) { - speech_nrg = Xnrg[ b ] - psSilk_VAD->NL[ b ]; - if( speech_nrg > 0 ) { - /* Divide, with sufficient resolution */ - if( ( Xnrg[ b ] & 0xFF800000 ) == 0 ) { - NrgToNoiseRatio_Q8[ b ] = silk_DIV32( silk_LSHIFT( Xnrg[ b ], 8 ), psSilk_VAD->NL[ b ] + 1 ); - } else { - NrgToNoiseRatio_Q8[ b ] = silk_DIV32( Xnrg[ b ], silk_RSHIFT( psSilk_VAD->NL[ b ], 8 ) + 1 ); - } - - /* Convert to log domain */ - SNR_Q7 = silk_lin2log( NrgToNoiseRatio_Q8[ b ] ) - 8 * 128; - - /* Sum-of-squares */ - sumSquared = silk_SMLABB( sumSquared, SNR_Q7, SNR_Q7 ); /* Q14 */ - - /* Tilt measure */ - if( speech_nrg < ( (opus_int32)1 << 20 ) ) { - /* Scale down SNR value for small subband speech energies */ - SNR_Q7 = silk_SMULWB( silk_LSHIFT( silk_SQRT_APPROX( speech_nrg ), 6 ), SNR_Q7 ); - } - input_tilt = silk_SMLAWB( input_tilt, tiltWeights[ b ], SNR_Q7 ); - } else { - NrgToNoiseRatio_Q8[ b ] = 256; - } - } - - /* Mean-of-squares */ - sumSquared = silk_DIV32_16( sumSquared, VAD_N_BANDS ); /* Q14 */ - - /* Root-mean-square approximation, scale to dBs, and write to output pointer */ - pSNR_dB_Q7 = (opus_int16)( 3 * silk_SQRT_APPROX( sumSquared ) ); /* Q7 */ - - /*********************************/ - /* Speech Probability Estimation */ - /*********************************/ - SA_Q15 = silk_sigm_Q15( silk_SMULWB( VAD_SNR_FACTOR_Q16, pSNR_dB_Q7 ) - VAD_NEGATIVE_OFFSET_Q5 ); - - /**************************/ - /* Frequency Tilt Measure */ - /**************************/ - psEncC->input_tilt_Q15 = silk_LSHIFT( silk_sigm_Q15( input_tilt ) - 16384, 1 ); - - /**************************************************/ - /* Scale the sigmoid output based on power levels */ - /**************************************************/ - speech_nrg = 0; - for( b = 0; b < VAD_N_BANDS; b++ ) { - /* Accumulate signal-without-noise energies, higher frequency bands have more weight */ - speech_nrg += ( b + 1 ) * silk_RSHIFT( Xnrg[ b ] - psSilk_VAD->NL[ b ], 4 ); - } - - /* Power scaling */ - if( speech_nrg <= 0 ) { - SA_Q15 = silk_RSHIFT( SA_Q15, 1 ); - } else if( speech_nrg < 32768 ) { - if( psEncC->frame_length == 10 * psEncC->fs_kHz ) { - speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 ); - } else { - speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 ); - } - - /* square-root */ - speech_nrg = silk_SQRT_APPROX( speech_nrg ); - SA_Q15 = silk_SMULWB( 32768 + speech_nrg, SA_Q15 ); - } - - /* Copy the resulting speech activity in Q8 */ - psEncC->speech_activity_Q8 = silk_min_int( silk_RSHIFT( SA_Q15, 7 ), silk_uint8_MAX ); - - /***********************************/ - /* Energy Level and SNR estimation */ - /***********************************/ - /* Smoothing coefficient */ - smooth_coef_Q16 = silk_SMULWB( VAD_SNR_SMOOTH_COEF_Q18, silk_SMULWB( (opus_int32)SA_Q15, SA_Q15 ) ); - - if( psEncC->frame_length == 10 * psEncC->fs_kHz ) { - smooth_coef_Q16 >>= 1; - } - - for( b = 0; b < VAD_N_BANDS; b++ ) { - /* compute smoothed energy-to-noise ratio per band */ - psSilk_VAD->NrgRatioSmth_Q8[ b ] = silk_SMLAWB( psSilk_VAD->NrgRatioSmth_Q8[ b ], - NrgToNoiseRatio_Q8[ b ] - psSilk_VAD->NrgRatioSmth_Q8[ b ], smooth_coef_Q16 ); - - /* signal to noise ratio in dB per band */ - SNR_Q7 = 3 * ( silk_lin2log( psSilk_VAD->NrgRatioSmth_Q8[b] ) - 8 * 128 ); - /* quality = sigmoid( 0.25 * ( SNR_dB - 16 ) ); */ - psEncC->input_quality_bands_Q15[ b ] = silk_sigm_Q15( silk_RSHIFT( SNR_Q7 - 16 * 128, 4 ) ); - } - - RESTORE_STACK; - return( ret ); -} diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse4_1.c thunderbird-91.9.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse4_1.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse4_1.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse4_1.c 2022-05-20 05:47:18.000000000 +0000 @@ -1,5 +1,5 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang +/* Copyright (c) 2014-2020, Cisco Systems, INC + Written by XiangMingZhu WeiZhou MinPeng YanWang FrancisQuiers Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -38,105 +38,136 @@ /* Entropy constrained matrix-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */ void silk_VQ_WMat_EC_sse4_1( opus_int8 *ind, /* O index of best codebook vector */ - opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */ + opus_int32 *res_nrg_Q15, /* O best residual energy */ + opus_int32 *rate_dist_Q8, /* O best total bitrate */ opus_int *gain_Q7, /* O sum of absolute LTP coefficients */ - const opus_int16 *in_Q14, /* I input vector to be quantized */ - const opus_int32 *W_Q18, /* I weighting matrix */ + const opus_int32 *XX_Q17, /* I correlation matrix */ + const opus_int32 *xX_Q17, /* I correlation vector */ const opus_int8 *cb_Q7, /* I codebook */ const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */ const opus_uint8 *cl_Q5, /* I code length for each codebook vector */ - const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */ + const opus_int subfr_len, /* I number of samples per subframe */ const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */ - opus_int L /* I number of vectors in codebook */ + const opus_int L /* I number of vectors in codebook */ ) { opus_int k, gain_tmp_Q7; const opus_int8 *cb_row_Q7; - opus_int16 diff_Q14[ 5 ]; - opus_int32 sum1_Q14, sum2_Q16; + opus_int32 neg_xX_Q24[ 5 ]; + opus_int32 sum1_Q15, sum2_Q24; + opus_int32 bits_res_Q8, bits_tot_Q8; + __m128i v_XX_31_Q17, v_XX_42_Q17, v_cb_row_31_Q7, v_cb_row_42_Q7, v_acc1_Q24, v_acc2_Q24; + + /* Negate and convert to new Q domain */ + neg_xX_Q24[ 0 ] = -silk_LSHIFT32( xX_Q17[ 0 ], 7 ); + neg_xX_Q24[ 1 ] = -silk_LSHIFT32( xX_Q17[ 1 ], 7 ); + neg_xX_Q24[ 2 ] = -silk_LSHIFT32( xX_Q17[ 2 ], 7 ); + neg_xX_Q24[ 3 ] = -silk_LSHIFT32( xX_Q17[ 3 ], 7 ); + neg_xX_Q24[ 4 ] = -silk_LSHIFT32( xX_Q17[ 4 ], 7 ); + + v_XX_31_Q17 = _mm_loadu_si128( (__m128i *)(&XX_Q17[ 1 ] ) ); + v_XX_42_Q17 = _mm_shuffle_epi32( v_XX_31_Q17, _MM_SHUFFLE( 0, 3, 2, 1 ) ); - __m128i C_tmp1, C_tmp2, C_tmp3, C_tmp4, C_tmp5; /* Loop over codebook */ - *rate_dist_Q14 = silk_int32_MAX; + *rate_dist_Q8 = silk_int32_MAX; + *res_nrg_Q15 = silk_int32_MAX; cb_row_Q7 = cb_Q7; + /* If things go really bad, at least *ind is set to something safe. */ + *ind = 0; for( k = 0; k < L; k++ ) { + opus_int32 penalty; gain_tmp_Q7 = cb_gain_Q7[k]; - - diff_Q14[ 0 ] = in_Q14[ 0 ] - silk_LSHIFT( cb_row_Q7[ 0 ], 7 ); - - C_tmp1 = OP_CVTEPI16_EPI32_M64( &in_Q14[ 1 ] ); - C_tmp2 = OP_CVTEPI8_EPI32_M32( &cb_row_Q7[ 1 ] ); - C_tmp2 = _mm_slli_epi32( C_tmp2, 7 ); - C_tmp1 = _mm_sub_epi32( C_tmp1, C_tmp2 ); - - diff_Q14[ 1 ] = _mm_extract_epi16( C_tmp1, 0 ); - diff_Q14[ 2 ] = _mm_extract_epi16( C_tmp1, 2 ); - diff_Q14[ 3 ] = _mm_extract_epi16( C_tmp1, 4 ); - diff_Q14[ 4 ] = _mm_extract_epi16( C_tmp1, 6 ); - /* Weighted rate */ - sum1_Q14 = silk_SMULBB( mu_Q9, cl_Q5[ k ] ); + /* Quantization error: 1 - 2 * xX * cb + cb' * XX * cb */ + sum1_Q15 = SILK_FIX_CONST( 1.001, 15 ); /* Penalty for too large gain */ - sum1_Q14 = silk_ADD_LSHIFT32( sum1_Q14, silk_max( silk_SUB32( gain_tmp_Q7, max_gain_Q7 ), 0 ), 10 ); - - silk_assert( sum1_Q14 >= 0 ); + penalty = silk_LSHIFT32( silk_max( silk_SUB32( gain_tmp_Q7, max_gain_Q7 ), 0 ), 11 ); - /* first row of W_Q18 */ - C_tmp3 = _mm_loadu_si128( (__m128i *)(&W_Q18[ 1 ] ) ); - C_tmp4 = _mm_mul_epi32( C_tmp3, C_tmp1 ); - C_tmp4 = _mm_srli_si128( C_tmp4, 2 ); - - C_tmp1 = _mm_shuffle_epi32( C_tmp1, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* shift right 4 bytes */ - C_tmp3 = _mm_shuffle_epi32( C_tmp3, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* shift right 4 bytes */ - - C_tmp5 = _mm_mul_epi32( C_tmp3, C_tmp1 ); - C_tmp5 = _mm_srli_si128( C_tmp5, 2 ); - - C_tmp5 = _mm_add_epi32( C_tmp4, C_tmp5 ); - C_tmp5 = _mm_slli_epi32( C_tmp5, 1 ); - - C_tmp5 = _mm_add_epi32( C_tmp5, _mm_shuffle_epi32( C_tmp5, _MM_SHUFFLE( 0, 0, 0, 2 ) ) ); - sum2_Q16 = _mm_cvtsi128_si32( C_tmp5 ); - - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 0 ], diff_Q14[ 0 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 0 ] ); - - /* second row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 7 ], diff_Q14[ 2 ] ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 8 ], diff_Q14[ 3 ] ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 9 ], diff_Q14[ 4 ] ); - sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 6 ], diff_Q14[ 1 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 1 ] ); - - /* third row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 13 ], diff_Q14[ 3 ] ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 14 ], diff_Q14[ 4 ] ); - sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 12 ], diff_Q14[ 2 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 2 ] ); - - /* fourth row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 19 ], diff_Q14[ 4 ] ); - sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 18 ], diff_Q14[ 3 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 3 ] ); - - /* last row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 24 ], diff_Q14[ 4 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 4 ] ); - - silk_assert( sum1_Q14 >= 0 ); + /* first row of XX_Q17 */ + v_cb_row_31_Q7 = OP_CVTEPI8_EPI32_M32( &cb_row_Q7[ 1 ] ); + v_cb_row_42_Q7 = _mm_shuffle_epi32( v_cb_row_31_Q7, _MM_SHUFFLE( 0, 3, 2, 1 ) ); + v_cb_row_31_Q7 = _mm_mul_epi32( v_XX_31_Q17, v_cb_row_31_Q7 ); + v_cb_row_42_Q7 = _mm_mul_epi32( v_XX_42_Q17, v_cb_row_42_Q7 ); + v_acc1_Q24 = _mm_add_epi64( v_cb_row_31_Q7, v_cb_row_42_Q7); + v_acc2_Q24 = _mm_shuffle_epi32( v_acc1_Q24, _MM_SHUFFLE( 1, 0, 3, 2 ) ); + v_acc1_Q24 = _mm_add_epi64( v_acc1_Q24, v_acc2_Q24); + sum2_Q24 = _mm_cvtsi128_si32( v_acc1_Q24 ); + sum2_Q24 = silk_ADD32( neg_xX_Q24[ 0 ], sum2_Q24 ); + sum2_Q24 = silk_LSHIFT32( sum2_Q24, 1 ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 0 ], cb_row_Q7[ 0 ] ); + sum1_Q15 = silk_SMLAWB( sum1_Q15, sum2_Q24, cb_row_Q7[ 0 ] ); + + /* second row of XX_Q17 */ + sum2_Q24 = silk_MLA( neg_xX_Q24[ 1 ], XX_Q17[ 7 ], cb_row_Q7[ 2 ] ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 8 ], cb_row_Q7[ 3 ] ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 9 ], cb_row_Q7[ 4 ] ); + sum2_Q24 = silk_LSHIFT32( sum2_Q24, 1 ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 6 ], cb_row_Q7[ 1 ] ); + sum1_Q15 = silk_SMLAWB( sum1_Q15, sum2_Q24, cb_row_Q7[ 1 ] ); + + /* third row of XX_Q17 */ + sum2_Q24 = silk_MLA( neg_xX_Q24[ 2 ], XX_Q17[ 13 ], cb_row_Q7[ 3 ] ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 14 ], cb_row_Q7[ 4 ] ); + sum2_Q24 = silk_LSHIFT32( sum2_Q24, 1 ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 12 ], cb_row_Q7[ 2 ] ); + sum1_Q15 = silk_SMLAWB( sum1_Q15, sum2_Q24, cb_row_Q7[ 2 ] ); + + /* fourth row of XX_Q17 */ + sum2_Q24 = silk_MLA( neg_xX_Q24[ 3 ], XX_Q17[ 19 ], cb_row_Q7[ 4 ] ); + sum2_Q24 = silk_LSHIFT32( sum2_Q24, 1 ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 18 ], cb_row_Q7[ 3 ] ); + sum1_Q15 = silk_SMLAWB( sum1_Q15, sum2_Q24, cb_row_Q7[ 3 ] ); + + /* last row of XX_Q17 */ + sum2_Q24 = silk_LSHIFT32( neg_xX_Q24[ 4 ], 1 ); + sum2_Q24 = silk_MLA( sum2_Q24, XX_Q17[ 24 ], cb_row_Q7[ 4 ] ); + sum1_Q15 = silk_SMLAWB( sum1_Q15, sum2_Q24, cb_row_Q7[ 4 ] ); /* find best */ - if( sum1_Q14 < *rate_dist_Q14 ) { - *rate_dist_Q14 = sum1_Q14; - *ind = (opus_int8)k; - *gain_Q7 = gain_tmp_Q7; + if( sum1_Q15 >= 0 ) { + /* Translate residual energy to bits using high-rate assumption (6 dB ==> 1 bit/sample) */ + bits_res_Q8 = silk_SMULBB( subfr_len, silk_lin2log( sum1_Q15 + penalty) - (15 << 7) ); + /* In the following line we reduce the codelength component by half ("-1"); seems to slightly improve quality */ + bits_tot_Q8 = silk_ADD_LSHIFT32( bits_res_Q8, cl_Q5[ k ], 3-1 ); + if( bits_tot_Q8 <= *rate_dist_Q8 ) { + *rate_dist_Q8 = bits_tot_Q8; + *res_nrg_Q15 = sum1_Q15 + penalty; + *ind = (opus_int8)k; + *gain_Q7 = gain_tmp_Q7; + } } /* Go to next cbk vector */ cb_row_Q7 += LTP_ORDER; } + +#ifdef OPUS_CHECK_ASM + { + opus_int8 ind_c = 0; + opus_int32 res_nrg_Q15_c = 0; + opus_int32 rate_dist_Q8_c = 0; + opus_int gain_Q7_c = 0; + + silk_VQ_WMat_EC_c( + &ind_c, + &res_nrg_Q15_c, + &rate_dist_Q8_c, + &gain_Q7_c, + XX_Q17, + xX_Q17, + cb_Q7, + cb_gain_Q7, + cl_Q5, + subfr_len, + max_gain_Q7, + L + ); + + silk_assert( *ind == ind_c ); + silk_assert( *res_nrg_Q15 == res_nrg_Q15_c ); + silk_assert( *rate_dist_Q8 == rate_dist_Q8_c ); + silk_assert( *gain_Q7 == gain_Q7_c ); + } +#endif } diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse.c thunderbird-91.9.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse.c 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/VQ_WMat_EC_sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,142 +0,0 @@ -/* Copyright (c) 2014, Cisco Systems, INC - Written by XiangMingZhu WeiZhou MinPeng YanWang - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include "main.h" -#include "celt/x86/x86cpu.h" - -/* Entropy constrained matrix-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */ -void silk_VQ_WMat_EC_sse4_1( - opus_int8 *ind, /* O index of best codebook vector */ - opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */ - opus_int *gain_Q7, /* O sum of absolute LTP coefficients */ - const opus_int16 *in_Q14, /* I input vector to be quantized */ - const opus_int32 *W_Q18, /* I weighting matrix */ - const opus_int8 *cb_Q7, /* I codebook */ - const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */ - const opus_uint8 *cl_Q5, /* I code length for each codebook vector */ - const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */ - const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */ - opus_int L /* I number of vectors in codebook */ -) -{ - opus_int k, gain_tmp_Q7; - const opus_int8 *cb_row_Q7; - opus_int16 diff_Q14[ 5 ]; - opus_int32 sum1_Q14, sum2_Q16; - - __m128i C_tmp1, C_tmp2, C_tmp3, C_tmp4, C_tmp5; - /* Loop over codebook */ - *rate_dist_Q14 = silk_int32_MAX; - cb_row_Q7 = cb_Q7; - for( k = 0; k < L; k++ ) { - gain_tmp_Q7 = cb_gain_Q7[k]; - - diff_Q14[ 0 ] = in_Q14[ 0 ] - silk_LSHIFT( cb_row_Q7[ 0 ], 7 ); - - C_tmp1 = OP_CVTEPI16_EPI32_M64( &in_Q14[ 1 ] ); - C_tmp2 = OP_CVTEPI8_EPI32_M32( &cb_row_Q7[ 1 ] ); - C_tmp2 = _mm_slli_epi32( C_tmp2, 7 ); - C_tmp1 = _mm_sub_epi32( C_tmp1, C_tmp2 ); - - diff_Q14[ 1 ] = _mm_extract_epi16( C_tmp1, 0 ); - diff_Q14[ 2 ] = _mm_extract_epi16( C_tmp1, 2 ); - diff_Q14[ 3 ] = _mm_extract_epi16( C_tmp1, 4 ); - diff_Q14[ 4 ] = _mm_extract_epi16( C_tmp1, 6 ); - - /* Weighted rate */ - sum1_Q14 = silk_SMULBB( mu_Q9, cl_Q5[ k ] ); - - /* Penalty for too large gain */ - sum1_Q14 = silk_ADD_LSHIFT32( sum1_Q14, silk_max( silk_SUB32( gain_tmp_Q7, max_gain_Q7 ), 0 ), 10 ); - - silk_assert( sum1_Q14 >= 0 ); - - /* first row of W_Q18 */ - C_tmp3 = _mm_loadu_si128( (__m128i *)(&W_Q18[ 1 ] ) ); - C_tmp4 = _mm_mul_epi32( C_tmp3, C_tmp1 ); - C_tmp4 = _mm_srli_si128( C_tmp4, 2 ); - - C_tmp1 = _mm_shuffle_epi32( C_tmp1, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* shift right 4 bytes */ - C_tmp3 = _mm_shuffle_epi32( C_tmp3, _MM_SHUFFLE( 0, 3, 2, 1 ) ); /* shift right 4 bytes */ - - C_tmp5 = _mm_mul_epi32( C_tmp3, C_tmp1 ); - C_tmp5 = _mm_srli_si128( C_tmp5, 2 ); - - C_tmp5 = _mm_add_epi32( C_tmp4, C_tmp5 ); - C_tmp5 = _mm_slli_epi32( C_tmp5, 1 ); - - C_tmp5 = _mm_add_epi32( C_tmp5, _mm_shuffle_epi32( C_tmp5, _MM_SHUFFLE( 0, 0, 0, 2 ) ) ); - sum2_Q16 = _mm_cvtsi128_si32( C_tmp5 ); - - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 0 ], diff_Q14[ 0 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 0 ] ); - - /* second row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 7 ], diff_Q14[ 2 ] ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 8 ], diff_Q14[ 3 ] ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 9 ], diff_Q14[ 4 ] ); - sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 6 ], diff_Q14[ 1 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 1 ] ); - - /* third row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 13 ], diff_Q14[ 3 ] ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 14 ], diff_Q14[ 4 ] ); - sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 12 ], diff_Q14[ 2 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 2 ] ); - - /* fourth row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 19 ], diff_Q14[ 4 ] ); - sum2_Q16 = silk_LSHIFT( sum2_Q16, 1 ); - sum2_Q16 = silk_SMLAWB( sum2_Q16, W_Q18[ 18 ], diff_Q14[ 3 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 3 ] ); - - /* last row of W_Q18 */ - sum2_Q16 = silk_SMULWB( W_Q18[ 24 ], diff_Q14[ 4 ] ); - sum1_Q14 = silk_SMLAWB( sum1_Q14, sum2_Q16, diff_Q14[ 4 ] ); - - silk_assert( sum1_Q14 >= 0 ); - - /* find best */ - if( sum1_Q14 < *rate_dist_Q14 ) { - *rate_dist_Q14 = sum1_Q14; - *ind = (opus_int8)k; - *gain_Q7 = gain_tmp_Q7; - } - - /* Go to next cbk vector */ - cb_row_Q7 += LTP_ORDER; - } -} diff -Nru thunderbird-91.8.1+build1/media/libopus/silk/x86/x86_silk_map.c thunderbird-91.9.1+build1/media/libopus/silk/x86/x86_silk_map.c --- thunderbird-91.8.1+build1/media/libopus/silk/x86/x86_silk_map.c 2022-04-15 07:41:05.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/silk/x86/x86_silk_map.c 2022-05-20 05:47:19.000000000 +0000 @@ -41,16 +41,16 @@ #include "fixed/main_FIX.h" -opus_int64 (*const SILK_INNER_PROD16_ALIGNED_64_IMPL[ OPUS_ARCHMASK + 1 ] )( +opus_int64 (*const SILK_INNER_PROD16_IMPL[ OPUS_ARCHMASK + 1 ] )( const opus_int16 *inVec1, const opus_int16 *inVec2, const opus_int len ) = { - silk_inner_prod16_aligned_64_c, /* non-sse */ - silk_inner_prod16_aligned_64_c, - silk_inner_prod16_aligned_64_c, - MAY_HAVE_SSE4_1( silk_inner_prod16_aligned_64 ), /* sse4.1 */ - MAY_HAVE_SSE4_1( silk_inner_prod16_aligned_64 ) /* avx */ + silk_inner_prod16_c, /* non-sse */ + silk_inner_prod16_c, + silk_inner_prod16_c, + MAY_HAVE_SSE4_1( silk_inner_prod16 ), /* sse4.1 */ + MAY_HAVE_SSE4_1( silk_inner_prod16 ) /* avx */ }; #endif @@ -66,23 +66,22 @@ MAY_HAVE_SSE4_1( silk_VAD_GetSA_Q8 ) /* avx */ }; -#if 0 /* FIXME: SSE disabled until the NSQ code gets updated. */ void (*const SILK_NSQ_IMPL[ OPUS_ARCHMASK + 1 ] )( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ) = { silk_NSQ_c, /* non-sse */ silk_NSQ_c, @@ -90,21 +89,20 @@ MAY_HAVE_SSE4_1( silk_NSQ ), /* sse4.1 */ MAY_HAVE_SSE4_1( silk_NSQ ) /* avx */ }; -#endif -#if 0 /* FIXME: SSE disabled until silk_VQ_WMat_EC_sse4_1() gets updated. */ void (*const SILK_VQ_WMAT_EC_IMPL[ OPUS_ARCHMASK + 1 ] )( opus_int8 *ind, /* O index of best codebook vector */ - opus_int32 *rate_dist_Q14, /* O best weighted quant error + mu * rate */ + opus_int32 *res_nrg_Q15, /* O best residual energy */ + opus_int32 *rate_dist_Q8, /* O best total bitrate */ opus_int *gain_Q7, /* O sum of absolute LTP coefficients */ - const opus_int16 *in_Q14, /* I input vector to be quantized */ - const opus_int32 *W_Q18, /* I weighting matrix */ + const opus_int32 *XX_Q17, /* I correlation matrix */ + const opus_int32 *xX_Q17, /* I correlation vector */ const opus_int8 *cb_Q7, /* I codebook */ const opus_uint8 *cb_gain_Q7, /* I codebook effective gain */ const opus_uint8 *cl_Q5, /* I code length for each codebook vector */ - const opus_int mu_Q9, /* I tradeoff betw. weighted error and rate */ + const opus_int subfr_len, /* I number of samples per subframe */ const opus_int32 max_gain_Q7, /* I maximum sum of absolute LTP coefficients */ - opus_int L /* I number of vectors in codebook */ + const opus_int L /* I number of vectors in codebook */ ) = { silk_VQ_WMat_EC_c, /* non-sse */ silk_VQ_WMat_EC_c, @@ -112,25 +110,23 @@ MAY_HAVE_SSE4_1( silk_VQ_WMat_EC ), /* sse4.1 */ MAY_HAVE_SSE4_1( silk_VQ_WMat_EC ) /* avx */ }; -#endif -#if 0 /* FIXME: SSE disabled until the NSQ code gets updated. */ void (*const SILK_NSQ_DEL_DEC_IMPL[ OPUS_ARCHMASK + 1 ] )( - const silk_encoder_state *psEncC, /* I Encoder State */ - silk_nsq_state *NSQ, /* I/O NSQ state */ - SideInfoIndices *psIndices, /* I/O Quantization Indices */ - const opus_int32 x_Q3[], /* I Prefiltered input signal */ - opus_int8 pulses[], /* O Quantized pulse signal */ - const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ - const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ - const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ - const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ - const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ - const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ - const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ - const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ - const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ - const opus_int LTP_scale_Q14 /* I LTP state scaling */ + const silk_encoder_state *psEncC, /* I Encoder State */ + silk_nsq_state *NSQ, /* I/O NSQ state */ + SideInfoIndices *psIndices, /* I/O Quantization Indices */ + const opus_int16 x16[], /* I Input */ + opus_int8 pulses[], /* O Quantized pulse signal */ + const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ + const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ + const opus_int16 AR_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], /* I Noise shaping coefs */ + const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ + const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ + const opus_int32 LF_shp_Q14[ MAX_NB_SUBFR ], /* I Low frequency shaping coefs */ + const opus_int32 Gains_Q16[ MAX_NB_SUBFR ], /* I Quantization step sizes */ + const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lags */ + const opus_int Lambda_Q10, /* I Rate/distortion tradeoff */ + const opus_int LTP_scale_Q14 /* I LTP state scaling */ ) = { silk_NSQ_del_dec_c, /* non-sse */ silk_NSQ_del_dec_c, @@ -138,7 +134,6 @@ MAY_HAVE_SSE4_1( silk_NSQ_del_dec ), /* sse4.1 */ MAY_HAVE_SSE4_1( silk_NSQ_del_dec ) /* avx */ }; -#endif #if defined(FIXED_POINT) diff -Nru thunderbird-91.8.1+build1/media/libopus/src/analysis.c thunderbird-91.9.1+build1/media/libopus/src/analysis.c --- thunderbird-91.8.1+build1/media/libopus/src/analysis.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/analysis.c 2022-05-20 05:47:18.000000000 +0000 @@ -31,7 +31,9 @@ #define ANALYSIS_C +#ifdef MLP_TRAINING #include +#endif #include "mathops.h" #include "kiss_fft.h" @@ -249,6 +251,15 @@ if (curr_lookahead<0) curr_lookahead += DETECT_SIZE; + tonal->read_subframe += len/(tonal->Fs/400); + while (tonal->read_subframe>=8) + { + tonal->read_subframe -= 8; + tonal->read_pos++; + } + if (tonal->read_pos>=DETECT_SIZE) + tonal->read_pos-=DETECT_SIZE; + /* On long frames, look at the second analysis window rather than the first. */ if (len > tonal->Fs/50 && pos != tonal->write_pos) { @@ -262,6 +273,8 @@ pos = DETECT_SIZE-1; pos0 = pos; OPUS_COPY(info_out, &tonal->info[pos], 1); + if (!info_out->valid) + return; tonality_max = tonality_avg = info_out->tonality; tonality_count = 1; /* Look at the neighbouring frames and pick largest bandwidth found (to be safe). */ @@ -393,14 +406,6 @@ info_out->music_prob_max = prob_max; /* printf("%f %f %f %f %f\n", prob_min, prob_max, prob_avg/prob_count, vad_prob, info_out->music_prob); */ - tonal->read_subframe += len/(tonal->Fs/400); - while (tonal->read_subframe>=8) - { - tonal->read_subframe -= 8; - tonal->read_pos++; - } - if (tonal->read_pos>=DETECT_SIZE) - tonal->read_pos-=DETECT_SIZE; } static const float std_feature_bias[9] = { @@ -420,6 +425,24 @@ #define SCALE_ENER(e) (e) #endif +#ifdef FIXED_POINT +static int is_digital_silence32(const opus_val32* pcm, int frame_size, int channels, int lsb_depth) +{ + int silence = 0; + opus_val32 sample_max = 0; +#ifdef MLP_TRAINING + return 0; +#endif + sample_max = celt_maxabs32(pcm, frame_size*channels); + + silence = (sample_max == 0); + (void)lsb_depth; + return silence; +} +#else +#define is_digital_silence32(pcm, frame_size, channels, lsb_depth) is_digital_silence(pcm, frame_size, channels, lsb_depth) +#endif + static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt_mode, const void *x, int len, int offset, int c1, int c2, int C, int lsb_depth, downmix_func downmix) { int i, b; @@ -464,8 +487,14 @@ float layer_out[MAX_NEURONS]; float below_max_pitch; float above_max_pitch; + int is_silence; SAVE_STACK; + if (!tonal->initialized) + { + tonal->mem_fill = 240; + tonal->initialized = 1; + } alpha = 1.f/IMIN(10, 1+tonal->count); alphaE = 1.f/IMIN(25, 1+tonal->count); /* Noise floor related decay for bandwidth detection: -2.2 dB/second */ @@ -483,8 +512,6 @@ } kfft = celt_mode->mdct.kfft[0]; - if (tonal->count==0) - tonal->mem_fill = 240; tonal->hp_ener_accum += (float)downmix_and_resample(downmix, x, &tonal->inmem[tonal->mem_fill], tonal->downmix_state, IMIN(len, ANALYSIS_BUF_SIZE-tonal->mem_fill), offset, c1, c2, C, tonal->Fs); @@ -500,6 +527,8 @@ if (tonal->write_pos>=DETECT_SIZE) tonal->write_pos-=DETECT_SIZE; + is_silence = is_digital_silence32(tonal->inmem, ANALYSIS_BUF_SIZE, 1, lsb_depth); + ALLOC(in, 480, kiss_fft_cpx); ALLOC(out, 480, kiss_fft_cpx); ALLOC(tonality, 240, float); @@ -518,6 +547,16 @@ &tonal->inmem[240], tonal->downmix_state, remaining, offset+ANALYSIS_BUF_SIZE-tonal->mem_fill, c1, c2, C, tonal->Fs); tonal->mem_fill = 240 + remaining; + if (is_silence) + { + /* On silence, copy the previous analysis. */ + int prev_pos = tonal->write_pos-2; + if (prev_pos < 0) + prev_pos += DETECT_SIZE; + OPUS_COPY(info, &tonal->info[prev_pos], 1); + RESTORE_STACK; + return; + } opus_fft(kfft, in, out, tonal->arch); #ifndef FIXED_POINT /* If there's any NaN on the input, the entire output will be NaN, so we only need to check one value. */ @@ -654,7 +693,7 @@ tonal->lowE[b] = logE[b]; tonal->highE[b] = MIN32(tonal->lowE[b]+15, tonal->highE[b]); } - relativeE += (logE[b]-tonal->lowE[b])/(1e-15f + (tonal->highE[b]-tonal->lowE[b])); + relativeE += (logE[b]-tonal->lowE[b])/(1e-5f + (tonal->highE[b]-tonal->lowE[b])); L1=L2=0; for (i=0;iactivity_probability = frame_probs[1]; - /* It seems like the RNN tends to have a bias towards speech and this - warping of the probabilities compensates for it. */ - info->music_prob = MAX16(1.f-10.f*(1.f-frame_probs[0]), MIN16(10.f*frame_probs[0], .12f+.69f*frame_probs[0]*(2.f-frame_probs[0]))); + info->music_prob = frame_probs[0]; /*printf("%f %f %f\n", frame_probs[0], frame_probs[1], info->music_prob);*/ #ifdef MLP_TRAINING @@ -940,7 +977,6 @@ analysis->analysis_offset -= frame_size; } - analysis_info->valid = 0; tonality_get_info(analysis, analysis_info, frame_size); } diff -Nru thunderbird-91.8.1+build1/media/libopus/src/analysis.h thunderbird-91.9.1+build1/media/libopus/src/analysis.h --- thunderbird-91.8.1+build1/media/libopus/src/analysis.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/analysis.h 2022-05-20 05:47:16.000000000 +0000 @@ -74,6 +74,7 @@ int read_pos; int read_subframe; float hp_ener_accum; + int initialized; float rnn_state[MAX_NEURONS]; opus_val32 downmix_state[3]; AnalysisInfo info[DETECT_SIZE]; diff -Nru thunderbird-91.8.1+build1/media/libopus/src/mapping_matrix.h thunderbird-91.9.1+build1/media/libopus/src/mapping_matrix.h --- thunderbird-91.8.1+build1/media/libopus/src/mapping_matrix.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/mapping_matrix.h 2022-05-20 05:47:18.000000000 +0000 @@ -53,7 +53,7 @@ opus_int16 *mapping_matrix_get_data(const MappingMatrix *matrix); void mapping_matrix_init( - MappingMatrix * const st, + MappingMatrix * const matrix, int rows, int cols, int gain, diff -Nru thunderbird-91.8.1+build1/media/libopus/src/mlp.c thunderbird-91.9.1+build1/media/libopus/src/mlp.c --- thunderbird-91.8.1+build1/media/libopus/src/mlp.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/mlp.c 2022-05-20 05:47:17.000000000 +0000 @@ -69,22 +69,29 @@ return .5f + .5f*tansig_approx(.5f*x); } -void compute_dense(const DenseLayer *layer, float *output, const float *input) +static void gemm_accum(float *out, const opus_int8 *weights, int rows, int cols, int col_stride, const float *x) { int i, j; + for (i=0;inb_inputs; N = layer->nb_neurons; stride = N; for (i=0;ibias[i]; - for (j=0;jinput_weights[j*stride + i]*input[j]; - output[i] = WEIGHTS_SCALE*sum; - } + output[i] = layer->bias[i]; + gemm_accum(output, layer->input_weights, N, M, stride, input); + for (i=0;isigmoid) { for (i=0;inb_inputs; N = gru->nb_neurons; stride = 3*N; + /* Compute update gate. */ for (i=0;ibias[i]; - for (j=0;jinput_weights[j*stride + i]*input[j]; - for (j=0;jrecurrent_weights[j*stride + i]*state[j]; - z[i] = sigmoid_approx(WEIGHTS_SCALE*sum); - } + z[i] = gru->bias[i]; + gemm_accum(z, gru->input_weights, N, M, stride, input); + gemm_accum(z, gru->recurrent_weights, N, N, stride, state); for (i=0;ibias[N + i]; - for (j=0;jinput_weights[N + j*stride + i]*input[j]; - for (j=0;jrecurrent_weights[N + j*stride + i]*state[j]; - r[i] = sigmoid_approx(WEIGHTS_SCALE*sum); - } + z[i] = sigmoid_approx(WEIGHTS_SCALE*z[i]); + + /* Compute reset gate. */ for (i=0;ibias[2*N + i]; - for (j=0;jinput_weights[2*N + j*stride + i]*input[j]; - for (j=0;jrecurrent_weights[2*N + j*stride + i]*state[j]*r[j]; - h[i] = z[i]*state[i] + (1-z[i])*tansig_approx(WEIGHTS_SCALE*sum); - } + r[i] = gru->bias[N + i]; + gemm_accum(r, &gru->input_weights[N], N, M, stride, input); + gemm_accum(r, &gru->recurrent_weights[N], N, N, stride, state); + for (i=0;ibias[2*N + i]; + for (i=0;iinput_weights[2*N], N, M, stride, input); + gemm_accum(h, &gru->recurrent_weights[2*N], N, N, stride, tmp); + for (i=0;i 5760) + if (count <= 0 || framesize*(opus_int32)count > 5760) return OPUS_INVALID_PACKET; len--; /* Padding flag is bit 6 */ diff -Nru thunderbird-91.8.1+build1/media/libopus/src/opus_encoder.c thunderbird-91.9.1+build1/media/libopus/src/opus_encoder.c --- thunderbird-91.8.1+build1/media/libopus/src/opus_encoder.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/opus_encoder.c 2022-05-20 05:47:16.000000000 +0000 @@ -112,7 +112,7 @@ opus_val16 delay_buffer[MAX_ENCODER_BUFFER*2]; #ifndef DISABLE_FLOAT_API int detected_bandwidth; - int nb_no_activity_frames; + int nb_no_activity_ms_Q1; opus_val32 peak_signal_energy; #endif int nonfinal_frame; /* current frame is not the final in a packet */ @@ -837,7 +837,7 @@ #ifndef DISABLE_FLOAT_API -static int is_digital_silence(const opus_val16* pcm, int frame_size, int channels, int lsb_depth) +int is_digital_silence(const opus_val16* pcm, int frame_size, int channels, int lsb_depth) { int silence = 0; opus_val32 sample_max = 0; @@ -892,44 +892,29 @@ #endif /* Decides if DTX should be turned on (=1) or off (=0) */ -static int decide_dtx_mode(float activity_probability, /* probability that current frame contains speech/music */ - int *nb_no_activity_frames, /* number of consecutive frames with no activity */ - opus_val32 peak_signal_energy, /* peak energy of desired signal detected so far */ - const opus_val16 *pcm, /* input pcm signal */ - int frame_size, /* frame size */ - int channels, - int is_silence, /* only digital silence detected in this frame */ - int arch - ) -{ - opus_val32 noise_energy; - - if (!is_silence) - { - if (activity_probability < DTX_ACTIVITY_THRESHOLD) /* is noise */ - { - noise_energy = compute_frame_energy(pcm, frame_size, channels, arch); - - /* but is sufficiently quiet */ - is_silence = peak_signal_energy >= (PSEUDO_SNR_THRESHOLD * noise_energy); - } - } - - if (is_silence) - { - /* The number of consecutive DTX frames should be within the allowed bounds */ - (*nb_no_activity_frames)++; +static int decide_dtx_mode(opus_int activity, /* indicates if this frame contains speech/music */ + int *nb_no_activity_ms_Q1, /* number of consecutive milliseconds with no activity, in Q1 */ + int frame_size_ms_Q1 /* number of miliseconds in this update, in Q1 */ + ) - if (*nb_no_activity_frames > NB_SPEECH_FRAMES_BEFORE_DTX) +{ + if (!activity) + { + /* The number of consecutive DTX frames should be within the allowed bounds. + Note that the allowed bound is defined in the SILK headers and assumes 20 ms + frames. As this function can be called with any frame length, a conversion to + milliseconds is done before the comparisons. */ + (*nb_no_activity_ms_Q1) += frame_size_ms_Q1; + if (*nb_no_activity_ms_Q1 > NB_SPEECH_FRAMES_BEFORE_DTX*20*2) { - if (*nb_no_activity_frames <= (NB_SPEECH_FRAMES_BEFORE_DTX + MAX_CONSECUTIVE_DTX)) + if (*nb_no_activity_ms_Q1 <= (NB_SPEECH_FRAMES_BEFORE_DTX + MAX_CONSECUTIVE_DTX)*20*2) /* Valid frame for DTX! */ return 1; else - (*nb_no_activity_frames) = NB_SPEECH_FRAMES_BEFORE_DTX; + (*nb_no_activity_ms_Q1) = NB_SPEECH_FRAMES_BEFORE_DTX*20*2; } } else - (*nb_no_activity_frames) = 0; + (*nb_no_activity_ms_Q1) = 0; return 0; } @@ -1102,6 +1087,8 @@ int analysis_read_subframe_bak=-1; int is_silence = 0; #endif + opus_int activity = VAD_NO_DECISION; + VARDECL(opus_val16, tmp_prefill); ALLOC_STACK; @@ -1140,21 +1127,19 @@ if (st->silk_mode.complexity >= 7 && st->Fs>=16000) #endif { - if (is_digital_silence(pcm, frame_size, st->channels, lsb_depth)) - { - is_silence = 1; - } else { - analysis_read_pos_bak = st->analysis.read_pos; - analysis_read_subframe_bak = st->analysis.read_subframe; - run_analysis(&st->analysis, celt_mode, analysis_pcm, analysis_size, frame_size, - c1, c2, analysis_channels, st->Fs, - lsb_depth, downmix, &analysis_info); - } + is_silence = is_digital_silence(pcm, frame_size, st->channels, lsb_depth); + analysis_read_pos_bak = st->analysis.read_pos; + analysis_read_subframe_bak = st->analysis.read_subframe; + run_analysis(&st->analysis, celt_mode, analysis_pcm, analysis_size, frame_size, + c1, c2, analysis_channels, st->Fs, + lsb_depth, downmix, &analysis_info); /* Track the peak signal energy */ if (!is_silence && analysis_info.activity_probability > DTX_ACTIVITY_THRESHOLD) st->peak_signal_energy = MAX32(MULT16_32_Q15(QCONST16(0.999f, 15), st->peak_signal_energy), compute_frame_energy(pcm, frame_size, st->channels, st->arch)); + } else if (st->analysis.initialized) { + tonality_analysis_reset(&st->analysis); } #else (void)analysis_pcm; @@ -1171,6 +1156,20 @@ if (!is_silence) st->voice_ratio = -1; + if (is_silence) + { + activity = !is_silence; + } else if (analysis_info.valid) + { + activity = analysis_info.activity_probability >= DTX_ACTIVITY_THRESHOLD; + if (!activity) + { + /* Mark as active if this noise frame is sufficiently loud */ + opus_val32 noise_energy = compute_frame_energy(pcm, frame_size, st->channels, st->arch); + activity = st->peak_signal_energy < (PSEUDO_SNR_THRESHOLD * noise_energy); + } + } + st->detected_bandwidth = 0; if (analysis_info.valid) { @@ -1338,6 +1337,14 @@ equiv_rate = compute_equiv_rate(st->bitrate_bps, st->stream_channels, st->Fs/frame_size, st->use_vbr, 0, st->silk_mode.complexity, st->silk_mode.packetLossPercentage); + /* Allow SILK DTX if DTX is enabled but the generalized DTX cannot be used, + e.g. because of the complexity setting or sample rate. */ +#ifndef DISABLE_FLOAT_API + st->silk_mode.useDTX = st->use_dtx && !(analysis_info.valid || is_silence); +#else + st->silk_mode.useDTX = st->use_dtx; +#endif + /* Mode selection depending on application and signal type */ if (st->application == OPUS_APPLICATION_RESTRICTED_LOWDELAY) { @@ -1386,13 +1393,7 @@ if (st->silk_mode.useInBandFEC && st->silk_mode.packetLossPercentage > (128-voice_est)>>4) st->mode = MODE_SILK_ONLY; /* When encoding voice and DTX is enabled but the generalized DTX cannot be used, - because of complexity and sampling frequency settings, switch to SILK DTX and - set the encoder to SILK mode */ -#ifndef DISABLE_FLOAT_API - st->silk_mode.useDTX = st->use_dtx && !(analysis_info.valid || is_silence); -#else - st->silk_mode.useDTX = st->use_dtx; -#endif + use SILK in order to make use of its DTX. */ if (st->silk_mode.useDTX && voice_est > 100) st->mode = MODE_SILK_ONLY; #endif @@ -1668,7 +1669,6 @@ if (st->mode != MODE_CELT_ONLY) { opus_int32 total_bitRate, celt_rate; - opus_int activity; #ifdef FIXED_POINT const opus_int16 *pcm_silk; #else @@ -1676,14 +1676,6 @@ ALLOC(pcm_silk, st->channels*frame_size, opus_int16); #endif - activity = VAD_NO_DECISION; -#ifndef DISABLE_FLOAT_API - if( analysis_info.valid ) { - /* Inform SILK about the Opus VAD decision */ - activity = ( analysis_info.activity_probability >= DTX_ACTIVITY_THRESHOLD ); - } -#endif - /* Distribute bits between SILK and CELT */ total_bitRate = 8 * bytes_target * frame_rate; if( st->mode == MODE_HYBRID ) { @@ -2144,14 +2136,15 @@ #ifndef DISABLE_FLOAT_API if (st->use_dtx && (analysis_info.valid || is_silence)) { - if (decide_dtx_mode(analysis_info.activity_probability, &st->nb_no_activity_frames, - st->peak_signal_energy, pcm, frame_size, st->channels, is_silence, st->arch)) + if (decide_dtx_mode(activity, &st->nb_no_activity_ms_Q1, 2*1000*frame_size/st->Fs)) { st->rangeFinal = 0; data[0] = gen_toc(st->mode, st->Fs/frame_size, curr_bandwidth, st->stream_channels); RESTORE_STACK; return 1; } + } else { + st->nb_no_activity_ms_Q1 = 0; } #endif @@ -2629,7 +2622,6 @@ goto bad_arg; } st->variable_duration = value; - celt_encoder_ctl(celt_enc, OPUS_SET_EXPERT_FRAME_DURATION(value)); } break; case OPUS_GET_EXPERT_FRAME_DURATION_REQUEST: @@ -2726,7 +2718,33 @@ ret = celt_encoder_ctl(celt_enc, OPUS_SET_ENERGY_MASK(value)); } break; - + case OPUS_GET_IN_DTX_REQUEST: + { + opus_int32 *value = va_arg(ap, opus_int32*); + if (!value) + { + goto bad_arg; + } + if (st->silk_mode.useDTX && (st->prev_mode == MODE_SILK_ONLY || st->prev_mode == MODE_HYBRID)) { + /* DTX determined by Silk. */ + silk_encoder *silk_enc = (silk_encoder*)(void *)((char*)st+st->silk_enc_offset); + *value = silk_enc->state_Fxx[0].sCmn.noSpeechCounter >= NB_SPEECH_FRAMES_BEFORE_DTX; + /* Stereo: check second channel unless only the middle channel was encoded. */ + if(*value == 1 && st->silk_mode.nChannelsInternal == 2 && silk_enc->prev_decode_only_middle == 0) { + *value = silk_enc->state_Fxx[1].sCmn.noSpeechCounter >= NB_SPEECH_FRAMES_BEFORE_DTX; + } + } +#ifndef DISABLE_FLOAT_API + else if (st->use_dtx) { + /* DTX determined by Opus. */ + *value = st->nb_no_activity_ms_Q1 >= NB_SPEECH_FRAMES_BEFORE_DTX*20*2; + } +#endif + else { + *value = 0; + } + } + break; case CELT_GET_MODE_REQUEST: { const CELTMode ** value = va_arg(ap, const CELTMode**); diff -Nru thunderbird-91.8.1+build1/media/libopus/src/opus_multistream_decoder.c thunderbird-91.9.1+build1/media/libopus/src/opus_multistream_decoder.c --- thunderbird-91.8.1+build1/media/libopus/src/opus_multistream_decoder.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/opus_multistream_decoder.c 2022-05-20 05:47:19.000000000 +0000 @@ -251,8 +251,11 @@ } packet_offset = 0; ret = opus_decode_native(dec, data, len, buf, frame_size, decode_fec, s!=st->layout.nb_streams-1, &packet_offset, soft_clip); - data += packet_offset; - len -= packet_offset; + if (!do_plc) + { + data += packet_offset; + len -= packet_offset; + } if (ret <= 0) { RESTORE_STACK; @@ -487,7 +490,7 @@ OpusDecoder **value; stream_id = va_arg(ap, opus_int32); if (stream_id<0 || stream_id >= st->layout.nb_streams) - ret = OPUS_BAD_ARG; + goto bad_arg; value = va_arg(ap, OpusDecoder**); if (!value) { diff -Nru thunderbird-91.8.1+build1/media/libopus/src/opus_multistream_encoder.c thunderbird-91.9.1+build1/media/libopus/src/opus_multistream_encoder.c --- thunderbird-91.8.1+build1/media/libopus/src/opus_multistream_encoder.c 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/opus_multistream_encoder.c 2022-05-20 05:47:18.000000000 +0000 @@ -443,7 +443,8 @@ char *ptr; if ((channels>255) || (channels<1) || (coupled_streams>streams) || - (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams)) + (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams) || + (streams+coupled_streams>channels)) return OPUS_BAD_ARG; st->arch = opus_select_arch(); @@ -459,8 +460,7 @@ st->layout.mapping[i] = mapping[i]; if (!validate_layout(&st->layout)) return OPUS_BAD_ARG; - if (mapping_type == MAPPING_TYPE_SURROUND && - !validate_encoder_layout(&st->layout)) + if (!validate_encoder_layout(&st->layout)) return OPUS_BAD_ARG; if (mapping_type == MAPPING_TYPE_AMBISONICS && !validate_ambisonics(st->layout.nb_channels, NULL, NULL)) @@ -595,7 +595,8 @@ int ret; OpusMSEncoder *st; if ((channels>255) || (channels<1) || (coupled_streams>streams) || - (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams)) + (streams<1) || (coupled_streams<0) || (streams>255-coupled_streams) || + (streams+coupled_streams>channels)) { if (error) *error = OPUS_BAD_ARG; @@ -1249,7 +1250,7 @@ OpusEncoder **value; stream_id = va_arg(ap, opus_int32); if (stream_id<0 || stream_id >= st->layout.nb_streams) - ret = OPUS_BAD_ARG; + goto bad_arg; value = va_arg(ap, OpusEncoder**); if (!value) { diff -Nru thunderbird-91.8.1+build1/media/libopus/src/opus_private.h thunderbird-91.9.1+build1/media/libopus/src/opus_private.h --- thunderbird-91.8.1+build1/media/libopus/src/opus_private.h 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/media/libopus/src/opus_private.h 2022-05-20 05:47:16.000000000 +0000 @@ -135,6 +135,7 @@ typedef void (*downmix_func)(const void *, opus_val32 *, int, int, int, int, int); void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C); void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C); +int is_digital_silence(const opus_val16* pcm, int frame_size, int channels, int lsb_depth); int encode_size(int size, unsigned char *data); diff -Nru thunderbird-91.8.1+build1/mozglue/dllservices/WindowsDllBlocklistDefs.in thunderbird-91.9.1+build1/mozglue/dllservices/WindowsDllBlocklistDefs.in --- thunderbird-91.8.1+build1/mozglue/dllservices/WindowsDllBlocklistDefs.in 2022-04-15 07:41:06.000000000 +0000 +++ thunderbird-91.9.1+build1/mozglue/dllservices/WindowsDllBlocklistDefs.in 2022-05-20 05:47:19.000000000 +0000 @@ -242,6 +242,9 @@ DllBlocklistEntry("WRDll.x64.dll", (1, 1, 0, 227)), DllBlocklistEntry("WRDll.x86.dll", (1, 1, 0, 227)), + # Webroot SecureAnywhere causes deadlocks, bug 1752466 + DllBlocklistEntry("WRusr.dll", (9, 0, 32, 49)), + # InfoWatch Device Monitor causes crashes, bug 1704276 DllBlocklistEntry("iwprn.dll", (6, 9, 11, 360)), DllBlocklistEntry("iwprn_x86.dll", (6, 9, 11, 360)), diff -Nru thunderbird-91.8.1+build1/netwerk/dns/effective_tld_names.dat thunderbird-91.9.1+build1/netwerk/dns/effective_tld_names.dat --- thunderbird-91.8.1+build1/netwerk/dns/effective_tld_names.dat 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/netwerk/dns/effective_tld_names.dat 2022-05-20 05:58:33.000000000 +0000 @@ -22,8 +22,7 @@ ad nom.ad -// ae : https://en.wikipedia.org/wiki/.ae -// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php +// ae : https://tdra.gov.ae/en/aeda/ae-policies ae co.ae net.ae @@ -7131,7 +7130,7 @@ // newGTLDs -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-03-27T15:13:38Z +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-04-30T15:14:46Z // This list is auto-generated, don't edit it manually. // aaa : 2015-02-26 American Automobile Association, Inc. aaa @@ -7472,7 +7471,7 @@ // black : 2014-01-16 Afilias Limited black -// blackfriday : 2014-01-16 UNR Corp. +// blackfriday : 2014-01-16 Registry Services, LLC blackfriday // blockbuster : 2015-07-30 Dish DBS Corporation @@ -8309,7 +8308,7 @@ // gea : 2014-12-04 GEA Group Aktiengesellschaft gea -// gent : 2014-01-23 COMBELL NV +// gent : 2014-01-23 Easyhost BV gent // genting : 2015-03-12 Resorts World Inc Pte. Ltd. @@ -9308,7 +9307,7 @@ // phone : 2016-06-02 Dish DBS Corporation phone -// photo : 2013-11-14 UNR Corp. +// photo : 2013-11-14 Registry Services, LLC photo // photography : 2013-09-20 Binky Moon, LLC @@ -9551,7 +9550,7 @@ // rugby : 2016-12-15 World Rugby Strategic Developments Limited rugby -// ruhr : 2013-10-02 regiodot GmbH & Co. KG +// ruhr : 2013-10-02 dotSaarland GmbH ruhr // run : 2015-03-19 Binky Moon, LLC @@ -9902,7 +9901,7 @@ // tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" tatar -// tattoo : 2013-08-30 UNR Corp. +// tattoo : 2013-08-30 Top Level Design, LLC tattoo // tax : 2014-03-20 Binky Moon, LLC @@ -12799,12 +12798,13 @@ co.pl // Microsoft Corporation : http://microsoft.com -// Submitted by Mitch Webster +// Submitted by Public Suffix List Admin *.azurecontainer.io azurewebsites.net azure-mobile.net cloudapp.net azurestaticapps.net +1.azurestaticapps.net centralus.azurestaticapps.net eastasia.azurestaticapps.net eastus2.azurestaticapps.net @@ -13398,6 +13398,34 @@ logoip.de logoip.com +// Scaleway : https://www.scaleway.com/ +// Submitted by Rémy Léone +fr-par-1.baremetal.scw.cloud +fr-par-2.baremetal.scw.cloud +nl-ams-1.baremetal.scw.cloud +fnc.fr-par.scw.cloud +functions.fnc.fr-par.scw.cloud +k8s.fr-par.scw.cloud +nodes.k8s.fr-par.scw.cloud +s3.fr-par.scw.cloud +s3-website.fr-par.scw.cloud +whm.fr-par.scw.cloud +priv.instances.scw.cloud +pub.instances.scw.cloud +k8s.scw.cloud +k8s.nl-ams.scw.cloud +nodes.k8s.nl-ams.scw.cloud +s3.nl-ams.scw.cloud +s3-website.nl-ams.scw.cloud +whm.nl-ams.scw.cloud +k8s.pl-waw.scw.cloud +nodes.k8s.pl-waw.scw.cloud +s3.pl-waw.scw.cloud +s3-website.pl-waw.scw.cloud +scalebook.scw.cloud +smartlabeling.scw.cloud +dedibox.fr + // schokokeks.org GbR : https://schokokeks.org/ // Submitted by Hanno Böck schokokeks.net @@ -13618,19 +13646,20 @@ // Synology, Inc. : https://www.synology.com/ // Submitted by Rony Weng -diskstation.me dscloud.biz -dscloud.me -dscloud.mobi +direct.quickconnect.cn dsmynas.com -dsmynas.net -dsmynas.org familyds.com -familyds.net -familyds.org +diskstation.me +dscloud.me i234.me myds.me synology.me +dscloud.mobi +dsmynas.net +familyds.net +dsmynas.org +familyds.org vpnplus.to direct.quickconnect.to diff -Nru thunderbird-91.8.1+build1/python/mozbuild/mozbuild/action/dumpsymbols.py thunderbird-91.9.1+build1/python/mozbuild/mozbuild/action/dumpsymbols.py --- thunderbird-91.8.1+build1/python/mozbuild/mozbuild/action/dumpsymbols.py 2022-04-15 07:41:07.000000000 +0000 +++ thunderbird-91.9.1+build1/python/mozbuild/mozbuild/action/dumpsymbols.py 2022-05-20 05:47:20.000000000 +0000 @@ -57,6 +57,9 @@ if objcopy: os.environ["OBJCOPY"] = objcopy + if buildconfig.substs.get("MOZ_THUNDERBIRD"): + sym_store_args.extend(["-s", os.path.join(buildconfig.topsrcdir, "comm")]) + args = ( [ sys.executable, diff -Nru thunderbird-91.8.1+build1/security/manager/ssl/nsSTSPreloadList.inc thunderbird-91.9.1+build1/security/manager/ssl/nsSTSPreloadList.inc --- thunderbird-91.8.1+build1/security/manager/ssl/nsSTSPreloadList.inc 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/security/manager/ssl/nsSTSPreloadList.inc 2022-05-20 05:58:33.000000000 +0000 @@ -8,7 +8,7 @@ /*****************************************************************************/ #include -const PRTime gPreloadListExpirationTime = INT64_C(1659351047098000); +const PRTime gPreloadListExpirationTime = INT64_C(1661770309221000); %% 0--1.de, 1 0-1.party, 1 @@ -274,7 +274,6 @@ 083967.com, 1 084552.com, 1 085851.com, 1 -087010.com, 1 08845.cc, 1 089818.com, 1 08detaxe.fr, 1 @@ -310,7 +309,6 @@ 0dev.cc, 1 0i0.nl, 1 0ii0.cf, 1 -0ik.de, 1 0iz.net, 1 0knowledge.de, 0 0o0.edu.pl, 1 @@ -322,7 +320,6 @@ 0rap.tk, 1 0verall.tk, 1 0vi.org, 1 -0vo.moe, 1 0wx.cat, 1 0wx.es, 1 0wx.eu, 1 @@ -374,6 +371,7 @@ 1-2-3bounce.co.uk, 1 1-pujcky-uvery.tk, 1 1-weightloss.com, 1 +100-downloads.com, 1 100-referencement.com, 1 10000hits.tk, 1 10000lab.net, 1 @@ -433,7 +431,6 @@ 101.qa, 1 10101.io, 1 101010.pl, 1 -1014.xyz, 1 101gen.com, 1 101st-airborne.tk, 1 101st.tk, 1 @@ -498,6 +495,7 @@ 110bu.com, 1 110bv.com, 1 110ce.com, 1 +110cl.com, 1 110eh.com, 1 110ej.com, 1 110ek.com, 1 @@ -518,6 +516,7 @@ 110kp.com, 1 110lh.com, 1 110lj.com, 1 +110na.com, 1 110ne.com, 1 110nf.com, 1 110ng.com, 1 @@ -728,11 +727,13 @@ 11jjqq.com, 1 11jjrr.com, 1 11jjtt.com, 1 +11jjyy.com, 1 11jjzz.com, 1 11kkee.com, 1 11kkff.com, 1 11kkss.com, 1 11men.tk, 1 +11ppbb.com, 1 11ppcc.com, 1 11ppdd.com, 1 11ppee.com, 1 @@ -798,6 +799,8 @@ 11yykk.com, 1 11yypp.com, 1 11yyqq.com, 1 +11yyrr.com, 1 +11yytt.com, 1 11yyxx.com, 1 11zzbb.com, 1 11zzdd.com, 1 @@ -850,9 +853,6 @@ 123365t.com, 1 1234.link, 1 123410.xyz, 1 -1234365a.com, 1 -1234365k.com, 1 -1234365y.com, 1 1234365z.com, 0 12345.lv, 1 12345678365.com, 1 @@ -1039,6 +1039,8 @@ 156k66.com, 1 156z6.com, 1 157z6.com, 1 +158306.com, 0 +158bg.com, 1 158fb.com, 1 158ia.com, 1 158in.com, 1 @@ -1107,6 +1109,8 @@ 162ca.com, 1 162cb.com, 1 162cf.com, 1 +162cr.com, 1 +162ea.com, 1 162ee.com, 1 162ff.com, 1 162jj.com, 1 @@ -1313,7 +1317,6 @@ 188cn-sb.com, 1 188da.com, 1 188wei.com, 1 -189dv.com, 1 189fc.com, 1 18f.gov, 1 18f.gsa.gov, 0 @@ -1438,7 +1441,6 @@ 1hfree.tk, 1 1huiszoeken.nl, 1 1ii.im, 1 -1in9.net, 1 1it.click, 1 1js.de, 1 1kando.com, 0 @@ -1536,7 +1538,6 @@ 200201.xyz, 1 2007-g8.tk, 1 20071019780415.com, 1 -2007gp.com, 1 2007nea.tk, 1 200aaaa.com, 1 200bbbb.com, 1 @@ -1551,6 +1552,7 @@ 200llll.com, 1 200mmmm.com, 1 200oooo.com, 1 +200pppp.com, 1 200qqqq.com, 1 200rrrr.com, 1 200uuuu.com, 1 @@ -1636,7 +1638,6 @@ 222k8.com, 1 222k8.net, 1 222tips.com, 1 -22321365.com, 0 225485.com, 1 2255motion.com, 1 2264707.ru, 1 @@ -1681,6 +1682,7 @@ 22bet.ng, 1 22bet86.com, 1 22betglobal.com, 1 +22ccaa.com, 1 22ccbb.com, 1 22ccpp.com, 1 22ccxx.com, 1 @@ -1720,6 +1722,7 @@ 22kkpp.com, 1 22kkyy.com, 1 22lc8.com, 0 +22momo.com, 1 22ppdd.com, 1 22ppgg.com, 1 22ppss.com, 1 @@ -1736,6 +1739,7 @@ 22ssjj.com, 1 22sskk.com, 1 22sstt.com, 1 +22tete.com, 1 22times.com, 1 22ttgg.com, 1 22vetter.st, 1 @@ -1757,7 +1761,6 @@ 2322bet.com, 1 233.be, 1 233.land, 1 -233.ro, 0 233.services, 1 2333.press, 1 233333.ga, 1 @@ -1777,7 +1780,6 @@ 233try.com, 1 233v2.com, 1 233vps.com, 1 -233yes.com, 1 2340365.com, 0 23436565.com, 1 2345666365.com, 0 @@ -1865,13 +1867,13 @@ 254vc.ml, 1 2555z6.com, 1 255k8.com, 1 -2566335.xyz, 1 256ac.com, 1 256be.com, 1 256bf.com, 1 256bl.com, 1 256bp.com, 1 256bq.com, 1 +256br.com, 1 256bt.com, 1 256bx.com, 1 256hh.com, 1 @@ -1893,7 +1895,9 @@ 262569.com, 1 269196.com, 1 2698pacificave.com, 1 +26bbc.com, 1 26ce.com, 1 +26ck.com, 1 26gt.com, 1 26ja.com, 1 26nc.com, 1 @@ -1904,6 +1908,8 @@ 26sr.com, 1 26ssb.com, 1 26uuu.info, 1 +26uuu.mobi, 1 +26uuu.us, 1 27000.best, 1 2718282.net, 1 272live.com, 1 @@ -2036,6 +2042,7 @@ 300cccc.com, 1 300dddd.com, 1 300hhhh.com, 1 +300jjjj.com, 1 300kkkk.com, 1 300llll.com, 1 300mmmm.com, 1 @@ -2153,7 +2160,6 @@ 33138app.com, 1 33138vip.com, 1 33168365.com, 1 -33321365.com, 0 333321365.com, 1 3333365t.com, 1 333365t.com, 1 @@ -2231,6 +2237,7 @@ 349533.com, 1 34ac.com, 1 34ax.com, 1 +34bg.com, 1 34bk.com, 1 34da.com, 1 34fc.com, 1 @@ -2243,11 +2250,13 @@ 34iu.com, 1 34iv.com, 1 34ix.com, 1 +34ja.com, 1 34jb.com, 1 34jg.com, 1 34ji.com, 1 34jm.com, 1 34jn.com, 1 +34jw.com, 1 34kr.com, 1 34lb.com, 1 34ld.com, 1 @@ -2256,6 +2265,8 @@ 34lr.com, 1 34metiza.ru, 1 34nd.com, 1 +34nh.com, 1 +34nj.com, 1 34nv.com, 1 34nw.com, 1 34oa.com, 1 @@ -2320,6 +2331,7 @@ 35jq.com, 1 35ud.com, 1 35ue.com, 1 +35uj.com, 1 35vn.com, 1 360-ot.de, 1 360365.com, 1 @@ -2337,6 +2349,7 @@ 360videoshare.com, 1 360vrs.com, 1 361116.com, 1 +3615jacky.fr, 1 363331.com, 1 364553.com, 1 365.asia, 1 @@ -2359,7 +2372,6 @@ 36533d.com, 1 36533e.com, 1 36533f.com, 1 -36533g.com, 1 36533h.com, 1 36533i.com, 1 36533j.com, 1 @@ -2462,11 +2474,14 @@ 369ck.com, 1 369cr.com, 1 369cu.com, 1 +369dp.com, 1 369dr.com, 1 369ec.com, 1 369eh.com, 1 369em.com, 1 369ep.com, 1 +369eq.com, 1 +369ex.com, 1 369fj.com, 1 369fn.com, 1 369ft.com, 1 @@ -2479,6 +2494,7 @@ 369pb.com, 1 369qb.com, 1 369ra.com, 1 +369rr.com, 1 369ve.com, 1 369wt.com, 1 36ag8.com, 1 @@ -2503,7 +2519,6 @@ 375ks.com, 1 377625.com, 1 377632.com, 1 -3778vip.com, 0 377ks.com, 1 377zzz.com, 1 37879.com, 0 @@ -2875,6 +2890,7 @@ 426773.com, 1 427552.com, 1 428northampton.com, 1 +42ch.com, 1 42day.info, 1 42entrepreneurs.fr, 0 42l.fr, 1 @@ -2933,8 +2949,10 @@ 46ap.com, 1 46ay.com, 1 46az.com, 1 +46bf.com, 1 46bg.com, 1 46bh.com, 1 +46bl.com, 1 46bn.com, 1 46bp.com, 1 46bq.com, 1 @@ -2957,6 +2975,7 @@ 46eq.com, 1 46et.com, 1 46ey.com, 1 +46fn.com, 1 46fp.com, 1 46fq.com, 1 46gc.com, 1 @@ -3134,7 +3153,6 @@ 4best.tk, 1 4bet86.com, 1 4budget.ga, 1 -4c-haircare.com, 1 4car.site, 1 4cavaleiros.com.br, 1 4cut.tk, 1 @@ -3596,6 +3614,7 @@ 5i.gs, 1 5icsb.com, 1 5ilg.com, 1 +5in.win, 0 5keys.ru, 1 5long88.com, 1 5net.ga, 1 @@ -3614,6 +3633,7 @@ 5yeb.com, 0 600aaaa.com, 1 600bbbb.com, 1 +600cao.com, 1 600dddd.com, 1 600iiii.com, 1 600k8.com, 1 @@ -3776,6 +3796,7 @@ 63et.com, 1 63fb.com, 1 63fd.com, 1 +63fg.com, 1 63fk.com, 1 63fn.com, 1 63fp.com, 1 @@ -4239,7 +4260,6 @@ 6lo.zgora.pl, 1 6meter.tk, 1 6play.fr, 1 -6qubedirectory.com, 1 6t-montjoye.org, 1 6thmarch.com, 1 6wbz.com, 1 @@ -4297,6 +4317,7 @@ 731433.com, 1 732365.com, 1 732433.com, 1 +733575.com, 0 73365365.com, 0 7337app.com, 1 734365.com, 1 @@ -4313,13 +4334,16 @@ 73ea.com, 1 73eb.com, 1 73ef.com, 1 +73eg.com, 1 73eh.com, 1 73ei.com, 1 73ej.com, 1 73ek.com, 1 73en.com, 1 +73eq.com, 1 73es.com, 1 73ex.com, 1 +73ez.com, 1 73fd.com, 1 73fg.com, 1 73fl.com, 1 @@ -4406,6 +4430,7 @@ 73xm.com, 1 73xv.com, 1 73yj.com, 1 +73yp.com, 1 73yr.com, 1 73yu.com, 1 73za.com, 1 @@ -4501,6 +4526,7 @@ 798sss.com, 1 799ks.com, 1 799z6.com, 1 +79ch.com, 1 7akawyna.tk, 1 7azarfazar.com, 1 7bet86.com, 1 @@ -4516,6 +4542,7 @@ 7geese.com, 1 7graus.pt, 1 7in0.me, 1 +7it-latam.com, 1 7ki.photography, 1 7kicks.com, 1 7kovrikov.ru, 1 @@ -4949,6 +4976,7 @@ 886k8.com, 1 886k8.net, 1 886z6.com, 1 +887.ag, 1 8871d.com, 1 8872d.com, 1 88740b.com, 1 @@ -5121,7 +5149,6 @@ 901543.com, 1 903422.com, 1 905422.com, 1 -906vv.com, 1 908vv.com, 1 90920.cn, 1 90r.jp, 1 @@ -5142,7 +5169,6 @@ 9137365.com, 0 914122.com, 1 918-siteinfo.com, 1 -918.com, 1 9180nn.com, 1 9180tt.com, 1 9180vv.com, 1 @@ -5208,6 +5234,7 @@ 91d85.com, 1 91fldz.com, 1 91imh.com, 1 +91milk.net, 1 91news.tk, 1 91tianmi.com, 0 924322.com, 1 @@ -5748,7 +5775,6 @@ 9to5notes.in, 1 9uelle.jp, 1 9ungnir.xyz, 1 -9vdy.com, 1 9vnd.com, 1 9vx.org, 1 9wsodl.com, 1 @@ -6349,8 +6375,8 @@ academylawreview.ac.in, 1 academyonlinetoyou.tk, 1 academytv.com.au, 1 -acadianteas.ca, 1 acadiate.com, 1 +acaeum.com, 0 acahaymarket.com.ec, 1 acalcio.ga, 1 acallawayroofing.com, 1 @@ -6385,7 +6411,6 @@ accelsnow.com, 1 accentchair.net, 1 accentthailand.com, 1 -acceptancerecoverycenter.com, 1 acces-elevation.fr, 1 accesloges.com, 1 access-board.gov, 1 @@ -6416,7 +6441,7 @@ accme.co, 1 accn.uk, 1 accniitmash.ru, 1 -accolade.com.br, 1 +accolade.com.br, 0 accoladescreens.com.au, 1 accomexicana.com.mx, 1 accomexico.com, 1 @@ -6480,6 +6505,7 @@ aceweb.ga, 1 acftienda.tk, 1 acfun.eu.org, 1 +acg.codes, 1 acg.mn, 1 acg.sb, 0 acgaudio.com, 1 @@ -6487,6 +6513,7 @@ acgmoon.com, 1 acgpiano.club, 1 acgqwq.gq, 1 +acgtalktw.com, 1 acgxi.tk, 1 achalay.org, 0 achat-de-lead.com, 1 @@ -6526,7 +6553,6 @@ ackadia.com, 1 ackermann.ch, 1 acklandstainless.com.au, 1 -aclasskids.ru, 1 aclfurniture.com, 1 aclipt.com, 1 acloud.one, 1 @@ -6935,7 +6961,6 @@ adinternational.com.au, 1 adiprospero.it, 1 adiraku.co.id, 1 -adiscorduser.com, 1 aditro.com, 1 adityatelange.in, 1 adiyamanhaberleri.tk, 1 @@ -6976,7 +7001,7 @@ admino.cz, 1 adminova.tk, 1 adminresurs.tk, 1 -adminrezo.fr, 1 +adminrezo.fr, 0 adminton.eu, 1 admirable.pro, 0 admiralshipsupplier.com, 0 @@ -7037,7 +7062,6 @@ adresults.com, 1 adresults.nl, 1 adrian-riemer.tk, 1 -adrian.web.id, 1 adrian2023.com, 1 adrianadelrossi.com, 1 adrianagonzalez.tk, 1 @@ -7182,7 +7206,6 @@ adventureally.com, 1 adventurealpinetreks.com, 1 adventurearts.tk, 1 -adventureboundlife.com, 1 adventurecorps.cf, 1 adventurecorps.ga, 1 adventurecorps.gq, 1 @@ -7411,7 +7434,6 @@ afbrunswick.com, 1 afbryt.com, 1 afc-capital.mx, 1 -afcmrs.org, 0 afcmrsfeedback.org, 0 afcmrstest.org, 1 afcurgentcarelyndhurst.com, 0 @@ -7487,7 +7509,6 @@ aforism.tk, 1 afp548.com, 1 afreelancersworld.com, 1 -afri.cc, 1 africa.dating, 1 africaindemander.tk, 1 africalebanon.tk, 1 @@ -7572,7 +7593,6 @@ ag66321.com, 1 ag66567.com, 1 ag666.vip, 1 -ag66668.com, 1 ag68ks.com, 1 ag69000.com, 1 ag72.vip, 1 @@ -7635,6 +7655,7 @@ ag918.top, 1 ag96.win, 1 ag961.com, 1 +ag98.tv, 0 ag9800.com, 1 ag983.com, 1 ag98ks.com, 1 @@ -7695,7 +7716,6 @@ agences-cegee.fr, 1 agencesaintpierre.fr, 1 agencetourismemali.ml, 1 -agencia.cat, 1 agenciacanina.tk, 1 agenciacorujadesign.com.br, 1 agenciaempleo.tk, 1 @@ -7841,7 +7861,6 @@ agnosticism.tk, 1 agnusbostel.tk, 1 agonpro.ch, 1 -agonswim.com, 1 agonworks.com, 0 agora-soft.cf, 1 agora.ru, 1 @@ -7873,7 +7892,6 @@ agptco.com, 1 agr.asia, 1 agralines.tk, 1 -agrargruppe.tk, 1 agraw.tk, 1 agregator.tk, 1 agrekov.ru, 1 @@ -7960,7 +7978,6 @@ agworkers.com, 1 agzlapp.com, 1 ahanet.tk, 1 -ahawkesrealtors.com, 1 ahc.fyi, 1 ahccorleone.tk, 1 ahcpr.gov, 1 @@ -8501,7 +8518,6 @@ akita-stream.com, 1 akiym.com, 1 akj.io, 1 -akkbouncycastles.co.uk, 1 akkerwinde.tk, 1 akkordy-skachat.ga, 1 aklagare.se, 1 @@ -8794,7 +8810,6 @@ aldersgateumc.tk, 1 aldevadigital.com, 1 aldiabcs.com, 1 -aldiafl.com, 1 aldien.com.br, 1 aldipresscentre.co.uk, 1 aldiwan-mobile.com, 1 @@ -8871,7 +8886,6 @@ alexaconnect.tk, 1 alexalist.tk, 1 alexander-beck.eu, 1 -alexander-cameron.com, 1 alexander-van-nieuwenhoven.tk, 1 alexanderb.info, 1 alexanderbernitz.eu, 1 @@ -8935,7 +8949,6 @@ alexismeza.dk, 1 alexismeza.es, 1 alexispoficial.tk, 1 -alexitor.com, 1 alexlambertz.de, 1 alexlombardo.tk, 1 alexlouden.com, 1 @@ -9148,7 +9161,6 @@ alkacoin.net, 1 alkamitech.com, 1 alkel.info, 1 -alkemi-si.fr, 1 alko-centr.ru, 1 alko-stop.cf, 1 alko-stop.ml, 1 @@ -9328,7 +9340,6 @@ allladyboys.com, 1 allline.shop, 1 allmagic.tk, 1 -allmajestic.com, 1 allmandlaw.com, 1 allmaps.tk, 1 allmaster.ga, 1 @@ -9350,7 +9361,6 @@ allopurinol.gq, 1 allopurinol100mg.tk, 1 allopurinol300mg.ml, 1 -alloutsec.com, 1 alloverthehill.com, 1 allpedia.tk, 1 allphaseclean.com, 1 @@ -9415,7 +9425,6 @@ allthingshealthy.org, 1 allthingsroyal.nl, 1 allthingssquared.com, 1 -allthingswatersports.com, 1 allthingswild.co.uk, 1 alltourism.tk, 1 alltrade.ga, 1 @@ -9433,7 +9442,6 @@ allvips.ru, 0 allvitalconstruction.com, 1 allways.tk, 1 -allweatherlandscaping.net, 1 allwebsites.tk, 1 allwebtuts.com, 1 allwiki.tk, 1 @@ -9442,7 +9450,6 @@ allwrestling.ga, 1 allyachts.cf, 1 allyachts.gq, 1 -alma365.it, 1 almaarkansas.gov, 1 almaascosmetics.com, 1 almaatlantica.com, 1 @@ -9543,7 +9550,6 @@ alphabet-z.xyz, 1 alphabeta.com, 1 alphabetmobilier.com, 1 -alphabetsigns.com, 1 alphabouncycastles.co.uk, 1 alphabytes.uk, 0 alphachannel.tk, 1 @@ -9640,6 +9646,7 @@ altaizemlya.ml, 1 altaizemlya.tk, 1 altaplana.be, 1 +altaynews.kz, 0 altco.group, 1 altcoinandme.com, 1 altd.cz, 1 @@ -9671,6 +9678,7 @@ alternative-kultur.tk, 1 alternative-reussite.org, 1 alternative.hosting, 1 +alternativebit.fr, 1 alternativedev.ca, 1 alternativeenergy.tk, 1 alternativefacts.cf, 1 @@ -9937,7 +9945,6 @@ amdelisi.tk, 1 amdm.ru, 1 amdouglas.com, 1 -amdouglas.uk, 1 amdrumors.com, 1 amdukis-bordercollies.tk, 1 ameba-capital.com, 1 @@ -10013,7 +10020,6 @@ americavip.tk, 1 americawiki.tk, 1 americkykongres.cz, 1 -americoadvogados.com.br, 1 americolorcorp.com, 1 americorpsoig.gov, 1 amerigrouphealthyliving.com, 1 @@ -10207,7 +10213,6 @@ amsconnectapp.com, 1 amscrosscomp.nl, 1 amsel305nc.ddnss.de, 1 -amsfoodhk.com, 1 amstelradio.tk, 1 amstelveentje.nl, 1 amsterdam4u.tk, 1 @@ -10314,10 +10319,10 @@ ananas.gq, 1 anandchowdhary.com, 1 anangeix.tk, 1 -ananiev.ml, 1 anankecosmetics.com, 1 anantshri.info, 1 ananyagupta.tk, 1 +ananyoo.com, 0 anapsi.tk, 1 anarajaoui.ma, 1 anarcasmetalicos.tk, 1 @@ -10603,7 +10608,6 @@ angelcorpus.tk, 1 angeldjmix.tk, 1 angelefloramendy.org, 1 -angelesverdes.org, 1 angelesydemonios.es, 1 angeletakis.net, 1 angelhammer.tk, 1 @@ -10786,7 +10790,6 @@ animesharp.com, 1 animeshka.tk, 1 animesoftcream.com, 1 -animestreamingfr.fr, 1 animetosho.org, 1 animetriad.com, 1 animewallpapers.tk, 1 @@ -10803,7 +10806,6 @@ anitahebe.com, 1 anitalk.dk, 1 anitavangelderleeromgeving.nl, 1 -anitaxcph.dk, 1 anitcloud.cc, 1 anitklib.ml, 1 anitop.ga, 1 @@ -10929,7 +10931,6 @@ annyaurora.net, 1 annynantasiri.com, 1 anodas.lt, 1 -anohana.org, 1 anojan.com, 1 anomalous.eu, 1 anomaly.tk, 1 @@ -11214,7 +11215,6 @@ anvilmetal.tk, 1 anvilsales.tk, 1 anvilsecure.com, 1 -anvimpex.com, 1 anvish.in, 1 anwalt.us, 1 anwarverdict.ml, 1 @@ -11253,7 +11253,6 @@ anytimesewerrepair.com, 1 anyuta-mebel.tk, 1 anyval.com, 1 -anyways.at, 1 anywhereworks.com, 1 anzalikala.com, 1 anzeiger.ag, 1 @@ -11409,6 +11408,7 @@ apit-kovrov.ru, 1 apitodemestre.com.br, 1 apiu.me, 1 +apix.uz, 1 apk.li, 1 apk4fun.com, 1 apkdv.com, 0 @@ -11418,7 +11418,6 @@ apkmody.io, 1 apkmody.ir, 1 apknut.com, 1 -apkoyunlar.club, 1 apkpokemongo.ga, 1 apkpokemongo.gq, 1 apkpokemongo.tk, 1 @@ -11620,7 +11619,6 @@ appsren.com, 1 appt.ch, 0 apptesters.com, 1 -apptomics.com, 1 apptoutou.com, 1 appuals.com, 1 appub.co.jp, 1 @@ -11957,6 +11955,7 @@ areanet.tk, 1 areata.tk, 1 areatrend.com, 1 +areavipbrasil.com.br, 1 areavoipers.ga, 1 areavoipest.ga, 1 areege.tk, 1 @@ -12014,7 +12013,6 @@ argrafiche.it, 1 argumentative-essay.gq, 1 argumentplus.ru, 1 -argyrakis.gr, 1 arheh.com, 1 arhipka.tk, 1 arhitekti.hr, 1 @@ -12124,7 +12122,6 @@ arlaperu.com, 1 arlatools.com, 1 arlecchinobuongustaio.it, 1 -arlen.tv, 1 arlenarmageddon.com, 1 arlenitas.com, 1 arletalibrary.com, 0 @@ -12159,8 +12156,6 @@ armchess.tk, 1 armdirectoryers.ga, 1 armdirectoryest.ga, 1 -armedpoet.com, 1 -armenians.online, 1 armeniaweb.tk, 1 armeo.top, 1 armfilm.co, 1 @@ -12244,7 +12239,6 @@ arose.io, 1 around-cms.de, 1 arouparia.com, 1 -arouzing.xyz, 1 arowsoft.tk, 1 arox.eu, 1 arp-arena.ml, 1 @@ -12264,7 +12258,6 @@ arquitet.com.br, 1 arr-outremont.ca, 1 arrakis.se, 1 -arrangeyour.com, 1 arraudi.be, 1 arraudi.eu, 1 arrazane.com.br, 1 @@ -12791,6 +12784,7 @@ asphy.me, 1 asphyxia.su, 1 aspiechattr.me, 1 +aspiescentral.com, 1 aspiradorasbaratas.net, 1 aspirantum.com, 1 aspiraplasticsurgery.com, 1 @@ -12829,7 +12823,6 @@ assemble-together.org, 1 assemblee-copropriete.fr, 1 assemblywithoutthewalls.org, 1 -assempsaibiza.com, 1 assentooriginal.com.br, 1 assertion.de, 1 assessoriati.com.br, 1 @@ -12867,7 +12860,7 @@ assured.se, 0 assuredspc.com, 1 asta-bar.de, 0 -astacreative.nl, 1 +astacreative.nl, 0 astal.rs, 1 astana.cf, 1 astanainform.tk, 1 @@ -12882,6 +12875,7 @@ astarfrommosul.ml, 1 astarmathsandphysics.com, 1 astateoftrance.tk, 1 +astaxanthin.de, 1 asteelflash.com, 1 astellaria.ee, 1 astengox.com, 1 @@ -13167,7 +13161,6 @@ atmydesk.tech, 1 atnis.com, 1 atnteam.tk, 1 -ato4sound.com, 1 atolm.net, 1 atom-china.org, 1 atom.solutions, 1 @@ -13191,6 +13184,7 @@ atovelin.tk, 1 atoz-union.org, 1 atozeventrentalsofpa.com, 1 +atplastics.vn, 0 atplonline.co, 1 atrafloor.com, 1 atraining.ru, 1 @@ -13244,7 +13238,6 @@ atunel.tk, 1 atvirtual.at, 1 atvsafety.gov, 1 -atwar-mod.com, 1 atwatermn.gov, 1 atwonline.org, 1 atxchirocoverage.com, 1 @@ -13274,6 +13267,7 @@ auburnperio.com, 1 aucarresainteloi.com, 1 aucielrose.com, 1 +auckland-lawyer.co.nz, 1 auckland-painter.co.nz, 1 aucklandcastles.co.uk, 1 auctionbv.tk, 1 @@ -13374,7 +13368,6 @@ aumentada.net, 1 aumilieudumonde.gf, 1 aumisc.com, 1 -aunali1.com, 1 auntiesnorkel.com, 1 auntmia.com, 1 aunto.xyz, 1 @@ -13434,7 +13427,6 @@ aussieseoadelaide.com.au, 1 aussieservicedown.com, 1 aussiestoresonline.com, 0 -aussiestories.dk, 1 austenplumbing.com, 1 austercita.tk, 1 austin-pearce.com, 1 @@ -13499,7 +13491,6 @@ author24.info, 1 authorise.computer, 1 authorise.network, 1 -authoritysolutions.com, 1 authorize.computer, 1 authorize.network, 1 authsrv.nl.eu.org, 1 @@ -13955,11 +13946,13 @@ aveapps.com, 0 aveclunettesoleil.fr, 1 avedesk.org, 0 +avelinodiaz.gal, 1 avellinno.com, 1 avellinotoday.it, 1 avelux.ru, 1 avengersonline.ml, 1 avengersonlinemovie.ga, 1 +aventurasnorowa.com, 0 avenuedesbebes.com, 1 avepol.cz, 1 avepol.eu, 1 @@ -14245,6 +14238,7 @@ aymericlagier.com, 1 aymhome.top, 1 ayon-games.tk, 1 +ayothemes.com, 1 ayresalpine.com, 1 ayresanaheim.com, 1 ayresapline.com, 1 @@ -14411,7 +14405,6 @@ azulweb.tk, 1 azur.ovh, 1 azurecraft.ga, 1 -azurecrimson.com, 1 azurecup.cz, 1 azurecup.online, 1 azurefabric.com, 1 @@ -14504,9 +14497,6 @@ b5910.com, 1 b5dev.com, 1 b61688.com, 1 -b62102.com, 1 -b62103.com, 1 -b62105.com, 1 b62a.com, 1 b62aa.com, 1 b62b.com, 1 @@ -14682,7 +14672,7 @@ baazee.de, 1 babacasino.net, 1 babacloud.ddns.net, 1 -babacsalogato.hu, 1 +babacsalogato.hu, 0 babacuhocica.tk, 1 babadag.tk, 1 babaei.net, 1 @@ -14774,7 +14764,6 @@ bachata.info, 1 bachelorampel.de, 1 baches-piscines.com, 1 -bachkhoa.net.vn, 1 bachlongbeach.com, 1 bachmannyachts.com, 1 bachmatt-baar.ch, 1 @@ -14841,7 +14830,6 @@ bacon-monitoring.org, 1 baconismagic.ca, 0 bacoux.com, 1 -bacq.pro, 1 bacsmegye.hu, 1 bacteriakit.com, 1 bactrim-antibiotic.gq, 1 @@ -14954,7 +14942,6 @@ bah.im, 0 bahadirh.ml, 1 bahaiprayers.io, 1 -bahana.net, 1 baharmusic24.tk, 1 bahiastudios.com, 1 bahnenimbild.de, 1 @@ -14983,7 +14970,6 @@ bailonga.com, 1 baindayman.com, 1 baircentral.com, 1 -bairrosonline.com, 1 bairuo.top, 0 bait55.ru, 1 baitable.ml, 1 @@ -15105,6 +15091,7 @@ balkonien.org, 1 balkonov.com.ua, 1 ball-bizarr.de, 1 +ball3d.es, 1 ball4training.com, 1 ballaratcapital.com, 1 ballaratcapital.com.au, 1 @@ -15230,7 +15217,6 @@ bangkok-dark-night.com, 1 bangkok-thailand.org, 0 bangkok.dating, 1 -bangkokcity.de, 1 bangkokcookingclass.com, 1 bangkokthailandescorts.com, 1 bangku.tk, 1 @@ -15365,6 +15351,7 @@ barberheatingandair.com, 1 barberscorner.tk, 1 barbershop-harmony.org, 0 +barbershop-lasvillas.com, 0 barbiecollectorjapan.cf, 1 barbiecollectorjapan.ga, 1 barbiecollectorjapan.gq, 1 @@ -15418,7 +15405,6 @@ barisi.me, 1 baristabetter.com, 1 baristador.com, 1 -baristanetwork.co.uk, 1 baritoday.it, 1 barkerjr.xyz, 1 barkingspidersaspets.com, 1 @@ -15754,6 +15740,7 @@ bazarotehijos.com, 1 bazdell.com, 0 bazhan.me, 1 +bazinga-events.nl, 1 bazos.at, 1 bazos.cz, 1 bazos.pl, 1 @@ -15838,7 +15825,6 @@ bceventhire.co.uk, 1 bch7al.ma, 0 bchep.com, 1 -bchnews.info, 1 bck-koethen.de, 1 bck-lelystad.nl, 1 bckaccompressoroz.com, 1 @@ -15871,7 +15857,6 @@ bdbxml.net, 1 bdd.fi, 1 bdepolytechgrenoble.fr, 1 -bdeshi.space, 1 bdfriends.tk, 1 bdikaros-network.net, 1 bdmusic25.us, 1 @@ -16031,7 +16016,6 @@ beautycarepack.com.ng, 1 beautycom.club, 1 beautycon.ir, 1 -beautyest.net, 1 beautyeyewear.ga, 1 beautyforceacademy.bg, 1 beautyinfos.de, 1 @@ -16101,12 +16085,10 @@ bedum-blues.tk, 1 bedwettingyoungsters.tk, 1 bee-creative.nl, 1 -bee-kart.com, 1 bee-line.org.uk, 1 bee-removal-dublin.com, 1 bee.supply, 1 bee.tools, 1 -beeapro.com, 1 beebeads.ga, 1 beecare.ch, 1 beedsolyjas.tk, 1 @@ -16118,7 +16100,6 @@ beehive42.net, 1 beehive42.nl, 1 beehive42.org, 1 -beehosting.pro, 1 beekbier.nl, 1 beekeeper.blog, 1 beekeeper.clothing, 1 @@ -16426,6 +16407,7 @@ benekill.tk, 1 benepiscinas.com.br, 1 benepla.com, 1 +beneri.se, 1 benetcasablancas.tk, 1 benevisim.com, 1 benevita.bio, 1 @@ -16635,7 +16617,7 @@ bernerland.cf, 1 bernerland.tk, 1 bernersennen.tk, 1 -bernexskiclub.ch, 1 +bernexskiclub.ch, 0 bernhard-eicher.ch, 1 bernhard-seidenspinner.de, 1 bernhardkau.de, 1 @@ -16691,7 +16673,6 @@ besnard.me, 1 besnik.de, 0 besnik.tk, 1 -besola.de, 1 besole.ch, 1 besolov.tk, 1 besox.be, 1 @@ -17086,12 +17067,12 @@ bet333r.com, 0 bet333s.com, 1 bet333t.com, 1 -bet333u.com, 1 -bet333v.com, 1 -bet333w.com, 1 +bet333u.com, 0 +bet333v.com, 0 +bet333w.com, 0 bet333x.com, 1 bet333y.com, 1 -bet333z.com, 1 +bet333z.com, 0 bet338c.com, 1 bet33app.com, 0 bet3639.com, 0 @@ -17672,6 +17653,7 @@ biggsconstruction.com, 1 bighappy.com, 1 bighome.ml, 1 +bighorn.co.jp, 1 bighouse-events.co.uk, 1 bigio.com.br, 1 biglagoonrentals.com, 1 @@ -17686,7 +17668,6 @@ bigpurse.tk, 1 bigrapidstownshipmi.gov, 1 bigrender.tk, 1 -bigsaleclub.com, 1 bigsam.us, 1 bigseo.ml, 1 bigseo.tk, 1 @@ -17840,7 +17821,7 @@ billybob.tk, 1 billyoh.com, 1 billywig.stream, 1 -biloxihistoricalsociety.org, 1 +biloxihistoricalsociety.org, 0 biloxisportfishing.com, 1 bilsho.com, 1 biltmoreatthepark.com, 1 @@ -18072,13 +18053,11 @@ bipolarworld.us, 1 bipyo.com, 0 birahugo.tk, 1 -birbaumer.li, 0 birchbarkfurniture.ch, 1 birchbarkfurniture.com, 0 birchbarkfurniture.fr, 0 birdbrowser.com, 1 birdersunite.com, 1 -birdfeeder.online, 1 birdgifs.nz, 1 birdiehosting.nl, 1 birdrave.com, 1 @@ -18093,7 +18072,7 @@ birjdid.tk, 1 birkengarten.ch, 1 birkenstab.de, 1 -birkhoff.me, 0 +birkhoff.me, 1 birkilise.com, 1 birkilise.net, 1 birkilise.org, 1 @@ -18142,7 +18121,6 @@ biso.ga, 1 bisoga.ga, 1 bisq.community, 1 -bisq.network, 1 bisq.services, 1 bisq.wiki, 1 bisrockloverclan.tk, 1 @@ -18495,7 +18473,6 @@ blablacar.pt, 1 blablacar.ro, 1 blablacar.rs, 1 -blablacar.ru, 1 black-air-rpg.com, 1 black-blog.com, 1 black-diamonds.cf, 1 @@ -18553,6 +18530,7 @@ blackgate.org, 1 blackhail.tk, 1 blackhat.dk, 1 +blackhat.nz, 1 blackheads.tk, 1 blackhealthwealth.com, 1 blackhelicopters.net, 1 @@ -18608,7 +18586,6 @@ blackswirl.com, 1 blackteam.org, 1 blacktemplars.tk, 1 -blackthrone.tk, 1 blacktown.eu, 1 blacktownbuildingsupplies.com.au, 1 blacktubes.cf, 1 @@ -18937,6 +18914,7 @@ bltc.net, 1 bltc.org, 1 bltc.org.uk, 1 +bltdirect.com, 1 bluavido.ml, 1 blubop.fr, 1 blubux.tk, 1 @@ -18993,7 +18971,6 @@ bluenet-26.com, 1 blueneuron.tk, 1 blueoakart.com, 1 -blueoceantech.us, 0 blueparrotpainting.com, 1 bluepearl.tk, 1 blueperil.de, 1 @@ -19040,7 +19017,6 @@ bluex.org, 1 blueyonder.com, 1 bluffcitytn.gov, 1 -bluffelectrician.co.za, 1 bluffplumber.co.za, 1 bluheron.ca, 1 blui.cf, 0 @@ -19259,13 +19235,11 @@ bojan.tk, 1 bojanowskiszkolka.pl, 1 bojiu99.cc, 1 -bokadoktorn-test.net, 1 bokadoktorn.se, 1 bokatas.tk, 1 boke112.com, 1 bokehandbows.ca, 1 bokhylle.eu, 1 -bokka.com, 1 bokkeriders.com, 1 bokov.gq, 1 boksburgplumber24-7.co.za, 1 @@ -19404,6 +19378,7 @@ bonniecoloring.com, 1 bonniedraw.com, 1 bonniekitchen.com, 1 +bonnieradvocaten.nl, 1 bonniestylez.net, 1 bonnsustainabilityportal.de, 1 bonnydevil.com, 1 @@ -19441,7 +19416,6 @@ book-online.tk, 1 book-sites.cf, 1 bookameeting.se, 1 -bookaway.com, 1 bookbazar.co.in, 1 booker.ly, 1 bookingready.com, 1 @@ -19523,7 +19497,6 @@ boostdesign.tk, 1 boostgame.win, 1 boostplm.com, 1 -boostrpro.pl, 1 booths.cyou, 1 bootlesshacker.com, 1 boots-shop.tk, 1 @@ -19709,7 +19682,6 @@ bounceaboutnewark.co.uk, 1 bounceaboutsussex.co.uk, 1 bouncealotnorthwest.co.uk, 1 -bounceandwobble.co.uk, 1 bounceapp.com, 1 bouncearoundevents.co.uk, 1 bouncearoundinflatable.com, 1 @@ -19738,7 +19710,6 @@ bouncingbuzzybees.co.uk, 1 bouncinghigher.co.uk, 1 bouncingscotland.com, 1 -bouncourseplanner.net, 1 bouncy-castles-surrey.co.uk, 1 bouncy-tots.co.uk, 1 bouncybaileys.co.uk, 1 @@ -19830,6 +19801,7 @@ boxcritters.wiki, 1 boxcryptor.com, 0 boxdevigneron.fr, 1 +boxdropcc.com, 1 boxeomexicano.tk, 1 boxerdogdiaries.com, 1 boxerdogsaspets.com, 1 @@ -20200,7 +20172,6 @@ bremen-restaurants.de, 1 bremensaki.com, 1 bremerfriedensforum.de, 1 -bremink.nl, 1 brenbarnes.com, 1 brenbarnes.com.au, 0 brendabecker.com, 1 @@ -20224,6 +20195,7 @@ brestnews.tk, 1 brestradio.tk, 1 brestshop.tk, 1 +bret-mcgee.me.uk, 0 bretcarmichael.com, 1 bretech.net, 1 breteuilcommerceartisanat.com, 1 @@ -20386,6 +20358,7 @@ brimspark.com, 1 brimspark.systems, 1 brindesgrafica.com.br, 1 +brindespegassus.com.br, 1 brindisireport.it, 1 brindocorp.tk, 1 bring-heaven.com, 1 @@ -20610,6 +20583,7 @@ bruno-hoenel.de, 1 bruno-pelletier.tk, 1 brunoamaral.eu, 1 +brunobeauvoir.com, 1 brunocesarlima.com.br, 1 brunodomingos.com, 1 brunolt.nl, 1 @@ -20652,7 +20626,6 @@ bryggebladet.dk, 1 bryte-rp.tk, 1 brztec.com, 1 -brzy-svoji.cz, 1 bs-network.net, 1 bs-security.com, 1 bs.sb, 1 @@ -20717,7 +20690,7 @@ bsuru.xyz, 1 bsvfincorp.com, 1 bsw-solution.de, 1 -bsystem.net, 1 +bsystem.net, 0 bszoft.hu, 1 bt-kc.de, 1 bt121.com, 1 @@ -20754,7 +20727,6 @@ btraviswrightmps.com, 1 btrb.ml, 1 btrfs.no, 1 -btsapem.com, 1 btshe.net, 1 btsline.co.id, 1 btslr.co, 1 @@ -20794,7 +20766,6 @@ bubblelist.tk, 1 bubblesco.tk, 1 bubblespetspa.com, 1 -bubblin.io, 1 bubblinghottubs.co.uk, 1 bubblybouncers.co.uk, 1 bubhub.io, 1 @@ -20855,7 +20826,6 @@ budgetrf.tk, 1 budgetwebsites.com.au, 1 budilnik.ml, 1 -budntod.com, 1 budofjoy.com, 1 budolangnau.ch, 1 budolfs.de, 1 @@ -21068,7 +21038,7 @@ burbankdental.com, 1 burberry-outlet.cf, 1 burcevo.info, 1 -burchfabrics.com, 0 +burchfabrics.com, 1 burdurhaber.tk, 1 burdursondakika.tk, 1 bureaubolster.nl, 0 @@ -21415,7 +21385,6 @@ buster.me.uk, 1 bustickets.ph, 1 bustillodeloro.tk, 1 -bustimes.org, 1 bustingbrackets.com, 1 bustmold.com, 1 bustmovesest.ga, 1 @@ -21474,7 +21443,6 @@ buy-lasix-without-a-doctor-s-prescription.ga, 1 buy-lingerie.tk, 1 buy-lipitor.tk, 1 -buy-out.jp, 1 buy-prednisolone.ga, 1 buy-premarin.ml, 1 buy-robaxin.gq, 1 @@ -21589,7 +21557,7 @@ buzzcontent.com, 1 buzzfeast.com, 1 buzzhub.tk, 1 -buzzkuri.com, 0 +buzzkuri.com, 1 buzzman.ga, 1 buzzmedianetworks.com, 1 buzzpop.tv, 0 @@ -21699,7 +21667,6 @@ byraje.com, 1 byrddogpaving.com, 1 byrest.com, 1 -byriderfranchise.com, 1 byrko.sk, 1 byrnesagency.com, 1 byronkg.us, 1 @@ -21838,7 +21805,6 @@ caarecord.org, 1 caasd.org, 1 caasda.tk, 1 -cabaal.net, 1 cabaladada.org, 1 cabale.fr, 1 cabalistic.tk, 1 @@ -21882,6 +21848,7 @@ cachacasantaterezinha.com.br, 1 cachaceros.tk, 1 cache-checker.com, 1 +cachedview.nl, 1 cachethome.com, 1 cachetur.no, 1 cackette.com, 0 @@ -21985,6 +21952,7 @@ caffein.cf, 1 caffeinate.co.uk, 1 caffeinatedengineers.com, 1 +caffeinefiend.org, 1 caffelatte.tk, 1 cafferata.tk, 1 caffewasyl.pl, 1 @@ -22220,7 +22188,6 @@ cambuslangharriers.org, 1 camcapital.com, 1 camconn.cc, 1 -camdesign.pl, 1 camel2243.com, 1 camelcrush.cf, 1 camelflight.tk, 1 @@ -22454,7 +22421,6 @@ canhq.tk, 1 cani-compostelle.fr, 1 canihavesome.coffee, 0 -canine-mobility.com, 0 caniuse.email, 1 canker.org, 1 cankhon.tk, 1 @@ -22466,7 +22432,6 @@ cannabis-marijuana.com, 1 cannabiscare.ca, 1 cannabislegality.info, 1 -cannabismd.com, 1 cannabiz.tk, 1 cannacards.ca, 1 cannagoals.com, 1 @@ -22830,7 +22795,6 @@ carlingfordapartments.com.au, 1 carlingforddental.com.au, 1 carlinmack.com, 1 -carlislepassionplay.org, 1 carlitoxxpro.com, 1 carlmjohnson.net, 0 carloancalculator.tk, 1 @@ -23061,7 +23025,6 @@ casaessencias.com.br, 1 casafina.tk, 1 casagami.ga, 1 -casagyn.com.br, 1 casajeannine.tk, 1 casalacabra.com, 1 casalborgo.it, 1 @@ -23344,7 +23307,6 @@ castlekingkent.co.uk, 1 castlemania.tk, 1 castleoblivion.tk, 1 -castleparty.co.uk, 1 castles-in-the-sky.co.uk, 1 castleswa.com.au, 1 castorio.tk, 1 @@ -23550,7 +23512,6 @@ cbhq.net, 1 cbi-epa.gov, 1 cbin168.com, 1 -cbin9.com, 1 cbintermountainrealty.com, 1 cbmanager.dk, 1 cbmusa.com, 1 @@ -23636,7 +23597,9 @@ cctvsecurityjohannesburg.co.za, 1 cctvview.info, 0 ccu.plus, 1 +ccv-deutschland.de, 0 ccv.eu, 0 +ccv.nl, 0 ccwallet.io, 1 ccwebdevelopment.com, 1 ccxperience.com, 1 @@ -23679,7 +23642,6 @@ cdncompanies.com, 1 cdndepo.com, 1 cdnjs.com, 1 -cdnk39.com, 1 cdnmc.cn, 1 cdns.cloud, 1 cdnsys.net, 1 @@ -23694,6 +23656,7 @@ cdseditora.com.br, 1 cdsf.tk, 1 cdshining.com, 0 +cdsportal.uk, 1 cdt.org, 0 cdu-gebhardshain.de, 1 cduckett.net, 1 @@ -24211,6 +24174,7 @@ change10000lives.com.ph, 1 changeactivation.com, 1 changeanalytics.us, 1 +changecopyright.ru, 1 changeforfuture.cf, 1 changemywifipassword.com, 1 changes.jp, 1 @@ -24313,7 +24277,6 @@ charlotte-touati.ch, 1 charlotteanne.tk, 1 charlottecountyva.gov, 1 -charlotteomnes.com, 1 charlottesvillegolfcommunities.com, 1 charlottesvillehorsefarms.com, 1 charlotteswimmingpoolbuilder.com, 1 @@ -24372,7 +24335,6 @@ chateau-belvoir.com, 1 chateau-de-fresnois.com, 1 chateau-de-fresnois.fr, 1 -chateau-de-lisle.fr, 1 chateau-patris.com, 1 chateauconstellation.ch, 0 chateauderoncourt.fr, 1 @@ -24659,10 +24621,8 @@ cheztitine.tk, 1 chfr.search.yahoo.com, 0 chhlayban.tk, 1 -chhlin.com, 1 chhory.com, 1 chhy.at, 1 -chiakhoakhoinghiep.vn, 1 chiamami.online, 1 chiamatehot.com, 1 chiangdao.com, 1 @@ -24773,8 +24733,6 @@ chinahealthcareblog.cf, 1 chinaicpower.org, 0 chinalosers.com, 1 -chinamextrading.com, 1 -chinasa.net, 1 chinasearch.tk, 1 chinaspaceflight.com, 1 chinastory.tk, 1 @@ -24977,7 +24935,6 @@ chrissytechaira.tk, 1 christ.cm, 1 christadelphians.eu, 1 -christchurchbouncycastles.co.uk, 1 christcostum.tk, 1 christec.net, 1 christengroei.tk, 1 @@ -24998,11 +24955,13 @@ christianbro.gq, 1 christianbsl.com, 1 christianchat.ml, 1 +christiancoleman.info, 1 christianconcepts.cf, 1 christianconcepts.ga, 1 christianconcepts.gq, 1 christiandiscourse.net, 1 christianfaq.org, 1 +christianforums.com, 1 christiangaro.com, 1 christiangaro.email, 1 christiangaro.info, 1 @@ -25236,6 +25195,7 @@ ciclodekrebs.com, 1 ciclodelcarbono.com, 1 ciclohidrologico.com, 1 +cidadedossonhos.org, 1 cidbot.com, 1 cidcca.com, 1 cidersus.com.ec, 1 @@ -25346,6 +25306,7 @@ cio.gov, 1 ciordigital.com, 1 cioscloud.com, 1 +cip.md, 1 cipartyhire.co.uk, 1 ciph.zone, 1 cipher.team, 1 @@ -25466,14 +25427,12 @@ citruspi.io, 1 citrusui.me, 1 citsc.de, 1 -city-forums.ml, 1 city-glas.com, 1 city-home.tk, 1 city-nn.com, 1 city-online.tk, 1 city-walks.info, 1 cityacademyslc.org, 1 -citybeat.de, 1 citybusexpress.com, 0 citycalculator.ml, 1 citycardgand.com, 1 @@ -25797,7 +25756,6 @@ cleangroup.in.ua, 1 cleanhouse2000.us, 1 cleaningcarpet.ga, 1 -cleaningdepot.co.za, 1 cleaningservicejulai.com, 1 cleaningsquad.ca, 0 cleankey.jp, 0 @@ -25807,6 +25765,7 @@ cleansweepaa.com, 1 cleanway.dk, 1 clear-concise.com, 1 +clear.ml, 1 clearance365.co.uk, 1 clearbooks.co.uk, 1 clearbookscdn.uk, 1 @@ -26341,13 +26300,13 @@ cnatraining.network, 1 cnbs.ch, 1 cnc-lehrgang.de, 1 -cncado.net, 1 cncfraises.fr, 1 cncn3.cn, 1 cncollege.tk, 1 cncr.ga, 1 cncrans.ch, 0 cncs.gob.do, 1 +cncs.gov.pt, 1 cnet-hosting.com, 1 cnetw.xyz, 1 cnexchange.com, 1 @@ -26400,11 +26359,7 @@ coastaleyesurgeons.com.au, 1 coastalphysie.com, 1 coastalpowder.com.au, 1 -coastalurgentcarebatonrouge.com, 1 -coastalurgentcarebossier.com, 1 -coastalurgentcaregonzales.com, 1 coastalurgentcarehouma.com, 1 -coastalurgentcareruston.com, 1 coastalurgentcarethibodaux.com, 1 coastline.net.au, 1 coastmedicalservice.com, 1 @@ -26612,7 +26567,6 @@ codwarzonepoints.com, 1 cody.sh, 1 codydostal.com, 1 -codyqx4.com, 1 coeburnva.gov, 1 coenraets.com, 1 coens.me.uk, 1 @@ -26677,7 +26631,6 @@ coinclickz.fun, 1 coincoele.com.br, 1 coincoin.eu.org, 1 -coincolors.co, 1 coinf.it, 1 coinflux.com, 1 coinforce.com, 1 @@ -26709,6 +26662,7 @@ col.la, 1 cola-host.tk, 1 colaborativa.tv, 1 +colabug.com, 1 colah.com.au, 1 colapsys.net, 0 colarelli.ch, 1 @@ -26718,7 +26672,6 @@ colchesterglobal.com, 1 colcomm.com, 1 colcompany.com, 1 -coldaddy.com, 1 coldcardwallet.com, 1 coldecan.edu.co, 1 coldfff.com, 1 @@ -26895,7 +26848,6 @@ columbushydroxide.net, 1 columbushydroxide.org, 1 columbusks.gov, 1 -columbuswines.com, 1 colwichks.gov, 1 colyakoomusic.com, 1 com-news.io, 1 @@ -26915,8 +26867,9 @@ combigo.com, 1 combineconquer.com, 1 combron.be, 1 +combron.co.uk, 1 +combron.com, 1 combron.nl, 1 -combustibilaspen.ro, 1 comcenter.com, 1 comchezmeme.com, 1 comcol.nl, 1 @@ -26929,7 +26882,6 @@ comebookmark.cf, 1 comebookmark.ga, 1 comebookmark.ml, 1 -comedicgrouperu.com, 1 comedimagrire.it, 1 comedyhuis.nl, 1 comefollowme2016.com, 0 @@ -26943,7 +26895,6 @@ comercialtech.cl, 1 comercialtpv.com, 1 comercialtrading.eu, 1 -comerford.net, 1 comeros.be, 1 comestoarra.com, 1 cometbot.cf, 1 @@ -27122,6 +27073,7 @@ complexcoral.ro, 1 complexorganization.com, 1 complexorganizations.com, 1 +complexsystems.fail, 1 compliance-management.ch, 0 compliance-risk.com, 1 compliance-systeme.de, 1 @@ -27339,7 +27291,7 @@ congineer.com, 1 congnghe.so, 1 congoproject.tk, 1 -congregacionmitacol.org, 1 +congregacionmitacol.org, 0 congresistas-ap.tk, 1 congresodermatologia2019.com, 1 congressmankirk.com, 1 @@ -27399,7 +27351,6 @@ connyduck.at, 1 conocchialidasole.it, 1 conocedordigital.com, 1 -conociendosalama.com, 1 conoha.vip, 1 conorboyd.info, 1 conory.com, 1 @@ -27720,7 +27671,6 @@ copyright-watch.org, 1 copyrightcoins.com, 1 copyrightcoins.help, 1 -copyrightcoinsnews.com, 1 copyrighter.tk, 1 copyrightflow.com, 1 copyrightforabout.tk, 1 @@ -27996,7 +27946,6 @@ costoflipitor.gq, 1 costreportdata.com, 0 costruzioni.milano.it, 1 -costulessdirect.com, 1 costum-for-men.tk, 1 costumestylesers.ga, 1 cosummitconstruction.com, 1 @@ -28025,6 +27974,7 @@ cougar-bordeaux.fr, 1 cougar.dating, 1 cougarlyon.fr, 1 +coughlan.de, 1 could.jp, 1 couleursorgue.tk, 1 coumoul.fr, 1 @@ -28136,7 +28086,6 @@ coworkanywhere.ch, 1 coworking-luzern.ch, 1 coworking-space.tk, 1 -coworking.tk, 1 coxcapitalmanagement.com, 1 coxxs.me, 1 coxxs.moe, 1 @@ -28199,7 +28148,6 @@ cppaste.org, 1 cppressinc.com, 1 cpqcol.gov.co, 1 -cprewritten.net, 1 cpro.pt, 1 cps-sante.ml, 1 cpsa.co.uk, 1 @@ -28455,7 +28403,6 @@ credex.bg, 1 credit-10.com, 1 credit-default-swaps.tk, 1 -creditandfinancialmanagement.com, 1 creditcard.run, 1 creditcardgenerator.money, 1 creditdigital.uk, 1 @@ -28514,7 +28461,6 @@ cricketnmore.com, 1 crickey.eu, 1 cricklewood.condos, 1 -cricoff.com, 1 criena.com, 1 criena.net, 1 criktrik.com, 1 @@ -28708,7 +28654,6 @@ croydonapartments.com.au, 1 croydonbouncycastles.co.uk, 1 crrev.com, 1 -crsmsodry.cz, 1 crsoresina.it, 1 crsserviceogkloak.dk, 1 crstat.ru, 1 @@ -28939,7 +28884,6 @@ cslbuild.com, 1 csmainframe.com, 1 csnet.live, 1 -csodaorszagovoda.hu, 1 csokolade.hu, 1 csokolozos-jatekok.tk, 1 csosa.gov, 1 @@ -28982,7 +28926,6 @@ ct-watches.dk, 1 ct.search.yahoo.com, 0 ct100.by, 1 -ctc-transportation.com, 1 ctchosting.net.au, 1 ctcloud.ml, 1 ctcom-peru.com, 1 @@ -28996,6 +28939,7 @@ cthu.io, 1 cthulhuden.com, 1 ctir.gov.br, 1 +ctj.im, 1 ctknight.me, 1 ctkwwri.org, 1 ctliu.com, 1 @@ -29029,7 +28973,6 @@ cubaal.com, 1 cuban.wiki, 1 cubanchino.tk, 1 -cubash.host, 1 cubatel.com, 1 cubazineers.ga, 1 cubazineest.ga, 1 @@ -29064,7 +29007,6 @@ cubrebocas.tk, 1 cubsbestteaminbaseball.com, 1 cubsradio.tk, 1 -cubua.com, 1 cubyhome.com, 1 cucabot.tk, 1 cucaracha.tk, 1 @@ -29096,6 +29038,7 @@ cuir-lipari.fr, 1 cuisine-ultime.fr, 1 cuitrau.tk, 1 +cujanovic.com, 1 cukrinelape.com, 1 cukurbag.ml, 1 culan.dk, 0 @@ -29210,7 +29153,6 @@ cursocatolico.com, 1 cursodehipnosis.tk, 1 cursodememorizacao.ml, 1 -cursoderecepcionistadehotel.es, 1 cursointeractivo.com, 1 cursomente.online, 1 cursorcam.tk, 1 @@ -29219,6 +29161,7 @@ cursosdeinglesmexico.com, 1 cursosemmaus.es, 1 cursosforex.com, 1 +cursosgratuitos.pe, 1 cursosingles.com, 1 cursosprogramacion.online, 1 cursossena.co, 1 @@ -29240,7 +29183,6 @@ curveprotect.cz, 1 curvissa.co.uk, 1 curvyjessi.com, 1 -curvylove.de, 1 curvysarah.com, 1 cuscocontable.com, 1 cuscoloko.com.br, 1 @@ -29253,7 +29195,6 @@ custercounty-co.gov, 1 custercountyne.gov, 1 custodiamobili.roma.it, 1 -custodian.nl, 1 custodyxchange.com, 1 custom-funky.co.uk, 1 custom-wear.ua, 1 @@ -29303,6 +29244,7 @@ cutner.co, 1 cutout.ml, 1 cutpasteprofit.tk, 1 +cutt.pro, 0 cutter.li, 1 cuttingedgeperiodontist.com, 1 cuttingedges.tk, 1 @@ -29324,6 +29266,7 @@ cuyahogacommunitycollege.tk, 1 cuyahogacountyvotesoh.gov, 1 cvalda.tk, 1 +cvazquez.es, 1 cvbp.nl, 1 cvc.digital, 1 cvdeexpo.com, 1 @@ -29340,6 +29283,7 @@ cvlibrary.co.uk, 1 cvmatch.me, 1 cvmu.jp, 1 +cvninja.pl, 1 cvps.top, 0 cvr.dk, 1 cvsmash.io, 1 @@ -29407,7 +29351,6 @@ cyberburek.tk, 1 cybercareers.gov, 1 cybercat-tver.tk, 1 -cybercave.tk, 1 cyberclaw.tk, 1 cybercloud.cc, 1 cybercrew.cc, 1 @@ -29424,6 +29367,7 @@ cyberex.es, 1 cyberexplained.info, 1 cyberfebrio.tk, 1 +cyberforensics.com, 1 cyberforge.ml, 1 cyberfruit.tk, 1 cybergame-host.tk, 1 @@ -29578,7 +29522,6 @@ cyrilstoll.ch, 1 cyrix-systems.tk, 1 cyrusdaily.tk, 1 -cysec.biz, 1 cysmo.de, 1 cyson.tech, 1 cytat.tk, 1 @@ -29617,7 +29560,6 @@ d-eisenbahn.com, 1 d-ku.de, 1 d-loop.de, 1 -d-macindustries.com, 1 d-parts.de, 1 d-parts24.de, 1 d-shed.tk, 1 @@ -29742,7 +29684,6 @@ dabi.tk, 1 dabneydriveanimalhospital.com, 1 dabro.tk, 1 -dabstairs.com, 1 dabuzz.tk, 1 dacada-porn.com, 1 daceurope.co.uk, 1 @@ -29856,6 +29797,7 @@ dailysuperheroes.com, 1 dailytrip.de, 1 dailyusbusiness.tk, 1 +dailyw88.com, 1 dailywarteg.com, 1 dailywork.ga, 1 dailyxenang.com, 1 @@ -29920,6 +29862,7 @@ dallatana.tk, 1 dallemon.dk, 1 dalliard.ch, 1 +dallinbryce.com, 1 dallmeier.net, 1 dalmatians.tk, 1 dalmatiersheusden.be, 1 @@ -29970,6 +29913,7 @@ danadameson.tk, 1 danads.com, 1 danaglennsmith.com, 1 +danajamin.com, 0 danalina.by, 1 danalytics.com.pe, 1 danamica.dk, 1 @@ -30062,7 +30006,6 @@ danielhinterlechner.eu, 1 danielhurley.com, 1 danielhurley.eu, 1 -danielhurley.ie, 1 danielhurley.info, 1 danielhurley.org, 1 danieliancu.com, 1 @@ -30083,6 +30026,8 @@ danielmoch.com, 1 danielmorales917.com, 1 danielmorell.com, 1 +danielmostertman.com, 1 +danielmostertman.nl, 1 danielnaaman.net, 1 danielnaaman.org, 1 danielparker.com.au, 1 @@ -30231,6 +30176,7 @@ dario.gq, 1 darioackermann.ch, 0 darioclip.com, 1 +dariosirangelo.me, 1 darioturchetti.me, 1 dariusheghbali.tk, 1 dark-ages.tk, 1 @@ -30271,7 +30217,6 @@ darkhall.tk, 1 darkhuntersworld.tk, 1 darkillusion.us, 1 -darkishgreen.com, 1 darkknights.tk, 1 darklang.com, 1 darklaunch.com, 1 @@ -30498,7 +30443,6 @@ datenreiter.gq, 1 datenreiter.org, 1 datensalat.info, 1 -datenschutz-consult.de, 1 datenschutz-gruenwald.de, 1 datenschutz-individuell.de, 1 datenschutz-isny.de, 1 @@ -30737,7 +30681,6 @@ db-sanity.com, 1 db-works.nl, 1 db.ci, 1 -db.fyi, 1 dbapress.org, 1 dbaron.org, 1 dbas.cz, 1 @@ -30797,7 +30740,6 @@ dcepler.net, 1 dchatelain.ch, 0 dchest.org, 1 -dchublist.ru, 1 dci.com.br, 1 dcimpianti.it, 1 dckd.nl, 1 @@ -30848,7 +30790,6 @@ ddjia.com, 0 ddjlawtampa.com, 1 ddk.dn.ua, 1 -ddkkitchens.com, 1 ddlcmods.com, 1 ddmeportal.com, 1 ddns-anbieter.de, 1 @@ -30907,6 +30848,7 @@ deaktualisierung.org, 0 deal-runners.cf, 1 deal45.ga, 1 +dealandgo.co.il, 1 dealapp.nl, 1 dealbanana.no, 1 dealbenzbkk.com, 1 @@ -30920,7 +30862,6 @@ dealinflatables.co.uk, 1 dealproject.org.au, 1 dealroom.co, 1 -dealsemperor.com, 1 dealsfromheaven.com, 1 dealsmagnet.com, 1 dealspotr.com, 1 @@ -31040,7 +30981,6 @@ decor-live.ru, 1 decor-prazdnik.ru, 1 decorarei.com, 1 -decorarmicasa.com, 1 decoratingadvice.co.uk, 1 decorations-elmotamaiz.com, 1 decorativeconcretewa.com.au, 1 @@ -31071,7 +31011,7 @@ dedge.org, 1 dedicatedservers.cf, 1 dedicatedtowomenobgyn.com, 1 -dedirten.com, 1 +dedirten.com, 0 dedmoroz.ga, 1 dedmoroz.gq, 1 dedmorozrzn.ru, 0 @@ -31108,12 +31048,10 @@ deep-chess.com, 0 deep-labs.com, 1 deep-wave-hair-extensions.tk, 1 -deep.club, 1 deepaero.com, 1 deeparamaraj.com, 1 deepbluecrafting.co.uk, 1 deepblueemail.com, 1 -deepcode.io, 1 deepcreampie.com, 1 deeperwalkinternational.org, 1 deepgame.tk, 1 @@ -31197,7 +31135,6 @@ deftek.com, 1 defterikebir.tk, 1 deftig-und-fein.de, 1 -deftnerd.com, 1 defunct-engineers.ml, 1 defuse.ca, 1 degala.tk, 1 @@ -31236,7 +31173,6 @@ degroupage.info, 1 dehaanadvocatenkantoor.nl, 1 dehkade3.ml, 1 -dehnermd.com, 1 dehoga-reisen.de, 1 dehopre.com, 1 deidee.nl, 1 @@ -31454,6 +31390,7 @@ demonologyfieldguide.com, 1 demonstrably.live, 1 demontage.tk, 1 +demonwav.com, 1 demonwithin.tk, 1 demonwolfdev.com, 1 demopanel.tk, 1 @@ -31870,7 +31807,6 @@ det-te.ch, 1 detakhukum.com, 1 detale.eu, 1 -detalhecomercio.com.br, 1 detalika.ru, 1 detao.org, 1 detc.tk, 1 @@ -31888,7 +31824,6 @@ detenterprise.com, 1 determapp.de, 1 determinatie.tk, 1 -dethoi.com, 1 deti-online.com, 1 deti-vse.ml, 1 deti.ga, 1 @@ -32108,7 +32043,6 @@ dezevenster.com, 1 dezintranet.com, 1 dezmembrariromania.ro, 1 -dezzoroofing.co.za, 1 df-clan.tk, 1 df-team.tk, 1 df1nif.de, 1 @@ -32403,6 +32337,7 @@ diegomeza.tk, 1 diegosalgado.tk, 1 diegovisual.tk, 1 +diehildebrands.de, 1 diekperaiwseis.gr, 1 diemattels.at, 1 diemperu.com, 1 @@ -32703,7 +32638,6 @@ dillonco.gov, 1 dillonm.io, 1 dilmarames.com, 1 -dima-v.ru, 1 dima.pm, 1 dimagrimentoincorso.it, 1 dimanss47.net, 1 @@ -32803,7 +32737,6 @@ dipulse.it, 1 dir2epub.com, 1 dir2epub.org, 1 -dirba.io, 1 dirch.tk, 1 dirdur.cf, 1 direcore.xyz, 1 @@ -32857,7 +32790,7 @@ dirki.tk, 1 dirkjonker.nl, 1 dirko.net, 0 -dirkwolf.de, 1 +dirkwolf.de, 0 dirtcraft.ca, 1 dirtinmyshoes.com, 1 dirty-tina.net, 1 @@ -33233,7 +33166,6 @@ djalessandrobrain.tk, 1 djamiroquai.tk, 1 djang.tk, 1 -django-lessons.com, 1 django.city, 1 djangobirthday.com, 0 djangogolf.com, 1 @@ -33733,6 +33665,7 @@ dogan.ch, 0 doganoglu.net, 1 dogcam.tk, 1 +dogcat.vn, 0 dogcratereview.info, 1 dogday.tk, 1 doge-fa.tk, 1 @@ -33782,6 +33715,7 @@ dogwoodceramics.com, 1 dogworld.com.br, 1 doh.sb, 1 +dohanews.co, 1 dohertyconsulting.tk, 1 doi.org, 1 doihavetoputonpants.com, 1 @@ -34094,7 +34028,6 @@ donthedragonwilson.com, 1 dontkeylog.me, 1 dontkillspike.tk, 1 -dontlistentoruss.com, 1 dontpayfull.com, 1 dontstopcoffee.com, 1 donttrust.me, 1 @@ -34229,7 +34162,6 @@ dosyaa.tk, 1 dosyanet.cf, 1 dosyanet.tk, 1 -dosyauzantisi.com, 1 dot.sb, 1 dot42.no, 1 dota2free.tk, 1 @@ -34336,7 +34268,6 @@ downgratis.tk, 1 download-image.ga, 1 download-knigi.gq, 1 -download.dk, 1 downloadabc.cf, 1 downloadapk.co.id, 1 downloadapkpokemongo.ga, 1 @@ -34458,7 +34389,6 @@ dragcave.net, 1 dragdroplearning.com, 1 dragfiles.com, 1 -draghetti.it, 1 draghive.asia, 1 draghive.ca, 1 draghive.co.uk, 1 @@ -34625,6 +34555,7 @@ dreamreality.tk, 1 dreams-2-reality.com, 1 dreamsea.tk, 1 +dreamsinbits.com, 1 dreamsindigital.tk, 1 dreamsjob.cf, 1 dreamsofalostsoul.tk, 1 @@ -34834,7 +34765,6 @@ droneways.tech, 1 droni.cz, 1 dronix.tk, 1 -dronova-art.ru, 1 droomhuis-in-zuid-holland-kopen.nl, 1 drop-zone.tk, 1 drop.com, 1 @@ -34863,7 +34793,6 @@ drost.la, 1 drown.photography, 1 drpa.ca, 1 -drpadawan.io, 1 drpetersenobgynal.com, 1 drpetervoigt.ddns.net, 1 drpetervoigt.de, 1 @@ -34894,6 +34823,7 @@ drtimothysteeljournal.com, 1 drtimothysteelnetwork.com, 1 drtimothysteelresults.com, 1 +drtimothysteelscholarship.com.au, 1 drtimothysteelvideos.com, 1 drtti.io, 1 drturner.com.au, 1 @@ -34929,7 +34859,6 @@ druznek.xyz, 1 druzya.store, 1 drvaidyas.com, 0 -drvondawright.com, 1 drwang.group, 0 drweissbrot.net, 1 dry-cleaning.tk, 1 @@ -35008,7 +34937,6 @@ dsswise.org, 1 dstamou.de, 1 dsteiner.at, 1 -dstvinstallkemptonpark.co.za, 1 dstvsouthafrica.com, 1 dsuinnovation.com, 1 dsv-salesmanager.de, 1 @@ -35107,6 +35035,7 @@ ducksify.com, 1 ducksoft.fi, 1 duckstad.net, 1 +duckyubuntu.tk, 1 ductcare.com, 1 dude.tokyo, 1 dudedood.tk, 1 @@ -35248,7 +35177,6 @@ durcoin.com, 1 durcoin.org, 1 durdal.no, 1 -durdle.com, 1 duredo.com, 1 dureuil.info, 1 durexwinkel.nl, 1 @@ -35332,7 +35260,7 @@ duzavo.cz, 1 duzcehaberleri.tk, 1 duzcesondakika.tk, 1 -dv189.com, 0 +dv189.com, 1 dvbris.co.uk, 1 dvbris.com, 1 dvclub.tk, 1 @@ -35355,6 +35283,7 @@ dvorekkarlin.cz, 1 dvorupotocnych.sk, 1 dvotx.org, 1 +dvprogram.us, 1 dvwc.org, 1 dvx.cloud, 1 dw-loewe.de, 0 @@ -35474,7 +35403,6 @@ dynet.ru, 1 dynhost.co.uk, 1 dynn.be, 0 -dynocc.xyz, 1 dynorphin.com, 1 dynorphins.com, 1 dynsoundmax.tk, 1 @@ -35521,7 +35449,6 @@ dzyabchenko.com, 0 dzyszla.pl, 1 dzytdl.com, 1 -dzz.by, 0 e-account.by, 1 e-alink.com, 1 e-antikvar.tk, 1 @@ -35628,7 +35555,6 @@ e-streams.tv, 1 e-student.tk, 1 e-styling.tk, 1 -e-surety.net, 1 e-sushi.net, 1 e-sweaters.tk, 1 e-tables.tk, 1 @@ -35681,7 +35607,7 @@ e3li.org, 1 e3q.de, 1 e4.chat, 1 -e42.org, 1 +e42.org, 0 e4work.com.br, 1 e5197.co, 1 e5tv.hu, 1 @@ -36187,7 +36113,7 @@ eatingonions.com, 1 eatmebudapest.hu, 1 eatmportal.eu, 1 -eaton-daitron.jp, 1 +eaton-daitron.jp, 0 eaton-works.com, 1 eatry.io, 1 eats.soy, 1 @@ -36195,6 +36121,7 @@ eatson.com, 1 eatz-and-treatz.com, 1 eaucole.com, 1 +eaucube.com, 1 eaugalliediscountpharmacy.com, 1 eaugenethomas.cf, 1 eautocollision.com, 1 @@ -36210,6 +36137,7 @@ eazytailors.ga, 1 eazzy.tk, 1 eb-net.de, 1 +eb7.jp, 1 ebabis.cz, 1 ebagroup.tk, 1 ebaifzf.com.br, 1 @@ -36464,6 +36392,7 @@ ecos-ev.de, 1 ecos.srl, 1 ecosas.org, 1 +ecosdanoticia.net.br, 1 ecosdesociedad.tk, 1 ecosfti.tk, 1 ecoshare.info, 1 @@ -36542,6 +36471,7 @@ edeca.net, 1 ededdeddy.tk, 1 edefrutos.me, 1 +edefrutos2020.com, 1 edegembicycleclub.tk, 1 edegulkoyu.tk, 1 edehsa.com, 1 @@ -37004,7 +36934,6 @@ eiji.fr, 1 eikenskaden.tk, 1 eikentafels.nl, 1 -eikerposten.no, 0 eikones.tk, 1 eikounoayumi.jp, 1 eilhan.com, 1 @@ -37425,7 +37354,6 @@ elephantia.cf, 1 elephants.net, 1 elephants.tk, 1 -elephantstone.net, 1 elepover.com, 1 eletesstilus.hu, 1 eletminosegert.ro, 1 @@ -37684,7 +37612,7 @@ elri.blog, 1 elrincondelotaku.tk, 1 elrincondeltrabajo.com, 0 -elrinconderovica.com, 0 +elrinconderovica.com, 1 elrubio.tk, 1 elsadonaire.tk, 1 elsas.tk, 1 @@ -38153,7 +38081,6 @@ energieconsultonline.nl, 1 energiekeurplus.nl, 1 energielabelbinneneenweek.nl, 1 -energija-visiems.lt, 1 energikompetens.se, 1 energoproff.com, 1 energozrouti.cz, 1 @@ -38387,7 +38314,6 @@ entelgy.com.br, 1 enter.eco, 1 enteratesoria.tk, 1 -entercenter.ru, 1 enterdown.com, 1 enteronline.tk, 1 enterprisenetworksecurity.net, 1 @@ -38486,6 +38412,7 @@ eosol.de, 1 eosol.net, 1 eosol.services, 1 +eosolutions.co, 0 ep-cortex.com, 1 ep-plus.jp, 1 epa.com.es, 1 @@ -38623,6 +38550,7 @@ equasea.com, 0 equate.net.au, 1 equatetechnologies.com.au, 0 +equeim.ru, 0 equi.ac, 1 equiac.com, 1 equidam.com, 1 @@ -38693,7 +38621,6 @@ eremnews.com, 1 erenvakfi.org, 1 erethon.com, 1 -erevan-news.tk, 1 erfgoedeisden.tk, 1 erfolgsmaschine.ch, 0 ergaomnes.cz, 1 @@ -38710,7 +38637,6 @@ eric1932.tk, 1 ericabrahamsen.net, 1 ericairwin.com, 1 -ericca.org, 1 ericdiao.com, 1 ericfm.tk, 1 ericfo.cf, 1 @@ -38870,7 +38796,6 @@ es-tools.at, 1 es-tools.com, 1 es-tools.de, 1 -es-trade.biz, 1 es-vps.eu, 1 es.ax, 1 es.search.yahoo.com, 0 @@ -38907,7 +38832,6 @@ esb777.cc, 1 esb777.com, 1 esb777.me, 1 -esb777.net, 1 esb777.us, 1 esb888.net, 1 esb8886.com, 1 @@ -38980,6 +38904,7 @@ escortlistings.fr, 1 escortlistings.ph, 1 escortlistingsuk.co.uk, 1 +escorts.works, 1 escortsontop.co.uk, 1 escortz.gq, 1 escoteiros.tk, 1 @@ -39052,7 +38977,6 @@ esmejor.tk, 1 esmincg2t1.com, 1 esnekkaucuk.com, 1 -esoa.net, 1 esocite.la, 1 esoko.eu, 1 esolcourses.com, 1 @@ -39186,7 +39110,6 @@ estebanborges.com, 1 estebanoria.net, 1 estedafah.com, 1 -esteladigital.com, 1 estenio.com.mx, 1 esteniomexico.com, 1 esteriliza-me.org, 1 @@ -39422,7 +39345,6 @@ eudireto.com, 1 eudore.org, 1 euexia.fr, 1 -eugenetech.org, 1 eugeniocorso.com, 1 eugenioperez.tk, 1 eugostodefilmesbrasileiros.tk, 1 @@ -39525,6 +39447,7 @@ europeanpreppers.com, 1 europeanstudies-chemnitz.de, 1 europeantransportmanagement.com, 1 +europeanwineresource.com, 1 europeluxuryweddings.com, 1 europeonline.tk, 1 europeos.es, 1 @@ -39629,7 +39552,6 @@ evelienzorgt.nl, 1 evelin.tk, 1 evelyndayman.com, 1 -evemarketer.com, 1 evendesign.gq, 1 evenementenhoekvanholland.nl, 1 evenfall.tk, 1 @@ -39689,7 +39611,6 @@ evermade.fi, 1 evermarkstudios.com, 1 evernaut.com, 1 -everpcpc.com, 1 everready.tk, 1 everseo.tk, 1 evertonarentwe.com, 1 @@ -39746,6 +39667,7 @@ eviction.cf, 1 evidecor.com.br, 1 evidence-based.review, 1 +evidencebased.net, 1 evidenceusa.com.br, 1 evidenciamidiasdigitais.com.br, 1 evidencija.ba, 1 @@ -39886,6 +39808,8 @@ examedge.com, 1 examika.ru, 1 examlab.tk, 1 +example.sc, 1 +example.wf, 1 exampleessays.com, 1 examroll.com, 1 examroll.fr, 1 @@ -40018,7 +39942,6 @@ expansion-lidl.es, 1 expatads.com, 1 expatfinancial.com.hk, 1 -expatfire.com, 1 expatmortgage.uk, 1 expatriate.pl, 0 expe.voyage, 1 @@ -40029,7 +39952,6 @@ expelliarmus.tk, 1 expensivejewelsest.ga, 1 exper.gr, 1 -experens.com, 1 experienceoz.com.au, 1 experiment-626.tk, 1 experimentalguruji.cf, 1 @@ -40334,7 +40256,6 @@ f1worldwide.tk, 1 f2h.io, 1 f36533.com, 1 -f3b.de, 1 f3r.xyz, 1 f42.net, 1 f43.me, 1 @@ -40536,7 +40457,6 @@ fachfusspflege-exner.de, 1 fachim.tk, 1 fachiri.tk, 1 -fachmann-umzuege.de, 1 fachowisko.pl, 1 fachschaften.org, 0 fachschaftslisten.at, 1 @@ -40544,7 +40464,6 @@ fachversand-hennes.de, 1 facialcare.tk, 1 facialexercising.com, 1 -facialflex.com, 1 facialparalysisnetwork.ga, 1 facialplasticsurgeryofaustin.com, 1 facil.services, 0 @@ -40588,7 +40507,6 @@ factozia.tk, 1 facts-about-bees.ml, 1 factslider.tk, 1 -factsvision.sr, 1 factua.nl, 1 factum-info.net, 1 facturama.pt, 1 @@ -40628,6 +40546,7 @@ fagus.hopto.org, 1 fahadbook.com, 1 faharas.net, 1 +fahmed.de, 0 fahnamporn.com, 1 fahrenwal.de, 1 fahrenwalde.de, 1 @@ -40745,7 +40664,6 @@ falconerny.gov, 1 falconfrag.com, 1 falconstap.tk, 1 -falconvintners.com, 0 falcoz.co, 1 faldoria.de, 1 fale.io, 1 @@ -40816,7 +40734,6 @@ familievisscher.tk, 1 familjenm.se, 1 familledessaint.fr, 1 -familleseux.net, 1 familleshilton.com, 1 family-clinic.tk, 1 familyclinicstl.com, 1 @@ -40844,7 +40761,6 @@ famousit.nl, 1 famousmodels.tk, 1 famouspdf.gq, 1 -famousstages.com, 1 famvsomeren.nl, 1 fan.gov, 1 fan4all.de, 1 @@ -40871,6 +40787,7 @@ fanfareunion.ch, 0 fanfiction.tk, 1 fangbing.me, 1 +fangkehou.eu.org, 1 fangkehou.tk, 1 fangs.ink, 1 fanidrakopoulou.tk, 1 @@ -41246,6 +41163,7 @@ fbigame.com, 1 fbihr.gov, 1 fbiic.gov, 1 +fbijobs.gov, 1 fbo.gov, 1 fbo.network, 1 fboerman.nl, 1 @@ -41303,7 +41221,6 @@ fdp-alsdorf.de, 1 fdp-heinsberg.de, 1 fdpbrig.ch, 1 -fdremodelingatlanta.com, 0 fdresearch.ca, 1 fdsl.eu, 1 feac.us, 1 @@ -41525,7 +41442,6 @@ feminina.eu, 1 feminina.pt, 1 feminique.tk, 1 -feminism.lgbt, 0 feministreview.cf, 1 feministreview.ga, 1 feministreview.gq, 1 @@ -41566,7 +41482,6 @@ fennydewit.nl, 1 fenom.ga, 1 fenotipo.com, 1 -fenriragic.com, 1 fenschui.ru, 1 fenster-bank.at, 1 fenster-bank.de, 1 @@ -41665,6 +41580,7 @@ festesuniversitaries.tk, 1 festin.tk, 1 festival-tipps.com, 1 +festival-transform.com, 1 festival365.ml, 1 festivaldays.tk, 1 festivaldelumieresgand.be, 1 @@ -41758,6 +41674,7 @@ ffg.berlin, 1 ffiec.gov, 1 ffis.me, 0 +ffl123.com, 1 fflone.com, 1 ffmradio.de, 1 ffmv.de, 1 @@ -41805,7 +41722,6 @@ fiberoptikz.tk, 1 fibery.io, 1 fibo-forex.org, 1 -fibra.click, 1 fibrasynormasdecolombia.com, 1 fibretv.co.nz, 1 fibretv.tv, 1 @@ -41926,7 +41842,6 @@ fileshare.party, 1 filestar.io, 1 filestartest.io, 1 -filestreak.com, 1 filesuffix.com, 1 filetransfer.one, 1 filezilla-project.org, 1 @@ -41948,7 +41863,6 @@ filleritemsindia.com, 1 fillmorecountyne.gov, 1 fillmysuitca.se, 1 -fillo.sk, 1 fillu.de, 1 film-colleges.com, 1 film-op-tv.nl, 1 @@ -42145,12 +42059,10 @@ finishingpasteers.ga, 1 finishingpasteest.ga, 1 finisron.in, 1 -finisterre1994.com, 1 finkelstein.fr, 1 finlandcook.online, 1 finlandcook.top, 1 finlito.tk, 1 -finmarket.tk, 1 finn-svoboda.cf, 1 finn-thorben.me, 1 finn.io, 1 @@ -42208,7 +42120,6 @@ firebirdrangecookers.com, 1 firebounty.com, 1 fireboxfood.com, 1 -firebrandchurch.com, 1 firecask.com, 1 firechip.cc, 1 firechip.srl, 1 @@ -42224,7 +42135,6 @@ firefighters.dating, 1 firefish.com.au, 1 fireflywellnesscounseling.com, 1 -firegeisha.com, 1 fireglow.de, 1 fireintheholevideos.tk, 1 fireleadership.gov, 1 @@ -42517,7 +42427,7 @@ flagpedia.net, 1 flagriculture.gov, 1 flagspot.net, 0 -flagstone-magazin.ro, 1 +flagstone-magazin.ro, 0 flagyl-500-mg.ga, 1 flairfindr.com, 1 flam.io, 1 @@ -42669,7 +42579,6 @@ flexiblenetflow.com, 1 flexibsd.com, 1 flexicurity.tk, 1 -fleximaal.com, 1 fleximus.org, 0 flexinvesting.fi, 0 flexitanq.es, 1 @@ -42796,7 +42705,6 @@ floralworkshopsers.ga, 1 florasite.tk, 1 florausa.net, 0 -floravan.com, 1 floravino.de, 1 floreg.com, 1 florenceapp.co.uk, 1 @@ -42836,7 +42744,6 @@ floridastadium.ga, 1 floridastadiumers.ga, 1 floridastadiumest.ga, 1 -floridawaterapparel.net, 1 floridaweightlossdoctors.com, 1 floriebriand.com, 1 floriimorii.tk, 1 @@ -42905,7 +42812,6 @@ flubio.de, 1 flucky.xyz, 1 fluconazole.gq, 1 -flucover.com, 1 fluenciamodas.com.br, 1 fluencytech.com, 1 fluessiggas.de, 1 @@ -43102,7 +43008,6 @@ followme.com, 1 followmystaff.com, 1 followthatpage.com, 1 -followthepin.com, 1 folszyb.pl, 1 foluomeng.net, 1 folwark.krakow.pl, 1 @@ -43137,6 +43042,7 @@ fontein.de, 1 fontela.es, 1 fontnegar.ir, 1 +fonts2u.com, 1 fonts4free.net, 1 foo, 1 foo.fo, 1 @@ -43151,6 +43057,7 @@ foodatlantic.ga, 1 foodattitude.ch, 0 foodauthority.ga, 1 +foodavatar.ga, 1 foodbad.ga, 1 foodbeast.ga, 1 foodblod.ga, 1 @@ -43367,7 +43274,6 @@ foreign-language-colleges.com, 1 foreignpharmacydirectory.com, 1 foreignxchange.com.au, 1 -forellenpark.com, 1 foremail.tk, 1 forenschmiede.tk, 1 forensic-system.com, 0 @@ -43477,7 +43383,6 @@ fornarisandres.com, 1 fornwall.net, 0 foro-coopfuture.tk, 1 -foro.io, 0 foro.red, 1 foroaranda.com, 1 forobachiller.com, 1 @@ -43493,7 +43398,7 @@ forokd.com, 1 forologikidilosi.com.gr, 1 foromasters.tk, 1 -foropl.com, 1 +foropl.com, 0 forosdelmisterio.tk, 1 forourselves.com, 1 forowarhammer.tk, 1 @@ -43603,7 +43508,6 @@ forumpakistan.tk, 1 forumpenaguru.com, 1 forumrowerowe.org, 1 -forumrussia.tk, 1 forums4everyone.tk, 1 forumsampdoria.tk, 1 forumsrussia.ga, 1 @@ -43656,7 +43560,6 @@ foto-znakomstva.ml, 1 foto.by, 1 fotoallerlei.com, 1 -fotoars.pl, 1 fotoblog.nrw, 1 fotobodyart.nl, 1 fotoboxvysocina.cz, 1 @@ -43668,7 +43571,6 @@ fotofon.tk, 1 fotografechristha.nl, 1 fotografiadellalucerossa.com, 1 -fotografiamakro.pl, 1 fotografies.tk, 1 fotografija.tk, 1 fotografoivanalmeida.com.br, 1 @@ -43726,8 +43628,8 @@ fourcask.com, 1 fourchetteverte.ch, 1 fourcornerscb.com, 1 +fourdesignstudio.com, 1 fourfivecbd.co.za, 1 -fourfourcrew.com, 1 fourfri.es, 1 fourie.ca, 1 fouriemc.com, 1 @@ -43769,7 +43671,6 @@ foxquill.com, 0 foxroy.com, 1 foxsburg.xyz, 1 -foxscribbler.com, 1 foxstreetcomms.co.za, 0 foxstyle.gq, 1 foxtransportables.com.au, 1 @@ -43998,7 +43899,6 @@ frasesparaface.com.br, 1 frasestop.com.br, 1 frasesytarjetas.com, 1 -frasys.net, 1 fratelliscarrone.com, 1 fratellistomboli.it, 1 fraterbolivia.tk, 1 @@ -44102,7 +44002,6 @@ free-traff.cf, 1 free-watching.ga, 1 free-webtv.tk, 1 -free.ac.cn, 0 free6to12yo.gq, 1 free8.xyz, 1 freeaf.gq, 1 @@ -44231,7 +44130,6 @@ freepedia.cf, 1 freephonefinder.cf, 1 freepik.com, 1 -freepik.es, 1 freeplace.tk, 1 freepnglogos.com, 1 freepoints.us, 1 @@ -44241,7 +44139,6 @@ freepornvideos.life, 1 freepornxxxvids.com, 1 freepron.xyz, 1 -freepublicprofile.com, 1 freeradical.zone, 1 freereal.ml, 1 freerealincest.com, 1 @@ -44585,10 +44482,10 @@ fruityten.co.uk, 1 frutasyvejetales.com, 1 frutidump.tk, 1 +frutuozo.com.br, 1 fruturaproduce.com, 1 fruxh.moe, 1 fruxnux.net, 1 -fruxprivatebank.net, 1 frydrychit.cz, 1 fryergroup.com, 1 fs-d.org, 1 @@ -44958,7 +44855,6 @@ furi.ga, 1 furisode-yamaguchiya.com, 1 furiya.tk, 1 -furkancaliskan.com, 1 furkankose.ml, 1 furkot.com, 1 furkot.de, 1 @@ -44990,7 +44886,6 @@ furrycraft.ga, 1 furrytech.network, 1 fursandfur.tk, 1 -fursuitbutts.com, 0 furtodo.com, 1 furu-sato.com, 1 furuy.com, 1 @@ -45114,7 +45009,6 @@ fxwebstudio.com.au, 0 fydjbsd.cn, 1 fyfywka.com, 1 -fyksen.me, 0 fyllehack.se, 1 fylm.ai, 1 fyn.nl, 1 @@ -45415,7 +45309,6 @@ galpsafetytalks-portal-preprod.azurewebsites.net, 1 galpsafetytalks-portal-production.azurewebsites.net, 1 galtelligence.com, 1 -galvingao.com, 1 galvinism.ink, 1 galwew.ga, 1 gamagam.gq, 1 @@ -45633,7 +45526,6 @@ gammaphibeta.tk, 1 gamster.tv, 1 gan.wtf, 1 -ganaderosdeceres.com.ar, 1 ganapati.fr, 1 ganardinerillo.tk, 1 ganardineroporinternett.com, 1 @@ -45700,7 +45592,6 @@ garciaortiz.com, 1 garda-see.mobi, 1 gardarika.tk, 1 -gardedenfantspourtous.fr, 1 garden-land.ga, 1 garden-life.org, 1 garden4less.co.uk, 1 @@ -45819,7 +45710,7 @@ gatlink.tk, 1 gatomix.net, 1 gatoslivres.org, 1 -gatot.id, 1 +gatot.id, 0 gattomatto.tk, 1 gattschan.tk, 1 gauche.com, 1 @@ -45941,7 +45832,6 @@ ge3k.net, 0 gealot.com, 1 gear-acquisition-syndrome.community, 1 -gear4you.shop, 1 gearallnews.com, 1 gearbot.rocks, 1 gearboxhero.com, 1 @@ -45993,7 +45883,7 @@ geekdama.com.br, 1 geekdocs.de, 1 geekedin.ga, 1 -geekeries.org, 0 +geekeries.org, 1 geekgao.cn, 1 geekgear.tk, 1 geekgirltech.com, 1 @@ -46047,6 +45937,7 @@ gefolge.org, 1 gegeco.ch, 0 geh.li, 1 +gehaowu.com, 1 gehas-wein-shop.de, 0 gehirn.co.jp, 1 gehirn.jp, 1 @@ -46183,7 +46074,6 @@ generic-sildenafil-citrate.cf, 1 generic-tadalafil.cf, 1 generic-tenormin.gq, 1 -generic.cx, 1 genericabana.gq, 1 genericaccutaneonline.ml, 1 genericaceon.tk, 1 @@ -46491,7 +46381,6 @@ germanssky.de, 1 germantownwi.gov, 1 germantrip.tk, 1 -germany-board.tk, 1 germanytravel.ga, 1 germanytravelguide.ml, 1 germfr.ee, 1 @@ -46888,6 +46777,7 @@ gierds.de, 1 gieschke.de, 1 giethoorn.com, 1 +gietvloer-wand.nl, 0 gietvloergarant.nl, 1 gif.tips, 1 giff.com.mx, 1 @@ -46919,6 +46809,7 @@ giga.is, 1 giga.nl, 1 gigabitz.pw, 1 +gigacloud.org, 1 gigagroup.cf, 1 giganet.tk, 1 gigantar.com, 1 @@ -46933,6 +46824,7 @@ gigawattz.com, 1 giggletotz.co.uk, 1 gigharborwa.gov, 1 +gigis-pizzeria.de, 1 gigiscloud.servebeer.com, 1 giglink.club, 1 gigloog.tk, 1 @@ -47372,6 +47264,7 @@ globemilk.nl, 1 globemusic.es, 1 globereservationsest.ga, 1 +globetalent.nl, 1 globologic.com, 1 globotech.be, 1 globotur.de, 1 @@ -47393,6 +47286,7 @@ gloryofmusic.tk, 1 gloryrise.tk, 1 glosiko.cn, 1 +glosiko.com, 1 glosiko.com.cn, 1 glosiko.net, 1 glosiko.org, 1 @@ -47542,9 +47436,10 @@ goalsaj.com, 1 goanalyse.co.uk, 1 goand.run, 1 +goapunks.net, 0 goarmy.eu, 1 goatbot.xyz, 1 -goatcloud.com, 1 +goatcloud.com, 0 goatstore.ca, 1 goatstudio.sg, 1 gobarrelroll.com, 1 @@ -47603,7 +47498,6 @@ goehler-baumpflege.de, 1 goeikan.life, 1 goemail.me, 1 -goempyrean.com, 1 goenea.com, 1 goerdeler-alumni-club.de, 1 goergetown.tk, 1 @@ -47867,7 +47761,6 @@ goodvibesblog.com, 1 goodway.tv, 1 goodwin43.ru, 0 -goodwincasinos.com, 1 goodyearsotn.co.uk, 1 goofy.gr, 1 google, 1 @@ -47933,6 +47826,7 @@ gordonbeeming.xyz, 1 gordonhamilton.com, 1 gordvorets.tk, 1 +gordyf.com, 1 gordyforty.com, 1 gorepriest.tk, 1 gorf.club, 1 @@ -47948,6 +47842,7 @@ gorky.media, 1 gorlani.com, 1 gorlani.net, 1 +gorn.ch, 1 gorod74.ru, 0 gorodabakan.cf, 1 gorodabakan.ga, 1 @@ -48104,7 +47999,6 @@ goyahkles-spirit-to.tk, 1 goyumoilexpeller.com, 1 gozadera.es, 1 -gozenhost.com, 1 gpalabs.com, 1 gpastore.com.br, 1 gpbdev.ru, 1 @@ -48125,6 +48019,7 @@ gpltimes.club, 1 gplvilla.com, 1 gpm.ltd, 1 +gpna.org, 1 gpodev.gov, 1 gpolanco.com, 1 gpony.fr, 1 @@ -48150,6 +48045,7 @@ gpz500s.tk, 1 gq-magazine.co.uk, 1 gqmstore.com.br, 1 +gqyyingshi.com, 0 gqyyy.cc, 0 gr.search.yahoo.com, 0 gr8engineer2b.com, 1 @@ -48224,7 +48120,6 @@ grahamcarruthers.co.za, 1 grahamcluley.com, 0 grahamleeonline.com, 1 -grahamsmith.tech, 1 grailify.com, 1 grain-feature-branch.co, 1 grain-staging.co, 1 @@ -48291,7 +48186,7 @@ graniteind.com, 1 granitestateproductions.tk, 1 grannys-stats.com, 1 -grannyshouse.de, 1 +grannyshouse.de, 0 granool.ga, 1 granpoder-islacristina.tk, 1 granstrom.tk, 1 @@ -48299,6 +48194,7 @@ grantcooper.com, 1 grantdb.ca, 1 grantmorrison.net, 1 +grantpark.org, 1 grantsmasters.com, 1 graonatural.com.br, 0 grapee.jp, 1 @@ -48370,6 +48266,7 @@ grattan.co.uk, 1 gratuitweb.tk, 1 graumeier.de, 1 +grauwasser-blog.de, 1 gravedigger.tk, 1 gravelshooters.com, 1 gravelshooters.net, 1 @@ -48614,7 +48511,7 @@ gresak.io, 0 gresb.com, 1 gresik.info, 1 -gressnet.id, 1 +gressnet.id, 0 greta-birkner.de, 1 gretaraccontastorie.com, 1 gretathemes.com, 1 @@ -48624,7 +48521,6 @@ grevesgarten.de, 1 grexx.today, 1 grey-cat.tk, 1 -greybazar.com, 1 greybeards.ca, 1 greycentre.com, 1 greycrane.net, 1 @@ -48671,7 +48567,7 @@ griffinsrfc.tk, 1 griffioenconsulting.com, 1 griffophotography.tk, 1 -grifomarchetti.com, 1 +grifomarchetti.com, 0 grifone.tk, 1 grigo.ga, 1 grigo.tk, 1 @@ -48709,7 +48605,6 @@ grishavirus.cf, 1 griswoldia.gov, 1 grit3.com, 1 -gritte.ch, 1 grittherapeutic.com, 1 griyo.online, 1 grizz.gdn, 1 @@ -48882,7 +48777,6 @@ grupodepasajeros.tk, 1 grupoellatu.tk, 1 grupoenelcolombia.com, 1 -grupofurlan.com, 1 grupogrande.com.co, 1 grupoharbour.com, 1 grupoiwana.tk, 1 @@ -49284,7 +49178,6 @@ gw2efficiency.com, 1 gw2zone.net, 0 gw66.cc, 0 -gwandalancobras.com.au, 1 gwbet99.cc, 1 gwennyeeckels.com, 1 gwenolakaigre.tk, 1 @@ -49433,7 +49326,6 @@ habbzohotel.tk, 1 habeeba.tk, 1 haberer.me, 1 -haberkotherapy.com, 1 haberlandconsulting.com, 1 haberlanddesign.com, 1 haberlanddigital.com, 1 @@ -49495,7 +49387,6 @@ hackengine.ga, 1 hackenkunjeleren.nl, 1 hackenturet.dk, 1 -hacker.club, 1 hacker.deals, 1 hacker.holiday, 1 hacker.im, 1 @@ -49812,7 +49703,6 @@ handicappingsportsers.ga, 1 handicappingsportsest.ga, 1 handicraftsman.tk, 1 -handigehannie.nl, 1 handleidingkwijt.com, 1 handlekrypto.com, 1 handlingcosters.ga, 1 @@ -49861,6 +49751,7 @@ hanjl.com, 1 hanjuapp.com, 1 hanke.se, 1 +hankoreas.com, 1 hankr.com, 1 hanksacservice.com, 1 hanksservice.com, 1 @@ -49868,7 +49759,6 @@ hannah.link, 1 hannahbarrettyoga.com, 1 hannaljungberg.tk, 1 -hannasecret.de, 1 hannde.com, 1 hannehovi.fi, 1 hannes.paris, 1 @@ -49917,6 +49807,7 @@ hao.gay, 1 haogoodair.ca, 1 haorenka.co, 1 +haorenka.me, 1 haorenka.org, 1 haosygt.com, 1 haotown.cn, 0 @@ -49967,7 +49858,6 @@ happydoq.ch, 0 happydota.ga, 1 happydreamsz.com, 1 -happydyes.co.uk, 1 happyexwife.ga, 1 happyfun.tk, 1 happyfuture.tk, 1 @@ -50072,7 +49962,7 @@ hardworm.tk, 1 hardy.bz, 1 hardyhaberland.com, 1 -harelmallacglobal.com, 1 +harelmallac.com, 0 harem.tk, 1 harery.com, 1 hargaindo.com, 1 @@ -50172,7 +50062,6 @@ harvestapp.com, 1 harvester.fr, 1 harvestfellowshipchurch.net, 1 -harvestgospelministries.org, 1 harvestmoon.ga, 1 harvestmoon.ml, 1 harveyauzorst.com, 1 @@ -50236,7 +50125,6 @@ hatake.tk, 1 hataonline.tk, 1 hatarisecurity.co.ke, 1 -hatcher.cloud, 1 hate.ga, 1 hate.tk, 1 hatemarga.tk, 1 @@ -50269,7 +50157,6 @@ haus-momo.ch, 1 haus.bio, 1 hausarzt-stader-str.de, 0 -hausarztpraxis-weilheim.de, 1 hausfrauficken.com, 1 haushaltsaufloesung-vor-ort.de, 1 haushaltsaufloesung-zentrum.de, 1 @@ -51389,7 +51276,6 @@ hevrishut.cf, 1 hewavitharanamv.tk, 1 hex.nl, 1 -hexacon.io, 1 hexagon-e.com, 1 hexagon.io, 1 hexapt.com, 1 @@ -51409,6 +51295,7 @@ hexo.io, 0 hexobind.com, 1 hexony.com, 1 +hexr.org, 1 hexsafe.io, 1 hexstream.net, 1 hexstream.xyz, 1 @@ -51428,7 +51315,6 @@ heymoney.de, 1 heyomg.com, 1 heyplay.eu.org, 1 -heyrockerproductions.com, 1 heysora.net, 1 heytrade.com, 1 heyvilleers.ga, 1 @@ -51813,6 +51699,7 @@ hitchpin.com, 1 hitchunion.org, 1 hitech-news.ml, 1 +hitech-zone.com, 0 hitechgr.eu, 1 hiteco.com, 1 hitekcomputing.net, 1 @@ -52133,7 +52020,6 @@ hollabanken.cf, 1 holland-sailing.de, 1 hollandco.com, 1 -hollander.com, 1 hollanderclub.tk, 1 hollandersleepproducts.com, 1 hollandhouse.info, 1 @@ -52163,7 +52049,6 @@ holowaty.me, 1 holoxplor.space, 1 holstein.tk, 1 -holstphoto.com, 1 holtcountyne.gov, 1 holtslander.ca, 1 holubowski.com, 1 @@ -52209,6 +52094,7 @@ home-remedies.tk, 1 home-sagita.tk, 1 homeable.io, 1 +homeadore.com, 1 homeadvice.ga, 1 homeadvice.tk, 1 homeandliving.it, 1 @@ -52782,7 +52668,6 @@ hotel-le-vaisseau.ch, 0 hotel-promyk.pl, 1 hotel-rosner.at, 1 -hotel-villaelaia.fr, 1 hotelamgarnmarkt.at, 0 hotelarevalo.com, 1 hotelastor.com, 1 @@ -52818,6 +52703,7 @@ hotels-insolites.com, 1 hotels-resorts-in-crimea.tk, 1 hotels3d.com, 1 +hotels4teams.com, 1 hotelsalzberg.ga, 1 hotelsalzberg.gq, 1 hotelsalzberg.ml, 1 @@ -52951,7 +52837,6 @@ howardscholars.org, 1 howarh.com, 1 howbehealthy.com, 1 -howbigismybuilding.com, 1 howdybikes.com, 1 howellaccounts.co.uk, 1 howesky.com, 1 @@ -53025,14 +52910,12 @@ hplace.com.br, 1 hpneo-conseil.com, 1 hps.digital, 1 -hps.hu, 1 hpsdigital.hu, 1 hpvtimmerwerken.nl, 1 hq.marketing, 1 hq77.ru, 1 hqblog.cn, 0 hqmovies.club, 1 -hqq.tv, 1 hqteas.com, 1 hquest.pro.br, 1 hqwebhosting.tk, 0 @@ -53075,6 +52958,7 @@ hrndz.io, 1 hro.to, 1 hrobert.hu, 1 +hroling.nl, 1 hromaticworld.tk, 1 hroschyk.cz, 1 hrpage.ml, 1 @@ -53487,7 +53371,6 @@ hustl.nl, 1 hustle.com, 1 hustlerstate.tk, 1 -hutchh.com, 1 hutchinsonmn.gov, 1 huthacks.com, 1 huto.ml, 1 @@ -53536,7 +53419,6 @@ hwx8.com, 0 hx-sun.com, 1 hx36.net, 1 -hx56.cc, 1 hx678.cc, 1 hx77.cc, 0 hxkvm.com, 1 @@ -53589,6 +53471,7 @@ hydronium.ml, 1 hydronium.tk, 1 hydroponicglobal.com.au, 1 +hydrosight.com, 1 hydroturbine.info, 0 hydrozone.fr, 1 hyec.jp, 1 @@ -53634,7 +53517,6 @@ hypertensionexplained.com, 1 hypertesto.me, 1 hyperthymia.com, 1 -hyperverge.co, 1 hypevents.net, 1 hypexstore.tk, 1 hyphen.co.za, 1 @@ -53681,7 +53563,6 @@ hyychat.com, 1 hyyen.com, 1 hyyperchat.com, 1 -hyza.sk, 1 hzbk.org, 0 hztgzz.com, 1 hzwc.nl, 1 @@ -53738,6 +53619,7 @@ i365365.com, 1 i36588.com, 1 i3o.me, 1 +i4cu.uk, 1 i4net.eu, 1 i51365.com, 1 i5197.co, 1 @@ -53862,6 +53744,7 @@ ibericartechnik.es, 1 iberion.pl, 1 ibertel.eu, 1 +ibestproduct.com, 0 ibetora.com, 1 ibexcore.com, 1 ibexmultiday.com, 1 @@ -53949,7 +53832,6 @@ iceshadow.tk, 1 icetiger.eu, 1 icetravellers.com, 0 -icetwister.com, 1 icewoman.net, 1 icewood-bois.com, 1 ich-finde-wikipedia-toll.tk, 1 @@ -53985,7 +53867,6 @@ icmarket.com, 1 icmfortaleza.tk, 1 icmhd.ch, 0 -icmp2018.org, 1 icnc.ga, 1 icnsoft.org, 1 ico.wf, 1 @@ -53999,7 +53880,6 @@ icon-programming.tk, 1 iconintegration.com.au, 1 iconoarte.tk, 1 -iconomi.net, 1 icons4free.tk, 1 iconworld.ml, 1 iconx.ml, 1 @@ -54011,12 +53891,11 @@ icpc2016.in.th, 1 icq-project.net, 1 icq-world.tk, 1 -icreative.nl, 0 +icreative.nl, 1 icruise.com, 1 ics.edu.hn, 1 icst.tk, 1 ict-concept.nl, 1 -ict-crew.nl, 1 ict-radar.com, 1 ict-radar.nl, 1 ict.govt.nz, 1 @@ -54107,6 +53986,7 @@ idee-lq.net, 1 ideeaanzee.tv, 1 ideefactory.de, 1 +idegrafico.com, 0 idehvector.com, 1 ideiasefinancas.com.br, 1 ideice.gob.do, 1 @@ -54136,7 +54016,6 @@ idesoft.eu, 1 idesoft.net, 1 idesoft.org, 1 -idesoftinnovacion.com, 1 idesoftinnovacion.es, 1 idev-hub.com, 1 idevicesinc.com, 1 @@ -54160,7 +54039,6 @@ idleleo.com, 1 idlemon.net, 1 idlethoughtsandramblings.com, 1 -idlewildflowers.com, 1 idlxb.com, 1 idmanagement.gov, 1 idmaster.ml, 1 @@ -54202,7 +54080,10 @@ ie.edu, 1 ie.search.yahoo.com, 0 iechistore.com, 1 +ieeeaast.org, 1 ieeedeis.org, 1 +ieeesb.nl, 1 +ieeesbe.nl, 1 ieeespmb.org, 1 iegat.com, 1 iegatpracticetest.com, 1 @@ -54245,6 +54126,7 @@ ifgcdn.com, 1 ifibe.com, 1 ifisher.xyz, 1 +ifitko.cz, 1 ifleurs.com, 1 iflixtv.ga, 1 iflyi.me, 1 @@ -54283,7 +54165,6 @@ ig.me, 1 iga-semi.jp, 1 igamingaffiliateprograms.com, 1 -igamingdirectory.com, 1 igamingnews.com, 1 igamingpocketdirectory.com, 1 igamingsuppliers.com, 1 @@ -54385,7 +54266,6 @@ ihkk.net, 1 ihls.world, 0 ihmphila.org, 1 -ihoey.com, 1 ihorizon.jp, 1 ihorvorotnov.com, 1 ihost.md, 1 @@ -54725,7 +54605,6 @@ imcreative.ro, 1 imcsi.cn, 1 imdb.com, 1 -imdhd.org, 1 ime-a-tolerancia-eredmenye.club, 1 ime.moe, 1 imed.com.pt, 1 @@ -54745,9 +54624,9 @@ imfacademy.com, 1 imforza.com, 1 img.mg, 1 +img.ovh, 1 imgaa.com, 1 imgbb.com, 1 -imgbu.com, 1 imgencrypt.com, 1 imgg.es, 1 imgo.ga, 1 @@ -54933,6 +54812,7 @@ imprimante-3d-store.fr, 1 improfestival.ee, 1 improklinikken.dk, 1 +improv.ee, 1 improvebusinessonline.info, 1 improved-madness.de, 1 improvenerg.com, 1 @@ -54970,6 +54850,7 @@ in-depthoutdoors.com, 1 in-flames.com, 1 in-love.tk, 1 +in-ua.com, 1 in.search.yahoo.com, 0 in.xero.com, 0 in10tion.com, 0 @@ -54985,7 +54866,6 @@ inanec.gq, 1 inaned.ga, 1 inantrantung.com, 1 -inanyevent.london, 1 inares.org, 1 inarizona.tk, 1 inazuma7.jp, 1 @@ -55159,7 +55039,6 @@ indonesianadventure.id, 1 indonesiatrip.tk, 1 indoor-kletterwald.de, 1 -indoorpaintball.co.uk, 1 indopress.tk, 1 indorsie.com, 1 indospot.ml, 1 @@ -55261,6 +55140,7 @@ infinityepos.co.uk, 1 infinityfaces.tk, 1 infinityhts.com, 1 +infinityrecruitinggroup.com, 1 infinitysearch.co, 1 infinitysportsandfitness.in, 1 infinityvr.net, 1 @@ -55407,7 +55287,6 @@ infosecdecompress.com, 1 infosecmates.com, 1 infosecsw.ca, 1 -infosectalks.com, 1 infosectekniques.com, 1 infosective.org, 1 infosenior.ch, 0 @@ -55622,7 +55501,6 @@ inmamaskitchen.com, 1 inmaps.xyz, 1 inmatefinancial.com, 1 -inmateintake.com, 1 inmedic.pl, 1 inmemorium.tk, 1 inmemoryofdaniella.com, 1 @@ -55705,12 +55583,11 @@ inpatec.com, 1 inpdp.tk, 1 inpector.de, 1 -inphi.com, 1 inprint.id, 1 inprosy.com, 1 inprotec.com.co, 1 input.club, 1 -input.pt, 0 +input.pt, 1 input.sh, 1 inputclub.com, 1 inputmodes.com, 1 @@ -55750,7 +55627,6 @@ insideaudit.com, 1 insidebeach.com.br, 1 insidebedroom.com, 0 -insidebitcoins.de, 1 insideevs.com, 1 insideevs.com.tr, 1 insideevs.de, 1 @@ -55996,7 +55872,6 @@ interasistmen.se, 1 interbec.com, 1 interc0der.tk, 1 -interchangeillawarra.org, 1 interchanges.io, 1 intercom-attachments-1.com, 1 intercom-attachments-5.com, 1 @@ -56194,7 +56069,6 @@ inu.nl, 1 inuevostiempos.es, 1 inumcoeli.com.br, 1 -inup.jp, 1 inusasha.de, 1 inuyasha-petition.tk, 1 invadecafe.tk, 1 @@ -56320,7 +56194,6 @@ inwit.tk, 1 inwonderofit.com, 1 inyourcornerinsurance.com, 1 -inyourowntime.info, 1 inyourowntime.zone, 1 inzdr.com, 1 inzeitinteractive.tk, 1 @@ -56388,7 +56261,6 @@ iotportal.tk, 1 iotsms.io, 1 iowacolonytx.gov, 1 -iowaent.com, 1 iowaintex.gov, 1 iowamissingpersons.gov, 1 iowaschoolofbeauty.com, 1 @@ -56452,6 +56324,7 @@ ipigri.tk, 1 ipinfo.tw, 1 ipioneer.ga, 1 +iplaycraft.ru, 1 iplayradio.net, 0 ipleak.net, 1 ipledgeonline.org, 0 @@ -56512,7 +56385,7 @@ ipv6.jetzt, 0 ipv6ioffentligsektor.se, 1 ipv6vpn.net, 1 -ipvbook.com, 1 +ipvbook.com, 0 ipwho.site, 1 iqos.com.ua, 1 iqos.ml, 1 @@ -56737,7 +56610,6 @@ isastylish.com, 1 isavings.com, 1 isbaseballstillon.com, 1 -isbengrumpy.com, 1 isc2estoniachapter.ee, 1 iscert.org, 1 ischool.co.jp, 1 @@ -56984,6 +56856,7 @@ it-expert.tk, 1 it-inside.ch, 1 it-jobbank.dk, 1 +it-journal.de, 0 it-kron.de, 1 it-maker.eu, 1 it-meneer.nl, 1 @@ -57337,6 +57210,7 @@ iwtsd.gov, 1 iww.me, 1 iww.mx, 1 +iwyc.cn, 0 ix8.ru, 0 ixaris.com, 1 ixiatiao.com, 1 @@ -57543,7 +57417,6 @@ jacksfeestverhuur.nl, 1 jackson-quon.com, 1 jacksoncountyfl.gov, 1 -jacksonhu.com, 1 jacksonville.gov, 1 jacksonvilleal.gov, 1 jacksorrell.com, 1 @@ -57874,12 +57747,10 @@ jarmix.fi, 1 jarniashop.se, 1 jarno.rocks, 1 -jarnob.xyz, 1 jarnobogaert.com, 0 jarnobogaert.xyz, 1 jarnskog.tk, 1 jarofthread.com, 1 -jaroku.com, 1 jarondl.net, 1 jaroslavc.eu, 1 jarovske-udoli.cz, 1 @@ -58051,7 +57922,6 @@ jcaicedo.com, 1 jcaicedo.tk, 1 jcb.com, 1 -jcbgolfandcountryclub.com, 1 jccars-occasions.be, 1 jccrew.org, 1 jcde.xyz, 0 @@ -58271,7 +58141,6 @@ jembatankarir.com, 1 jemefaisdesamis.com, 1 jemezsprings-nm.gov, 1 -jemianna.com, 1 jemnezymy.com, 1 jemore.it, 1 jemoreng.tk, 1 @@ -58339,6 +58208,7 @@ jerichoproject.org, 1 jering.tech, 1 jerisandoval.tk, 1 +jermann.biz, 1 jerodslay.com, 1 jeroendeneef.com, 1 jeroendev.one, 1 @@ -58436,6 +58306,7 @@ jetsieswerda.nl, 1 jetson.tk, 1 jetstreampro.com, 1 +jetstudio.ch, 0 jetswhiteout.com, 1 jettenbommelaer.nl, 1 jettenjachtbouw.eu, 1 @@ -58528,7 +58399,6 @@ jiangwu.eu, 1 jiangxu.site, 1 jiangzm.com, 0 -jianji.de, 1 jianny.me, 1 jianshu.com, 1 jianwei.wang, 1 @@ -58635,7 +58505,6 @@ jj9721.com, 0 jj9728.co, 1 jjhampton.com, 1 -jjhof.com, 1 jjj.blog, 1 jjsguitarpickups.com, 1 jjspartyhire.co.uk, 1 @@ -58993,7 +58862,6 @@ jolle.io, 1 jollyfun.tk, 1 jollygoodspudz.ca, 1 -jollyjoker.de, 1 jollykidswobbleworld.co.uk, 1 jollytotschildminder.com, 1 jolo.software, 1 @@ -59102,10 +58970,10 @@ joomlon.com, 0 joompress.biz, 1 joona.pw, 1 +joonatoona.me, 1 joorshin.ir, 1 joostbovee.nl, 1 joostmaglev.nl, 1 -joostrijneveld.nl, 1 joostvanderlaan.nl, 1 jootshop.ga, 1 jophson.tk, 1 @@ -59315,6 +59183,7 @@ jpsinflatables.co.uk, 1 jpslconsulting.ca, 1 jpst.it, 1 +jpvermogensregie.com, 1 jqlin.com, 1 jqlsql.com, 1 jquery.wtf, 1 @@ -59501,6 +59370,7 @@ julian-weigle.de, 1 julian.tech, 1 julianaedouglas.ga, 1 +julianaferrari.com.br, 1 julianbroadway.com, 1 juliangonggrijp.com, 1 juliangramajo.tk, 1 @@ -59570,7 +59440,6 @@ jumperke.be, 1 jumperoos.co.uk, 1 jumperweb.tk, 1 -jumpgc.com, 1 jumping4all.com, 1 jumping4all.info, 1 jumping4all.nl, 1 @@ -59885,6 +59754,7 @@ k87100.com, 0 k87120.com, 0 k87178.com, 1 +k87183.com, 0 k87210.com, 0 k873.co, 1 k873.com, 1 @@ -59942,7 +59812,7 @@ k8slot.com, 0 k8v02.com, 0 k8v03.com, 0 -k8v05.com, 0 +k8v05.com, 1 k8v08.com, 1 k8v21.com, 0 k8v27.com, 0 @@ -60237,6 +60107,7 @@ kamlunglelystad.tk, 1 kamnob.com, 1 kamokiminoyu.net, 1 +kamp-kisten.nl, 1 kampffische.tk, 1 kamppailusali.fi, 1 kampunginggris-ue.com, 1 @@ -60318,7 +60189,6 @@ kanzashi.com, 1 kanzlei-hhh.de, 1 kanzlei-oehler.com, 1 -kanzlei-sixt.de, 1 kanzshop.com, 1 kaosintesta.tk, 1 kap-kirche.de, 1 @@ -60366,7 +60236,6 @@ karacommagere.com, 1 karadenizhaberleri.tk, 1 karajonline.tk, 1 -karalane.com, 0 karamel69.ru, 1 karamomo.net, 1 karanastic.com, 0 @@ -60574,7 +60443,6 @@ katekligys.com, 1 katemihalikova.cz, 1 katenka.tk, 1 -katericke.com, 1 katerinastudio.com, 1 katerinaverbovskaya.com, 1 katerman.cf, 1 @@ -60771,6 +60639,7 @@ kcsordparticipation.org, 1 kcsprayfoam.com, 1 kd.net.nz, 1 +kd3.in, 1 kdcinfo.com, 1 kde-je-skladem.cz, 1 kdex.de, 1 @@ -61024,6 +60893,7 @@ keramed.gq, 1 keramikaopava.cz, 1 kerb-grossauheim.de, 1 +kerbin.org, 1 kercovaparty.tk, 1 kerebro.com, 1 kerijacoby.com, 1 @@ -61037,7 +60907,7 @@ kernel-panik.me, 1 kernel.nz, 1 kernelpanics.nl, 1 -kernelprogrammer.com, 1 +kernelprogrammer.com, 0 kernet.com.ar, 1 kernkompas.nl, 1 kerocristais.pt, 0 @@ -61107,7 +60977,6 @@ kevincoynepage.tk, 1 kevincramer.net, 1 kevindienst.blog, 0 -kevindustries.com, 1 kevinfigueroamusic.tk, 1 kevinfoley.org, 1 kevinfumbles.com, 1 @@ -61121,7 +60990,6 @@ kevinmo.com, 0 kevinmoreland.com, 1 kevinn.nl, 1 -kevinpatel.com, 1 kevinperrow.com, 1 kevinpirnie.com, 1 kevinrandles.com, 0 @@ -61263,7 +61131,6 @@ khebranet.tk, 1 khedmatazma.com, 1 kheshtar.pl, 1 -khetibuddy.com, 1 khetzal.info, 1 khey-tv.fr, 1 khg-orchester.de, 1 @@ -61295,7 +61162,6 @@ ki-management.ch, 1 kiadoapartman.hu, 1 kiahalchemy.com, 1 -kiahoriane.com, 1 kialo-edu.com, 1 kialo-pro.com, 1 kialo.com, 1 @@ -61507,7 +61373,6 @@ kinesiologiuddannelsen.dk, 1 kinetikos.com.au, 1 kinetiq.com, 1 -kineto.space, 1 king-of-the-castles.com, 1 kingant.net, 1 kinganywhere.eu, 1 @@ -61653,6 +61518,7 @@ kirie-photos.tk, 1 kirig.ph, 1 kirikira.moe, 1 +kirill.ws, 1 kirillaristov.com, 1 kirillpokrovsky.de, 1 kirina.nl, 1 @@ -61832,7 +61698,6 @@ kkcsc.co.jp, 1 kkgn.nl, 1 kki.org, 1 -kkicreative.com, 1 kkiskra.tk, 1 kkk0011.com, 0 kkk101.com, 0 @@ -61939,7 +61804,6 @@ klev.tk, 1 klever.com.mk, 1 kleverltd.ru, 1 -klexhub.com, 1 kli.is, 1 klickinvite.com, 1 klickstdu.com, 1 @@ -61996,7 +61860,6 @@ klop.info, 1 klose.family, 1 klosko.net, 1 -klothsfrance.com, 1 kloudboy.com, 1 kloza.tk, 1 klpiano.my, 1 @@ -62065,7 +61928,7 @@ knighkidoma.tk, 1 knightsblog.de, 1 knightsbridge.net, 1 -knightsweep.com, 1 +knightsweep.com, 0 knighulki.cf, 1 knigi-free.cf, 1 knigi-market.ml, 1 @@ -62136,7 +61999,6 @@ koalarong.com, 0 koalas.org, 1 koba.jp, 1 -kobar.id, 1 kobb.tk, 1 kobejet.com, 1 kobezda.net, 1 @@ -62228,6 +62090,7 @@ kohoutsautomotive.com, 1 kohparadise.com, 1 kohsandra.com, 0 +kohu.nz, 1 koi-lexikon.de, 1 koidulag.edu.ee, 1 koifish.org, 1 @@ -62235,12 +62098,12 @@ koirala.email, 1 koiro.fi, 1 koishi.pro, 1 -koizumidesign.com, 1 koj.co, 1 koji-tsujitani.net, 1 kojiishikawa.com, 1 kojipkgs.fedoraproject.org, 1 koka-shop.de, 1 +kokankart.com, 1 kokensupport.com, 1 koketteriet.se, 1 kokica.si, 1 @@ -62299,11 +62162,11 @@ kolotsainaskoto.tk, 1 kolpingsfamilie-vechta-maria-frieden.de, 1 kolrami.com, 1 -koltiva.com, 1 koluke.co, 1 koluke.com, 1 kolyapetrov.tk, 1 kom.pe, 1 +komall.net, 1 komarex.pl, 1 komarh.tk, 1 komehyo.co.jp, 1 @@ -62526,7 +62389,6 @@ korolevstvo-movie.ml, 1 koroli.tk, 1 koroshkabir.tk, 1 -korporativnabezbednost.rs, 1 korrelzout.nl, 1 korsanparti.net, 1 korst.tk, 1 @@ -62773,6 +62635,7 @@ kreolis.net, 1 kresimir-blazevic.tk, 1 kreslorotang.com.ua, 1 +krestanskydarek.cz, 1 kretaforum.dk, 1 kretschmann.consulting, 1 kreuzbergflieger.de, 1 @@ -62829,13 +62692,12 @@ kristineskitchenblog.com, 1 kristjanrang.eu, 0 kristofba.ch, 1 -kristofdv.be, 1 +kristofdv.be, 0 kristoffer.is, 1 kriston.tk, 1 kriswauters.tk, 1 kritical.es, 1 kritikawebu.cz, 1 -kritikos.io, 1 kriyayoga.fr, 1 krizevci.info, 1 krizialim.tk, 1 @@ -62858,6 +62720,7 @@ kronos-crm.com, 1 kronos-web.com, 1 kronosproject.tk, 1 +krony.de, 1 kronych.cz, 1 kroon.email, 1 kropkait.pl, 1 @@ -62865,6 +62728,7 @@ krossakorven.tk, 1 krouzkyliduska.cz, 0 krovatka.tk, 1 +kroy.io, 1 kroyou.com, 0 krozilla.tk, 1 krpaforum.org, 1 @@ -62915,7 +62779,6 @@ krystal-framework.ml, 1 krytykawszystkiego.com, 1 krytykawszystkiego.pl, 1 -kryx.de, 1 ks-19.com, 1 ks-29.com, 1 ks-39.com, 1 @@ -63221,6 +63084,7 @@ kunstundkulturradioschoepfwerk.tk, 1 kunstundunrat.de, 1 kunvarji.com, 1 +kunze-medien.de, 0 kuon.me, 1 kuoruan.com, 1 kuotiva.com, 1 @@ -63228,7 +63092,6 @@ kupaa.ink, 1 kupferschmids.ch, 1 kupferstichshop.com, 1 -kupibilet.ru, 1 kupid.com, 1 kupil.ru, 1 kupimlot.ru, 1 @@ -63414,8 +63277,6 @@ kyledrake.net, 1 kyleggiero.me, 1 kylegutschow.com, 1 -kylehaka.la, 1 -kylehakala.com, 1 kylejohnson.io, 1 kylelaker.com, 1 kylepet.co, 1 @@ -63492,6 +63353,7 @@ la-boutique-langlois.fr, 1 la-buns.com, 1 la-casa.tk, 1 +la-cave-a-nodo.fr, 0 la-clairiere-arlon.be, 1 la-compagnie-des-elfes.fr, 1 la-fenice-neheim.de, 1 @@ -63596,7 +63458,6 @@ lacazadora.tk, 1 laceleste.it, 1 lacentral.com, 0 -lacetsfun.com, 1 lacetsroses.ch, 1 laceysfarm.ie, 1 lachainedesentrepreneurs.fr, 1 @@ -63753,7 +63614,6 @@ laguiadelocioenuruguay.com, 1 laguiadelpapa.com, 1 laguinguette.fr, 1 -lagunakitchenandbath.com, 1 lagunaklub.tk, 1 laguterbaru.gq, 1 lahabra.gov, 1 @@ -63795,7 +63655,6 @@ lakelandbank.com, 1 lakelandmom.com, 1 lakemillsiowa.gov, 1 -lakeoswegotowncar.com, 1 lakersview.com, 1 lakesherwoodelectric.com, 1 lakesherwoodelectrical.com, 1 @@ -63806,7 +63665,6 @@ lakesherwoodoutdoorlighting.com, 1 lakeshiremo.gov, 1 lakeshowlife.com, 1 -lakestclairguide.com, 1 lakestreetministorage.com, 1 lakevotes.gov, 1 lakewinnipegdatastream.ca, 1 @@ -63940,7 +63798,6 @@ landfrauen-hermetschwil.ch, 1 landhaus-christmann.de, 0 landhof-scout.de, 1 -landifer.cz, 1 landinfo.no, 1 landing-phillipferreira.herokuapp.com, 1 landingear.com, 1 @@ -64007,7 +63864,6 @@ langly.fr, 1 langotie.com.br, 1 langrock.info, 0 -langstreckensaufen.de, 1 languageatplay.de, 1 languagecourse.net, 1 languageio.com, 1 @@ -64682,11 +64538,7 @@ lc8917.com, 1 lc8918.com, 1 lc892.com, 1 -lc8924.com, 1 -lc8925.com, 1 -lc8926.com, 1 lc8928.com, 1 -lc8929.com, 1 lc893.com, 1 lc8930.com, 1 lc8931.com, 1 @@ -64864,7 +64716,6 @@ leaseplanbank.de, 1 leaseplanbank.nl, 1 leasit.de, 1 -leaskoupartners.com, 1 leastern.net, 1 leastsignificantbit.de, 1 leatam.fr, 1 @@ -65157,7 +65008,6 @@ legrandvtc.fr, 1 legro.tk, 1 legterm.cz, 1 -legumeinfo.org, 1 legyenkianegykereked.hu, 1 lehighvalleypeds.com, 1 lehmitz-weinstuben.de, 1 @@ -65222,7 +65072,6 @@ lemagauto.fr, 1 lemans.com.gt, 1 lemarcheelagrandeguerra.it, 1 -lemarquier.com, 1 lemasdupalus.com, 1 lemat.de, 1 lemazol.fr, 1 @@ -65243,6 +65092,7 @@ lemonpool.com.tr, 1 lemonrockbiketours.com, 1 lemonrotools.com, 1 +lemuslimpost.com, 1 lena-klein.de, 1 lena-klein.eu, 1 lena-nitro.org, 1 @@ -65260,7 +65110,6 @@ lendingmate.ca, 1 lenemes.tk, 1 lenergietoutcompris.fr, 1 -lenget.com, 1 lengow.com, 1 lengua-alemana.tk, 1 lenguajecoloquial.com, 1 @@ -65311,6 +65160,7 @@ leo-boutique.fr, 1 leo-music.tk, 1 leoandpeto.com, 1 +leob.in, 0 leochedibracchio.com, 1 leocollo.com, 1 leodraxler.at, 1 @@ -65385,7 +65235,7 @@ lequerceagriturismo.com, 1 lequest.dk, 1 lequocthai.com, 1 -lereporter.ma, 1 +lereporter.ma, 0 leretour.ch, 0 lerika.tk, 1 lerku.com, 1 @@ -65661,14 +65511,12 @@ lfyhokk.tk, 1 lg-obchod.cz, 1 lg-store.sk, 1 -lg-waps.go.jp, 1 lg-world.cz, 1 lg.gz.cn, 1 lg0.site, 1 lg2.com, 1 lgam.com, 1 lgbt-colleges.com, 1 -lgbt.io, 1 lgbt.ventures, 1 lgbtventures.com, 1 lgbusiness.es, 0 @@ -65724,7 +65572,6 @@ liangbi.ml, 1 lianglongcredit.com, 1 liangxingai.com, 1 -liangyichen.net, 1 lianwen.kim, 1 liaozheqi.cn, 1 liaronce.com, 1 @@ -65732,7 +65579,6 @@ libbitcoin.org, 1 libble.eu, 1 libbysbooks.com, 1 -libbywinberginteriors.com.au, 1 libcip.org, 1 libcmodbus.org, 1 libcrc.org, 1 @@ -66134,7 +65980,6 @@ lillylove.net, 1 lillypornokatze.net, 1 lilomatrixcorner.fr, 1 -lilosaludable.com, 1 lilou-sportswear.com, 1 lilov.com.ua, 1 lilpwny.com, 1 @@ -66182,6 +66027,7 @@ limoairporttoronto.net, 1 limoforsale.com, 1 limoshka.ru, 1 +limousineservicezurich.com, 0 limouzines.cf, 1 limouzy-combi.com, 1 limpiadordeporos.online, 1 @@ -66406,7 +66252,6 @@ linux.study, 1 linux3.org, 1 linux4all.tk, 1 -linux4tw.de, 1 linuxadictos.com, 1 linuxarequipa.tk, 1 linuxbabe.com, 1 @@ -66438,9 +66283,9 @@ linuxsecurity.expert, 1 linuxwerkstatt.net, 1 linuz.it, 1 +linx.net, 1 linxmind.eu, 1 linzyjx.com, 1 -lioe.net, 1 lionchita.tk, 1 lionhosting.nl, 1 lionland.tk, 1 @@ -66577,10 +66422,10 @@ literaturka.ga, 1 literaturtage-recklinghausen.de, 1 literie06.com, 1 -literiedupantheon.fr, 1 litespeed-webserver.de, 1 litespeedwebserver.com, 1 litespeedwebserver.de, 1 +litfin.name, 1 litfl.com, 1 lithan.com, 1 lithesalar.se, 1 @@ -66617,7 +66462,6 @@ littlemaster.tk, 1 littlenicky.org, 1 littlenina.nz, 0 -littlenlargeevents.co.uk, 1 littleorangecookbook.com, 1 littlepigcreek.com.au, 1 littlepincha.fr, 0 @@ -66911,6 +66755,7 @@ loafhead.me, 1 loan-lenders.co.za, 1 loanfreeze.ga, 1 +loanmatch.sg, 1 loanpad.com, 1 loanreadycredit.com, 1 loansharkpro.com, 1 @@ -66945,10 +66790,8 @@ localcleann.uk, 1 localcrew.eu, 0 localcryptopremium.com, 1 -localcryptos.com, 1 locald.at, 1 localegroup.com, 0 -localethereum.com, 1 localexpert.realestate, 1 localhorst.duckdns.org, 1 localhost.cat, 1 @@ -67481,7 +67324,6 @@ lordshaokahn.tk, 1 lordskate.tk, 1 lordusa.com, 1 -lordusers.com, 1 lore.azurewebsites.net, 1 loreedeslandes.com, 1 loremipsum.info, 1 @@ -67589,7 +67431,6 @@ lotimena.com, 1 lotl.ru, 1 lotn.mobi, 1 -lotn.nl, 1 lotnonline.com, 1 lotnonline.net, 1 lotnonline.nl, 1 @@ -67733,7 +67574,6 @@ lovg.ren, 1 lovin.ga, 1 lovin.tk, 1 -lovingearth.co, 0 lovink.net, 1 lovizaim.ru, 1 lovlyhorses.tk, 1 @@ -67817,7 +67657,6 @@ lspdonline.gq, 1 lsquo.com, 1 lsscreens.de, 1 -lstlx.com, 1 lstma.com, 1 lstu.tk, 1 lsv-tech.com, 1 @@ -67927,7 +67766,6 @@ lucko.me, 1 luckperms.net, 1 lucky-bul.tk, 1 -lucky-frog.co.uk, 1 lucky-time.tk, 1 luckyabonent.ml, 1 luckycasino.se, 1 @@ -67976,10 +67814,8 @@ ludum.pl, 1 ludunwayoo.com, 1 ludwig.im, 1 -ludwiggrill.de, 1 ludwigjohnson.se, 1 ludwigpro.net, 1 -lueck-bertram.de, 1 luedeke-bremen.eu, 1 lueersen.homedns.org, 1 luehne.de, 1 @@ -68063,7 +67899,6 @@ lukekuza.me, 1 lukem.eu, 0 lukem.net, 1 -lukeng.net, 1 lukepeltier.com, 1 lukesbouncycastlehire.com, 1 lukesutton.info, 1 @@ -68075,7 +67910,6 @@ lukmanulhakim.id, 1 lukonet.com, 1 luksusy.pl, 0 -lukull-pizza.de, 1 lule-kendo.tk, 1 lullugun.net, 1 luls.tk, 1 @@ -68268,7 +68102,7 @@ luxvacuos.net, 1 luxwatch.com, 1 luyckx.net, 1 -luyungterd.com, 1 +luyungterd.com, 0 luzat.com, 1 luzfaltex.com, 1 luzi-type.ch, 1 @@ -68281,12 +68115,14 @@ lvee.org, 1 lvfc.co, 1 lvftw.com, 1 +lvguitars.com, 1 lvmoo.com, 1 lvna.capital, 1 lvnacapital.com, 1 lvrsystems.com, 1 lvtrafficticketguy.com, 1 lw1.at, 1 +lwis.me, 1 lwisa.ma, 1 lwl-foej-bewerbung.de, 1 lwl.moe, 1 @@ -68368,7 +68204,7 @@ lyuda.tk, 1 lyukaacom.ru, 1 lyuks-parfyum.tk, 1 -lyuly.com, 0 +lyuly.com, 1 lyx.dk, 1 lz.sb, 1 lz898.com, 1 @@ -68437,6 +68273,7 @@ m9728.co, 1 m9t.ch, 1 ma-canne-a-peche.fr, 1 +ma-eir.nl, 1 ma-paroisse.ch, 1 ma-queue.com, 1 ma-ze-linux.tk, 1 @@ -68596,7 +68433,6 @@ madeinolive.com, 0 madeinrussia.com, 1 madeinstudio3.com, 1 -madeintucson.org, 1 madeinua.com, 1 madeira.link, 1 mademoe.com, 1 @@ -68723,6 +68559,7 @@ magenda.sk, 1 magenkompass.de, 1 magentaize.net, 1 +magenx.com, 1 magepro.fr, 1 magescobd.com, 1 magesy.blog, 1 @@ -68860,7 +68697,6 @@ mahalux.cz, 1 mahanpt.com, 1 mahaskacountyia.gov, 1 -mahatmayoga.org, 1 mahawi.sk, 1 mahayana.tk, 1 mahbobmax.tk, 1 @@ -68932,7 +68768,7 @@ mailexx.ml, 1 mailfence.com, 1 mailflank.com, 0 -mailgun.com, 1 +mailgun.com, 0 mailhardener.com, 1 mailinabox.email, 1 mailinabox.ml, 1 @@ -68990,6 +68826,7 @@ maisallianz.com, 1 maisapanama.com, 1 maiscelular.com.br, 1 +maiscuidar.com, 1 maisempregonet.com, 1 maisgasolina.com, 1 maisie.nl, 1 @@ -69022,6 +68859,7 @@ majkassab.com, 1 majkassab.net, 1 majkassab.org, 1 +majkl.me, 1 majkl578.cz, 1 majkyto.cz, 1 majlovesreg.one, 1 @@ -69737,7 +69575,6 @@ marinella.tk, 1 marinershousecalstock.com, 1 marinettecountywi.gov, 1 -maringalazer.com.br, 1 mario-ancic.tk, 1 mario-sarto.com, 1 mario.com.ua, 1 @@ -69839,7 +69676,6 @@ marketsearch.ga, 1 marketsosyali.tk, 1 marketvalue.gq, 1 -markf.io, 1 markfietje.eu, 1 markfisher.photo, 1 markhaehnel.de, 1 @@ -69924,6 +69760,7 @@ marocnews.tk, 1 marocweb.tk, 1 maroebeni.tk, 1 +marokkaansearganolie.nl, 1 marolu.one, 1 maroquineriepirlot.be, 0 maroshionline.tk, 1 @@ -69978,7 +69815,6 @@ marten-buer.de, 1 martensmxservice.nl, 1 martensson.io, 1 -martex.pro, 1 marthakenney.com, 1 marthasvillemo.gov, 1 marthus.com.br, 1 @@ -70153,8 +69989,6 @@ masrilanguage.tk, 1 masrur.org, 1 mass.pt, 1 -massa.net, 1 -massaboutique.com, 1 massaer.tk, 1 massage-colleges.com, 1 massage-la-clusaz.com, 1 @@ -70175,6 +70009,7 @@ masse.org, 1 massflix.com, 1 massfone.com, 1 +masshiro.blog, 1 masshost.tk, 1 massive.tk, 1 massiveanalyser.com, 1 @@ -70200,20 +70035,16 @@ mastercareplus-uat.com, 1 mastercareplus.com, 1 mastercheat.net, 1 -masterclasses.online, 1 +mastercomfig.com, 1 masterdan.net, 1 masterdemolitioninc.com, 1 masterdesingweb.tk, 1 masterdigitale.com, 1 masterdrilling.com, 1 -masterenciberseguridadonline.es, 1 -masterenenologiaonline.es, 1 -masterenmarketingdigitaldq.es, 1 masterglasses.ru, 1 masterhelenaroma.com, 1 masterhoteis.com.br, 1 masterin.it, 1 -masteringenieriadelfuego.es, 1 masterjuantex-projects.tk, 1 masterkitchen.com.br, 1 masterminer.tk, 1 @@ -70274,6 +70105,7 @@ matchmadeinstubton.com, 1 matchpointusa.com, 1 matchupmagic.com, 1 +matdesign-prod.com, 1 mate.software, 1 matebalazs.hu, 1 matega.hu, 1 @@ -70490,6 +70322,7 @@ matway.com, 1 matway.net, 1 matyldamost.cz, 1 +matze.co, 1 matze.org, 0 mau.chat, 1 mau.fi, 1 @@ -70590,8 +70423,8 @@ maxico.tk, 1 maxiglobal.net, 1 maxihide.tk, 1 +maxima.at, 0 maximanet.tk, 1 -maximarket.info, 1 maximbaz.com, 1 maximdeboiserie.be, 1 maximdens.be, 1 @@ -70659,6 +70492,7 @@ maxwellcody.com, 1 maxwellmoore.co.uk, 1 maxwittfeld.tech, 1 +may24.tw, 1 mayaimplant.com, 1 mayamaibach.org, 1 mayamushrooms.co.uk, 1 @@ -70776,7 +70610,6 @@ mcconciergerie.com, 1 mccoolesredlioninn.com, 1 mccordscvs.com, 1 -mccordsvillelocksmith.com, 1 mcculloughjchris.com, 0 mcculloughsgolf.com, 1 mccurtainems.gov, 1 @@ -70851,6 +70684,7 @@ mcon.se, 1 mconline.sg, 1 mcoutinho.pt, 0 +mcpa.top, 0 mcpaoffice.com, 1 mcpart.land, 1 mcpat.com, 1 @@ -70872,6 +70706,8 @@ mcsports.es, 1 mcsrvstat.us, 1 mcstaralliance.com, 1 +mcsteve.com, 1 +mctea.tk, 1 mctherealm.net, 1 mctitan.net, 1 mctools.org, 1 @@ -71386,7 +71222,6 @@ mediathekview.de, 1 mediation-mv.de, 1 mediationculturelleclp.ch, 0 -mediatorzy.waw.pl, 1 mediaukkies.nl, 1 mediawax.be, 1 mediaweb.com.ve, 1 @@ -71569,7 +71404,6 @@ mega.nz, 1 megaar.tk, 1 megabike.tk, 1 -megablogging.org, 1 megabook.ml, 1 megabounce.co.uk, 1 megabouncingcastles.com, 1 @@ -71832,6 +71666,7 @@ memetrash.co.uk, 1 memind.net, 1 memiux.com, 1 +memo-linux.com, 1 memo.ee, 1 memoire-resistance-ariege.fr, 1 memoirmedie.dk, 1 @@ -71857,7 +71692,7 @@ menddie.com, 1 mendekuitxua.tk, 1 mendel.tk, 1 -mendelsphotography.com, 1 +mendelsphotography.com, 0 mendelsphotography.tk, 1 menden.com, 1 mendipbouncycastles.co.uk, 1 @@ -71891,7 +71726,7 @@ menlosecurity.com, 1 menn.tk, 1 mennace.com, 1 -menno.cloud, 1 +menno.cloud, 0 menno.me, 1 menole.com, 1 menole.de, 1 @@ -72055,6 +71890,7 @@ merson.org, 1 merson.tv, 1 mertak.cz, 1 +mertarauh.com, 0 mertcangokgoz.com, 1 meruri.com, 1 mervart.co.uk, 1 @@ -72086,7 +71922,6 @@ meskimonos.fr, 1 meskiukas.tk, 1 meslekifikir.com, 1 -meslekkursu.com, 1 mesmer.tk, 1 mesomeds.com, 1 mesonandino.tk, 1 @@ -72532,10 +72367,11 @@ michey.tk, 1 michibeck.eu, 1 michielbijland.nl, 1 +michielvanfastenhout.nl, 1 michig.tk, 1 michiganhealth.tk, 1 michiganstateuniversityonline.com, 1 -michiganunionoptout.com, 1 +michiganunionoptout.com, 0 michilaw.com, 1 michmexguides.com.mx, 1 michu.pl, 1 @@ -72696,7 +72532,6 @@ mijntelefoonboek.com, 1 mijntransacties.nl, 0 mijnwefact.nl, 1 -mika.cat, 1 mika.moe, 1 mikadoe.nl, 1 mikaelf.com, 1 @@ -72768,8 +72603,7 @@ mikkonen.bio, 1 miklagard.dk, 1 miklcct.com, 1 -mikmik.co.il, 1 -miknight.com, 1 +miknight.com, 0 mikonmaa.fi, 1 mikori.sk, 1 mikos.tk, 1 @@ -73112,7 +72946,6 @@ minor.news, 1 minorisa.tk, 1 minoritywhip.gov, 1 -minorshadows.net, 1 minotauro.com.ar, 1 minoxbahia.com.br, 1 minpingvin.dk, 1 @@ -73216,7 +73049,6 @@ mironi.ml, 1 mironized.com, 1 mironov.tk, 1 -mirror.ua, 1 mirrordream.net, 1 mirrormirror.tk, 1 mirrorsedgearchive.de, 1 @@ -73333,7 +73165,6 @@ mit.gg, 0 mita-beutel.tk, 1 mita.me, 1 -mitarbeiter-pc.de, 1 mitarbeiterbefragungen.com, 1 mitarbeitermotivation-anleitungen.de, 1 mitchell.id, 1 @@ -73411,7 +73242,6 @@ mix.my, 1 mixandplay.tk, 1 mixedbagashley.com, 1 -mixedmenus.com, 1 mixedrecipe.com, 1 mixes.cloud, 1 mixescloud.com, 1 @@ -73454,9 +73284,9 @@ mjacobson.net, 1 mjanja.ch, 1 mjasm.org, 1 +mjgroup.io, 1 mjhs.org, 1 mjhsfoundation.org, 1 -mjjlab.com, 1 mjkholding.nl, 1 mjmedia.co.za, 1 mjniessen.com, 1 @@ -73645,7 +73475,6 @@ mnhc.gov, 1 mnienamel.com, 1 mniopenresearch.org, 1 -mnitro.com, 1 mnium.de, 1 mnjg123.de, 1 mnlfnet.com, 1 @@ -73769,6 +73598,7 @@ mobizma.com, 1 moblkar.com, 1 mobmp4.info, 1 +mobobe.com, 1 mobolight.ml, 1 mobot.sg, 1 mobsitin.tk, 1 @@ -73798,7 +73628,6 @@ modaexecutiva.com.br, 1 modafinilici.com, 1 modafo.com, 1 -modahouse.co, 1 modalogi.com, 1 modalrakyat.com, 1 modamoom.com.br, 1 @@ -73918,7 +73747,6 @@ moenew.top, 1 moenew.us, 1 moepass.com, 1 -moeqing.net, 1 moescat.xyz, 0 moesif.com, 1 moetrack.com, 1 @@ -73975,7 +73803,6 @@ mojeco2.cz, 1 mojefedora.cz, 1 mojefilmy.xyz, 1 -mojezegarki.pl, 1 mojilitygroup.com, 1 mojitoparty-articlespara.website, 1 mojizuri.jp, 1 @@ -74148,7 +73975,6 @@ mongolbox.tk, 1 mongolie.net, 1 mongolito.tk, 1 -mongooselock.com.ua, 1 monicahq.com, 1 monicanaranjo.tk, 1 monicapotter.tk, 1 @@ -74386,7 +74212,6 @@ moratilla.ml, 1 morawiecki.pl, 1 morbatex.com, 1 -morbiceramicindustry.com, 1 morbitiles.org, 1 morbius.cz, 1 morbotron.com, 1 @@ -74471,7 +74296,6 @@ morozstudio.tk, 1 morozyaka.tk, 1 morph3d.tk, 1 -morphose.io, 1 morrellllc.com, 0 morris.computer, 1 morrowind-finland.tk, 1 @@ -74609,9 +74433,6 @@ motomorgen.com, 1 motopoland.com.ua, 1 motor-agro.com, 1 -motor-agro.com.ua, 1 -motor-agro.kz, 1 -motor-agro.ru, 1 motor-cycles.tk, 1 motor-forum.nl, 1 motor1.com, 1 @@ -74619,7 +74440,6 @@ motorcyclesafer.com, 1 motorialab.com, 0 motoridiricerca.tk, 1 -motoroilinfo.com, 0 motorpointarenacardiff.co.uk, 1 motorring.ru, 1 motorslopers.tk, 1 @@ -74936,7 +74756,6 @@ msl.org, 1 mslivros.com.br, 1 msm-data.com, 1 -msmae-ou.com, 1 msmails.de, 1 msmetana.cz, 1 msn.com, 1 @@ -75043,11 +74862,9 @@ mtravelers.net, 1 mtredistricting.gov, 1 mtrip.com, 0 -mtrock.ru, 1 mtrx.tech, 1 mts-energia.eu, 1 mtsoftware.com.au, 1 -mtsolar.es, 1 mtthwbrd.com, 1 mtv.re, 1 mtvernonlisbonpd-ia.gov, 1 @@ -75124,7 +74941,9 @@ muhibbulislam.tk, 1 muhlenbergtwppa.gov, 1 muhrielle.org, 1 +mui.fitness, 1 mui.kitchen, 1 +mui.pet, 1 mui.today, 1 muii.com.br, 1 muii.in, 1 @@ -75162,7 +74981,6 @@ multiagent.tk, 1 multichange.net, 1 multiclinicacardio.com.br, 1 -multicomhost.com, 1 multicore.cl, 1 multicorpbra.com, 1 multievidence.es, 1 @@ -75300,7 +75118,6 @@ murfy.kiwi, 1 murfy.nz, 1 murgi.de, 1 -murielfrenchcouture.fr, 1 murksbreider.tk, 1 murmansk.cf, 1 murmanskforum24x7.tk, 1 @@ -75310,7 +75127,6 @@ murphy-law.net.ru, 1 murray.xyz, 1 murraya.cn, 1 -murraycoin.org, 1 murraycountymn.gov, 1 mursa.tk, 1 mursatov.tk, 1 @@ -75382,7 +75198,6 @@ musichiphop.ga, 1 musichome.tk, 1 musician.dating, 1 -musicindustrydb.org, 1 musicinsiderdigest.com, 1 musickhouseleveling.com, 1 musickorea.tk, 1 @@ -75592,7 +75407,6 @@ my-new-bikini.de, 1 my-nextcloud.at, 1 my-pawnshop.com.ua, 0 -my-photo.me, 1 my-profile.org, 1 my-road.de, 1 my-salesforce-communities.com, 1 @@ -75642,7 +75456,6 @@ myanmar-responsiblebusiness.org, 1 myapexcard.com, 1 myaquaterra.tk, 1 -myarcade.org, 0 myartsjournal.com, 1 myasb.club, 1 myathena.ai, 1 @@ -75691,7 +75504,6 @@ mybuildingcertifier.com.au, 1 mycaelis.fr, 1 mycam.gq, 1 -mycamshowhub.com, 1 mycamshowhub.to, 1 mycard.moe, 1 mycardplace.com, 1 @@ -76429,6 +76241,7 @@ nabaleka.com, 1 nabeer.ga, 1 nabeez.cf, 1 +naberiusmedia.com, 0 nabidkydnes.cz, 1 nabiev.tk, 1 nabitrix.tk, 1 @@ -76486,6 +76299,7 @@ nadoske.info, 1 nadsandgams.com, 1 naduvilathu.tk, 1 +nadyaolcer.fr, 1 naehkurshamburg.de, 1 naemnuk.tk, 1 nafod.net, 1 @@ -76560,7 +76374,6 @@ nakanishi-paint.com, 1 nakarkhana.com, 1 nakayama.industries, 1 -nakayama.systems, 1 nakayamaresearch.com, 1 nakazanie.ga, 1 nakazato-shika.com, 1 @@ -76599,6 +76412,7 @@ namamala.com, 1 namaperempuan.com, 1 namazon.org, 1 +namazvakitleri.com.tr, 0 namdak.com, 1 namecoin.org, 1 namegen.jp, 1 @@ -76687,7 +76501,7 @@ nanowallet.io, 1 nanpuyue.com, 1 nansa.ch, 1 -nanshy.com, 0 +nanshy.com, 1 nanubo.com, 1 nanubo.de, 1 nanwan.info, 1 @@ -76883,7 +76697,6 @@ nathankonopinski.com, 0 nathanmfarrugia.com, 1 nathanphoenix.com, 1 -nathans.com.au, 1 nathansmetana.com, 1 nathenmaxwell.tk, 1 nathumarket.com.br, 1 @@ -76901,7 +76714,7 @@ nationalhomeimprovements.co.uk, 1 nationalhomequotes.com, 1 nationalmall.gov, 1 -nationalmap.gov, 1 +nationalmap.gov, 0 nationalopera.ml, 1 nationalpriorities.org, 1 nationaltrails.ru, 1 @@ -76934,16 +76747,14 @@ natur.com, 1 natura-sense.com, 1 natura2000.tk, 1 -naturalbeautyhacks.com, 0 +naturalbeautyhacks.com, 1 naturalbijou.com, 1 naturalbladdercontrol.tk, 1 naturalcosmetics.cf, 1 naturaldisasters.tk, 1 naturalezafengshui.com, 1 -naturalfit.co.uk, 1 naturalflowerpower.com, 1 naturalkitchen.co.uk, 1 -naturallyvegan.de, 1 naturalspacesdomes.com, 1 naturalstyle.tk, 1 naturana.news, 1 @@ -77578,7 +77389,6 @@ netexem.com, 1 netexpatcommunity.com, 0 netfabb.com, 1 -netface.com.br, 1 netfeeds.eu, 1 netferie.de, 1 netferie.dk, 1 @@ -77633,7 +77443,6 @@ netletic.com, 1 netlevel.ga, 1 netlify.com, 1 -netliste.com, 1 netlocal.ru, 1 netmaddy.com, 1 netmagicas.com.br, 1 @@ -77696,7 +77505,6 @@ netto-service.ch, 0 nettools.link, 1 nettoyage.email, 1 -nettx.co.uk, 1 nettype.ca, 1 netube.org, 1 netvizura.co.uk, 1 @@ -77729,7 +77537,6 @@ networking-groups.co.uk, 1 networking4all.com, 1 networkingnexus.net, 1 -networkingphoenix.com, 1 networkinternetmonitor.com, 1 networkmas.com, 1 networkmidlands.co.uk, 1 @@ -77948,6 +77755,7 @@ newparadigmventures.net, 0 newparrot.tk, 1 newphysics.fi, 1 +newpoke.net, 0 newportbus.co.uk, 1 newposts.ru, 1 newpress24.tk, 1 @@ -78138,7 +77946,6 @@ nexussystems.tk, 1 nexwebsites.com, 1 nexxus-sistemas.net.br, 1 -nexzcore.com, 1 neyer-lorenz.de, 1 neyjens.com, 1 nezis.tk, 1 @@ -78491,7 +78298,6 @@ nightcitynews.info, 1 nightclassifieds.com, 1 nightdreamer.me, 1 -nightfirec.at, 1 nightfirecat.com, 1 nighthawks.tk, 1 nighthawkstrategies.com, 1 @@ -78554,6 +78360,7 @@ nikhilnimiya.love, 1 nikhilramakrishnan.tk, 1 nikimix.com, 0 +nikitacartes.xyz, 0 nikitenko.tk, 1 nikitin.photo, 1 nikitina.ml, 1 @@ -78575,6 +78382,7 @@ nikomo.fi, 0 nikonlibrary.co.uk, 1 nikonnps.co.uk, 1 +nikonschool.co.uk, 1 nikosoikonomopoulos.tk, 1 nikosverths.tk, 1 nikscloud.eu, 1 @@ -78587,7 +78395,6 @@ niles.xyz, 1 nilgirispice.co.uk, 1 nilianwo.com, 1 -nilmaracursos.com.br, 1 nilosoft.com, 1 niloxy.com, 1 nilpointer.com, 1 @@ -78902,6 +78709,7 @@ noel.wf, 1 noel.yt, 1 noelblog.ga, 1 +noelclaremont.com, 1 noellabo.jp, 1 noellimpag.me, 0 noematic.space, 1 @@ -78991,7 +78799,6 @@ nomio.com, 1 nomoondev.azurewebsites.net, 1 nomsing.tk, 1 -nomsy.net, 1 nomzamo.spdns.org, 1 noname-ev.de, 1 nonametheme.com, 1 @@ -79081,7 +78888,6 @@ nordlichter-brv.de, 1 nordlocker.com, 1 nordmoregatebilklubb.com, 1 -nordnetz-hamburg.de, 1 nordor.homeip.net, 1 nordpass.asia, 1 nordpass.com, 1 @@ -79104,7 +78910,6 @@ noriel.ro, 1 norikazumatsuno.tk, 1 noris.de, 0 -noriskit.nl, 1 noritakechina.com, 1 normaculta.com.br, 1 normalady.com, 1 @@ -79351,7 +79156,7 @@ novaintegra.com, 1 novak.cf, 1 novalite.rs, 1 -novanetnettoyage.fr, 1 +novanetnettoyage.fr, 0 novanetwork.ml, 1 novanice.net, 1 novapur.pl, 1 @@ -79811,7 +79616,6 @@ nya-cloud.com, 1 nya.as, 1 nya.one, 1 -nyadora.com, 1 nyadora.moe, 1 nyahururu.tk, 1 nyaken.tk, 1 @@ -79917,7 +79721,6 @@ o3-staging.herokuapp.com, 1 o3.wf, 1 o36533.com, 1 -o3c.com.br, 1 o3ptitschats.fr, 1 o3wallet.com, 1 o5.cx, 0 @@ -79943,7 +79746,6 @@ oaken.duckdns.org, 1 oakesfam.net, 1 oakface.com.au, 1 -oaklands.co.za, 1 oakparkelectrical.com, 1 oakparkexteriorlighting.com, 1 oakparklandscapelighting.com, 1 @@ -79977,7 +79779,6 @@ obamalibrary.gov, 1 obamawhitehouse.gov, 1 obamed.com, 1 -obasigeorge.com, 1 obatjantungrematik.tk, 1 obbr.tk, 1 obcevents.co.uk, 1 @@ -80061,7 +79862,6 @@ obsessedwithknives.ru, 1 obsessharness.com, 1 obsessivecompulsiveexplained.com, 1 -obsidian.net, 1 obsidianirc.net, 1 obsproject.com, 1 obsuzhday.com, 1 @@ -80250,7 +80050,6 @@ oduachambers.com, 1 oducs.org, 1 odvps.com, 0 -odxin.com, 1 odysea.cat, 1 odyssee-animation.tk, 1 odyssey44.com, 1 @@ -80406,7 +80205,6 @@ ogurishun.tk, 1 oguya.ch, 1 ogyaa.jp, 0 -oh-leg.com, 1 oh-my-lash.nl, 1 oh14.de, 0 ohai.su, 1 @@ -80449,7 +80247,6 @@ ohs.on.ca, 1 ohsocool.org, 1 ohsohairy.co.uk, 1 -ohyooo.com, 1 ohype.ga, 1 ohype.gq, 1 oi-wiki.org, 1 @@ -80564,7 +80361,6 @@ olasderisa.tk, 1 olasouris.com, 0 olastrafford.org, 1 -olasverdeshotel.com, 1 olatiferreira.com, 1 olax.tk, 1 olbat.net, 1 @@ -81006,7 +80802,7 @@ oninpresento.ga, 1 onionbot.ga, 1 onionbot.me, 1 -onionplay.eu, 1 +onionflix.net, 1 onionscan.org, 1 onionshare.org, 1 onionsocial.com, 1 @@ -81063,7 +80859,6 @@ onlinebupropion.gq, 1 onlinebusiness.law, 1 onlinecarstyling.nl, 1 -onlinecasinobluebook.com, 1 onlinecasinoerdk.com, 1 onlinecasinoreviewz.com, 1 onlinecasinoselite.org, 1 @@ -81172,7 +80967,7 @@ onoelixir.gr, 1 onondaga.gov, 1 onoranze-funebri.biz, 1 -onoranzefunebri.roma.it, 1 +onoranzefunebri.roma.it, 0 onore.org, 1 onourwifi.com, 1 onpatient.com, 1 @@ -81187,7 +80982,6 @@ onrealt.ru, 0 onsenlaichelesdoigts.be, 1 onsetfacilities.com, 1 -onsgenoegen-waz.nl, 1 onsinscrit.com, 1 onsite4u.de, 1 onsitedoc.com, 1 @@ -81304,13 +81098,11 @@ open-trip.id, 1 open.film, 0 open.my.id, 1 -open.ru, 1 openacte.ch, 0 openai.community, 1 openalgeria.org, 1 openarch.nl, 1 openarchivaris.nl, 1 -openbayes.com, 1 openbayesstatus.com, 1 openbeecloud.com, 1 openblox.org, 1 @@ -81339,7 +81131,7 @@ opendataincubator.eu, 1 opendecide.com, 1 opendolls.com, 1 -opendor.me, 1 +opendoorcounselingpa.com, 1 openevic.info, 1 openfir.st, 1 openfitapi-falke.azurewebsites.net, 1 @@ -81577,8 +81369,6 @@ orang-utans.com, 1 orangeacademy.cz, 1 orangecityfl.gov, 1 -orangecomputers.com, 1 -orangefab.asia, 1 orangefinanse.com.pl, 1 orangehome.ga, 1 orangejetpack.com, 1 @@ -81626,6 +81416,7 @@ orchidhouse.sk, 0 orchidlive.com, 1 orchids.ua, 1 +orchidsforum.com, 1 orcomsilver.tk, 1 orcsnet.com, 1 orcz.cz, 1 @@ -81692,7 +81483,7 @@ organictanningest.ga, 1 organisatieteam.nl, 1 organisation-mariage.net, 1 -organise.earth, 1 +organise.earth, 0 organizacasa.com.br, 1 organizasyon.tk, 1 organization-of-holidays.tk, 1 @@ -81777,7 +81568,6 @@ oro.roma.it, 1 orocojuco.com, 1 oroconews.com.br, 1 -orodelsalento.com, 1 orologeria.roma.it, 1 orovillelaw.com, 1 oroygrana.com, 1 @@ -81792,6 +81582,7 @@ ortanatech.com, 1 ortegaportfolio.com, 1 ortemis.host, 1 +orteo.co, 1 ortho-graz.at, 1 orthocab.com, 1 orthocop.cz, 1 @@ -81829,7 +81620,6 @@ osagokasko.ga, 1 osaka-hero-project.com, 0 osakaevoce.com.br, 1 -osakeannit.fi, 1 osakerekisteri.fi, 1 osaki.fr, 1 osamabook.tk, 1 @@ -82168,7 +81958,6 @@ overener.com, 1 overframe.gg, 1 overheek.tk, 1 -overlandliberty.be, 1 overlevers.tk, 1 overlord.network, 1 overmorgen.nl, 1 @@ -82193,6 +81982,7 @@ overtunes.tk, 1 overture.london, 1 overwall.org, 1 +overwatchss.club, 1 overzicht.pro, 1 overzicht.ws, 1 oveweddings.com, 1 @@ -82309,7 +82099,6 @@ oyunoynuyalim.tk, 1 oz-artfocus.com, 1 oz-style.com, 1 -ozalp.dk, 1 ozarkinspected.com, 1 ozcreatives.tech, 1 ozel-ders.tk, 1 @@ -82327,7 +82116,6 @@ ozonytron.com, 1 ozonytron.de, 1 ozonytron.eu, 1 -ozoz.cc, 1 oztorah.com, 1 ozudogru.com, 1 ozvolvo.org, 1 @@ -82576,7 +82364,6 @@ paidtocode.com, 1 paidtodesign.com, 1 paidtodev.com, 1 -paidtohavesex.com, 1 paiementdp.com, 1 paig.pl, 1 paige.ai, 1 @@ -82700,7 +82487,6 @@ palli.ch, 0 palmaprop.com, 1 palmarinaestrada.com.br, 1 -palmas.lk, 1 palmavile.us, 0 palmaville.com, 0 palmbeachcounty-fl.gov, 1 @@ -82811,7 +82597,6 @@ pangeaservices.com, 1 panghu.me, 1 pangoly.com, 1 -panhandlemenshealth.com, 1 panheelstraat.tk, 1 panic-away.tk, 1 panic.tk, 1 @@ -82942,6 +82727,7 @@ paradisestore.org, 1 paradisim.tk, 1 paradordelgitano.com, 1 +paradoxdesigns.org, 1 paradoxium.ml, 1 paraelganzo.tk, 1 paragon-consult.ru, 1 @@ -83242,7 +83028,6 @@ passiondesigns.web.id, 1 passionebenessere.com, 1 passionegriglia.com, 1 -passionpictures.eu, 1 passions-art.com, 1 passive-work.gq, 1 passiveseinkommen.tk, 1 @@ -83372,6 +83157,7 @@ patrick-braun.tk, 1 patrick-omland.de, 1 patrick-omland.eu, 1 +patrick-othmer.de, 1 patrick-robrecht.de, 1 patrick.my-gateway.de, 1 patrick21.ch, 1 @@ -83383,7 +83169,6 @@ patrickdankers.nl, 1 patrickhoefler.net, 1 patricklustigmediation.com, 1 -patrickneuro.de, 1 patrickpeeters.com, 1 patricksymmes.com, 1 patrikjohan.cf, 1 @@ -83558,7 +83343,6 @@ paylessmealsest.ga, 1 paylike.io, 1 paylike.se, 1 -paymaster.link, 1 payme.plus, 1 payme.uz, 1 payment-express.net, 1 @@ -83595,6 +83379,7 @@ paytm.in, 1 payupay.ru, 1 paywait.com, 1 +payzang.com, 1 pazyarmonia.tk, 1 pb-design.ch, 1 pb-eatz.com, 1 @@ -83829,6 +83614,7 @@ pedro.com.es, 1 pedrobotias.tk, 1 pedrolamas.com, 1 +pedrollo-ua.com, 1 pedroministro.pt, 1 pedromunoz.tk, 1 pedrooliveira.tk, 1 @@ -84224,7 +84010,6 @@ persiandating.tk, 1 persiart.shop, 1 persiennexperten.se, 1 -persiennkompaniet.se, 1 persistshields.org, 1 persjrp.ca, 1 persoform.ch, 1 @@ -84820,6 +84605,7 @@ photography-workshops.net, 1 photographyforchange.com, 1 photographyforchange.org, 1 +photographymof.com, 1 photolakeview.com, 1 photolessya.by, 1 photomaniastore.com, 1 @@ -84834,6 +84620,7 @@ photoreal.tk, 1 photosafari.com.my, 1 photosafaribg.com, 1 +photosaloncontest.com, 0 photoscheduleers.ga, 1 photoscheduleest.ga, 1 photosgaia.ch, 1 @@ -84915,7 +84702,6 @@ physicalism.com, 1 physicalist.com, 1 physicianbookest.ga, 1 -physicpezeshki.com, 1 physics-schools.com, 1 physik.hu, 1 physik.lol, 1 @@ -84957,7 +84743,6 @@ piata.com.br, 1 piataborrachas.com.br, 1 piatabrasil.com.br, 1 -piatatem.com.br, 1 piatenko.ml, 1 piatika.com, 1 piatika.in, 1 @@ -84965,7 +84750,7 @@ piboston.org, 1 piboubes.me, 1 pic.gov, 1 -pic.pm, 1 +pic.pm, 0 pic.sr, 1 pic2map.com, 1 pic2pat.com, 1 @@ -85114,7 +84899,6 @@ pilatespt.nl, 1 pilatesstation.co.th, 1 pildat.org, 1 -pilesyk.tk, 1 pili-serv.ovh, 1 piliszek.net, 1 pill.id, 1 @@ -85202,6 +84986,7 @@ pinkitalia.tk, 1 pinklecfest.org, 1 pinklittlenotebook.com, 1 +pinkmango.travel, 0 pinkoi.com, 1 pinkpearl.tk, 1 pinkplay.com.br, 1 @@ -85215,7 +85000,6 @@ pinnaclecare.com, 1 pinnaclelife.co.nz, 0 pinnaclelife.nz, 1 -pinnakl.com, 1 pinnoto.org, 1 pinot.it, 1 pinoyreal.com, 1 @@ -85295,14 +85079,11 @@ pirateproxy.cc, 1 pirateproxy.cloud, 1 pirateproxy.earth, 1 -pirateproxy.gdn, 1 pirateproxy.how, 1 -pirateproxy.id, 1 pirateproxy.ltda, 1 pirateproxy.name, 1 pirateproxy.onl, 1 pirateproxy.tube, 1 -pirateproxy.tv, 1 pirateproxy.uno, 1 pirates-comic.com, 1 piratesbrewcoffee.net, 1 @@ -85537,7 +85318,7 @@ planet.live, 1 planeta-deti.org, 1 planeta-remontika.ga, 1 -planetadeti.org, 0 +planetadeti.org, 1 planetalife.com, 1 planetamarrom.tk, 1 planetamend.com, 1 @@ -85666,7 +85447,6 @@ platform2020prague.com, 1 platforma2020praha.cz, 1 platformadmin.com, 1 -platformlms.org, 1 platiniumvapes.com, 1 platinmods.my.id, 1 platinumalertsers.ga, 1 @@ -85686,7 +85466,6 @@ platter.tk, 1 platterlauncher.com, 1 platypiduses.com, 1 -plaut.sk, 1 plavdoma.com.ua, 1 plavormind.tk, 1 play, 1 @@ -85857,7 +85636,6 @@ plumbermountedgecombe.co.za, 1 plumberumhlangarocks.co.za, 1 plumbingandheatingspecialistnw.com, 1 -plumbingglenvista.co.za, 1 plumbingkingsllc.com, 1 plumbingshop.tk, 1 pluminate.com, 1 @@ -86122,7 +85900,6 @@ podolskaya.tk, 1 podparkers.ga, 1 podparkest.ga, 1 -podpravkite.bg, 1 podprotectionest.ga, 1 podroof.com, 1 podroof.com.au, 1 @@ -86443,13 +86220,13 @@ poolheatingsolutionswa.com.au, 1 poolinstallers.co.za, 1 poolmans.se, 0 -poolpowershop.de, 1 poolsafely.gov, 1 poolsafety.gov, 1 poolsonline.tk, 1 poolspa.es, 1 pooltest.co.uk, 1 pooltools.net, 1 +poolvilla-margarita.net, 1 poopjournal.rocks, 1 poopr.ru, 1 poopthereitisla.com, 1 @@ -86614,6 +86391,7 @@ porschen.fr, 1 porsiaedenora.it, 1 porsolt.com, 1 +port.gdynia.pl, 0 port.social, 1 port443.hamburg, 0 port443.se, 1 @@ -86690,7 +86468,6 @@ posbank.co.uk, 1 posbich.net, 1 posbis.de, 1 -poseidonwaterproofing.com, 1 poshcastles.co.uk, 1 poshe.tk, 1 poshlashes.se, 1 @@ -86732,7 +86509,6 @@ postal3.es, 1 postandfly.com, 1 postat.com, 1 -postawnasiebie.pl, 1 postback.io, 0 postblue.info, 1 postbox.life, 1 @@ -86857,7 +86633,6 @@ pouwels-oss.nl, 1 povar.ru, 1 povarenok.cf, 1 -povareschka.ru, 1 povareshka.tk, 1 povmacrostabiliteit.nl, 1 pow.jp, 1 @@ -87005,7 +86780,6 @@ pracevjihlave.cz, 1 practicalbytes.de, 1 practicalhomes.com.au, 1 -practicalprogrammer.tech, 1 practicepanther.com, 1 practisforms.com, 1 practitest.com, 1 @@ -87083,7 +86857,7 @@ praxis-dingeldey.de, 1 praxis-familienglueck.de, 1 praxis-kobiella.de, 1 -praxis-liebner.de, 0 +praxis-liebner.de, 1 praxis-waedicity.ch, 1 praxisfilms.org, 1 praxistipp24.com, 1 @@ -87142,7 +86916,6 @@ preference.ga, 1 preferredreverse.com, 1 prefix.eu, 1 -preflighttest.com, 1 prefontaine.name, 1 pregen.tk, 1 pregnancytips.tk, 1 @@ -87201,6 +86974,7 @@ premiumlegalsupport.ga, 1 premiumplusiptv.com, 1 premiumturkey.ml, 1 +premiumweb.co.id, 1 premiumwebdesign.it, 1 premkumar.net, 1 premsarswat.me, 1 @@ -87413,6 +87187,7 @@ princezna.club, 1 principalsexam.com, 1 principalship.net, 1 +principalstest.ph, 0 principaltoolbox.com, 1 principedepaz.gt, 1 principia-journal.de, 1 @@ -87454,7 +87229,6 @@ priorityelectric-dosvientos.com, 1 priorityelectric-hiddenhills.com, 1 priorityelectric-lakesherwood.com, 1 -priorityelectric-malibu.com, 1 priorityelectric-moorpark.com, 1 priorityelectric-newburypark.com, 1 priorityelectric-oakpark.com, 1 @@ -87475,6 +87249,7 @@ prismacloud.xyz, 1 prismalite.com.br, 1 prismaot.tk, 1 +prismapixel.studio, 1 prismosystems.com, 0 prisonerresource.com, 1 pristal.eu, 1 @@ -87596,7 +87371,6 @@ pro-web-design.tk, 1 pro-wiert.pl, 1 pro.co.il, 1 -pro100blogger.com, 1 pro3ozonio.com.br, 1 pro4all.be, 1 pro4all.nl, 1 @@ -87665,7 +87439,6 @@ prodampro.ru, 1 prodatalabs.com, 1 prodct.info, 1 -prodegree.com, 1 prodentalsantacruz.es, 1 prodesigntools.com, 1 prodesk.bg, 1 @@ -87985,7 +87758,7 @@ propertyfindercdn.com, 1 propertyflare.com, 1 propertygroup.pl, 1 -propertyinside.id, 1 +propertyinside.id, 0 propertymingo.com, 1 propertyofariana.pw, 1 propertyone.mk, 1 @@ -88119,6 +87892,7 @@ protoxin.net, 0 protrainerbrasil.com.br, 1 protrolley.cf, 1 +proudplus.com, 1 proust.ch, 0 proust.media, 0 proustmedia.de, 0 @@ -88165,7 +87939,6 @@ proxmox-airsonic.tk, 1 proxy-bay.co, 1 proxy-bay.com, 1 -proxybay.bet, 1 proxybay.buzz, 1 proxybay.bz, 1 proxybay.cc, 1 @@ -88391,10 +88164,8 @@ psykosyntes.tk, 1 psylab.cc, 0 psylab.re, 0 -psylab.vip, 1 psylliums.com, 1 psynapse.net.au, 1 -psyshell.tk, 1 psytrance-pro.com, 1 pszinfo.hu, 1 pt-d.ru, 1 @@ -88425,7 +88196,6 @@ ptk-svarka.ru, 0 ptlibrary.ml, 1 ptltrade.com, 1 -ptm.ro, 1 ptmarquees.ie, 1 ptrbrs.nl, 1 ptrl.ws, 1 @@ -88440,7 +88210,6 @@ puac.de, 1 pub-online.ro, 1 pubclub.com, 1 -pube.tk, 1 pubertytalk.com, 1 pubi.me, 1 pubkit.io, 1 @@ -88560,7 +88329,7 @@ puntacanavapor.com, 1 puntaprop.com, 1 puntcunts.com, 1 -punte-juwelier.nl, 0 +punte-juwelier.nl, 1 puntocroce.tk, 1 puntoestadodemexico.com, 1 puntogommevenegono.it, 1 @@ -88694,7 +88463,6 @@ putnik.tk, 1 putre.io, 1 putrock.be, 1 -putstrategii.ru, 1 putty.org, 1 puttymonos.club, 1 puttymonos.work, 1 @@ -88760,7 +88528,7 @@ pxl-mailtracker.com, 1 pxl.cl, 1 pxld.sh, 1 -pxstart.cz, 1 +pxstart.cz, 0 pxventures.com.au, 1 pxx.io, 1 py-amf.org, 1 @@ -88943,6 +88711,7 @@ qiscience.tk, 1 qitarabutrans.com, 1 qitzune.com, 1 +qiu.moe, 1 qivonline.pt, 1 qiwi.be, 1 qixi.biz, 1 @@ -89024,6 +88793,7 @@ qrlfinancial.com, 0 qrpatrol.com, 1 qrpth.eu, 1 +qrsecuriteanimal.com, 1 qruiser.com, 1 qrz.one, 1 qscco.com, 1 @@ -89066,7 +88836,7 @@ quadomania.tk, 1 quadrantrd.com, 1 quadratimkreis.tk, 1 -quadron.hu, 0 +quadron.hu, 1 quaedam.org, 1 quafe.tech, 1 quaketips.ga, 1 @@ -89081,7 +88851,6 @@ qualitycarbonfiber.com, 1 qualitycommerical.com, 1 qualityconcreteleveling.com, 1 -qualityconcreteraising.com, 1 qualityconcreterepair.com, 1 qualitydns.net, 1 qualityfireproofing.com, 1 @@ -89097,12 +88866,12 @@ qualitypolyjacking.com, 1 qualitypropertycare.co.uk, 1 qualitytools.com, 1 -qualitywaterproofing.com, 1 qualitywaterproofingco.com, 1 qualityworks.tk, 1 qualpay.com, 1 qualtrics.com, 1 qualyven.com, 1 +quangngaimedia.com, 1 quanquan.cyou, 1 quanquan.space, 1 quant-labs.de, 0 @@ -89192,7 +88961,7 @@ quelle.ch, 1 quelle.de, 1 quelleformation.net, 1 -quellenwiese.ski, 1 +quellenwiese.ski, 0 quemadoresdegrasa.org, 1 queminventou.com.br, 0 quemmeliga.com, 1 @@ -89330,7 +89099,6 @@ quisildenafil.gq, 1 quitri.tk, 1 quiwy.ninja, 1 -quixxi.com, 1 quixxisecurity.com, 1 quiz.biz, 1 quiz4math.gr, 1 @@ -89432,7 +89200,6 @@ r0t.co, 1 r0uzic.net, 1 r102.ch, 1 -r14.io, 1 r15cookie.com, 1 r18.moe, 1 r1a.eu, 1 @@ -89751,7 +89518,6 @@ radnickapartija.tk, 1 radnicki-nis.tk, 1 radon.tk, 1 -radondetectionandcontrol.com, 1 radopsec.net, 1 radopsec.org, 1 radost-crikvenica.hr, 1 @@ -90062,6 +89828,7 @@ ranters.nl, 1 rantevou.eu, 1 ranyeh.co, 1 +ranyeh.com, 1 ranzbak.nl, 1 raoliveoil.ga, 1 raomed.com.ar, 1 @@ -90103,7 +89870,6 @@ rar.moe, 1 rarbgmirror.com, 1 rarbgproxy.com, 1 -rarebridal.com, 1 rarece.cf, 1 rarefish.tk, 1 rarename.tk, 1 @@ -90176,7 +89942,6 @@ ravagers.tk, 1 ravages.tk, 1 ravasco-football-team.herokuapp.com, 1 -ravchat.com, 1 raveboy.dyndns.org, 1 ravefm.tk, 1 ravelin.com, 1 @@ -90199,6 +89964,7 @@ ravijuhend.ee, 1 ravik.tk, 1 ravimiamet.ee, 1 +ravindran.me, 1 raviparekh.co.uk, 1 ravis.org, 1 ravkr.duckdns.org, 1 @@ -90848,7 +90614,6 @@ reducto.tk, 1 redunion.tk, 1 redwater.co.uk, 1 -redwaterhost.com, 1 redwaymu.cf, 1 redweek.com, 1 redwhey.com, 1 @@ -91003,9 +90768,9 @@ rehab.cn.ua, 1 rehabili-shigoto.com, 1 rehabphilippines.com, 1 -rehabreviews.com, 1 rehabthailand.com, 1 rehabthailand.org, 1 +rehau-ua.com, 1 reher.pro, 1 rehobothma.gov, 1 rei.ki, 1 @@ -91157,7 +90922,6 @@ remain.london, 1 remake-projects.tk, 1 remambo.jp, 1 -remapmijnauto.nl, 1 remateszarate.cl, 0 remax.at, 1 remeb.de, 1 @@ -91405,7 +91169,6 @@ reputatiedesigners.nl, 1 reputationweaver.com, 1 requesthymn.com, 1 -requestr.co.uk, 1 requeue.ga, 1 requin.tk, 1 requirements.ga, 1 @@ -91932,6 +91695,7 @@ richmondsunlight.com, 1 richmoney.us, 1 richmtdriver.com, 1 +richonrails.com, 1 richviajero.com, 1 richwayfun.com, 1 ricketyspace.net, 0 @@ -91944,6 +91708,7 @@ ricksfamilycarpetcleaning.com, 1 rickvanderzwet.nl, 1 rickweijers.nl, 1 +rickyg.live, 1 rickyromero.com, 1 rickysgames.tk, 1 rico-brase.de, 0 @@ -91961,6 +91726,7 @@ ricreare.com, 1 ridayu.jp, 1 riddickthemovie.tk, 1 +riddims.co, 1 riddimsworld.com, 1 riddler.com.ar, 1 rideapart.com, 1 @@ -92110,6 +91876,7 @@ rise.africa, 1 rise.com, 1 rise.global, 1 +riseandrank.com, 1 risecomedy.com, 1 risecstate.gov, 1 riselab.com.ua, 1 @@ -92117,9 +91884,9 @@ riseofthewildwoman.com, 1 riseshost.ml, 1 riseup.net, 1 +riseupelectrical.com.au, 1 rishabh.me, 1 risheriffs.gov, 1 -rishikeshyoga.in, 1 risi-china.com, 1 rising-cubers.tk, 1 riskmitigation.ch, 1 @@ -92312,6 +92079,7 @@ robersonaudio.tk, 1 robert-ewert.tk, 1 robert-flynn.de, 1 +robert-foster.com, 1 robert-reisemobil.de, 1 robert-victor.co.uk, 1 robert-wiek-transporte.de, 1 @@ -92407,7 +92175,6 @@ robu.in, 1 robust.ga, 1 robustac.com, 1 -robustevents.in, 1 robuststory.com, 1 robuxemporium.com, 1 robuxkingz.ml, 1 @@ -92620,7 +92387,6 @@ romacoffee.co.nz, 1 romagnaoggi.it, 1 romail.ml, 1 -romaindepeigne.fr, 1 romainlapoux.com, 1 romainlapoux.fr, 1 roman-pavlik.cz, 1 @@ -92711,6 +92477,7 @@ rooferindallas.com, 1 roofingandconstructionllc.com, 1 roofingmaterials.tk, 1 +roofingomaha.com, 1 roofingpioneers.com, 1 roofpost.gq, 1 roofsandbasements.com, 1 @@ -92834,7 +92601,6 @@ roslynpad.net, 1 rosme.it, 1 rosound.cz, 1 -rospotreb.com, 1 rosrabota.tk, 1 ross-mitchell.com, 0 rosset.me, 1 @@ -93187,7 +92953,6 @@ rteplayer.org, 1 rtesport.eu, 1 rtestore.eu, 1 -rteworld.com, 1 rtgame.co.uk, 1 rtgnews.cf, 1 rtho.me, 1 @@ -93244,6 +93009,7 @@ rubenfelix.tk, 1 rubengees.de, 1 rubengutierrez.tk, 1 +rubenjromo.com, 0 rubenkruisselbrink.nl, 1 rubenmamo.com, 1 rubenpeeters.ml, 1 @@ -93328,6 +93094,7 @@ ruhproject.kz, 1 ruhrmobil-e.de, 1 ruhrnalist.de, 1 +ruicore.cn, 1 ruifu.tech, 1 ruiming.me, 1 ruimoreira.co.uk, 1 @@ -93554,7 +93321,6 @@ ruyana.tk, 1 ruyatabirleri.com, 1 ruzaevka.tk, 1 -ruzzll.com, 1 rv-jpshop.com, 1 rva-asbestgroep.nl, 1 rva.gov, 1 @@ -93626,6 +93392,7 @@ ryejuice.sytes.net, 1 rygh.no, 1 rygy.com.br, 1 +rylin.net, 1 rylore.com, 1 rymanow.tk, 1 rymedi.com, 1 @@ -93860,7 +93627,6 @@ safebits.fr, 1 safebits.it, 1 safeboard.ml, 1 -safebuyerscheme.co.uk, 1 safecar.gov, 1 safecash.id, 1 safecso.cf, 1 @@ -93934,7 +93700,6 @@ sagarawat.in, 1 sagargandecha.com.au, 0 sageclinic.org, 1 -sagedocumentmanager.com, 1 sagefalab.com, 1 sagegardens.ca, 1 sagehane.com, 1 @@ -94091,6 +93856,7 @@ salalfoundation.ca, 1 salamanders.tk, 1 salamence.tk, 1 +salandalairconditioning.com, 1 salariominimo.com.co, 1 salarycalculatoruk.co.uk, 1 salas.cf, 1 @@ -94161,6 +93927,7 @@ sallyandruss.ca, 1 sallyangeli.tk, 1 sallycooke.co.uk, 1 +sallydowns.name, 1 sallyjo.tk, 1 sallyman.de, 1 sallysubs.com, 0 @@ -94239,7 +94006,6 @@ salvadoralevin.tk, 1 salvadorcorriols.tk, 1 salvadorinfantil.tk, 1 -salvagedfurnitureparlour.com, 1 salvameblog.tk, 1 salverainha.org, 1 salvia-sinensis.nl, 1 @@ -94265,7 +94031,6 @@ samara-avia.ru, 1 samara-hosting.tk, 1 samaritainsmeyrin.ch, 0 -samatva-yogalaya.com, 1 samba.org, 1 sambaash.com, 1 sambeso.net, 1 @@ -94307,7 +94072,6 @@ samlam.ddns.net, 1 samlamac.com, 1 samlaw.co.nz, 0 -sammamish--locksmith.com, 1 sammichscripts.com, 1 sammyservers.com, 1 sammyservers.net, 1 @@ -94513,13 +94277,11 @@ sans-hotel.com, 1 sanskrit.pub, 1 sanskrit.site, 1 -sanskritiyoga.com, 1 sansonehowell.com, 1 santa-fell-from.space, 1 santabarbaraca.gov, 1 santackergaard.nl, 1 santaclaracounty.gov, 1 -santacruzdescargas.tk, 1 santafesilversaddlemotel.com, 1 santaijia.com, 0 santamargarita.tk, 1 @@ -94549,7 +94311,6 @@ santhoshveer.com, 1 santi-club.de, 1 santiagogarza.co, 1 -santiagomartinez.net, 1 santibanezdetera.tk, 1 santimb.photos, 1 santing.net, 1 @@ -94591,6 +94352,7 @@ sapienza-eclipse.com, 1 sapienzaconsulting.com, 1 sapik.hu, 1 +sapindus.pl, 1 sapiperelining.com.au, 1 sapk.fr, 1 saplumbers.com.au, 1 @@ -94810,7 +94572,6 @@ savannahhappycats.com, 1 savannahsidewalktours.com, 1 savantcare.com, 1 -savantic.io, 1 savasanadam.com, 1 savatha.tk, 1 savbus.com, 1 @@ -94912,6 +94673,7 @@ sbbz-bad-wurzach.de, 1 sbcalitagtag.edu.ph, 1 sbcargo.com, 1 +sbconstrucciones.com, 1 sbcountyatc.gov, 1 sbequineevac.org, 1 sber-solutions.ru, 1 @@ -95494,7 +95256,6 @@ scripo-bay.com, 1 script.google.com, 1 scripter.co, 1 -scriptgates.ru, 1 scripthost.org, 1 scriptjunkie.us, 1 scriptline.ga, 1 @@ -95591,6 +95352,7 @@ sea-godzilla.com, 1 sea-man.org, 1 sea.zapto.org, 1 +seabehind.me, 0 seabooty.com, 1 seabrooklocksmith.com, 1 seachef.it, 1 @@ -95662,6 +95424,7 @@ seaspiration.com, 1 seatbeltpledge.com, 1 seatinglane2u.com, 1 +seats2meet.com, 1 seatsurfing.de, 1 seattle-life.net, 1 seattlebasementwaterproofers.com, 1 @@ -95699,6 +95462,7 @@ sebastiantroncoso.tk, 1 sebastianungureanu.com, 1 sebastiaperis.com, 1 +sebastien-meric.com, 1 sebasveeke.nl, 1 sebba.tk, 1 sebeobrana.ml, 1 @@ -95815,6 +95579,7 @@ secure.facebook.com, 0 securebot.ga, 1 securecloudplatform.nl, 1 +securecomms.cz, 1 secureddocumentshredding.com, 1 securedrop.org, 1 secureenduserconnection.se, 1 @@ -96315,6 +96080,7 @@ seojaguar.tk, 1 seokaos.com, 0 seokatka.tk, 1 +seolabuitest.azurewebsites.net, 1 seolib.org, 1 seoline.cf, 1 seolister.cf, 1 @@ -96381,6 +96147,7 @@ sepalasaude.com.br, 1 separacioniglesiaestado.tk, 1 sepenggal.info, 1 +seppelec.com, 1 seproco.com, 0 septakkordeon.de, 1 septam-orchestra.fr, 1 @@ -96388,7 +96155,6 @@ septfinance.ch, 0 septicrepairspecialists.com, 1 septics.ga, 1 -septictankpumpingservices.com, 1 septonol.tk, 1 septs.blog, 1 sepulcharium.tk, 1 @@ -96676,7 +96442,7 @@ sewfarsewgood.uk, 1 sewing-machines.com.ua, 1 sewing-world.ru, 1 -sewinginsight.com, 1 +sewinginsight.com, 0 sewoo.co.uk, 1 seworld.ml, 1 sex-chat-geld-verdienen.com, 1 @@ -96809,6 +96575,7 @@ sh4y.com, 1 sh68.cc, 0 sha.bi, 1 +sha2017.org, 1 sha512.online, 1 shaadithailand.com, 1 shabashka.ml, 1 @@ -96951,7 +96718,6 @@ shape.pink, 1 shapediver.com, 1 shapesouthcarolina.gov, 1 -shapin.tv, 1 shapingthebay.com.au, 1 sharanyamunsi.net, 1 share.la, 1 @@ -97020,12 +96786,10 @@ shatabdichildrenschool.tk, 1 shatalov.com, 1 shaumine.ml, 1 -shaun.net, 1 shaunallen.co.uk, 1 shaunandamyswedding.com, 1 shaunc.com, 1 shaundanielz.com, 1 -shavegazette.com, 0 shavingks.com, 1 shavit.space, 1 shavitech.com, 1 @@ -97255,7 +97019,6 @@ shippercenter.info, 1 shippexx.com, 1 shipping-trade.ga, 1 -shippingbo.com, 1 shippinglabel.de, 1 shiptek.co, 1 shiptron.com, 1 @@ -97419,7 +97182,6 @@ shoplandia.co, 1 shopless.co.nz, 1 shoplogcap.com, 1 -shopmaksu.com, 1 shopmalinka.cf, 1 shopminut.com, 1 shopocratic.com, 1 @@ -97650,7 +97412,6 @@ showgirls.ga, 1 showmax.com, 1 showmeengland.co.uk, 1 -showmethegadgets.com, 0 shown.io, 1 shownet.tk, 1 showpassword.net, 0 @@ -97674,7 +97435,6 @@ shredder.tk, 1 shredoptics.ch, 0 shreyansh26.me, 1 -shrglobal.com, 1 shrike.me, 0 shrimpcam.pw, 1 shrimpnews.tk, 1 @@ -97912,7 +97672,6 @@ signaturecountertops.com, 1 signaturedallas.com, 1 signatureresolution.com, 1 -signcatch.com, 1 signere.com, 1 signicat.io, 1 significado.origem.nom.br, 1 @@ -97990,6 +97749,7 @@ silina.tk, 1 silindir-taslama.tk, 1 silken-madame.tk, 1 +silkon.net, 1 silkproducts.tk, 1 sillisalaatti.fi, 1 sillysnapz.co.uk, 1 @@ -98268,7 +98028,6 @@ simplycateringequipment.co.uk, 1 simplycharlottemason.com, 1 simplycloud.de, 1 -simplydigitalspace.ca, 1 simplyfitperth.com.au, 1 simplyfixit.co.uk, 1 simplyheadwear.com.au, 1 @@ -98419,7 +98178,6 @@ sinusitis-bronchitis.ch, 1 sinusitisexplained.com, 1 sinvideovault.com, 1 -sioeckes.hu, 1 siogyumolcs.hu, 1 sion-colony.tk, 1 sion.info, 1 @@ -98532,7 +98290,6 @@ sitecrew.cf, 1 sitecuatui.com, 1 sitedebelezaemoda.com.br, 1 -sitedrive.fi, 1 siteintelstage.com, 1 sitekatalog.tk, 1 sitelinks.ga, 1 @@ -98574,7 +98331,6 @@ sitzungsdienst.net, 1 siulam-wingchun.org, 1 siusto.com, 1 -sivale.mx, 1 sivaru.tk, 1 sivizius.eu, 1 sivutoimisto.fi, 1 @@ -98594,7 +98350,6 @@ sixstrings.tk, 1 sixt.com.tr, 1 sixteenweb.in, 1 -sixth.tube, 1 siyuan.com, 1 sizeunknown.com, 1 sizeunknown.net, 1 @@ -98693,7 +98448,7 @@ skiinstructor.services, 1 skile.ru, 0 skiley.net, 1 -skilift-quellenwiese.at, 1 +skilift-quellenwiese.at, 0 skill.moe, 1 skill.tk, 1 skillablers.com, 1 @@ -98703,6 +98458,7 @@ skillled.com, 1 skillmoe.at, 1 skills2serve.org, 1 +skills2services.com, 1 skillsenhancementtexas.gov, 1 skillsenhancementtx.gov, 1 skillshare.com, 1 @@ -98846,6 +98602,8 @@ skybrary.aero, 1 skybrary.eu, 1 skycmd.net, 1 +skyder.com.mx, 0 +skyder.mx, 0 skyderby.ru, 1 skydiverapp.com, 1 skydiverecuador.com, 1 @@ -98880,6 +98638,7 @@ skyminds.net, 1 skymonk.tk, 1 skyn.ai, 1 +skynet-research.us, 0 skynet233.ch, 0 skynet800.goip.de, 1 skynetcloud.site, 1 @@ -98921,6 +98680,7 @@ skywindowsnj.com, 1 skyworldlinktravels.com, 1 skyworldserver.ddns.net, 1 +skywt.cn, 1 skyynet.de, 1 skyzimba.com.br, 1 sl-alarm.ru, 1 @@ -98956,7 +98716,6 @@ slashorg.net, 1 slate.to, 1 slated.ie, 1 -slatemc.com, 1 slatemc.fun, 1 slathering.cf, 1 slaughter.com, 1 @@ -99180,7 +98939,6 @@ smartass.space, 1 smartass0027.com, 1 smartassembly.tk, 1 -smartb2balgeria.com, 1 smartbiz.vn, 1 smartblock.cloud, 1 smartcar.com, 1 @@ -99191,7 +98949,6 @@ smartcpa.ca, 1 smartdb.jp, 1 smartdigital.ga, 1 -smartdigitech.co.za, 1 smarteco.tk, 1 smartedukasi.co.id, 1 smarterskies.gov, 1 @@ -99241,7 +98998,6 @@ smartpos.net.br, 1 smartproductguide.com, 1 smartpti.net, 1 -smartrecruit.ro, 1 smartrentacar.ro, 1 smartriotour.com.br, 0 smartrise.us, 1 @@ -99294,7 +99050,6 @@ smi-a.me, 1 smialnumenor.tk, 1 smiatek.name, 1 -smiblog.tk, 1 smicenter.tk, 1 smicompact.com, 1 smictecniservi.com, 1 @@ -99353,7 +99108,6 @@ smokefreerowan.org, 1 smokeping.pl, 1 smoker.tk, 1 -smokingblendoils.com, 1 smokinghunks.com, 1 smokingrio.com.br, 1 smokingtapes.ga, 1 @@ -99389,6 +99143,7 @@ sms72.tk, 1 smsalvand.tk, 1 smsappointment.com, 0 +smsben.com, 0 smsbrana.cz, 0 smsfa.ir, 1 smsg-dev.ch, 0 @@ -99601,6 +99356,7 @@ sobchak.ga, 1 sobczakdesign.de, 1 sobersys.com, 1 +sobie.ch, 1 sobieray.dyndns.org, 1 soblaznenie.ru, 1 soblaznenie2.ru, 1 @@ -99840,7 +99596,6 @@ soinvett.com, 0 soji.io, 1 sokak-sanati.tk, 1 -sokakfotografi.com, 1 sokenconstruction.com, 1 soket.ee, 1 soko.nl, 1 @@ -100019,7 +99774,6 @@ somersetwellbeing.nhs.uk, 1 someserver.cf, 1 something-else.cf, 1 -somethingsimilar.com, 1 somethingsketchy.net, 1 somewherenews.cf, 1 somewherenews.ga, 1 @@ -100110,7 +99864,7 @@ sonixonline.com, 1 sonja-daniels.com, 1 sonja-kowa.de, 1 -sonjoux.com, 1 +sonjoux.com, 0 sonkamusic.tk, 1 sonmark.ru, 1 sonnenbergharrison.law, 1 @@ -100443,7 +100197,6 @@ soydemac.com, 1 soydoula.com, 1 soydxn.com, 1 -soygorrion.com.ar, 1 soyjak.party, 0 soyka.by, 1 soykaf.eu, 1 @@ -100599,7 +100352,6 @@ spartaermelo.nl, 1 spartamet.tk, 1 spartan300.tk, 1 -spartancoin.ooo, 1 spartanis.tk, 1 spartankids.in, 1 spartantheatre.org, 1 @@ -100882,7 +100634,6 @@ sponc.de, 1 sponec.com, 1 spongebobwiki.tk, 1 -spongepowered.org, 1 sponsor.software, 1 spoofhaus.com, 1 spookbook.net, 1 @@ -100892,7 +100643,6 @@ spoorcam.nl, 1 sporeshore.co.uk, 1 sporki.fun, 1 -spornkuller.de, 1 sport-51.ru, 1 sport-in-sundern.de, 1 sport-news.ml, 1 @@ -100977,14 +100727,13 @@ sportztalk.com, 1 spot-cleaner.tk, 1 spot-lumiere-led.com, 1 -spot.su, 1 spotifyfreetrial.co.uk, 1 spotifytop.me, 1 spotlabs.uk, 1 spotlessohio.com, 1 spotlightsrule.com, 1 spotonlive.dk, 1 -spotpetins.com, 1 +spotpetins.com, 0 spotrebitelskecentrum.sk, 1 spotsee.io, 0 spotswoodvet.com, 1 @@ -101112,6 +100861,7 @@ sqprod.co, 1 sqr-training.com, 1 sqreemtech.com, 1 +sqroot.eu, 1 sqsd.xyz, 1 sqshq.de, 1 squad.fr, 1 @@ -101241,6 +100991,7 @@ srsfwd.net, 1 srsfwd.org, 1 srshopping-rest.herokuapp.com, 1 +srun.in, 0 sruthisjewellery.com, 1 srvonfire.com, 1 srx.sx, 1 @@ -101555,7 +101306,6 @@ starfriend.ru, 1 stargarder-jungs.de, 1 stargate.gq, 1 -stargatelrp.co.uk, 1 stargazer.de, 1 stargift.ch, 1 stari.co, 1 @@ -101569,8 +101319,6 @@ starking.tk, 1 starkvilleurgentcareclinic.com, 1 starlabs.bio, 1 -starlim.co.in, 1 -starlim.org, 1 starlincuesta.gq, 1 starlinks.tk, 1 starlinkz.tk, 1 @@ -101872,7 +101620,6 @@ steinibox.de, 1 steinmassl.org, 1 steinmetz.cloud, 1 -steklein.de, 1 stekosouthamerica.com, 1 stelfox.net, 1 stelga.ca, 1 @@ -102050,6 +101797,7 @@ stevie-ray.me, 1 stewards.tk, 1 stewart.tk, 1 +stewartswines.com, 1 stewonet.nl, 1 stewpolley.com, 1 steyaert.be, 0 @@ -102191,7 +101939,6 @@ stmarthachurch.com, 1 stmaryextra.uk, 1 stmarysnutley.org, 1 -stmaryswestwarwick.org, 1 stmatthewri.org, 1 stmattsparish.com, 1 stmattsucc.org, 1 @@ -102482,7 +102229,6 @@ strategiclivingblog.com, 1 strategicmind.com, 1 strategicpartnersmedia.com, 1 -strategiczni.pl, 1 strategie-zone.de, 1 stratego-belgie.tk, 1 strategybusiness.ga, 1 @@ -102531,7 +102277,6 @@ streamodz.com, 1 streamonline.fi, 1 streampanel.net, 1 -streampleasure.xyz, 1 streams.dyndns.org, 1 streamside.tk, 1 streamspouredout.com, 1 @@ -102613,6 +102358,7 @@ stroeder.de, 1 stroeerdigital.de, 1 stroginopk.ga, 1 +strogov.me, 1 strogova.me, 1 stroifenix.ru, 1 stroigid.tk, 1 @@ -102758,7 +102504,6 @@ studiograou.com, 1 studiohelder.fr, 0 studiohomebase.amsterdam, 1 -studiokicca.com, 1 studiolegalemarchi.tk, 1 studiolegalepaternostro.it, 1 studiolu.tk, 1 @@ -102976,6 +102721,7 @@ sucessclick.gq, 1 suceveanca.ro, 1 suche.org, 1 +suchem.com, 0 suchhire.com, 1 suchmaschinen-werkstatt.de, 1 suckmyan.us, 0 @@ -103058,7 +102804,7 @@ sujoydhar.in, 1 sukamusik.tk, 1 suke3.jp, 1 -sukherchador.org, 1 +sukherchador.org, 0 suki.moe, 1 sukiu.net, 1 sukker-oaxaca.com, 1 @@ -103108,7 +102854,6 @@ sumcrevillent.tk, 1 sumguy.com, 1 sumhost.ml, 1 -sumiko.moe, 1 sumisa.cf, 1 sumit.blog, 1 sumit.me, 1 @@ -103206,6 +102951,7 @@ sunkimurology.com, 1 sunlit.cloud, 1 sunn.ie, 1 +sunny.co.uk, 1 sunnyhome.tk, 1 sunnylyx.com, 1 sunnynetworks.net, 1 @@ -103644,6 +103390,7 @@ svet.tk, 1 svetandroida.cz, 1 svetapublic.com, 1 +svetbank.cz, 1 svetila.com, 1 svetlanamamedova.tk, 1 svetlilo.com, 1 @@ -103810,7 +103557,6 @@ swingle.ga, 1 swingmonkey.com, 1 swingstel.tk, 1 -swingtimeinthegardens.com, 1 swingular.com, 1 swingz.com.au, 1 swipedon.com, 1 @@ -104175,11 +103921,9 @@ t2i.nl, 1 t2kc.com, 1 t36533.com, 1 -t39.com, 1 t3hty.fr, 1 t3rror.net, 1 t404.de, 1 -t449.com, 1 t47.io, 1 t4c.link, 1 t4cc0.re, 1 @@ -104211,6 +103955,7 @@ t88oo.com, 0 t88ss.com, 0 t88vip0.com, 1 +t88vip1.com, 1 t88vip2.com, 1 t88vip3.com, 1 t88vip4.com, 1 @@ -104308,7 +104053,6 @@ tadalafilindia.gq, 1 taddiestales.com, 1 tadinfos.fr, 1 -tadiranbatteries.de, 0 tadj-mahalat.com, 0 tadjiki.tk, 1 tadjikistan.tk, 1 @@ -104394,6 +104138,7 @@ taipei-101.tk, 1 taishokudaiko.com, 1 taishon.nagoya, 1 +taitmacleod.com, 1 taiwan-kitchen.com, 1 taiwan.dating, 1 taiwanhotspring.net, 1 @@ -104488,7 +104233,6 @@ talisman-amulet.ga, 1 talk.google.com, 1 talk.vg, 1 -talk.xyz, 1 talkaboutdesign.com, 1 talkbasket.net, 1 talkgadget.google.com, 1 @@ -104691,6 +104435,7 @@ tappezziere.milano.it, 0 tappyshop.com.br, 1 tapquad.com, 1 +taprix.org, 1 tapsnapp.co, 1 taqeemi.com, 1 taquilla.com, 1 @@ -104886,7 +104631,7 @@ taxly.kr, 1 taxmadras.com, 1 taxo.fi, 1 -taxpackagesupport.com, 0 +taxpackagesupport.com, 1 taxprocpa.com, 1 taxteam.co.il, 1 tayar2u.my, 1 @@ -104998,7 +104743,6 @@ tcvvip.com, 1 tcwis.com, 1 tcyoung.co.uk, 1 -td-bambini.com, 1 td-bambini.ru, 1 td-olymp.ru, 1 tdchrom.com, 0 @@ -105171,7 +104915,6 @@ tebebo.com, 1 tebian.tk, 1 tebieer.com, 1 -tebis-consulting.my-router.de, 1 tebodental.com, 1 tebodentalgroup.com, 1 tebodentistryatlanta.com, 1 @@ -105293,7 +105036,6 @@ techmaish.com, 1 techmanstan.com, 1 techmasters.io, 1 -techmepro.com, 1 techmerch.ru, 0 techmoviles.com, 0 technavio.com, 1 @@ -105438,6 +105180,7 @@ tecnick.com, 1 tecnicoelettrodomestici.roma.it, 1 tecnikan.com.ar, 1 +tecnimas.com.mx, 0 tecnimotos.com, 1 tecnipuntoseguridad.com, 1 tecno-block.ru, 1 @@ -105460,7 +105203,6 @@ tecnyal.com, 1 tecon.co.at, 1 tecorrs.tk, 1 -tecparsnet.ir, 1 tecroxy.com, 1 tecscipro.de, 1 tecta-stag-225720.appspot.com, 1 @@ -105505,7 +105247,6 @@ teerer.tk, 1 teeshirtspace.com, 1 teesurprise.com, 1 -teesypeesy.com, 1 teeters.in, 1 teetje-doko.de, 1 teetoptens.com, 1 @@ -105549,7 +105290,7 @@ teknisetdemarit.fi, 1 tekniskakustik.se, 1 teknodaim.com, 1 -teknofara.com, 1 +teknofara.com, 0 teknoforums.com, 1 teknogeek.id, 1 teknoharekat.com, 1 @@ -105573,7 +105314,7 @@ telcu.com, 1 teldak.pt, 1 tele-alarme.ch, 1 -tele-assistance.ch, 1 +tele-assistance.ch, 0 tele-points.net, 1 tele.wiki, 1 teleafrica.ga, 1 @@ -105655,7 +105396,7 @@ teleyal.blog, 1 telford.codes, 1 telhatelite.com.br, 1 -telite.com.br, 1 +telite.com.br, 0 telka-online.tk, 1 telkomuniversity.ac.id, 0 tellerify.com, 1 @@ -105735,7 +105476,6 @@ tendiris.ga, 1 tendmed.com.br, 1 tendomag.com, 1 -tendoryu-aikido.org, 1 tendure.tk, 1 tenelco.net, 1 tenens.ru, 1 @@ -106018,7 +105758,6 @@ teutonia08.de, 1 tevi.uk, 0 tewarilab.co.uk, 1 -tewkesburybouncycastles.co.uk, 1 tewkesburyyoga.com, 1 texarkanatherapycenter.com, 1 texasbluesalley.com, 1 @@ -106198,14 +105937,12 @@ thatdaria.com, 1 thatdarkplace.com, 1 thatdirtyd.com, 1 -thatlooksreallygood.com, 1 thatshayini-sivananthan.fr, 1 thatssodee.com, 1 thaumaturgian-national-university.tk, 1 thavmacode.gr, 1 thc-stadvdzon.nl, 1 thca.ca, 1 -thcdev.de, 1 thconsulting.co.uk, 1 thcpbees.co.uk, 1 thda.org, 1 @@ -106369,7 +106106,9 @@ thebismarckmarathon.com, 1 thebit.link, 1 thebitchneyfiles.tk, 1 +theblackboard.gr, 1 theblackcat.ga, 1 +theblackknightsings.com, 1 theblisters.tk, 1 theblondeabroad.com, 0 theblue.tk, 1 @@ -106469,6 +106208,7 @@ theconcordbridge.azurewebsites.net, 1 thecondemned.tk, 1 theconsultingpeople.tk, 1 +thecontentcloud.com, 1 theconversation.com, 1 theconverter.net, 1 thecook.com.co, 1 @@ -106511,7 +106251,7 @@ thedeathmachine.tk, 1 thedeathofannakarina.tk, 1 thedebug.life, 1 -thedentalstudiomiami.com, 1 +thedentalstudiomiami.com, 0 thederminstitute.com, 1 thedev.id, 1 thedevastatedrealm.tk, 1 @@ -106884,7 +106624,6 @@ theobg.co, 1 theobora.fr, 1 theobromos.fr, 0 -theoc.co, 1 theoc4ever.tk, 1 theocharis.org, 1 theocjournal.tk, 1 @@ -107190,7 +106929,6 @@ thetownehub.com, 1 thetradinghall.com, 0 thetrafficgeek.com, 1 -thetransformingchurch.org, 1 thetravel.com, 1 thetravelczar.com, 1 thetravelhack.com, 0 @@ -107317,7 +107055,6 @@ thiepcuoidep.com, 1 thiepxinh.net, 1 thierryhayoz.ch, 1 -thierrymazue.fr, 1 thiesketelsen.de, 1 thietbithoathiem.net, 1 thietkegianhangtttm.com, 1 @@ -107414,7 +107151,6 @@ thisuniverse.tk, 1 thmail.ml, 1 thmnia.com, 1 -thmpartners.com, 1 thn.la, 1 thoe.xyz, 1 thoitrangsikimanh.com, 1 @@ -107466,6 +107202,7 @@ thomwiggers.nl, 1 thooka.com, 1 thoplam.com, 1 +thor.edu, 1 thor.re, 1 thorbes.ga, 1 thorbiswebsitedesign.com, 1 @@ -107563,6 +107300,7 @@ thw-bernburg.de, 1 thw-jugend-muenchen-west.de, 1 thwebdesigns.com, 1 +thwiki.cc, 1 thxandbye.de, 1 thycotic.ru, 1 thynx.io, 1 @@ -107705,6 +107443,7 @@ tierracenter.com, 1 tierradeayala.com, 1 tierrahost.com, 1 +tierraprohibida.net, 1 tierschutz-niederrhein.de, 1 tiestofan.tk, 1 tietotori.fi, 1 @@ -108092,7 +107831,6 @@ tkmr-gyouseishosi.com, 1 tkn.me, 1 tkonstantopoulos.tk, 1 -tkrn.de, 1 tksainc.com, 1 tkts.cl, 1 tkusano.jp, 1 @@ -108254,7 +107992,6 @@ tobischo.de, 1 tobostop.de, 1 tobtennis.tk, 1 -toby.website, 1 tobyalden.com, 1 tobyschrapel.com, 0 tobyslawn.com, 1 @@ -108330,7 +108067,6 @@ toepferei-langerwehe.de, 1 toepferwerk.de, 1 toerschaatsenknsb.nl, 1 -toest.bg, 1 toetsplatform.be, 1 tofa-koeln.de, 1 tofe.io, 1 @@ -108597,6 +108333,8 @@ tono.us, 1 tonorosario.tk, 1 tonshaiza.tk, 1 +tonsit.com, 1 +tonsit.org, 0 tonton.cf, 1 tontonnews.net, 1 tontonroger.org, 1 @@ -108868,7 +108606,6 @@ torkel.se, 1 torkware.com, 1 torlock.com, 1 -torlock.icu, 1 torlock2.com, 1 tormakristof.eu, 1 tormentedradio.com, 0 @@ -108914,8 +108651,6 @@ torrentdb.tk, 1 torrentdownload.gq, 1 torrentfunk.com, 1 -torrentfunk.icu, 1 -torrentfunk.pw, 1 torrentfunk2.com, 1 torrentgalaxy.to, 1 torrentz2.al, 1 @@ -109062,7 +108797,6 @@ tournaments.tk, 1 tournevis.ch, 0 tours-in-petersburg.tk, 1 -tours.co.th, 1 toursandtransfers.it, 1 toursencancun.com, 1 toursinvietnam.tk, 1 @@ -109166,10 +108900,8 @@ toysplace.ml, 1 toystory3.ga, 1 tozdev.com, 1 -tp-kyouyufudousan.com, 1 tp-law.jp, 1 tpark.jp, 1 -tpbunblocked.org, 1 tpci.biz, 1 tpiada.tk, 1 tpk-parma.ru, 1 @@ -109735,7 +109467,6 @@ treinonline.tk, 1 treintijden.com, 1 trek-planet.ru, 1 -treker.us, 1 trekfriend.com, 1 trekintel.com, 1 trekkertrek.tk, 1 @@ -109869,7 +109600,7 @@ tricordmedia.ca, 1 tricountyathome.com, 1 tricountyheatingcooling.com, 1 -triddi.com, 1 +triddi.com, 0 tridena.com, 1 trident-online.de, 1 trident1000logoi.gr, 1 @@ -109964,7 +109695,6 @@ trisha.tk, 1 trissiethehusky.rocks, 1 tristanfarkas.one, 1 -tristanhager.i234.me, 1 trit.pro, 1 tritium.cf, 1 tritiumdisposal.com, 1 @@ -110290,7 +110020,6 @@ tss.am, 1 tst-band.tk, 1 tstech.mx, 1 -tstrubberstamp.com, 0 tsu.re, 1 tsueri.cloud, 1 tsukhani.com, 1 @@ -110533,6 +110262,7 @@ turbinelectricity.ga, 1 turbo.az, 1 turbo24.com, 1 +turbohost.co.mz, 0 turbohostingcolombia.com, 1 turbomag.pl, 1 turbosim.de, 1 @@ -110992,7 +110722,6 @@ tyroremotes.pt, 1 tyroremotes.se, 1 tyrulez.tk, 1 -tysox.de, 1 tysukakorrekt.ga, 1 tysye.ca, 1 tytixazo.tk, 1 @@ -111038,7 +110767,6 @@ u5.re, 1 u51365.com, 1 u5197.co, 1 -u5r.nl, 1 u6729.co, 1 u6729.com, 0 u6957.co, 1 @@ -111071,7 +110799,7 @@ uatuning.com.ua, 1 uatx.mx, 1 uavis.com.au, 1 -uawoptout.com, 1 +uawoptout.com, 0 ub3rk1tten.com, 0 ub889.com, 1 uba-tra.tk, 1 @@ -111085,7 +110813,6 @@ uberactivist.com, 1 uberalles.live, 1 uberboxen.net, 1 -uberestimator.com, 1 ubergamingworld.tk, 1 uberhorny.tk, 1 uberi.fi, 1 @@ -111262,6 +110989,7 @@ uinvest.tk, 1 uiop.link, 1 uiterwijk.org, 1 +uitgeverij-deviant.nl, 1 uitingent.be, 1 uitliefde.shop, 1 uitvaartvrouwenfriesland.nl, 1 @@ -111553,6 +111281,7 @@ unfallrechtler.de, 1 unfamousrecords.tk, 1 unfathomable.blue, 1 +unfc.nl, 1 unferno.tech, 1 unfettered.net, 0 unfixed-soul.tk, 1 @@ -111599,10 +111328,6 @@ unicornmusic.tk, 1 unicorntooling.eu, 1 unicrack.cf, 1 -unicredit.ba, 1 -unicredit.ro, 1 -unicreditbank.hu, 1 -unicreditbank.rs, 1 unicreditbank.ru, 0 unicreditbulbank.info, 1 unicul.tk, 1 @@ -111728,7 +111453,6 @@ univercite.ch, 0 univeril.com, 0 univerkeys.com, 1 -univerpack.net, 1 universal-happiness.com, 1 universal-mail.ml, 1 universal-techno.com, 1 @@ -111765,12 +111489,10 @@ universogay.com, 1 universoscuola.it, 1 universovalve.net, 1 -universrumbacongolaise.com, 1 universus.tk, 1 univet-veterinaire.com, 0 univitale.fr, 0 unix.lu, 1 -unix.se, 1 unixadm.org, 1 unixapp.ml, 1 unixattic.com, 1 @@ -111809,9 +111531,7 @@ unn-edu.info, 1 unnamed.download, 1 unnas.ca, 1 -uno.fi, 1 uno.uk, 1 -unobet-partners.com, 1 unobrindes.com.br, 1 unoccupyabq.org, 1 unofficialbpb.tk, 1 @@ -111839,12 +111559,10 @@ unric.org, 1 unripple.com, 1 unruh.fr, 0 -uns.vn, 1 unsee.cc, 1 unseeliefilms.com, 1 unseeliepress.com, 1 unseen.is, 1 -unseen.tw, 1 unser-gartenforum.de, 1 unsourirealecole.fr, 1 unstable.network, 1 @@ -111864,7 +111582,6 @@ unti.me, 1 unti.tk, 1 untro.xyz, 1 -unts.xyz, 1 untvweb.com, 1 unusedrooms.com, 1 unusualhatclub.com, 1 @@ -112087,7 +111804,6 @@ urgences-valais.ch, 1 urgent-notice.ml, 1 urgentcaresouthaven.com, 1 -urion.com.br, 1 uriport.com, 1 uriports.com, 1 uripura.de, 1 @@ -112292,7 +112008,7 @@ ussst.org.in, 1 ustaywell.com, 1 ustensiles-cuisine.boutique, 1 -ustr.gov, 0 +ustr.gov, 1 ustugov.kiev.ua, 1 ustugova.kiev.ua, 1 ustyj.tk, 1 @@ -112330,6 +112046,7 @@ utensil.org, 1 utevai.tk, 1 utiars.com, 1 +uticagravel.com, 1 utilbot.co, 1 utilia.tools, 1 utilidad.tk, 1 @@ -112406,7 +112123,6 @@ uwsalonboot.nl, 1 uwu.lgbt, 1 uwu.nu, 1 -uwvloereruit.nl, 1 uwwsb.com, 1 ux-designers.nl, 1 ux-solution.de, 1 @@ -112640,8 +112356,10 @@ valentin-ochs.de, 1 valentin.app, 1 valentinaquino.com, 1 +valentinarosamilia.com, 1 valentinberclaz.com, 0 valentineapparel.com, 1 +valentineforpresident.com, 1 valentinemom.cf, 1 valentinemom.ga, 1 valentinemom.gq, 1 @@ -112660,7 +112378,6 @@ valeriapanarina.com, 1 valerieadolff.com, 1 valerieorsoni.com, 1 -valescaind.com.br, 1 valhallastrengthsthbne.com.au, 1 valheim.pro, 1 valiakhmetov.tk, 1 @@ -112756,7 +112473,7 @@ van-brandevoort.tk, 1 van11y.net, 1 vanadrighem.eu, 1 -vanarok.xyz, 1 +vanarok.xyz, 0 vanasperenschoenen.nl, 1 vanbalen.be, 1 vanbarel.tk, 1 @@ -113021,7 +112738,6 @@ vdcomp.cz, 0 vddruckwerk.de, 1 vdemuzere.be, 1 -vdesc.com, 1 vdheyden.net, 1 vdim.shop, 1 vdisk24.de, 1 @@ -113060,7 +112776,6 @@ vectorsiriushockeyclub.com, 1 vectortrack.com.au, 1 vectorwish.com, 1 -vectro.me, 1 vectrum.cf, 1 vedeneev.tk, 1 vedev.io, 1 @@ -113071,7 +112786,7 @@ veerleklinge.nl, 1 veessen.tk, 1 veg-leiden.nl, 1 -veg.lv, 1 +veg.lv, 0 vega-diva.com, 1 vega-rumia.com.pl, 1 vega-rumia.pl, 0 @@ -113542,7 +113257,6 @@ vician.cz, 1 vicicode.com, 1 vicioanimal.pt, 1 -vicious.space, 1 viciousflora.com, 1 vicjuwelen-annelore.be, 1 vickyflipfloptravels.com, 0 @@ -113677,7 +113391,6 @@ vidracariaespelhosbh.com.br, 1 vidyabhavanam.org, 1 vidyamonk.com, 1 -vieaw.com, 1 viega.at, 1 viega.be, 1 viega.ca, 1 @@ -113885,7 +113598,6 @@ vim.cx, 1 vim.ge, 1 vima.ch, 0 -vimar.com, 1 vimeo.com, 1 vimeosucks.nyc, 1 vimium.com, 1 @@ -113979,7 +113691,6 @@ violin4fun.nl, 1 viome.com, 1 vionicbeach.com, 1 -vionicshoes.co.uk, 1 vionicshoes.com, 1 vionity.co, 1 viosey.com, 1 @@ -114207,6 +113918,7 @@ visscher.codes, 1 vista-calculator.ru, 1 vista-research-group.com, 1 +vistaalmar.es, 1 vistastylebuilder.com, 0 vistb.me, 1 vistec-support.de, 1 @@ -114338,6 +114050,7 @@ vivoitaliankitchen.com, 1 vivoldi.com, 1 vivoregularizafacil.com.br, 1 +vivoseg.com, 0 vivreenisrael.com, 1 vivy.com, 1 viwsec.com.br, 1 @@ -114359,7 +114072,6 @@ vizmart.ml, 1 vjeff.com, 1 vjeff.net, 1 -vjhfoundation.org, 1 vjshi.xyz, 1 vk-agent.ru, 1 vk-k.com, 1 @@ -114431,7 +114143,6 @@ vloggerspace.tk, 1 vlovgr.se, 1 vltonline.org, 1 -vlvvl.com, 1 vlzbazar.ru, 1 vm-0.com, 1 vm-co.ch, 0 @@ -114443,7 +114154,7 @@ vmconnected.co.uk, 1 vmem.jp, 0 vmf365.tk, 1 -vmgirls.com, 1 +vmgirls.com, 0 vmhomedesign.com, 0 vmhydro.ru, 0 vmis.nl, 1 @@ -114536,14 +114247,12 @@ vogue.cz, 1 voguefrontier.tk, 1 voice-of-design.com, 1 -voicebrew.com, 1 voicedata.tk, 1 voiceofcricket.tk, 1 voiceofserbia.tk, 1 voicesoflabor.com, 1 voicesofspirit.at, 1 voicesuk.co.uk, 1 -voicr.nl, 1 voicu.ch, 0 voidancerecords.com, 1 voidbot.ai, 1 @@ -114552,6 +114261,7 @@ voidi.ca, 1 voidma.in, 1 voidnet.tech, 1 +voidnya.com, 1 voidpay.net, 1 voidpay.org, 1 voidptr.eu, 1 @@ -114570,6 +114280,7 @@ vokieciupamokos.lt, 1 vokov.ml, 1 vokrug.ga, 1 +vokzalperm.ru, 1 volatile.pw, 1 volatilesystems.org, 1 volatilethunk.com, 1 @@ -114712,7 +114423,6 @@ vote.gov, 1 vote.nz, 1 vote.org, 1 -vote2019.appspot.com, 1 vote4.hk, 1 votebrevard.gov, 1 votebymail.gov, 1 @@ -114787,7 +114497,6 @@ vozhuo.cf, 1 vparilke.su, 1 vpetkov.tk, 1 -vpn.black, 1 vpn.ht, 1 vpn4free.ga, 1 vpnboss.com.au, 1 @@ -114872,7 +114581,6 @@ vs1717.com, 0 vs2277.com, 0 vs2828.com, 0 -vs303.com, 1 vs5050.com, 0 vs5151.com, 0 vs603.com, 1 @@ -114887,6 +114595,7 @@ vsaratove.tk, 1 vsatke.tk, 1 vsc-don-stocksport.de, 1 +vscale.io, 0 vscm888.com, 1 vscredconsultoria.online, 1 vsd.sk, 1 @@ -114919,7 +114628,6 @@ vsl-defi.ch, 0 vsl.de, 1 vsolovev.com, 1 -vsonline.blog, 1 vsoy.co.th, 1 vspin.cz, 1 vsportage.com, 1 @@ -114990,6 +114698,7 @@ vv9721.com, 0 vv9728.co, 1 vvactivia.nl, 1 +vvave.net, 0 vvcasteren.nl, 1 vvd.bz, 1 vvdbronckhorst.nl, 1 @@ -115082,7 +114791,6 @@ w1nter.xyz, 1 w2929w.com, 1 w2design.eu, 1 -w2me.ru, 1 w2n.me, 1 w3330.com, 1 w365.vip, 0 @@ -115185,7 +114893,6 @@ w889vip.com, 1 w88info.com, 1 w88info.win, 1 -w88xinxi.com, 1 w8less.nl, 1 w8wat.com, 1 w9196.com, 1 @@ -115241,7 +114948,6 @@ wafuton.com, 1 wagcenter.com, 1 wage-feeg.gc.ca, 1 -wagenmanswonen.nl, 1 wagesweldandfab.com, 1 wageverify.com, 1 wagn3r.de, 1 @@ -115292,6 +114998,7 @@ waldo.tk, 1 waldparkerwoelfe.tk, 1 waldportoregon.gov, 1 +waldur.nl, 1 waldvogel.family, 1 walent.in, 1 walentin.co, 1 @@ -115481,7 +115188,7 @@ wardslager.com, 1 warebouncycastles.co.uk, 1 warehost.de, 0 -warekit.io, 1 +warekit.io, 0 warekon.com, 1 warekon.dk, 1 warenghem.com, 1 @@ -115726,7 +115433,6 @@ wbt-solutions.net, 1 wbudd.com, 1 wbut.ml, 1 -wbvb.nl, 1 wby.by, 1 wby.tw, 1 wc-is.com, 1 @@ -115956,7 +115662,6 @@ webdesignersinchennai.tk, 1 webdesignfenua.tk, 1 webdesignforum.it, 1 -webdesigngc.com, 1 webdesignplay.com, 1 webdesignplayground.io, 1 webdesignrodgau.de, 1 @@ -116000,6 +115705,7 @@ webforce.pt, 1 webformula.in, 1 webforthemasses.tk, 1 +webfronten.dk, 0 webfun.tk, 1 webgadgets.tk, 1 webgaku.net, 1 @@ -116120,7 +115826,6 @@ webpakken.dk, 1 webpantry.ga, 1 webparallax.cf, 1 -webpc.com.ua, 1 webpcstudio.com, 1 webperformance.io, 1 webpiar.tk, 1 @@ -116158,6 +115863,7 @@ websecurity.is, 1 webseitendesigner.com, 0 webseitenserver.com, 0 +webshan.ir, 0 webshaped.de, 1 webshop.nl, 1 website-engineering.co.za, 0 @@ -116315,6 +116021,7 @@ weedupdate.com, 1 weedworthy.com, 1 weedypedia.de, 1 +week.report, 1 weekdone.com, 1 weekendcandy.com, 1 weekendinitaly.com, 1 @@ -116359,7 +116066,6 @@ weideheuvel.org, 1 weidmannfibertechnology.com, 0 weien.org, 1 -weigelia.nl, 1 weighed.ga, 1 weightlift.ml, 1 weightlosseasy.cf, 1 @@ -116399,7 +116105,6 @@ weitsolutions.nl, 1 weitundbreit.ch, 1 weizenke.im, 1 -wejdmark.com, 1 wekibe.de, 1 wekipedia.com, 1 weknowhowtodoit.com, 1 @@ -116432,6 +116137,7 @@ wellness-gutschein.de, 1 wellnesscheck.net, 1 wellnessever.com, 1 +wellnesshotel-weimar.de, 1 wellsolveit.com, 0 wellspringsga.com, 1 wellsprung.net, 1 @@ -116608,7 +116314,6 @@ westlandplacestudios.com, 1 westlebanonpa.gov, 1 westline.com.tr, 1 -westlinntowncar.com, 1 westlogistic.com, 1 westmead.org, 1 westmeadapartments.com.au, 1 @@ -116628,7 +116333,6 @@ westside-pediatrics.com, 1 westsidechildrenstherapy.com, 1 westskinlaser.com, 1 -westsuburbanbank.com, 1 westthorntonlabour.co.uk, 0 westvilleplumber.co.za, 1 westvirginiahealth.tk, 1 @@ -116750,7 +116454,6 @@ whatisthe.cloud, 1 whatisthisapp.com, 1 whatnot.ai, 1 -whatsahoy.com, 1 whatsapp.com, 1 whatsapp.net, 1 whatsapp.ru, 1 @@ -116894,7 +116597,6 @@ whittle.in, 1 whittome.com, 1 whitworth.nyc, 1 -whizz.ie, 1 whizzzbang.co.uk, 1 whm.gc.ca, 1 whnpa.org, 1 @@ -116903,6 +116605,7 @@ whoagirls.com, 1 whoagirls.net, 0 whoagirls.org, 1 +whoami.eu.org, 1 whoami.io, 1 whocalld.com, 1 whocalled.us, 1 @@ -116922,7 +116625,6 @@ whonix.org, 1 whoopee.my, 1 whooshkaa.com, 1 -whoownsmyavailability.com, 1 whoreofwallstreet.tk, 1 whorepresentsme.us, 1 whosapeach.tk, 1 @@ -116978,7 +116680,6 @@ widegab.com, 0 wideinfo.org, 1 widejeans.tk, 1 -widely.io, 1 widememory.com, 1 widenews.org, 1 wideworks.agency, 1 @@ -117039,7 +116740,6 @@ wijkdezwaenebloeme.tk, 1 wijkstation.nl, 1 wijnbesteld.nl, 1 -wijnimportjanssen.nl, 1 wijnlandkroatie.nl, 1 wijnservices.nl, 0 wijsaantwerk.be, 1 @@ -117252,8 +116952,10 @@ wiliquet.net, 0 wilk.tech, 0 wilkebouwer.nl, 1 +wilkinsondigital.com, 1 wilkipedia.org, 1 wilkushka.com, 1 +wilkushka.net, 1 will-lash.com, 1 willalex.com, 1 willberg.bayern, 1 @@ -117480,6 +117182,7 @@ wippy.tk, 1 wir-do.de, 1 wir-jugendhilfe.de, 1 +wir-machen-druck.de, 1 wirbsinglereview.com, 1 wircon-int.net, 1 wire.com, 1 @@ -117581,7 +117284,6 @@ witchhunt.tk, 1 witchthicktits.tk, 1 with-environment.com, 1 -with-planning.co.jp, 1 wither.cf, 1 witheveryheartbeat.com.au, 1 withextraveg.net, 1 @@ -117812,7 +117514,6 @@ wonderbox.ml, 1 wonderchat.tk, 1 wondercorner.ca, 1 -wondercris.com, 1 wondereur.com, 1 wonderfall.space, 1 wonderfuleducation.eu, 1 @@ -117852,7 +117553,6 @@ woodbury.io, 1 woodcat.net, 1 woodcock.cloud, 1 -woodcoin.org, 1 woodconditioningonline.com, 1 woodcountywi.gov, 1 woodcraftind.com, 1 @@ -117865,7 +117565,6 @@ woodinvillesepticservice.net, 1 woodlandboys.com, 1 woodlandexterior.com, 1 -woodlandhillselectrical.com, 1 woodlandsiding.com, 1 woodlandsunrooms.com, 1 woodlandsunroomsandenclosures.com, 1 @@ -117938,6 +117637,7 @@ wordwidessl.net, 1 wordxtra.net, 1 wordzite.com, 1 +worf.in, 1 work-at-home.ga, 1 work-at-home.gq, 1 work-in-progress.website, 1 @@ -118162,7 +117862,6 @@ wot-zadrot.com, 1 wotcheats.ru, 1 woti.dedyn.io, 1 -wotsunduk.ru, 1 wotzadrot.com, 1 woudenberg.nl, 0 woudenbergsedrukkerij.nl, 1 @@ -118249,7 +117948,6 @@ wphostingblog.nl, 1 wpinabox.de, 1 wpinfos.de, 0 -wpjakarta.com, 1 wpldn.uk, 1 wpletter.de, 1 wplibrary.net, 1 @@ -118403,7 +118101,6 @@ wuergler-consulting.ch, 1 wuermlitaucher.ch, 1 wuestenbergs.tk, 1 -wufupay.com, 1 wug.fun, 0 wug.jp, 1 wug.news, 1 @@ -118431,7 +118128,6 @@ wunder.io, 1 wunderkarten.de, 1 wunderlist.com, 1 -wundernas.ch, 1 wundi.net, 1 wunschpreisauto.de, 1 wunschzettel.de, 1 @@ -118593,7 +118289,7 @@ wxw.moe, 1 wxxcxd88.com, 1 wxzm.sx, 1 -wy188.cc, 1 +wy188.cc, 0 wy6.org, 1 wyam.io, 1 wyatttauber.com, 1 @@ -119001,7 +118697,6 @@ xiaohui.love, 1 xiaojiyoupin.com, 1 xiaolanglang.net, 0 -xiaolong.link, 1 xiaomao.tk, 1 xiaomi.com.ge, 1 xiaomibarato.com, 1 @@ -119318,6 +119013,7 @@ xn--80adb4aeode.xn--p1ai, 1 xn--80adbevek3air0ee9b8d.com, 1 xn--80adbvdjzhptl1be6j.com, 1 +xn--80adianadstvnice3evh.xn--90ais, 1 xn--80ae7bafe4d.tk, 1 xn--80aebbkaqx6at.xn--p1ai, 1 xn--80aejhvi0at.xn--90ais, 1 @@ -119530,6 +119226,7 @@ xn--mntsamling-0cb.dk, 1 xn--myrepubic-wub.net, 1 xn--myrepublc-x5a.net, 1 +xn--n1aeexs.net, 0 xn--nicieri-b4a.ro, 1 xn--nidar-tib.org, 1 xn--nide-loa.ee, 1 @@ -119664,7 +119361,6 @@ xperiacode.com, 1 xperidia.com, 1 xpert-designs.com, 1 -xpertairctx.com, 1 xpertairtx.com, 1 xpertairwaco.com, 1 xpertcenter.ch, 1 @@ -119849,9 +119545,7 @@ xuming.studio, 1 xumm.community, 1 xumm.me, 1 -xun3708855.com, 1 xunmengdu.com, 1 -xunn.io, 1 xuntaosms.com, 1 xuntier.ch, 1 xurl.gq, 1 @@ -120157,7 +119851,6 @@ yangcs.net, 0 yangfamily.tw, 1 yangjingwen.cn, 1 -yangjingwen.com, 1 yangmao.info, 1 yangmaodang.org, 0 yangmi.blog, 1 @@ -120487,7 +120180,6 @@ yilconstruction.ca, 1 yiluup.com, 0 yimgo.fr, 0 -yin8888.tv, 0 yinduyy.com, 0 yinfor.com, 1 ying.gift, 1 @@ -120563,7 +120255,6 @@ yodababy.com.tw, 1 yodalef3.tk, 1 yodaremote.tk, 1 -yoga-alliance-teacher-training.com, 1 yoga-bien-etre.com, 1 yoga-good.fr, 1 yoga-prive.de, 1 @@ -120579,11 +120270,9 @@ yogaillustrations.ga, 1 yogaillustrations.tk, 1 yogamarlene.ch, 1 -yogamea.school, 1 yogananda-roma.org, 1 yogaovelser.dk, 1 yogaprague.com, 1 -yogaschoolrishikesh.com, 1 yogaschule-herzraum.de, 1 yogasolution.tk, 1 yogatherapykosha.com, 1 @@ -120596,7 +120285,6 @@ yohanesmario.com, 1 yoitoko.city, 1 yoitsu.moe, 1 -yojnaa.com, 1 yokocho373.com, 1 yokoda.okinawa, 1 yokohama-legaloffice.jp, 1 @@ -120766,7 +120454,6 @@ yourbetterkitchen.com, 0 yourbind.com, 1 yourbittorrent.com, 1 -yourbittorrent.pw, 1 yourbittorrent2.com, 1 yourblazeguard.com, 1 yourbodyknows.dk, 1 @@ -120789,7 +120476,6 @@ yourdomain.host, 1 yourdrive.tk, 1 youreallyneedthis.co, 1 -youregeeks.com, 1 youreitbranding.com, 1 youreward.ga, 1 yourforex.org, 1 @@ -120817,7 +120503,6 @@ yourpalstore.com, 1 yourpersonalfrance.com, 1 yourrenaissancemedspa.com, 1 -yourscotlandtour.co.uk, 1 yourskin.nl, 1 yoursoul.gq, 1 yoursoulmate.tk, 1 @@ -120827,7 +120512,6 @@ yourtests.tk, 1 yourticketbooking.com, 1 yourtime.tv, 1 -yourtopia.fr, 1 yourtwojugs.com, 1 youruseragent.info, 1 yourwatchdesign.co.uk, 1 @@ -121932,7 +121616,7 @@ zety.fr, 1 zeus.gent, 1 zeuscorp.ga, 1 -zeusec.co.jp, 0 +zeusec.co.jp, 1 zeusindia.tk, 1 zevelev.net, 1 zevenbergenbos.tk, 1 @@ -121970,7 +121654,7 @@ zhangge.net, 1 zhanghao.me, 1 zhanghao.org, 1 -zhangjet.com, 1 +zhangjet.com, 0 zhanglizhi.ml, 1 zhangpeng.ai, 1 zhangshuqiao.org, 1 @@ -122107,7 +121791,7 @@ zindan.tk, 1 zindec.com, 1 zinewords.com, 1 -zingjerijk.nl, 1 +zingjerijk.nl, 0 zinglix.xyz, 1 zingpetfood.com, 1 zings.eu, 1 @@ -122121,6 +121805,7 @@ zionsvillelocksmiths.com, 1 ziontech.eu.org, 1 zionvps.com, 0 +zip.ch, 1 zipalerts.com, 1 ziparcfhive.ga, 1 zipkey.de, 1 @@ -122153,7 +121838,6 @@ zizcollections.com, 1 zizibook.ml, 1 zizin.tk, 1 -zjateaucafe.be, 1 zjawa.pro, 1 zjc3.com, 1 zju.tv, 1 @@ -122279,7 +121963,7 @@ znaniya.cf, 1 znanje.gq, 1 znation.nl, 1 -znbr.com, 0 +znbr.com, 1 znd.jp, 1 zngay.com, 1 znhglobalresources.com, 1 @@ -122399,6 +122083,7 @@ zoom.earth, 1 zoomative.com, 1 zoomcar.pro, 1 +zoomek.com, 1 zoomgov.com, 1 zooom.azurewebsites.net, 1 zooom2.azurewebsites.net, 1 @@ -122623,7 +122308,6 @@ zz204.com, 1 zz342.com, 1 zz5197.co, 1 -zz606.com, 1 zz6729.co, 1 zz6729.com, 0 zz6957.co, 1 diff -Nru thunderbird-91.8.1+build1/security/manager/ssl/StaticHPKPins.h thunderbird-91.9.1+build1/security/manager/ssl/StaticHPKPins.h --- thunderbird-91.8.1+build1/security/manager/ssl/StaticHPKPins.h 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/security/manager/ssl/StaticHPKPins.h 2022-05-20 05:58:33.000000000 +0000 @@ -1149,4 +1149,4 @@ static const int32_t kUnknownId = -1; -static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1656931854455000); +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1659351116755000); diff -Nru thunderbird-91.8.1+build1/services/settings/dumps/blocklists/addons-bloomfilters.json thunderbird-91.9.1+build1/services/settings/dumps/blocklists/addons-bloomfilters.json --- thunderbird-91.8.1+build1/services/settings/dumps/blocklists/addons-bloomfilters.json 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/services/settings/dumps/blocklists/addons-bloomfilters.json 2022-05-20 05:58:33.000000000 +0000 @@ -3,6 +3,142 @@ { "stash": { "blocked": [ + "{06c64973-abc7-4bfe-a569-3ce2ca77d3be}:5.1.0", + "{86a2b09b-f6b0-4eec-a0c3-2ea5d0414c46}:1.0.2", + "{567f2fd5-3d33-4ee6-b1d4-b6c4dfaec43a}:1.0" + ], + "unblocked": [] + }, + "schema": 1651084687010, + "key_format": "{guid}:{version}", + "stash_time": 1651170906940, + "id": "131b9bf7-9abf-4aa3-9a8a-08ec8c21e489", + "last_modified": 1651171060377 + }, + { + "stash": { + "blocked": [ + "{7b68c521-bec3-431b-9d81-7a09b44aafba}:1.0" + ], + "unblocked": [] + }, + "schema": 1651063092490, + "key_format": "{guid}:{version}", + "stash_time": 1651084508537, + "id": "71c4745d-1483-4c22-9bd8-ae4a540097ad", + "last_modified": 1651084686962 + }, + { + "stash": { + "blocked": [ + "{af220130-5e64-4c9e-b69b-65d40c9b1a3f}:1.196.149" + ], + "unblocked": [] + }, + "schema": 1651061984554, + "key_format": "{guid}:{version}", + "stash_time": 1651062908362, + "id": "339acd53-d8c3-4094-8ed9-c5a104f4840e", + "last_modified": 1651063092441 + }, + { + "stash": { + "blocked": [ + "{d8246cf5-fdcf-470b-9599-9daa31c7376c}:1.0", + "{f9508171-fff5-4fee-94d2-d4bf00adb7e2}:1.0" + ], + "unblocked": [] + }, + "schema": 1649939903702, + "key_format": "{guid}:{version}", + "stash_time": 1650371708670, + "id": "982c0a03-ffd9-4e68-92eb-db63664bb880", + "last_modified": 1650371906091 + }, + { + "stash": { + "blocked": [ + "{dd70ce08-6a8a-4899-b2bd-17c2ce37805e}:0.0.2" + ], + "unblocked": [] + }, + "schema": 1649860691900, + "key_format": "{guid}:{version}", + "stash_time": 1649939709345, + "id": "042538b6-1e10-495f-a086-d0c9f42ce759", + "last_modified": 1649939903644 + }, + { + "stash": { + "blocked": [ + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.8.2", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.8.1", + "{c4c9b8f3-3c9b-41c2-827e-569e556fcb8a}:1.0.0.7", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.9.0", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.8.3d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.2d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.1d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.9.0d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.3d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.7f", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.5d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.0d", + "{c4c9b8f3-3c9b-41c2-827e-569e556fcb8a}:1.0.0.0", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.8.0", + "{c4c9b8f3-3c9b-41c2-827e-569e556fcb8a}:1.0.0.5", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.4d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.9.1", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.6d", + "{d619d6d4-d562-4ec3-a62b-9246e1553b42}:1.7d" + ], + "unblocked": [] + }, + "schema": 1649691602593, + "key_format": "{guid}:{version}", + "stash_time": 1649788507913, + "id": "9f608cfe-480d-4ec7-b692-0b26cb3ac3c3", + "last_modified": 1649788697027 + }, + { + "stash": { + "blocked": [ + "webpki@lacunasoftware.com:2.14.2", + "webpki@lacunasoftware.com:2.9.1", + "webpki@lacunasoftware.com:2.14.1", + "webpki@lacunasoftware.com:2.11.9", + "webpki@lacunasoftware.com:2.7.1", + "webpki@lacunasoftware.com:2.15.0", + "webpki@lacunasoftware.com:2.7.2", + "webpki@lacunasoftware.com:2.13.0", + "webpki@lacunasoftware.com:2.8.0", + "webpki@lacunasoftware.com:2.10.1", + "webpki@lacunasoftware.com:2.7.5", + "webpki@lacunasoftware.com:2.13.6", + "webpki@lacunasoftware.com:2.7.0", + "webpki@lacunasoftware.com:2.12.1", + "webpki@lacunasoftware.com:2.7.4", + "webpki@lacunasoftware.com:2.11.10", + "webpki@lacunasoftware.com:2.13.4", + "webpki@lacunasoftware.com:2.13.5", + "webpki@lacunasoftware.com:2.11.7", + "webpki@lacunasoftware.com:2.13.2", + "webpki@lacunasoftware.com:2.11.8", + "webpki@lacunasoftware.com:2.7.3", + "webpki@lacunasoftware.com:2.15.1", + "webpki@lacunasoftware.com:2.13.3", + "webpki@lacunasoftware.com:2.13.1" + ], + "unblocked": [] + }, + "schema": 1648744604332, + "key_format": "{guid}:{version}", + "stash_time": 1649248507608, + "id": "d68f1e69-715e-417a-8c74-25a70d6299d9", + "last_modified": 1649248709738 + }, + { + "stash": { + "blocked": [ "sp@FindingFormsPro:2.0.0", "sp@SpeedCheckerPlus:3.0.0", "sp@FindingFormsPro:1.0.7", diff -Nru thunderbird-91.8.1+build1/services/settings/dumps/main/password-rules.json thunderbird-91.9.1+build1/services/settings/dumps/main/password-rules.json --- thunderbird-91.8.1+build1/services/settings/dumps/main/password-rules.json 2022-04-15 07:41:08.000000000 +0000 +++ thunderbird-91.9.1+build1/services/settings/dumps/main/password-rules.json 2022-05-20 05:58:33.000000000 +0000 @@ -1,6 +1,300 @@ { "data": [ { + "Domain": "ae.com", + "password-rules": "minlength: 8; maxlength: 25; required: lower; required: upper; required: digit;", + "id": "1b76634d-c4dc-467f-8b1d-458c0753faf1", + "last_modified": 1650898337595 + }, + { + "Domain": "app.digio.in", + "password-rules": "minlength: 8; maxlength: 15;", + "id": "9199eb80-2ea2-4efc-974a-13646cd9e2bf", + "last_modified": 1650898337590 + }, + { + "Domain": "app.parkmobile.io", + "password-rules": "minlength: 8; maxlength: 25; required: lower; required: upper; required: digit; required: [!@#$%^&];", + "id": "267bc941-86ee-4558-9d72-3f875ff0ac95", + "last_modified": 1650898337584 + }, + { + "Domain": "areariservata.bancaetica.it", + "password-rules": "minlength: 8; maxlength: 10; required: lower; required: upper; required: digit; required: [!#&*+/=@_];", + "id": "1316e054-4002-41b3-bb25-c2af275f1b48", + "last_modified": 1650898337579 + }, + { + "Domain": "bcassessment.ca", + "password-rules": "minlength: 8; maxlength: 14;", + "id": "2b72ecba-f8e4-4cc4-9c2c-01ad7b8eff60", + "last_modified": 1650898337573 + }, + { + "Domain": "belkin.com", + "password-rules": "minlength: 8; required: lower, upper; required: digit; required: [$!@~_,%&];", + "id": "89e880c3-2742-4802-bd33-ea506d3b7020", + "last_modified": 1650898337568 + }, + { + "Domain": "bilibili.com", + "password-rules": "maxlength: 16;", + "id": "3867a12f-b3e8-4343-94eb-6ddefba5b1a5", + "last_modified": 1650898337562 + }, + { + "Domain": "billerweb.com", + "password-rules": "minlength: 8; max-consecutive: 2; required: digit; required: upper,lower;", + "id": "6d89d12e-2ea9-4077-9dbc-c2566ccca370", + "last_modified": 1650898337557 + }, + { + "Domain": "bochk.com", + "password-rules": "minlength: 8; maxlength: 12; max-consecutive: 3; required: lower; required: upper; required: digit; allowed: [#$%&()*+,.:;<=>?@_];", + "id": "2a133fcd-fa66-473c-a09b-07014d0d3ccd", + "last_modified": 1650898337551 + }, + { + "Domain": "collectivehealth.com", + "password-rules": "minlength: 8; required: lower; required: upper; required: digit;", + "id": "b86c63d8-60e4-4c8a-965d-56af269f6b76", + "last_modified": 1650898337546 + }, + { + "Domain": "dan.org", + "password-rules": "minlength: 8; maxlength: 25; required: lower; required: upper; required: digit; required: [!@$%^&*];", + "id": "b7ca591b-c242-4520-a849-ccd74a90076a", + "last_modified": 1650898337540 + }, + { + "Domain": "dbs.com.hk", + "password-rules": "minlength: 8; maxlength: 30; required: lower; required: upper; required: digit;", + "id": "fe2f51c2-8ccb-4ee4-97cb-73288337f6ab", + "last_modified": 1650898337535 + }, + { + "Domain": "equifax.com", + "password-rules": "minlength: 8; maxlength: 20; required: lower; required: upper; required: digit; required: [!$*+@];", + "id": "ce20ebcc-b423-45f5-9643-f4651c55a133", + "last_modified": 1650898337530 + }, + { + "Domain": "fidelity.com", + "password-rules": "minlength: 6; maxlength: 20; required: lower; allowed: upper,digit,[!$%'()+,./:;=?@^_|~];", + "id": "51bcb63b-7da1-4dd5-a024-e395d32e3c36", + "last_modified": 1650898337524 + }, + { + "Domain": "flysas.com", + "password-rules": "minlength: 8; maxlength: 14; required: lower; required: upper; required: digit; required: [-~!@#$%^&_+=`|(){}[:\"'<>,.?]];", + "id": "c7b74d79-d787-4575-bfb4-92b531f422d9", + "last_modified": 1650898337519 + }, + { + "Domain": "gamestop.com", + "password-rules": "minlength: 8; maxlength: 225; required: lower; required: upper; required: digit; required: [!@#$%];", + "id": "ef9def1f-a244-4cc1-8937-f42865ce62c7", + "last_modified": 1650898337513 + }, + { + "Domain": "hangseng.com", + "password-rules": "minlength: 8; maxlength: 30; required: lower; required: upper; required: digit;", + "id": "bb13b29e-8fa0-4d68-b400-e546834a30a7", + "last_modified": 1650898337508 + }, + { + "Domain": "hkbea.com", + "password-rules": "minlength: 8; maxlength: 12; required: lower; required: upper; required: digit;", + "id": "a771074d-6e15-42aa-811a-731930d173b5", + "last_modified": 1650898337502 + }, + { + "Domain": "hkexpress.com", + "password-rules": "minlength: 8; maxlength: 15; required: lower; required: upper; required: digit; required: special;", + "id": "94abbd2d-2201-43f1-b3c8-33900f207b4c", + "last_modified": 1650898337497 + }, + { + "Domain": "hsbc.com.hk", + "password-rules": "minlength: 6; maxlength: 30; required: lower; required: upper; required: digit; allowed: ['.@_];", + "id": "b657a5f0-268c-4acd-85fe-5085bcdb380c", + "last_modified": 1650898337492 + }, + { + "Domain": "kfc.ca", + "password-rules": "minlength: 6; maxlength: 15; required: lower; required: upper; required: digit; required: [!@#$%&?*];", + "id": "ca2e08a6-cc00-47a4-8517-737552dfedab", + "last_modified": 1650898337486 + }, + { + "Domain": "launtel.net.au", + "password-rules": "minlength: 8; required: digit; required: digit; allowed: lower, upper;", + "id": "eede7e13-6f0b-408a-bf1d-292130631834", + "last_modified": 1650898337480 + }, + { + "Domain": "lg.com", + "password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; allowed: [-!#$%&'()*+,.:;=?@[^_{|}~]];", + "id": "fb2b3324-dd2d-4518-a309-af50f685689a", + "last_modified": 1650898337475 + }, + { + "Domain": "lloydsbank.co.uk", + "password-rules": "minlength: 8; maxlength: 15; required: lower; required: digit; allowed: upper;", + "id": "56265f6f-6348-4900-8abf-07c4ab2e1c72", + "last_modified": 1650898337470 + }, + { + "Domain": "loyalty.accor.com", + "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [!#$%&=@];", + "id": "403e9c7d-1dbc-44f4-a825-81aa4127afca", + "last_modified": 1650898337464 + }, + { + "Domain": "lsacsso.b2clogin.com", + "password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit, [-!#$%&*?@^_];", + "id": "369eb957-3b3f-4377-ac76-52026dfffbfa", + "last_modified": 1650898337458 + }, + { + "Domain": "medicare.gov", + "password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; required: [@!$%^*()];", + "id": "27a56617-f363-4455-a60c-8582af732012", + "last_modified": 1650898337453 + }, + { + "Domain": "mpv.tickets.com", + "password-rules": "minlength: 8; maxlength: 15; required: lower; required: upper; required: digit;", + "id": "9deab323-bc0f-4433-bbc3-e4d26dbfa7e0", + "last_modified": 1650898337448 + }, + { + "Domain": "my.konami.net", + "password-rules": "minlength: 8; maxlength: 32; required: lower; required: upper; required: digit;", + "id": "6a62b70b-6412-4ff4-945a-168dfc38b634", + "last_modified": 1650898337443 + }, + { + "Domain": "order.wendys.com", + "password-rules": "minlength: 6; maxlength: 20; required: lower; required: upper; required: digit; allowed: [!#$%&()*+/=?^_{}];", + "id": "57882459-1180-4faf-a8dd-c7475bcfeb0f", + "last_modified": 1650898337437 + }, + { + "Domain": "preferredhotels.com", + "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [!#$%&()*+@^_];", + "id": "4290b8b6-dd7c-431b-a4cb-36e661f72423", + "last_modified": 1650898337432 + }, + { + "Domain": "premier.ticketek.com.au", + "password-rules": "minlength: 6; maxlength: 16;", + "id": "26b1c942-2d06-496b-984b-65044ad2f1ab", + "last_modified": 1650898337427 + }, + { + "Domain": "premierinn.com", + "password-rules": "minlength: 8; required: upper; required: digit; allowed: lower;", + "id": "f6663626-8861-4bfc-a704-5ff1e23e9e22", + "last_modified": 1650898337421 + }, + { + "Domain": "prestocard.ca", + "password-rules": "minlength: 8; required: lower; required: upper; required: digit,[!\"#$%&'()*+,<>?@];", + "id": "ed580dc6-16af-4ec5-8ae2-b40fe99f0260", + "last_modified": 1650898337416 + }, + { + "Domain": "questdiagnostics.com", + "password-rules": "minlength: 8; maxlength: 30; required: upper, lower; required: digit, [!#$%&()*+<>?@^_~];", + "id": "a331ccb9-a2b8-44dd-bc35-0878eb51b4fe", + "last_modified": 1650898337411 + }, + { + "Domain": "renaud-bray.com", + "password-rules": "minlength: 8; maxlength: 38; allowed: upper,lower,digit;", + "id": "210a8aea-1089-487d-bcaa-3c937374f650", + "last_modified": 1650898337405 + }, + { + "Domain": "rogers.com", + "password-rules": "minlength: 8; required: lower, upper; required: digit; required: [!@#$];", + "id": "a13b20d6-0b68-4a05-866a-e8a14adee208", + "last_modified": 1650898337400 + }, + { + "Domain": "ruc.dk", + "password-rules": "minlength: 6; maxlength: 8; required: lower, upper; required: [-!#%&(){}*+;%/<=>?_];", + "id": "85d4c3e2-7f8c-480d-a20e-c55aee12a2e7", + "last_modified": 1650898337394 + }, + { + "Domain": "runescape.com", + "password-rules": "minlength: 5; maxlength: 20; required: lower; required: upper; required: digit;", + "id": "e14ecd5a-951f-4c27-bf45-0ee3fb830032", + "last_modified": 1650898337389 + }, + { + "Domain": "salslimo.com", + "password-rules": "minlength: 8; maxlength: 50; required: upper; required: lower; required: digit; required: [!@#$&*];", + "id": "afa90771-c472-48cc-96d3-21c770bb958c", + "last_modified": 1650898337384 + }, + { + "Domain": "secure.snnow.ca", + "password-rules": "minlength: 7; maxlength: 16; required: digit; allowed: lower, upper;", + "id": "f6a3e835-190e-4043-a070-943d821f708e", + "last_modified": 1650898337378 + }, + { + "Domain": "tix.soundrink.com", + "password-rules": "minlength: 6; maxlength: 16;", + "id": "0cb09a67-566e-492c-a4d7-af473e964472", + "last_modified": 1650898337373 + }, + { + "Domain": "training.confluent.io", + "password-rules": "minlength: 6; maxlength: 16; required: lower; required: upper; required: digit; allowed: [!#$%*@^_~];", + "id": "d00c2ee9-6f05-495c-9833-bae526019ddc", + "last_modified": 1650898337368 + }, + { + "Domain": "usps.com", + "password-rules": "minlength: 8; maxlength: 50; max-consecutive: 2; required: lower; required: upper; required: digit; allowed: [-!\"#&'()+,./?@];", + "id": "caacf36d-df98-43ab-8d5c-d7d40d79d696", + "last_modified": 1650898337362 + }, + { + "Domain": "visabenefits-auth.axa-assistance.us", + "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [!\"#$%&()*,.:<>?@^{|}];", + "id": "3afe232d-ff3d-4e3d-b6bd-da947dac7884", + "last_modified": 1650898337357 + }, + { + "Domain": "wegmans.com", + "password-rules": "minlength: 8; required: digit; required: upper,lower; required: [!#$%&*+=?@^];", + "id": "d7036bd9-5301-43a1-b427-25a876ff4c07", + "last_modified": 1650898337352 + }, + { + "Domain": "xvoucher.com", + "password-rules": "minlength: 11; required: upper; required: digit; required: [!@#$%&_];", + "id": "85cc3546-8a5c-4400-bd01-c0386897a442", + "last_modified": 1650898337346 + }, + { + "Domain": "zara.com", + "password-rules": "minlength: 8; required: lower; required: upper; required: digit;", + "id": "4496846f-b282-4965-97f8-97c2b814881a", + "last_modified": 1650898337341 + }, + { + "Domain": "americanexpress.com", + "password-rules": "minlength: 8; maxlength: 20; max-consecutive: 4; required: lower, upper; required: digit; allowed: [%&_?#=];", + "id": "986919ff-d801-45f6-ab75-af40e0c9e0ad", + "last_modified": 1650898337335 + }, + { "Domain": "163.com", "password-rules": "minlength: 6; maxlength: 16;", "id": "df352506-8729-494d-bfad-525d90380416", @@ -61,12 +355,6 @@ "last_modified": 1624479577522 }, { - "Domain": "americanexpress.com", - "password-rules": "minlength: 8; maxlength: 20; max-consecutive: 4; required: lower, upper; required: digit; allowed: [-%&_?#=];", - "id": "986919ff-d801-45f6-ab75-af40e0c9e0ad", - "last_modified": 1624479577517 - }, - { "Domain": "anatel.gov.br", "password-rules": "minlength: 6; maxlength: 15; allowed: lower, upper, digit;", "id": "d3c8fbd7-3b79-4132-93f1-7d0d97f99a3e", diff -Nru thunderbird-91.8.1+build1/services/settings/dumps/main/websites-with-shared-credential-backends.json thunderbird-91.9.1+build1/services/settings/dumps/main/websites-with-shared-credential-backends.json --- thunderbird-91.8.1+build1/services/settings/dumps/main/websites-with-shared-credential-backends.json 2022-04-15 07:41:07.000000000 +0000 +++ thunderbird-91.9.1+build1/services/settings/dumps/main/websites-with-shared-credential-backends.json 2022-05-20 05:47:22.000000000 +0000 @@ -3,16 +3,23 @@ { "relatedRealms": [ [ + "3docean.net", + "audiojungle.net", + "codecanyon.net", + "envato.com", + "graphicriver.net", + "photodune.net", + "placeit.net", + "themeforest.net", + "tutsplus.com", + "videohive.net" + ], + [ "aa.com", "americanairlines.com", "americanairlines.jp" ], [ - "airfrance.com", - "klm.com", - "flyingblue.com" - ], - [ "aetna.com", "banneraetna.myplanportal.com" ], @@ -72,6 +79,33 @@ "airbnb.co.ve" ], [ + "airfrance.com", + "klm.com", + "flyingblue.com" + ], + [ + "airnewzealand.co.nz", + "airnewzealand.com", + "airnewzealand.com.au" + ], + [ + "albertsons.com", + "acmemarkets.com", + "carrsqc.com", + "jewelosco.com", + "pavilions.com", + "randalls.com", + "safeway.com", + "shaws.com", + "starmarket.com", + "tomthumb.com", + "vons.com" + ], + [ + "alibaba.com", + "aliexpress.com" + ], + [ "alltrails.com", "alltrails.io" ], @@ -93,7 +127,8 @@ "amazon.sa", "amazon.sg", "amazon.se", - "amazon.pl" + "amazon.pl", + "ring.com" ], [ "amcrestcloud.com", @@ -118,14 +153,26 @@ "icloud.com" ], [ + "atlassian.com", + "trello.com" + ], + [ "att.com", "att.net" ], [ + "audi.com", + "audiusa.com" + ], + [ "bahn.de", "bahn.com" ], [ + "battle.net", + "blizzard.com" + ], + [ "beachbodyondemand.com", "teambeachbody.com" ], @@ -148,14 +195,22 @@ "whistlerblackcomb.com" ], [ - "battle.net", - "blizzard.com" + "boingo.com", + "boingohotspot.com" + ], + [ + "bol.com", + "kobo.com" ], [ "boudinbakery.com", "boudincatering.com" ], [ + "braze.com", + "braze.eu" + ], + [ "capitalone.com", "capitalone360.com" ], @@ -188,8 +243,12 @@ "dinersclubus.com" ], [ - "discord.com", - "discordapp.com" + "discordapp.com", + "discord.com" + ], + [ + "discordmerch.com", + "discord.store" ], [ "dish.com", @@ -205,6 +264,15 @@ "getdropbox.com" ], [ + "e.leclerc", + "auto.leclerc", + "location.leclerc", + "chezmoi.lelcerc", + "traiteur.lelcerc", + "mesrecettes.lelcerc", + "leclercdrive.fr" + ], + [ "eater.com", "polygon.com", "sbnation.com", @@ -235,6 +303,10 @@ "ebay.vn" ], [ + "eurosport.no", + "eurosportplayer.com" + ], + [ "eventbrite.at", "eventbrite.be", "eventbrite.ca", @@ -267,6 +339,14 @@ "fandango.com" ], [ + "fidelity.com", + "fidelityinvestments.com" + ], + [ + "flyblade.com", + "blade.com" + ], + [ "fnac.com", "fnacspectacles.com" ], @@ -288,6 +368,20 @@ "gogoinflight.com" ], [ + "hbo.com", + "hbomax.com", + "hbonow.com" + ], + [ + "igen.fr", + "watchgeneration.fr", + "macg.co" + ], + [ + "ikonpass.com", + "skilynx.com" + ], + [ "intuit.com", "mint.com" ], @@ -320,6 +414,12 @@ "lookmark.link" ], [ + "lrz.de", + "mwn.de", + "mytum.de", + "tum.de" + ], + [ "lufthansa.com", "miles-and-more.com" ], @@ -336,7 +436,8 @@ "microsoftonline.com", "office.com", "skype.com", - "onenote.com" + "onenote.com", + "hotmail.com" ], [ "minecraft.net", @@ -347,6 +448,20 @@ "tccna.honeywell.com" ], [ + "myuhc.com", + "uhc.com", + "optum.com", + "optumrx.com" + ], + [ + "neatorama.com", + "neatoshop.com" + ], + [ + "newyorker.com", + "vanityfair.com" + ], + [ "nintendolife.com", "purexbox.com", "pushsquare.com" @@ -358,12 +473,17 @@ "nsn.com" ], [ - "norwegianreward.com", - "norwegian.com" + "nordvpn.com", + "nordpass.com", + "nordaccount.com" ], [ - "optumrx.com", - "optum.com" + "norwegian.com", + "norwegianreward.com" + ], + [ + "olo.com", + "olo.express" ], [ "pinterest.com", @@ -404,10 +524,26 @@ "protonvpn.com" ], [ + "qnap.com", + "myqnapcloud.com" + ], + [ + "questdiagnostics.com", + "care360.com" + ], + [ + "rocketaccount.com", + "rocketmortgage.com" + ], + [ "scholarshare529.com", "secureaccountview.com" ], [ + "scoutingevent.com", + "campreservation.com" + ], + [ "scribbr.com", "scribbr.de", "scribbr.dk", @@ -431,7 +567,9 @@ [ "shopdisney.com", "go.com", - "disneyplus.com" + "disneyplus.com", + "espn.com", + "disneystore.com" ], [ "slcl.overdrive.com", @@ -485,10 +623,6 @@ "tplinkcloud.com" ], [ - "uhc.com", - "myuhc.com" - ], - [ "umsystem.edu", "mst.edu", "umkc.edu", @@ -500,6 +634,11 @@ "unitedwifi.com" ], [ + "uspowerboating.com", + "ussailing.org" + ], + [ + "verizon.com", "verizonwireless.com", "vzw.com" ], @@ -512,14 +651,14 @@ "birchlane.com" ], [ - "wiimmfi.de", - "wii-homebrew.com" - ], - [ "wellsfargo.com", "wellsfargoadvisors.com" ], [ + "wiimmfi.de", + "wii-homebrew.com" + ], + [ "wikipedia.org", "mediawiki.org", "wikibooks.org", @@ -558,10 +697,22 @@ [ "wsj.com", "dowjones.com" + ], + [ + "www.vistaprint.ca", + "account.vistaprint.com" + ], + [ + "yahoo.com", + "flickr.com" + ], + [ + "zixmail.net", + "zixmessagecenter.com" ] ], "id": "8c3d4151-8e68-4bb3-a3fd-babf4aba2cdc", - "last_modified": 1624479523629 + "last_modified": 1650898092205 } ] } diff -Nru thunderbird-91.8.1+build1/services/settings/dumps/security-state/intermediates.json thunderbird-91.9.1+build1/services/settings/dumps/security-state/intermediates.json --- thunderbird-91.8.1+build1/services/settings/dumps/security-state/intermediates.json 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/services/settings/dumps/security-state/intermediates.json 2022-05-20 05:58:33.000000000 +0000 @@ -1,7 +1,2167 @@ { "data": [ { - "schema": 1648176526823, + "schema": 1651352246545, + "derHash": "lzpBJ2/9AeAnoqrUnjTDeEbT6Xb/amILZxLjODIEGqY=", + "subject": "CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O=GoDaddy.com\\, Inc.,L=Scottsdale,ST=Arizona,C=US", + "subjectDN": "MIG0MQswCQYDVQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5jb20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcy", + "whitelist": false, + "attachment": { + "hash": "a111efc20329e87b541cfc3e7f526fc54bb24624fddf210f4347b9fadfb1ab6b", + "size": 1727, + "filename": "8Rw90Ej3Ttt8RRkrg-WYDS9n7IS03bk5bjP_UXPtaY8=.pem", + "location": "security-state-staging/intermediates/a2a04dfe-6201-4d0a-b8cf-80d2975bfb51.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "8Rw90Ej3Ttt8RRkrg+WYDS9n7IS03bk5bjP/UXPtaY8=", + "crlite_enrolled": true, + "id": "549c92e2-3738-4c8c-ae37-407e4e6158ce", + "last_modified": 1651373832545 + }, + { + "schema": 1651244234473, + "derHash": "bVWNIt3W7UyhPucS/UKvIpTyycbXATwyRxD/uNjzb6k=", + "subject": "CN=Quantum Secure Site OV TLS RSA R1,O=Quantum CA Limited,C=GB", + "subjectDN": "MFYxCzAJBgNVBAYTAkdCMRswGQYDVQQKDBJRdWFudHVtIENBIExpbWl0ZWQxKjAoBgNVBAMMIVF1YW50dW0gU2VjdXJlIFNpdGUgT1YgVExTIFJTQSBSMQ==", + "whitelist": false, + "attachment": { + "hash": "4b736d8bf2429327ac547ed2eb1ddf79a0caa2ace478f955e02127eec63d403b", + "size": 2389, + "filename": "hLf9YhON-ykf9-ab3rrdyhkLe63PWjIvsvghrHEnILA=.pem", + "location": "security-state-staging/intermediates/0f82d056-d837-49b4-9cdd-d5d76a9b1a35.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "hLf9YhON+ykf9+ab3rrdyhkLe63PWjIvsvghrHEnILA=", + "crlite_enrolled": false, + "id": "1fba5287-1ee9-49bb-8756-3e120f3f4896", + "last_modified": 1651352246094 + }, + { + "schema": 1651243731947, + "derHash": "UscwCUvRr5jslRBbbVjwm78ICoZh/vA8Xn4xwccao54=", + "subject": "CN=TrustAsia ECC DV TLS CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgRUNDIERWIFRMUyBDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "478efe9c3c15d76a274b7b94340eb3b4a5aa70c20a0d5cbaac979c3993097d60", + "size": 1256, + "filename": "8U_3Q2XOjlBspygbt3HFvzxWcbklTeiwjAtB025Rr1I=.pem", + "location": "security-state-staging/intermediates/e18b71a8-f92d-4225-816e-66e332620f39.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "8U/3Q2XOjlBspygbt3HFvzxWcbklTeiwjAtB025Rr1I=", + "crlite_enrolled": false, + "id": "1228f9f3-de33-42cc-9741-c4a0535147ed", + "last_modified": 1651244234008 + }, + { + "schema": 1651243731025, + "derHash": "RVgDgOS8DZcoyfMJite2CrJyEtD/FCAgxSMIkauEcb4=", + "subject": "CN=DNSPod RSA EV,O=DNSPod\\, Inc.,C=CN", + "subjectDN": "MDwxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxETlNQb2QsIEluYy4xFjAUBgNVBAMTDUROU1BvZCBSU0EgRVY=", + "whitelist": false, + "attachment": { + "hash": "2fbf8fa0a58d0aee7cbc48f7c55c2f85f115b12aadcfb15a24a9f64c1c6805f5", + "size": 2219, + "filename": "7tlcAe1zc6UEu0ycBSzrKSHgelMORRz0zuoxf5grv3A=.pem", + "location": "security-state-staging/intermediates/61082769-e7e7-4c7a-a611-2dfbde36eeae.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "7tlcAe1zc6UEu0ycBSzrKSHgelMORRz0zuoxf5grv3A=", + "crlite_enrolled": false, + "id": "308cdddb-bce6-4c09-93bd-f689f76af0fe", + "last_modified": 1651244234001 + }, + { + "schema": 1651243728381, + "derHash": "Ju073hkw2MU87NGz1QsNe/0vRDnJ7cjXCHYe1v5doKs=", + "subject": "CN=DNSPod RSA DV,O=DNSPod\\, Inc.,C=CN", + "subjectDN": "MDwxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxETlNQb2QsIEluYy4xFjAUBgNVBAMTDUROU1BvZCBSU0EgRFY=", + "whitelist": false, + "attachment": { + "hash": "7642f6824be11258ea3f0461090541db4e35b54673ba2828a4a659aeb6a708c4", + "size": 2231, + "filename": "v6XUDOez9KzX6ugG6Y6NOWiaa_DRl8DzRlXbI58Od9k=.pem", + "location": "security-state-staging/intermediates/5f0a95c5-9d8e-4c78-9d1f-196ef8cc6902.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "v6XUDOez9KzX6ugG6Y6NOWiaa/DRl8DzRlXbI58Od9k=", + "crlite_enrolled": false, + "id": "6ffb2ec9-df2d-4929-b852-b0a2baf9dbfb", + "last_modified": 1651244233993 + }, + { + "schema": 1651243730119, + "derHash": "UmbXFlEZYo+VWaFWUGDiz78hNU4ctyrGbHVbnunxkC0=", + "subject": "CN=DNSPod RSA OV,O=DNSPod\\, Inc.,C=CN", + "subjectDN": "MDwxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxETlNQb2QsIEluYy4xFjAUBgNVBAMTDUROU1BvZCBSU0EgT1Y=", + "whitelist": false, + "attachment": { + "hash": "94a4db0a847ed1705af8b348555d54f2571d4dc67b870acf3622e4db1a41a1e5", + "size": 2231, + "filename": "xTgRLpThRByRVHJot49FqWpbMVYiv8384ejqkJOJbFc=.pem", + "location": "security-state-staging/intermediates/fefa5d10-d98f-4287-9506-4f85b5b19311.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "xTgRLpThRByRVHJot49FqWpbMVYiv8384ejqkJOJbFc=", + "crlite_enrolled": false, + "id": "5e15deb4-1340-4b98-b021-7c82087df0ad", + "last_modified": 1651244233986 + }, + { + "schema": 1651243727502, + "derHash": "DlsAchtjwEpX4EE1pKkELElltPUMUF/ibTTg5xhV7kc=", + "subject": "CN=TrustAsia RSA DV TLS CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRMUyBDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "ba644b4e970b564e35c343bd85c1f55b3a02c97618ea03227095daab7a78cf6c", + "size": 2268, + "filename": "B_N1Dbk37d8gadFssO90DgDkAmm6ZJJMG8xYPOwEHLM=.pem", + "location": "security-state-staging/intermediates/1e17e390-a9ef-44c1-a97e-33f792ea06ef.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "B/N1Dbk37d8gadFssO90DgDkAmm6ZJJMG8xYPOwEHLM=", + "crlite_enrolled": false, + "id": "754fd284-0877-48e4-8334-dfea0d1ba2bf", + "last_modified": 1651244233979 + }, + { + "schema": 1651243729229, + "derHash": "u69UbyjDANkG+qdhQV2XEpsddy5Jixfq1n46rUQ54/0=", + "subject": "CN=DNSPod ECC OV,O=DNSPod\\, Inc.,C=CN", + "subjectDN": "MDwxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxETlNQb2QsIEluYy4xFjAUBgNVBAMTDUROU1BvZCBFQ0MgT1Y=", + "whitelist": false, + "attachment": { + "hash": "f51de2adcd277d82212f7ba2b81c3469c008db61ce0f650977b8fb5d867e8855", + "size": 1215, + "filename": "7ds1KNk3gHiDZE-zHMhKH0wvOfldhHNVm9yiuC-lHLA=.pem", + "location": "security-state-staging/intermediates/d4cbe4a7-1afd-48a6-b8fe-14515748caf4.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "7ds1KNk3gHiDZE+zHMhKH0wvOfldhHNVm9yiuC+lHLA=", + "crlite_enrolled": false, + "id": "123a831f-1176-4d05-92b0-f531ca3e2ebe", + "last_modified": 1651244233972 + }, + { + "schema": 1651243725752, + "derHash": "FlqkMjFqqCbL6x56E+XpbrknevAQVYCnzuUhDwQl4FY=", + "subject": "CN=DNSPod ECC DV,O=DNSPod\\, Inc.,C=CN", + "subjectDN": "MDwxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxETlNQb2QsIEluYy4xFjAUBgNVBAMTDUROU1BvZCBFQ0MgRFY=", + "whitelist": false, + "attachment": { + "hash": "917484046b08ddb16e5f4891f59d516b8db7d3d30f21cbf4cde560fd7c41912e", + "size": 1219, + "filename": "27O4Zhd_18oAKoYHojx2N40ZdxUC7hSU_D7DEzfjNJA=.pem", + "location": "security-state-staging/intermediates/e50dec77-38ef-4168-9577-b0585e2309c2.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "27O4Zhd/18oAKoYHojx2N40ZdxUC7hSU/D7DEzfjNJA=", + "crlite_enrolled": false, + "id": "b909a7ce-f134-4f57-b1b8-9e3782185240", + "last_modified": 1651244233965 + }, + { + "schema": 1651243726636, + "derHash": "Gh1Zs8/bhCOm4md+8V2fw9Dancz6Y39g6ubpt8iHyP0=", + "subject": "CN=DNSPod ECC EV,O=DNSPod\\, Inc.,C=CN", + "subjectDN": "MDwxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxETlNQb2QsIEluYy4xFjAUBgNVBAMTDUROU1BvZCBFQ0MgRVY=", + "whitelist": false, + "attachment": { + "hash": "2692ec914eee66f4e17bda0de59e931b3877a19e3726280a0f501ee2295374bd", + "size": 1207, + "filename": "O0m5yObV4fYLRVw9HYDQAt0LFs94XlBp0zKzD8rjXHQ=.pem", + "location": "security-state-staging/intermediates/56484c21-741c-45b4-b5f5-fb671af7ce51.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "O0m5yObV4fYLRVw9HYDQAt0LFs94XlBp0zKzD8rjXHQ=", + "crlite_enrolled": false, + "id": "90b19d80-2f05-483d-8d8c-cbd9e378f8f6", + "last_modified": 1651244233958 + }, + { + "schema": 1651243724871, + "derHash": "3p0HVlZ2OucIY3PrkBJuwkDk4ICJthw8mhsCXLb0EcM=", + "subject": "CN=TrustAsia RSA EV TLS CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIEVWIFRMUyBDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "03503c28535cc81c9a010e5b081c743ffedf5cce0b9284e04ed6f51593305461", + "size": 2259, + "filename": "M-84feL1t2OKDBjPZhzIU3INxh8ASlHmFLa9vdUs-us=.pem", + "location": "security-state-staging/intermediates/02401f12-2384-4285-955f-52310dc955c7.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "M+84feL1t2OKDBjPZhzIU3INxh8ASlHmFLa9vdUs+us=", + "crlite_enrolled": false, + "id": "0ef219bc-fbe7-42d4-9137-8110f437ca67", + "last_modified": 1651244233951 + }, + { + "schema": 1651243723987, + "derHash": "p8CB4fjWyAxPPa5X3vlNEastamQ5+Yd14BACKpDW0eY=", + "subject": "CN=TrustAsia ECC EV TLS CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgRUNDIEVWIFRMUyBDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "99502d77687be7445ef67afc31ea03c048c1846f96cd5dd63db403a76482e5ec", + "size": 1244, + "filename": "rV9R8mlMRJRagxoykbSDDNA73L2G7T4llh3vYjKsx60=.pem", + "location": "security-state-staging/intermediates/3a640792-8333-4d08-aac9-9484e165ae78.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "rV9R8mlMRJRagxoykbSDDNA73L2G7T4llh3vYjKsx60=", + "crlite_enrolled": false, + "id": "4a6491aa-4966-43ff-a10a-46acbc77c021", + "last_modified": 1651244233943 + }, + { + "schema": 1651243722147, + "derHash": "OXgI2rB2Wy0iSDH800v+VqQJPxTEinAHJ7sxp61CDLQ=", + "subject": "CN=TrustAsia ECC OV TLS CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgRUNDIE9WIFRMUyBDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "0628e7fb6abad65d30b851eea91243cff7f96f162f6e9e99a8f2e14319f87de0", + "size": 1252, + "filename": "kVjrK6V1JscLjPoduH7ECVQLKek-gB3MuQ9evhN9eNI=.pem", + "location": "security-state-staging/intermediates/851b1982-bad1-48c9-8ad3-2ebdf8db6940.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "kVjrK6V1JscLjPoduH7ECVQLKek+gB3MuQ9evhN9eNI=", + "crlite_enrolled": false, + "id": "12dc1ddf-21cf-48f3-a951-66c500745442", + "last_modified": 1651244233936 + }, + { + "schema": 1651243723059, + "derHash": "5Iksmktuk5Pr3+3LwvoHt8a0gKKRXGb0cJnm8v/pocU=", + "subject": "CN=TrustAsia RSA OV TLS CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIE9WIFRMUyBDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "cb6dac2259c0487b1043568b04bbf032ce9be308e3815c4480a31d3c435b5f70", + "size": 2268, + "filename": "AjHoEUjfOt4P9CmQ3Tl9YEcwEf694_AE-BWBxOtPfxE=.pem", + "location": "security-state-staging/intermediates/29f2fb58-8f83-41f5-ad6e-736a5a05440d.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "AjHoEUjfOt4P9CmQ3Tl9YEcwEf694/AE+BWBxOtPfxE=", + "crlite_enrolled": false, + "id": "d48c9d5c-1dd4-4df5-8301-2edd5e04d3ed", + "last_modified": 1651244233929 + }, + { + "schema": 1651243732687, + "derHash": "VYRK03slu02z/+fc3DkCOkGzxIikepX60fz61Qi3AoU=", + "subject": "CN=Dodo Sign TLS ICA RSA R1,O=Dodo Sign Ltd,L=Ebene,ST=Plaines Wilhems,C=MU", + "subjectDN": "MHIxCzAJBgNVBAYTAk1VMRgwFgYDVQQIDA9QbGFpbmVzIFdpbGhlbXMxDjAMBgNVBAcMBUViZW5lMRYwFAYDVQQKDA1Eb2RvIFNpZ24gTHRkMSEwHwYDVQQDDBhEb2RvIFNpZ24gVExTIElDQSBSU0EgUjE=", + "whitelist": false, + "attachment": { + "hash": "9bbab79fdec346cdda828bc4486cedf2582bee9d80c23587c1c2f05407854b6e", + "size": 2438, + "filename": "QBni1na5RD10V0ehoagk-O8mlEaC8kPw1gH8_uoYYTY=.pem", + "location": "security-state-staging/intermediates/512c8ed9-74cb-4a34-a0b5-79f8a0f953b2.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "QBni1na5RD10V0ehoagk+O8mlEaC8kPw1gH8/uoYYTY=", + "crlite_enrolled": false, + "id": "d63929e7-804a-4e7f-9657-ccb49438e6ad", + "last_modified": 1651244233917 + }, + { + "schema": 1651222124525, + "derHash": "BwUxODzNEA0+nNlk2weqXoRaBoby6uO8imJ7GCBXsfE=", + "subject": "CN=WoTrus EV SSL Pro CA,O=WoTrus CA Limited,C=CN", + "subjectDN": "MEgxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1RydXMgQ0EgTGltaXRlZDEdMBsGA1UEAxMUV29UcnVzIEVWIFNTTCBQcm8gQ0E=", + "whitelist": false, + "attachment": { + "hash": "7be2ec04c8313dc05a7e0bef9687e9b6f04e6acceb8e83e4058ae0bf0657219d", + "size": 1845, + "filename": "rBTvvFbWGhKxAPrEAJ1x8vttBOVCvRznd5h2iXt2ATs=.pem", + "location": "security-state-staging/intermediates/f4f0a492-6a5c-4308-b805-eab6245a5ba8.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "rBTvvFbWGhKxAPrEAJ1x8vttBOVCvRznd5h2iXt2ATs=", + "crlite_enrolled": true, + "id": "f5fb39d4-0676-418d-b95a-7e81cb7b1c0a", + "last_modified": 1651222638925 + }, + { + "schema": 1651222122870, + "derHash": "CQM/4jmW/kpZxMD1I9JWDjHf5MF9jqFAPUKalx9L1lo=", + "subject": "CN=WoTrus OV SSL Pro CA,O=WoTrus CA Limited,C=CN", + "subjectDN": "MEgxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1RydXMgQ0EgTGltaXRlZDEdMBsGA1UEAxMUV29UcnVzIE9WIFNTTCBQcm8gQ0E=", + "whitelist": false, + "attachment": { + "hash": "0e6c76a6d70346ff239c0a9320d8ebda8b750ae57610ff62a44fb8e221319a31", + "size": 1861, + "filename": "zACNb3_D6r-GIH58_Q4EDalNSChXFVVFbUJICvq7SIQ=.pem", + "location": "security-state-staging/intermediates/ec16d029-5557-4b00-ab92-a11542e604e1.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "zACNb3/D6r+GIH58/Q4EDalNSChXFVVFbUJICvq7SIQ=", + "crlite_enrolled": true, + "id": "28706576-bf19-447f-a3fb-607bf06bf536", + "last_modified": 1651222638915 + }, + { + "schema": 1651222123920, + "derHash": "nOYws1+K4sZBnnNK2dL6MEdt2ec5Sx6Tsn+D93agJOo=", + "subject": "CN=AC Unidades de Sellado de Tiempo,OU=Ceres,O=FNMT-RCM,C=ES", + "subjectDN": "MHUxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEpMCcGA1UEAwwgQUMgVW5pZGFkZXMgZGUgU2VsbGFkbyBkZSBUaWVtcG8=", + "whitelist": false, + "attachment": { + "hash": "671a59fe01d2cd2074dbea84483abb7c9c75db400f3b54d2aebd79a620add787", + "size": 2836, + "filename": "RFLsjPTrs1EoFCjTCI7RLImxM2pGcGMiymQyT87-GT4=.pem", + "location": "security-state-staging/intermediates/86474fab-014b-4b8c-bd0d-647aa22080e5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "RFLsjPTrs1EoFCjTCI7RLImxM2pGcGMiymQyT87+GT4=", + "crlite_enrolled": true, + "id": "b6e021cf-5602-4f60-93f5-659bb02bdfb1", + "last_modified": 1651222638904 + }, + { + "schema": 1651222124221, + "derHash": "sarhvNVV6KPR492o7ITnV8VSZVNEzj/uu6+Y6JXb7aw=", + "subject": "CN=QuoVadis Europe SSL CA G2,O=QuoVadis Trustlink B.V.,C=NL", + "subjectDN": "MFMxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEiMCAGA1UEAwwZUXVvVmFkaXMgRXVyb3BlIFNTTCBDQSBHMg==", + "whitelist": false, + "attachment": { + "hash": "dfb31ebff112bccbef0ba90c29987f9962823acb59f69bd984351d9e2c7e22df", + "size": 2381, + "filename": "XOogr9_VItHwTOA_JogutdX4V06tVw9btHQLa2tR0_A=.pem", + "location": "security-state-staging/intermediates/88eff6f9-143b-4a55-bfef-19933a4e3007.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "XOogr9/VItHwTOA/JogutdX4V06tVw9btHQLa2tR0/A=", + "crlite_enrolled": true, + "id": "12bb227c-277f-4680-a556-f5998b87f658", + "last_modified": 1651222638893 + }, + { + "schema": 1651222121833, + "derHash": "9nwj73v3QSgJ22sd09RKCNN1TZnKumoT96BcckkInIk=", + "subject": "CN=QuoVadis Global SSL ICA G2,O=QuoVadis Limited,C=BM", + "subjectDN": "ME0xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSMwIQYDVQQDExpRdW9WYWRpcyBHbG9iYWwgU1NMIElDQSBHMg==", + "whitelist": false, + "attachment": { + "hash": "f3d6221594115cd098f20f66a013d90aae3becd3c578a737a8e58a35230c208d", + "size": 2016, + "filename": "tYkfFN27P1GUjH5ME128BCg302dL2iwOYhz5wwFJb50=.pem", + "location": "security-state-staging/intermediates/453adbd2-22ff-42b4-92ed-171fb792efa3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "tYkfFN27P1GUjH5ME128BCg302dL2iwOYhz5wwFJb50=", + "crlite_enrolled": true, + "id": "600b2b43-1467-43ac-8086-3e9c9d9900e9", + "last_modified": 1651222638882 + }, + { + "schema": 1651222123017, + "derHash": "Httr2RJ0iC23lb/FFPiqvhCtlVy8z9P9Wltf67LOW2g=", + "subject": "CN=AC SERVIDORES SEGUROS TIPO1,OU=Ceres,O=FNMT-RCM,C=ES", + "subjectDN": "MHAxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgU0VSVklET1JFUyBTRUdVUk9TIFRJUE8x", + "whitelist": false, + "attachment": { + "hash": "1b46f0408f2325ad33c8b3c5dbcf16fa1e7e49dc37065a9692b2b6f8b93fc666", + "size": 1280, + "filename": "Rlnql4UHcyG02SDPnuECa_zDzdDX09uEM9PKaegr4Qs=.pem", + "location": "security-state-staging/intermediates/79cbc976-bf09-46d2-b7ca-8d9055a52b29.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Rlnql4UHcyG02SDPnuECa/zDzdDX09uEM9PKaegr4Qs=", + "crlite_enrolled": true, + "id": "aab7988d-97f1-489f-bb5a-2fcf4db1d18f", + "last_modified": 1651222638872 + }, + { + "schema": 1651201056863, + "derHash": "nG0IkzIBQH+/KxJUC2fMDkyWZvEy4VBHYqcXy66PP9Y=", + "subject": "CN=HydrantID SSL ICA G2,O=HydrantID (Avalanche Cloud Corporation),C=US", + "subjectDN": "MF4xCzAJBgNVBAYTAlVTMTAwLgYDVQQKEydIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHTAbBgNVBAMTFEh5ZHJhbnRJRCBTU0wgSUNBIEcy", + "whitelist": false, + "attachment": { + "hash": "c4fbca9a15eb275e83118896e4839aba070abde056cf047aa1a57afdd78af927", + "size": 2406, + "filename": "400Fim9IQe4j-Gj-Ci4R44M3gA6J1_TRh8LlPSLF3I8=.pem", + "location": "security-state-staging/intermediates/0711da67-ae2e-4da6-b908-4e2a4c4b75d5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "400Fim9IQe4j+Gj+Ci4R44M3gA6J1/TRh8LlPSLF3I8=", + "crlite_enrolled": true, + "id": "fd5ca567-aacd-40bf-afeb-7eaf0f0e8a38", + "last_modified": 1651222638861 + }, + { + "schema": 1651222123161, + "derHash": "n/I8uTh7ngCDvVqhlU7t33kokKqOZ81NON0or0pDmtg=", + "subject": "CN=AC SERVIDORES SEGUROS TIPO2,OU=Ceres,O=FNMT-RCM,C=ES", + "subjectDN": "MHAxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgU0VSVklET1JFUyBTRUdVUk9TIFRJUE8y", + "whitelist": false, + "attachment": { + "hash": "ce9833a29f1fcb59210dd0a59d92c50ef56f427317cc530e9f61e8b7c2584453", + "size": 1280, + "filename": "dCoEY_Du2xeUAuG2_98ZWoRzf_eJoM-rCMtK2M1wF94=.pem", + "location": "security-state-staging/intermediates/8489058b-a9f7-4278-ad80-159e9e5576de.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "dCoEY/Du2xeUAuG2/98ZWoRzf/eJoM+rCMtK2M1wF94=", + "crlite_enrolled": true, + "id": "78225120-3a97-4f14-84f9-0aa83efcdb19", + "last_modified": 1651222638850 + }, + { + "schema": 1651222121219, + "derHash": "gw/yBa5pSFBZw/sjdqfy+e4cKmHeJZ3QnQu2rWn4iDI=", + "subject": "SERIALNUMBER=Q2826004J,CN=AC Administración Pública,OU=CERES,O=FNMT-RCM,C=ES", + "subjectDN": "MGoxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ0VSRVMxEjAQBgNVBAUTCVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgQWRtaW5pc3RyYWNpw7NuIFDDumJsaWNh", + "whitelist": false, + "attachment": { + "hash": "1a643193c39cf1aa75be19f71a124a43c4ff5403f87361b228eed95bdccebd66", + "size": 2438, + "filename": "uoKUEuwkPtDw_4xcvGkwXVXs-8X9iESzjMRl18SDGV0=.pem", + "location": "security-state-staging/intermediates/68059043-be33-4574-bf76-649847020802.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "uoKUEuwkPtDw/4xcvGkwXVXs+8X9iESzjMRl18SDGV0=", + "crlite_enrolled": true, + "id": "8f3c14a8-669f-4990-a1b5-75acf2ebfe7a", + "last_modified": 1651222638840 + }, + { + "schema": 1651222123617, + "derHash": "NH0Y3Mwu/FGpIOen+7B7+9o1YTaB+C3KXExyuwyDwDU=", + "subject": "CN=VR IDENT SSL CA 2020,O=Fiducia & GAD IT AG,C=DE", + "subjectDN": "MEoxCzAJBgNVBAYTAkRFMRwwGgYDVQQKDBNGaWR1Y2lhICYgR0FEIElUIEFHMR0wGwYDVQQDDBRWUiBJREVOVCBTU0wgQ0EgMjAyMA==", + "whitelist": false, + "attachment": { + "hash": "4158e246be129509cb8d8eb14b647517fea0196e81a9d593f4b8f64a11a6414f", + "size": 2357, + "filename": "fQUctsUYoew1aFnAFT0prf-kJmkVNqkPo2jJ5Jm9RaA=.pem", + "location": "security-state-staging/intermediates/ada7bb67-cb15-43b5-9c74-259e711941b5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "fQUctsUYoew1aFnAFT0prf+kJmkVNqkPo2jJ5Jm9RaA=", + "crlite_enrolled": true, + "id": "2b1f7c04-dd89-4f96-ad7d-e4e167a9099d", + "last_modified": 1651222638829 + }, + { + "schema": 1651222122570, + "derHash": "Fh7lOGMpsoon/0BXNlUqYh1ahEpDgR42I+Uu76C6hAo=", + "subject": "CN=QuoVadis Global SSL ICA G3,O=QuoVadis Limited,C=BM", + "subjectDN": "ME0xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSMwIQYDVQQDExpRdW9WYWRpcyBHbG9iYWwgU1NMIElDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "b8fd47c4234e14aae99e993f325e88c880408479e0c6ecf0a155bcb2481f0c25", + "size": 2353, + "filename": "KM3iZPSceB-hgYuNI-cSg4LRgTiUxCeGjrfXRQAY6Rs=.pem", + "location": "security-state-staging/intermediates/e04bb898-e61a-4362-98f8-e5c0e0559cd6.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "KM3iZPSceB+hgYuNI+cSg4LRgTiUxCeGjrfXRQAY6Rs=", + "crlite_enrolled": true, + "id": "3157d9c2-162a-4e53-9f7b-3bde40d1cd54", + "last_modified": 1651222638818 + }, + { + "schema": 1651222120982, + "derHash": "YDiLdz0z6RQWSGE/NrkUnwFaEUN4us8+NpSGT/2kJuw=", + "subject": "CN=HydrantID EV SSL CA G2,O=HydrantID (Avalanche Cloud Corporation),C=US", + "subjectDN": "MGAxCzAJBgNVBAYTAlVTMTAwLgYDVQQKDCdIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHzAdBgNVBAMMFkh5ZHJhbnRJRCBFViBTU0wgQ0EgRzI=", + "whitelist": false, + "attachment": { + "hash": "ba2cc602bd31081e17f7745ac462854773e79726958ff1b8a553cc7ecaba9db2", + "size": 2389, + "filename": "FpAps1LWs_UTm3xApHYkNccnnZX-7Wc_v8V0t70p6rg=.pem", + "location": "security-state-staging/intermediates/a6215fbd-d6a1-4e36-b3fa-4f60752c3ad6.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "FpAps1LWs/UTm3xApHYkNccnnZX+7Wc/v8V0t70p6rg=", + "crlite_enrolled": true, + "id": "c9938308-f338-4652-aac1-c4eafdc2080c", + "last_modified": 1651222638807 + }, + { + "schema": 1651222124379, + "derHash": "y2Zmsyv/Lv7cxBh98Umm00pdELcWW5z/KmfA4xGu7tc=", + "subject": "CN=QuoVadis Europe EV SSL CA G1,O=QuoVadis Trustlink B.V.,C=NL", + "subjectDN": "MFYxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjElMCMGA1UEAwwcUXVvVmFkaXMgRXVyb3BlIEVWIFNTTCBDQSBHMQ==", + "whitelist": false, + "attachment": { + "hash": "990290f2ea4ff420df521c3b3851971e7be41a8508394faa2cb562a69bce9e55", + "size": 2385, + "filename": "WkWVWx1-X3CuwtFGJvDjdr5hOX8PeMryJG2Va7Y6cj8=.pem", + "location": "security-state-staging/intermediates/a0cf3874-21b6-41ef-b36d-7e3b20b5db08.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "WkWVWx1+X3CuwtFGJvDjdr5hOX8PeMryJG2Va7Y6cj8=", + "crlite_enrolled": true, + "id": "28a8c02e-5350-422e-a3eb-6f8150960132", + "last_modified": 1651222638797 + }, + { + "schema": 1651222123472, + "derHash": "0zqEf2QDd74K4aQpFToH6HyIJ/pIQLUVi83LheEKRTo=", + "subject": "CN=VR IDENT EV SSL CA 2020,O=Fiducia & GAD IT AG,C=DE", + "subjectDN": "ME0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKDBNGaWR1Y2lhICYgR0FEIElUIEFHMSAwHgYDVQQDDBdWUiBJREVOVCBFViBTU0wgQ0EgMjAyMA==", + "whitelist": false, + "attachment": { + "hash": "a95e7ccf2ef4b020f65fbd061c44e49d966821be27623376e3f16a8a3ebd371f", + "size": 2361, + "filename": "te09bIALahNazDua57TEibeM7CatIkOAT8t-qu_Kdro=.pem", + "location": "security-state-staging/intermediates/e8b0b0a2-f7f0-4893-b9ef-32f493e8a146.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "te09bIALahNazDua57TEibeM7CatIkOAT8t+qu/Kdro=", + "crlite_enrolled": true, + "id": "92b7ea6b-c8ed-47fc-bd89-4834ef4a3ad5", + "last_modified": 1651222638786 + }, + { + "schema": 1651222121528, + "derHash": "8DhCHwfyDWOiDTaR5aF4q4RZ6+VwwWR7dpBVTvI4dqs=", + "subject": "OU=AC Componentes Informáticos,O=FNMT-RCM,C=ES", + "subjectDN": "MEcxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTElMCMGA1UECwwcQUMgQ29tcG9uZW50ZXMgSW5mb3Jtw6F0aWNvcw==", + "whitelist": false, + "attachment": { + "hash": "711fb746c38ddfee6090169d62da5358968caf228ade2ad75cb8be4c4dd3832d", + "size": 2430, + "filename": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ-57NkgXsoGc=.pem", + "location": "security-state-staging/intermediates/292b3931-1dd3-4cd0-9be6-5fd40e9e982a.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ+57NkgXsoGc=", + "crlite_enrolled": true, + "id": "f77b23d6-3d87-4035-8243-18504c783f83", + "last_modified": 1651222638775 + }, + { + "schema": 1651222123771, + "derHash": "AUU/ZFzZHiM7dISCfyP4pXP9ZBAp6opr/lSe9O2LMj0=", + "subject": "CN=HydrantID SSL ICA G2,O=HydrantID (Avalanche Cloud Corporation),C=US", + "subjectDN": "MF4xCzAJBgNVBAYTAlVTMTAwLgYDVQQKEydIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHTAbBgNVBAMTFEh5ZHJhbnRJRCBTU0wgSUNBIEcy", + "whitelist": false, + "attachment": { + "hash": "7210ab4fd67176c39b121dc273d719681e6df16720f1ec337d1ed98f2f42397f", + "size": 2410, + "filename": "400Fim9IQe4j-Gj-Ci4R44M3gA6J1_TRh8LlPSLF3I8=.pem", + "location": "security-state-staging/intermediates/59737916-a963-4e35-8bd8-385202497f2a.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "400Fim9IQe4j+Gj+Ci4R44M3gA6J1/TRh8LlPSLF3I8=", + "crlite_enrolled": true, + "id": "ed99b508-86ba-4d5c-b995-fdab177680bd", + "last_modified": 1651222638764 + }, + { + "schema": 1651222124076, + "derHash": "qlf0gsvFFrTRDKQJfdkNmfWqcn0gcJDQfanDaZirua0=", + "subject": "CN=HydrantID SSL CA G3,O=HydrantID (Avalanche Cloud Corporation),C=US", + "subjectDN": "MF0xCzAJBgNVBAYTAlVTMTAwLgYDVQQKDCdIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHDAaBgNVBAMME0h5ZHJhbnRJRCBTU0wgQ0EgRzM=", + "whitelist": false, + "attachment": { + "hash": "7e0808e92ebc33ef96558a3d7c46b9b86290ea9b9c814fe1b375dd5f6e94179f", + "size": 2414, + "filename": "CgDzm8Z-Gk0j7D6yq4U4IstjpiYpBiVqyPDYr-62oO8=.pem", + "location": "security-state-staging/intermediates/84127ac4-c901-4bf0-b029-60d190c53fc6.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "CgDzm8Z+Gk0j7D6yq4U4IstjpiYpBiVqyPDYr+62oO8=", + "crlite_enrolled": true, + "id": "c4016ca8-8eb6-4dcf-b5d7-f9cf4687f6db", + "last_modified": 1651222638752 + }, + { + "schema": 1651222121983, + "derHash": "f+uTdOqwjTknF8ZHQ22uBhdqJMAQYH/aHM5eXwEGtHI=", + "subject": "CN=QuoVadis Qualified Web ICA G2,O=QuoVadis Trustlink B.V.,C=NL", + "subjectDN": "MFcxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEmMCQGA1UEAwwdUXVvVmFkaXMgUXVhbGlmaWVkIFdlYiBJQ0EgRzI=", + "whitelist": false, + "attachment": { + "hash": "c551ff3d69db56e747169ab80b2fdea513f1de4806de98e0e34ab04da70a7566", + "size": 2385, + "filename": "HW4ktpkbc6tiWRVtXWUrZxqP505LD1tPqFHb3HiZbX8=.pem", + "location": "security-state-staging/intermediates/bd4b3ad6-5fca-4573-9e99-2959c279c1ac.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "HW4ktpkbc6tiWRVtXWUrZxqP505LD1tPqFHb3HiZbX8=", + "crlite_enrolled": true, + "id": "294e341c-f6e5-4868-b5aa-b980b5afa7d5", + "last_modified": 1651222638742 + }, + { + "schema": 1651222122735, + "derHash": "J47PIR4lGOndmROvxYPusxJ8gYS8vu2q171k6J6MQxA=", + "subject": "CN=QuoVadis Grid ICA G2,O=QuoVadis Limited,C=BM", + "subjectDN": "MEcxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR0wGwYDVQQDExRRdW9WYWRpcyBHcmlkIElDQSBHMg==", + "whitelist": false, + "attachment": { + "hash": "8e15c43f71096a592c3d5819db25f4547bb4ef4f8232293578abdf314d149392", + "size": 2353, + "filename": "5rlUfVlXaS82HCd6DZI7w8rIamphHCdjnXNpXREZynQ=.pem", + "location": "security-state-staging/intermediates/e6bcd10d-1e18-4c5f-a5f1-91850eec82ad.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "5rlUfVlXaS82HCd6DZI7w8rIamphHCdjnXNpXREZynQ=", + "crlite_enrolled": true, + "id": "9b40ce27-a8d1-444f-a177-ff64ce1cb254", + "last_modified": 1651222638731 + }, + { + "schema": 1651222122424, + "derHash": "2w2hYDLxZDoklv3nQuK76B2spYzXYSBhQg4VTOG84r0=", + "subject": "OU=AC Componentes Informáticos,O=FNMT-RCM,C=ES", + "subjectDN": "MEcxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTElMCMGA1UECwwcQUMgQ29tcG9uZW50ZXMgSW5mb3Jtw6F0aWNvcw==", + "whitelist": false, + "attachment": { + "hash": "9667524969985c4cb1aa76f3e3c434be6441809f9c3d2bad6265165a0b509b08", + "size": 2430, + "filename": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ-57NkgXsoGc=.pem", + "location": "security-state-staging/intermediates/70f3a46a-ba8f-4f11-89a5-866e51a76799.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ+57NkgXsoGc=", + "crlite_enrolled": true, + "id": "c24c4af6-ee60-43b5-b538-bd2e1ea4cbf9", + "last_modified": 1651222638720 + }, + { + "schema": 1651222121680, + "derHash": "GKQ8UdCBdMOm2F8cExi9KQl1PnXZHPZZn3M0ewBwKJA=", + "subject": "SERIALNUMBER=Q2826004J,CN=AC Administración Pública,OU=CERES,O=FNMT-RCM,C=ES", + "subjectDN": "MGoxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ0VSRVMxEjAQBgNVBAUTCVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgQWRtaW5pc3RyYWNpw7NuIFDDumJsaWNh", + "whitelist": false, + "attachment": { + "hash": "b1b8087026dcff96160076000ab8ec70cb29448880359f0ce676c987951eea3d", + "size": 2438, + "filename": "uoKUEuwkPtDw_4xcvGkwXVXs-8X9iESzjMRl18SDGV0=.pem", + "location": "security-state-staging/intermediates/fdd35d11-8b28-4c22-974e-8f7af61c5090.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "uoKUEuwkPtDw/4xcvGkwXVXs+8X9iESzjMRl18SDGV0=", + "crlite_enrolled": true, + "id": "1af98733-def0-4335-ac52-996618294919", + "last_modified": 1651222638709 + }, + { + "schema": 1651222123313, + "derHash": "DakU+3El9uZE63qiYd6euAncf5Jbayp9in7dhzY5i1s=", + "subject": "CN=Staat der Nederlanden Domein Server CA 2020,O=Staat der Nederlanden,C=NL", + "subjectDN": "MGMxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xNDAyBgNVBAMMK1N0YWF0IGRlciBOZWRlcmxhbmRlbiBEb21laW4gU2VydmVyIENBIDIwMjA=", + "whitelist": false, + "attachment": { + "hash": "2f30004a37d33d9c2a59bae9b9e7ae94f816bd331c1a88deabd4af0f028ec59e", + "size": 2438, + "filename": "N9-YluTCUa_HTXc60QxjUReBLpRniAkIK2N84DhgmW4=.pem", + "location": "security-state-staging/intermediates/bb106e72-beed-4616-9b9f-bb44107c3b3a.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "N9+YluTCUa/HTXc60QxjUReBLpRniAkIK2N84DhgmW4=", + "crlite_enrolled": true, + "id": "da9f74e2-bbea-491f-8b6d-4587b21de61e", + "last_modified": 1651222638699 + }, + { + "schema": 1651222121373, + "derHash": "MCQkQ/aJWpRWDkjk3/cgU26vUWPLQvXod0AqveL4Ynw=", + "subject": "CN=QuoVadis Global SSL ICA G3,O=QuoVadis Limited,C=BM", + "subjectDN": "ME0xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSMwIQYDVQQDExpRdW9WYWRpcyBHbG9iYWwgU1NMIElDQSBHMw==", + "whitelist": false, + "attachment": { + "hash": "63f37d712386cb1b4ab3fb0368f861aeb7ba74ec9b9bc7ecdd247bcf94725693", + "size": 2373, + "filename": "KM3iZPSceB-hgYuNI-cSg4LRgTiUxCeGjrfXRQAY6Rs=.pem", + "location": "security-state-staging/intermediates/db9fba20-fdaf-4de6-a191-950a3e1a8f31.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "KM3iZPSceB+hgYuNI+cSg4LRgTiUxCeGjrfXRQAY6Rs=", + "crlite_enrolled": true, + "id": "5acc97ab-aba9-4bba-95d2-b15d3a84f74c", + "last_modified": 1651222638688 + }, + { + "schema": 1651222122130, + "derHash": "8Hu73gdvm0DFfMS+/t6Xyh9Tua4UfwNdKEy/U/NDL7g=", + "subject": "CN=CFCA OV OCA,O=China Financial Certification Authority,C=CN", + "subjectDN": "MFUxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFDASBgNVBAMMC0NGQ0EgT1YgT0NB", + "whitelist": false, + "attachment": { + "hash": "bc37658d1568750ae385b92be54ede64df31899d30f67211fd1e015c9dc7803b", + "size": 1963, + "filename": "uc0FPx73f1ObHGmGZOcevy371Uo9asVjdabpiS0lKgQ=.pem", + "location": "security-state-staging/intermediates/8a832b56-3f0a-4b5f-8966-8a1da5242863.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "uc0FPx73f1ObHGmGZOcevy371Uo9asVjdabpiS0lKgQ=", + "crlite_enrolled": true, + "id": "b2b776e5-2b2f-4c8e-819d-026b8d3855d2", + "last_modified": 1651222638677 + }, + { + "schema": 1651200582692, + "derHash": "Fed8WUBAFWWe4m+SVh8Aeq9TmGonkm8OcHWFwqfzAbg=", + "subject": "CN=DigiCert Global G3 TLS EE\\+ ECC384 SHA384 2022 CA1,O=DigiCert\\, Inc.,C=US", + "subjectDN": "MGIxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE6MDgGA1UEAxMxRGlnaUNlcnQgR2xvYmFsIEczIFRMUyBFRSsgRUNDMzg0IFNIQTM4NCAyMDIyIENBMQ==", + "whitelist": false, + "attachment": { + "hash": "d698eb7c871e953a2d52f5a3e37a7c94099ce9cd6e5e351f175434f9b4647831", + "size": 1276, + "filename": "qX0VkaXNOTvb_iR2T3sjz2frmsxWXSBKxeCVlcqFpuM=.pem", + "location": "security-state-staging/intermediates/b22276db-4c8e-4141-a014-1fe8448280d6.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "qX0VkaXNOTvb/iR2T3sjz2frmsxWXSBKxeCVlcqFpuM=", + "crlite_enrolled": false, + "id": "3504d097-0f0d-4eb1-bcab-f8c9cff23a8e", + "last_modified": 1651201056425 + }, + { + "schema": 1651200581750, + "derHash": "uRW4Bqi3vi44CfLpMplufBDMgmkYZKiWBr1QCA3C6rM=", + "subject": "CN=DigiCert Global G2 TLS EE\\+ RSA4096 SHA256 2022 CA1,O=DigiCert\\, Inc.,C=US", + "subjectDN": "MGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgR2xvYmFsIEcyIFRMUyBFRSsgUlNBNDA5NiBTSEEyNTYgMjAyMiBDQTE=", + "whitelist": false, + "attachment": { + "hash": "2770a30970c5f0e28e817c1788eb2c06bff044a066ecca40a7a2b96211daf4fc", + "size": 2077, + "filename": "nfWaEttE0IGAYQsFsn8KzN13pSJzWY96Gu0Dlx4QYig=.pem", + "location": "security-state-staging/intermediates/4916e83a-41de-416d-910e-e4d6d8f4f953.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "nfWaEttE0IGAYQsFsn8KzN13pSJzWY96Gu0Dlx4QYig=", + "crlite_enrolled": false, + "id": "168daeb9-d058-4d6b-946a-87f8af07577f", + "last_modified": 1651201056418 + }, + { + "schema": 1651200580812, + "derHash": "9dTK1Ts/LvOYENptPNX/dmP0q7h3OIJ8zsr/b8w+r8Q=", + "subject": "CN=MSFT RS256 CA-1,O=Microsoft Corporation,C=US", + "subjectDN": "MEcxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xGDAWBgNVBAMTD01TRlQgUlMyNTYgQ0EtMQ==", + "whitelist": false, + "attachment": { + "hash": "a023fc76ccc16c88e584716119317138d7bdceaf8896157e4bb9aa525e227e9b", + "size": 1695, + "filename": "4dcjodQDXb57s8lG7TLWD3Xe9ytnPSATT61TJbQtAwI=.pem", + "location": "security-state-staging/intermediates/dbe4ae7c-598c-423b-a4f2-aa6674a8ec18.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "4dcjodQDXb57s8lG7TLWD3Xe9ytnPSATT61TJbQtAwI=", + "crlite_enrolled": false, + "id": "50064930-2d6a-442e-8edb-9151ed42396b", + "last_modified": 1651201056411 + }, + { + "schema": 1650962920282, + "derHash": "Ocdjqc8Z2SP5d9I2JquJBEmkRKuLeVyBXvHvgf68Hjg=", + "subject": "CN=Amazon,OU=Server CA 1A,O=Amazon,C=US", + "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAxQTEPMA0GA1UEAxMGQW1hem9u", + "whitelist": false, + "attachment": { + "hash": "f399c4419d079a15a697f418e9a8d5ff90d3ac32db49507e30ee4a17491a1fd2", + "size": 1544, + "filename": "ZLtb2AMR-j9TvZlATKuHYq1uBIRH0Kl_IZ_OyhZh83w=.pem", + "location": "security-state-staging/intermediates/2595f6c1-56fb-4026-9d93-9ba159b2f77e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "ZLtb2AMR+j9TvZlATKuHYq1uBIRH0Kl/IZ/OyhZh83w=", + "crlite_enrolled": false, + "id": "a673a51c-cf7a-4f0e-8ef0-c30a6fcaf0c4", + "last_modified": 1650963440119 + }, + { + "schema": 1650962917391, + "derHash": "D7bOgJCdGa/uaojJWenpqmRmcVvOBcZEn+tTCghtrxQ=", + "subject": "CN=GeoTrust SupremeSSL EV 1 CA,OU=www.supremessl.com,O=SupremeSSL,C=NL", + "subjectDN": "MGUxCzAJBgNVBAYTAk5MMRMwEQYDVQQKEwpTdXByZW1lU1NMMRswGQYDVQQLExJ3d3cuc3VwcmVtZXNzbC5jb20xJDAiBgNVBAMTG0dlb1RydXN0IFN1cHJlbWVTU0wgRVYgMSBDQQ==", + "whitelist": false, + "attachment": { + "hash": "384493a25bd899d9fdf55deb2a362135f4ec8be8dc34518f6004cef3e417556c", + "size": 1691, + "filename": "uG3aQXLPd55q_z1RlGHWJQcDYD5HzCoVUz8Q5eD3Rlw=.pem", + "location": "security-state-staging/intermediates/370e6c55-8cba-4d1b-a1a2-2535eb0412c5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "uG3aQXLPd55q/z1RlGHWJQcDYD5HzCoVUz8Q5eD3Rlw=", + "crlite_enrolled": false, + "id": "bd4e50e6-67eb-40a4-b53a-8c09c55e45fe", + "last_modified": 1650963440110 + }, + { + "schema": 1650962916445, + "derHash": "L7qP6RVBUEmqlChXy1MTf/09nlpHsntXgtq5tNp9Yk0=", + "subject": "CN=GeoTrust SupremeSSL EV 1 ECC CA,OU=www.supremessl.com,O=SupremeSSL,C=NL", + "subjectDN": "MGkxCzAJBgNVBAYTAk5MMRMwEQYDVQQKEwpTdXByZW1lU1NMMRswGQYDVQQLExJ3d3cuc3VwcmVtZXNzbC5jb20xKDAmBgNVBAMTH0dlb1RydXN0IFN1cHJlbWVTU0wgRVYgMSBFQ0MgQ0E=", + "whitelist": false, + "attachment": { + "hash": "41ecc5811611c2cca06c08009be39d0f651319e8cea2f6913a6d81897be776be", + "size": 1423, + "filename": "A97Lx6chFTH9FkG_Io5Uc5oemCnN0d8O2NjR9d-Pr0w=.pem", + "location": "security-state-staging/intermediates/fada1854-a866-45e7-b9e0-58346ba95e76.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "A97Lx6chFTH9FkG/Io5Uc5oemCnN0d8O2NjR9d+Pr0w=", + "crlite_enrolled": false, + "id": "6faea35d-2ca4-409c-94f4-f60003ea2e0f", + "last_modified": 1650963440091 + }, + { + "schema": 1650962915469, + "derHash": "chMOOyiQA0khRhf01vP7hdCEde54vwlcWUWKFNGCiGY=", + "subject": "CN=Amazon,OU=Server CA 2A,O=Amazon,C=US", + "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAyQTEPMA0GA1UEAxMGQW1hem9u", + "whitelist": false, + "attachment": { + "hash": "2a82794488d990d2916a320c0881fba10016362c3188bf9954c30bf6848d39ec", + "size": 2235, + "filename": "G9pa__g3gTgL9wgZj599LbHgZ_FLuep7rnCqwLAwXns=.pem", + "location": "security-state-staging/intermediates/286bed2c-a929-4e6f-a1ab-7233972c722f.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "G9pa//g3gTgL9wgZj599LbHgZ/FLuep7rnCqwLAwXns=", + "crlite_enrolled": false, + "id": "1654227e-f47f-4778-8136-e7cca51abf27", + "last_modified": 1650963440067 + }, + { + "schema": 1650919770377, + "derHash": "tvZVm7zgosyR5Qe11zGeMkh+2uKKBjvHO2QF5sRGZbY=", + "subject": "CN=QuoVadis Enterprise Trust CA 2 G3,O=QuoVadis Limited,C=BM", + "subjectDN": "MFQxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMSowKAYDVQQDDCFRdW9WYWRpcyBFbnRlcnByaXNlIFRydXN0IENBIDIgRzM=", + "whitelist": false, + "attachment": { + "hash": "0e8105a00963a2942951dacf763351b5c4f4fcffe32ab691c090848452d6b285", + "size": 2377, + "filename": "U_l9o-Lg2NOgB-7MLJUzZzbVrqatI_likIE44Ciah6M=.pem", + "location": "security-state-staging/intermediates/97b8b4d9-8b6c-4fe0-b01e-f743bdb8a98b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "U/l9o+Lg2NOgB+7MLJUzZzbVrqatI/likIE44Ciah6M=", + "crlite_enrolled": false, + "id": "77b42da0-9139-44b4-aa57-0c540a0680c3", + "last_modified": 1650920239287 + }, + { + "schema": 1650919769437, + "derHash": "PyJb2814jOkkhwyvkvgUt8b/Ttq6utk/HTqRdyUs8dE=", + "subject": "CN=QuoVadis Qualified Web ICA G3,O=QuoVadis Trustlink B.V.,C=NL", + "subjectDN": "MFcxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEmMCQGA1UEAwwdUXVvVmFkaXMgUXVhbGlmaWVkIFdlYiBJQ0EgRzM=", + "whitelist": false, + "attachment": { + "hash": "8eb4cfbfd4e31a971f563f4a974c582ecd679cc8c15604af9f0f24fb1daf720e", + "size": 2385, + "filename": "e7hbHQSuhSDkhjhlY1CGhoHNKcgJCpQxSU_inT417rc=.pem", + "location": "security-state-staging/intermediates/848eef45-4d07-4d85-b898-032a76b2a75b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "e7hbHQSuhSDkhjhlY1CGhoHNKcgJCpQxSU/inT417rc=", + "crlite_enrolled": false, + "id": "7d41a0d3-fa4f-45f9-bec4-6c38cd62e11c", + "last_modified": 1650920239278 + }, + { + "schema": 1650919767450, + "derHash": "X36LSowRuvLL5kWbR/221QwChcSplPTu8v5RYKoKt4o=", + "subject": "CN=vTrus DV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", + "subjectDN": "MEUxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRgwFgYDVQQDEw92VHJ1cyBEViBTU0wgQ0E=", + "whitelist": false, + "attachment": { + "hash": "02cc66488a37100af024e6807b42f3d0fcca6bac68c70036847c21859c2e0f9f", + "size": 2003, + "filename": "75pE_IZKhqgviWzR4qTd2zPqnbH6f4VSS4OvPeBjEjQ=.pem", + "location": "security-state-staging/intermediates/8025018f-b0af-4798-80e7-62f914355ddc.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "75pE/IZKhqgviWzR4qTd2zPqnbH6f4VSS4OvPeBjEjQ=", + "crlite_enrolled": false, + "id": "62bfb5fc-9b9e-4859-93ae-aefbc19c54a7", + "last_modified": 1650920239269 + }, + { + "schema": 1650919768436, + "derHash": "I1ge8ZId8vkpDboNTU9IqX+Yrq77XjNQs/cFgujNvng=", + "subject": "CN=vTrus ECC OV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", + "subjectDN": "MEkxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRwwGgYDVQQDExN2VHJ1cyBFQ0MgT1YgU1NMIENB", + "whitelist": false, + "attachment": { + "hash": "f5e788b19092bef358268ca50c1012469e23bacaec6b8968235a7fde8315fae3", + "size": 1183, + "filename": "atwg6ejpADR_jBbKnuSFzeAuVeHiQKJdUl2HSR0gLmU=.pem", + "location": "security-state-staging/intermediates/8d035ca1-82d3-4b60-8e2a-0309b5fa02a3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "atwg6ejpADR/jBbKnuSFzeAuVeHiQKJdUl2HSR0gLmU=", + "crlite_enrolled": false, + "id": "1ba49c37-515b-43a5-bbc1-6c7b9ea16c5d", + "last_modified": 1650920239261 + }, + { + "schema": 1650919766509, + "derHash": "gmV1bdXNijfuYeQDUSiOSxaondJIwexOuiWq8WGr9Jg=", + "subject": "CN=AC Sector Público,OU=Ceres,O=FNMT-RCM,C=ES", + "subjectDN": "MGcxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEbMBkGA1UEAwwSQUMgU2VjdG9yIFDDumJsaWNv", + "whitelist": false, + "attachment": { + "hash": "cfe09ce65e4dcbc8449292b7e92e1cdaacc6c228de14a49ccc6300fda8e73598", + "size": 2816, + "filename": "aN4wUQfL0YidepsDn9ylA8GoitH0XRdS349Qxylp2RU=.pem", + "location": "security-state-staging/intermediates/6e8aaf5f-dcdb-4a22-852f-74fd18687428.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "aN4wUQfL0YidepsDn9ylA8GoitH0XRdS349Qxylp2RU=", + "crlite_enrolled": false, + "id": "cfdbbcaf-8ad7-44df-988e-6b0c1d3a6ef0", + "last_modified": 1650920239252 + }, + { + "schema": 1650919763686, + "derHash": "vTDA0eesuD78T19sYvjzpXm6snUnr65mbGlsOoZxdfE=", + "subject": "CN=vTrus ECC EV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", + "subjectDN": "MEkxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRwwGgYDVQQDExN2VHJ1cyBFQ0MgRVYgU1NMIENB", + "whitelist": false, + "attachment": { + "hash": "5efe51a26c5280ef3910747587a1258ee032a5cd4592afff27a55faecd152eec", + "size": 1183, + "filename": "7k0rYa-qry4wDaWSSycBwDVQALkMXBvBWeWHCjNIjTA=.pem", + "location": "security-state-staging/intermediates/2fbba71f-fa0b-4df8-9e0e-5926ab099518.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "7k0rYa+qry4wDaWSSycBwDVQALkMXBvBWeWHCjNIjTA=", + "crlite_enrolled": false, + "id": "4dbca2b3-84ac-4dad-b6b4-8feac2cdfdd4", + "last_modified": 1650920239234 + }, + { + "schema": 1650919762710, + "derHash": "e+0pJ2rL7Z8Xbzi7o6Z85YFbXL8VIse7WezYawnhbtI=", + "subject": "CN=Amazon,OU=Server CA 4A,O=Amazon,C=US", + "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSA0QTEPMA0GA1UEAxMGQW1hem9u", + "whitelist": false, + "attachment": { + "hash": "80e7ade2cfaf2410560723bc955bfee6189c0738bf29f0cbef746f8ab6211ff5", + "size": 1089, + "filename": "F3CN_yt_rsnLG1IV67JCHZewVDyTb6ydbgK5LyDlxwc=.pem", + "location": "security-state-staging/intermediates/84b45e4e-dff5-47aa-9a4b-238ead864dc5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "F3CN/yt/rsnLG1IV67JCHZewVDyTb6ydbgK5LyDlxwc=", + "crlite_enrolled": false, + "id": "bdfef393-879d-470f-9c38-dd5dab153498", + "last_modified": 1650920239226 + }, + { + "schema": 1650919764671, + "derHash": "86ptcSoV9j+DUIBJedtUJBmmGysdIudWxBer/o10o8o=", + "subject": "CN=vTrus EV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", + "subjectDN": "MEUxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRgwFgYDVQQDEw92VHJ1cyBFViBTU0wgQ0E=", + "whitelist": false, + "attachment": { + "hash": "01cb1f5c741d941d11e0575e8235a3df364dc571bdd452841c23bd28e35016d3", + "size": 2003, + "filename": "tHoUHCrraSrjkHaUbZGcxRVrjSHn8i6s8_iI6HHC6Ok=.pem", + "location": "security-state-staging/intermediates/aba23528-3d5c-4097-8a18-23189b4996c5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "tHoUHCrraSrjkHaUbZGcxRVrjSHn8i6s8/iI6HHC6Ok=", + "crlite_enrolled": false, + "id": "e1e50749-1e86-4386-a147-51b82388f36f", + "last_modified": 1650920239217 + }, + { + "schema": 1650919750344, + "derHash": "2lRiUmoMLphSqGGGsCU5AVh1nNymriHwn3E8pqzN0fE=", + "subject": "CN=QuoVadis Enterprise Trust CA 3 G3,O=QuoVadis Limited,C=BM", + "subjectDN": "MFQxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMSowKAYDVQQDDCFRdW9WYWRpcyBFbnRlcnByaXNlIFRydXN0IENBIDMgRzM=", + "whitelist": false, + "attachment": { + "hash": "0b01ec78286d184607dd09e4cac9c4992d4af9f58534eb2cb8fea437481a6197", + "size": 2333, + "filename": "smsafMf1m1b-3NN_jssl3RMKHXok-GELWWNtG9vZEmA=.pem", + "location": "security-state-staging/intermediates/c87c6dee-16e3-4bb0-8541-6cf2e215df90.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "smsafMf1m1b+3NN/jssl3RMKHXok+GELWWNtG9vZEmA=", + "crlite_enrolled": false, + "id": "4f58238b-464f-49f2-87a6-905bf5e2256b", + "last_modified": 1650920239200 + }, + { + "schema": 1650919752248, + "derHash": "GLtw79o/kUOBFcnrTzM+tOxoNUVx5pSRlaCpHJ5vvNg=", + "subject": "CN=QuoVadis RCA1G3 TLS CA,O=QuoVadis Limited,C=BM", + "subjectDN": "MEkxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMR8wHQYDVQQDDBZRdW9WYWRpcyBSQ0ExRzMgVExTIENB", + "whitelist": false, + "attachment": { + "hash": "b3bb67e5eae26a4c94edb219c24b0b5e4b61ccf76dfc1f6b45000e822a22ceb3", + "size": 2369, + "filename": "oVTzYxEWPWmbDlo2GZhwL-6my7pLP_DO_Q5zS0j4erM=.pem", + "location": "security-state-staging/intermediates/fc79241e-cca4-4146-ba3c-7d9f2433463e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "oVTzYxEWPWmbDlo2GZhwL+6my7pLP/DO/Q5zS0j4erM=", + "crlite_enrolled": false, + "id": "82f7ad48-cda9-4a45-be46-d27e56212f18", + "last_modified": 1650920239191 + }, + { + "schema": 1650919756111, + "derHash": "uCIQzend6g4UvimvZH5LMvlu0qnvGqW6qcxks4tsAco=", + "subject": "OU=AC RAIZ FNMT-RCM,O=FNMT-RCM,C=ES", + "subjectDN": "MDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTQ==", + "whitelist": false, + "attachment": { + "hash": "dda828b4a97c8a8f24d378bef318af5d144be4d873ff73ba3f07303c1c298e49", + "size": 1971, + "filename": "L8VmekuaJnjtasatJUZfy_YJS_zZUECXx6j6R63l6Ig=.pem", + "location": "security-state-staging/intermediates/c8065d4f-f7f0-4e26-aa22-7e982bf06bba.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "L8VmekuaJnjtasatJUZfy/YJS/zZUECXx6j6R63l6Ig=", + "crlite_enrolled": false, + "id": "752044c7-55ec-4fd9-a0fa-6bd6b3db2f27", + "last_modified": 1650920239183 + }, + { + "schema": 1650919749373, + "derHash": "VD2bf8KmRxzYT8pSws9hWd+D6/zYjYsIta8/iHN/UuY=", + "subject": "CN=Amazon Root CA 4,O=Amazon,C=US", + "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDQ=", + "whitelist": false, + "attachment": { + "hash": "529e23adcf592c5f3ead786e4cade919e70e5ce97467aa24135ffedb958ca909", + "size": 1410, + "filename": "9-ze1cZgR9KO1kZrVDxA4HQ6voHRCSVNz4RdTCx4U8U=.pem", + "location": "security-state-staging/intermediates/0220ce80-c8b1-4eff-a8a9-8b3fcf86b20f.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "9+ze1cZgR9KO1kZrVDxA4HQ6voHRCSVNz4RdTCx4U8U=", + "crlite_enrolled": false, + "id": "ebd35018-c6ca-4fb3-863c-5433228a3dd0", + "last_modified": 1650920239156 + }, + { + "schema": 1650919748442, + "derHash": "38x3XGRNtKM61xKTQz9GPI4xBXziLLJn+dMaA1P0/C8=", + "subject": "CN=Amazon,OU=Server CA 0A,O=Amazon,C=US", + "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAwQTEPMA0GA1UEAxMGQW1hem9u", + "whitelist": false, + "attachment": { + "hash": "beb147abe96d6e343843d2e2fd729d58e42b2dab74a3c0ccc41530639168e721", + "size": 1666, + "filename": "tYU57KoTkhzNuA0400h1_eZHHFoVnZvu8vpvmZg71hE=.pem", + "location": "security-state-staging/intermediates/3383c131-2b81-4c4f-a58b-e6ef7e58221b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "tYU57KoTkhzNuA0400h1/eZHHFoVnZvu8vpvmZg71hE=", + "crlite_enrolled": false, + "id": "85f2978a-5169-4f2b-85c2-3dbe91a9bdca", + "last_modified": 1650920239147 + }, + { + "schema": 1650919743592, + "derHash": "HjVoI/5AwOqsKfntVGO3stscCItj67BYdqLmMcEId5g=", + "subject": "CN=QuoVadis Enterprise Trust CA 2 G4,O=QuoVadis Trustlink B.V.,C=NL", + "subjectDN": "MFsxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEqMCgGA1UEAwwhUXVvVmFkaXMgRW50ZXJwcmlzZSBUcnVzdCBDQSAyIEc0", + "whitelist": false, + "attachment": { + "hash": "756cc72bf46fca106a4ae94315fc04ea6bbe1b93e3229513d02875b33ca13f45", + "size": 2385, + "filename": "z-lEyVPfwY15LjMDGouWc4Jt0MFWaf2MpLOSN9mx9tM=.pem", + "location": "security-state-staging/intermediates/b498521b-e32b-43cc-aca3-07c4179af1b4.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "z+lEyVPfwY15LjMDGouWc4Jt0MFWaf2MpLOSN9mx9tM=", + "crlite_enrolled": false, + "id": "4e7a229c-6a33-40fa-b4ca-1c8e08a0c8ff", + "last_modified": 1650920239138 + }, + { + "schema": 1650919738871, + "derHash": "yX42zr8VgKsb2tYcHVOwXHWBnoXZNyFL5oTIWbItReA=", + "subject": "CN=vTrus ECC DV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", + "subjectDN": "MEkxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRwwGgYDVQQDExN2VHJ1cyBFQ0MgRFYgU1NMIENB", + "whitelist": false, + "attachment": { + "hash": "ef4575a1abe7f8492e2e0d89dbbf6e80b196e4b6dccd8bf4e48700ed4bcfec4a", + "size": 1183, + "filename": "gJ1It3GyfR5y0xbHIcRJPwjI6151kRqrGSR_W5v6jek=.pem", + "location": "security-state-staging/intermediates/1ad06f96-b5cb-4dea-81ba-f5a81180101b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "gJ1It3GyfR5y0xbHIcRJPwjI6151kRqrGSR/W5v6jek=", + "crlite_enrolled": false, + "id": "c0e7a130-9579-4974-b7d6-0bc6a242c1f0", + "last_modified": 1650920239103 + }, + { + "schema": 1650919736041, + "derHash": "7MDResMmOsahZNzbCPgtB+k/zqcj9muIsG7rqWeN8rs=", + "subject": "CN=QuoVadis RCA3G3 TLS CA,O=QuoVadis Limited,C=BM", + "subjectDN": "MEkxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMR8wHQYDVQQDDBZRdW9WYWRpcyBSQ0EzRzMgVExTIENB", + "whitelist": false, + "attachment": { + "hash": "fc4fc6584822834debd279e4a8481536c6bd26913df00dda003fbc4ed5facf42", + "size": 2369, + "filename": "HGG1eHmdWucI4rZV77-UwfI3jqj3-wm0NFUmWbyNZvs=.pem", + "location": "security-state-staging/intermediates/fbd31d9d-d3c2-4949-83c0-0356f6cf38df.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "HGG1eHmdWucI4rZV77+UwfI3jqj3+wm0NFUmWbyNZvs=", + "crlite_enrolled": false, + "id": "49a8f373-42db-4fd2-8cec-a33b0642a63b", + "last_modified": 1650920239085 + }, + { + "schema": 1650919741723, + "derHash": "IFFUt3ftxVpRRlhaXlTgVKcL5KrTuF0CMY2ie/gHrfE=", + "subject": "CN=Amazon,OU=Server CA 3A,O=Amazon,C=US", + "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAzQTEPMA0GA1UEAxMGQW1hem9u", + "whitelist": false, + "attachment": { + "hash": "05a3b22929a248fe09c8e080b25d2e2076a990ab5c629c24916624485d790547", + "size": 1008, + "filename": "fFO133kTXZr2GV72u3OrmMLImVC4krGS3_14TbklpBw=.pem", + "location": "security-state-staging/intermediates/ed143684-ab7b-440f-80d7-5cb002fd46e6.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "fFO133kTXZr2GV72u3OrmMLImVC4krGS3/14TbklpBw=", + "crlite_enrolled": false, + "id": "98c1807d-c60d-4481-ab30-ef5247fb140b", + "last_modified": 1650920239068 + }, + { + "schema": 1650919735069, + "derHash": "QMgm/bIroyovnbT5R3D3K4sdqcj/2nsR5vJ68kXIm14=", + "subject": "CN=Amazon Root CA 3,O=Amazon,C=US", + "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDM=", + "whitelist": false, + "attachment": { + "hash": "527804e0cdb3a780b57c0f3f7429e1a5b42984b3bd67157b9fda6ba75cdc6d0a", + "size": 1370, + "filename": "NqvDJlas_GRcYbcWE8S_IceH9cq77kg0jVhZeAPXq8k=.pem", + "location": "security-state-staging/intermediates/6aba445e-a993-4da1-8b31-508ae20809f9.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "NqvDJlas/GRcYbcWE8S/IceH9cq77kg0jVhZeAPXq8k=", + "crlite_enrolled": false, + "id": "e4674db5-3ed3-49af-8910-24de0606b82c", + "last_modified": 1650920239059 + }, + { + "schema": 1650919730302, + "derHash": "pTtcm7WtknA9xPd/5k2ROiOf03IHOkjiegSBWApWN8Q=", + "subject": "CN=vTrus OV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", + "subjectDN": "MEUxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRgwFgYDVQQDEw92VHJ1cyBPViBTU0wgQ0E=", + "whitelist": false, + "attachment": { + "hash": "4edc5bd03aede64fb9a23473cb654b555c969e2142043a263b82aeb3a59fe874", + "size": 2003, + "filename": "_AQe5lWT9xIwgAiIHcAT-pRj70-ckw8xE4qArEfIyd0=.pem", + "location": "security-state-staging/intermediates/3c8f7112-17b7-414d-a6f6-b6d0f9ca628e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "/AQe5lWT9xIwgAiIHcAT+pRj70+ckw8xE4qArEfIyd0=", + "crlite_enrolled": false, + "id": "47ec7101-8273-486d-82b7-c4b18c72c686", + "last_modified": 1650920239025 + }, + { + "schema": 1650919729415, + "derHash": "izWEZtZhJjEhIGRaWHWmpX48gdmEdqlnYEJEJU6sAPA=", + "subject": "CN=Amazon Root CA 2,O=Amazon,C=US", + "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDI=", + "whitelist": false, + "attachment": { + "hash": "099a90f379b0ecca696c3cde0f60b64211dbaafa0ce4ae4b1b13e1dc145c4f27", + "size": 1991, + "filename": "f0KW_FtqTjs108NpYj42SrGvOB2PpxIVM8nWxjPqJGE=.pem", + "location": "security-state-staging/intermediates/f7a184d3-d555-4bc5-bf51-b6cf5fd02d86.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "f0KW/FtqTjs108NpYj42SrGvOB2PpxIVM8nWxjPqJGE=", + "crlite_enrolled": false, + "id": "2d641b97-843d-4094-b881-81031cf6ed4b", + "last_modified": 1650920239016 + }, + { + "schema": 1650919759845, + "derHash": "ORIgcFt1vPPtPNSzYxIT9WnSz4ImEB4XB5mlNUqxKGE=", + "subject": "CN=Amazon Root CA 1,O=Amazon,C=US", + "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDE=", + "whitelist": false, + "attachment": { + "hash": "076400302106a1d71c433340807aa21af7fdcdd85ff586d57757cf6d6718dbc4", + "size": 1646, + "filename": "--MBgDH5WGvL9Bcn5Be30cRcL0f5O-NyoXuWtQdX1aI=.pem", + "location": "security-state-staging/intermediates/ba24dc88-716f-4abe-93f4-e880c36d57b8.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "++MBgDH5WGvL9Bcn5Be30cRcL0f5O+NyoXuWtQdX1aI=", + "crlite_enrolled": false, + "id": "c3a8d84d-8e96-4168-87eb-c44eb83e7053", + "last_modified": 1650920238973 + }, + { + "schema": 1650919758903, + "derHash": "BTHIb3hZWJOf3FOZJNOV0e+kCTZOaCfTq5h2MR/7J7A=", + "subject": "CN=QuoVadis Enterprise Trust CA 1 G3,O=QuoVadis Limited,C=BM", + "subjectDN": "MFQxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMSowKAYDVQQDDCFRdW9WYWRpcyBFbnRlcnByaXNlIFRydXN0IENBIDEgRzM=", + "whitelist": false, + "attachment": { + "hash": "0838a224858164040768ee9fb8bab6de6efb11294b58f2c5db9fea5788b39bc7", + "size": 2333, + "filename": "8ZpHrAG1eQIQZnOeYn-p9E7tqq_yc1fiaSaeKR1BY2I=.pem", + "location": "security-state-staging/intermediates/ce362e8f-6a48-4236-a1d6-2a63778041fc.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "8ZpHrAG1eQIQZnOeYn+p9E7tqq/yc1fiaSaeKR1BY2I=", + "crlite_enrolled": false, + "id": "59a0226b-255a-4648-b647-5ae17b95e143", + "last_modified": 1650920238964 + }, + { + "schema": 1650919757998, + "derHash": "OmbmSCEuYyH5TZ6rzJLAUuZ52ZLJmtRZak57ha3O5d4=", + "subject": "CN=QuoVadis RCA3G1 TLS CA,O=QuoVadis Limited,C=BM", + "subjectDN": "MEkxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMR8wHQYDVQQDDBZRdW9WYWRpcyBSQ0EzRzEgVExTIENB", + "whitelist": false, + "attachment": { + "hash": "e5c77c38ef33f161625bc3592afbf547db64bc8507aff887efbd2902cd674003", + "size": 2361, + "filename": "cDYpcfBIVfSGVjIXkR2jSnkBmuagMeyfAzJa6dOp_y4=.pem", + "location": "security-state-staging/intermediates/0143e551-4755-4a70-a0b6-a96811277ee2.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "cDYpcfBIVfSGVjIXkR2jSnkBmuagMeyfAzJa6dOp/y4=", + "crlite_enrolled": false, + "id": "c496ec4e-b18d-4f40-a77d-7e2e0cc924e4", + "last_modified": 1650920238938 + }, + { + "schema": 1650919754133, + "derHash": "h9zU3HRkCjIs0gVVJQbRvmTxJZYlgJZUSYa0hQvHJwY=", + "subject": "CN=Amazon Root CA 1,O=Amazon,C=US", + "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDE=", + "whitelist": false, + "attachment": { + "hash": "8f2766bb42744fe0fcf37f433c66191277a29d9bd4641cc4121ccf842ecf940c", + "size": 1646, + "filename": "--MBgDH5WGvL9Bcn5Be30cRcL0f5O-NyoXuWtQdX1aI=.pem", + "location": "security-state-staging/intermediates/d3d8d455-9864-48ea-8742-d535b58189aa.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "++MBgDH5WGvL9Bcn5Be30cRcL0f5O+NyoXuWtQdX1aI=", + "crlite_enrolled": false, + "id": "49bace65-a7b6-40f8-b913-cddadbdba9c3", + "last_modified": 1650920238920 + }, + { + "schema": 1650812270542, + "derHash": "Bp3y+JGdkgnQxSSla6EYHfbRu/xKphyfAdCS4tXDof0=", + "subject": "CN=MSFT BALT RS256 CA,O=Microsoft Corporation,C=US", + "subjectDN": "MEoxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xGzAZBgNVBAMTEk1TRlQgQkFMVCBSUzI1NiBDQQ==", + "whitelist": false, + "attachment": { + "hash": "b68175bda43c438ac536ee134774227b69c8479a249c97fc24ebcdc2efe126fa", + "size": 2028, + "filename": "pDM-S2FkRzB_xtTd9uAioSOPn-QW1bRg8ecQtY4-I1A=.pem", + "location": "security-state-staging/intermediates/ca4850cd-a81e-479d-ba75-2a7072c7f60d.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "pDM+S2FkRzB/xtTd9uAioSOPn+QW1bRg8ecQtY4+I1A=", + "crlite_enrolled": true, + "id": "f18528dd-6f56-46ab-942c-d0660c571a8d", + "last_modified": 1650855462570 + }, + { + "schema": 1650790673425, + "derHash": "dYlNTJTCLXKW7hn7RHYjJYwlkbFwMSiLs4aiCqHw4KY=", + "subject": "CN=NetLock Közjegyzői (Class A) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU", + "subjectDN": "MIGuMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE8MDoGA1UEAwwzTmV0TG9jayBLw7Z6amVneXrFkWkgKENsYXNzIEEpIFRhbsO6c8OtdHbDoW55a2lhZMOz", + "whitelist": false, + "attachment": { + "hash": "4327de015aac627d028d4696e3b582048933e2f87d179c261b01897e32b67a1d", + "size": 2190, + "filename": "RWiIGgLo9cnu9JGiGhnz5uw6FBH1Y5qDY4qGsl5Q9EM=.pem", + "location": "security-state-staging/intermediates/27099d75-dfc0-441a-a1de-81e112a1d6e5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "RWiIGgLo9cnu9JGiGhnz5uw6FBH1Y5qDY4qGsl5Q9EM=", + "crlite_enrolled": false, + "id": "a76d3004-9787-484d-a4d9-2e5555cd8b56", + "last_modified": 1650812270014 + }, + { + "schema": 1650661069134, + "derHash": "lp4yAFIOssaalmdYfm3U0LI/KPUQzBMXZwqO02E+vq0=", + "subject": "CN=DigitalTrust High Assurance CA G4 [Run by the Issuer],O=Digital Trust L.L.C.,C=AE", + "subjectDN": "MG0xCzAJBgNVBAYTAkFFMR0wGwYDVQQKExREaWdpdGFsIFRydXN0IEwuTC5DLjE/MD0GA1UEAww2RGlnaXRhbFRydXN0IEhpZ2ggQXNzdXJhbmNlIENBIEc0ICBbUnVuIGJ5IHRoZSBJc3N1ZXJd", + "whitelist": false, + "attachment": { + "hash": "e74dd2a02806fa7c508188e10a5f0c0712f1cfbccde8988e042626a766beecb4", + "size": 2507, + "filename": "LFyh5Bg1aFs3y7w1j2dwtnxqDbovX0i8cL9gYJC6PXw=.pem", + "location": "security-state-staging/intermediates/df91fee1-b72c-4071-bb40-85741d9a30db.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "LFyh5Bg1aFs3y7w1j2dwtnxqDbovX0i8cL9gYJC6PXw=", + "crlite_enrolled": false, + "id": "82e3caed-61a5-46f8-b0a5-e0e5548b3eaa", + "last_modified": 1650769066440 + }, + { + "schema": 1650553057777, + "derHash": "ODDbjqFSC2zfV+HgCl8Sl74R2eZDDINgcXYhL/hdLbg=", + "subject": "CN=TrustCor Enhanced Secure Site (CA2),OU=TrustCor Network,O=TrustCor Systems S. de R.L.,ST=Panama,C=PA", + "subjectDN": "MIGNMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xGTAXBgNVBAsMEFRydXN0Q29yIE5ldHdvcmsxLDAqBgNVBAMMI1RydXN0Q29yIEVuaGFuY2VkIFNlY3VyZSBTaXRlIChDQTIp", + "whitelist": false, + "attachment": { + "hash": "26631969fe5fbc543132a914eb2829ace13e9b418495495a837a47d8936c69b6", + "size": 2564, + "filename": "gTvKBlqs6VknFEiItiUhp5K_Oy0UnzZd7vVB6Ko3ZeE=.pem", + "location": "security-state-staging/intermediates/e49aa502-2469-4f4f-b00b-3d32c9f282e8.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "gTvKBlqs6VknFEiItiUhp5K/Oy0UnzZd7vVB6Ko3ZeE=", + "crlite_enrolled": false, + "id": "7f04f0ef-3fdc-4bfa-9cc5-c76e75f35add", + "last_modified": 1650661068590 + }, + { + "schema": 1650552524914, + "derHash": "iVeNcml6wlq8b204I4dEOWVBKsdEjxA8mx0Rq2OlVc0=", + "subject": "CN=GlobalSign Atlas R3 AlphaSSL CA 2022 Q3,O=Globalsign nv-sa,C=BE", + "subjectDN": "MFoxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxzaWduIG52LXNhMTAwLgYDVQQDEydHbG9iYWxTaWduIEF0bGFzIFIzIEFscGhhU1NMIENBIDIwMjIgUTM=", + "whitelist": false, + "attachment": { + "hash": "a80efbadc5730df2fa0157410ddb8d9b249da87dcb056e54b148b01e32fca2dc", + "size": 1642, + "filename": "u2PPfToTfxlnHMc8HYHgBrctBMaW9JogX77Hhq-zklU=.pem", + "location": "security-state-staging/intermediates/1a77e1c3-b927-44ab-96bf-2e72de1a7f04.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "u2PPfToTfxlnHMc8HYHgBrctBMaW9JogX77Hhq+zklU=", + "crlite_enrolled": false, + "id": "342d2e93-b4c7-4592-958a-ad2b8e43a772", + "last_modified": 1650553057229 + }, + { + "schema": 1650552522984, + "derHash": "qLKkUYqCoMwKYLL7iLlGVXrbT6WEWOx2gKd7sOUzTY0=", + "subject": "CN=GlobalSign Atlas ECCR5 DV ACME CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIEFDTUUgQ0EgMjAyMiBRMw==", + "whitelist": false, + "attachment": { + "hash": "b68666da50c073d1a8847151f9a236a66ca0857536769a5018002d926683f749", + "size": 1195, + "filename": "TevF5ohME1f-tSSfuVGlGBS73B9YmpAiEHCMSCfHeIw=.pem", + "location": "security-state-staging/intermediates/2a4369e4-03bd-4e4e-baaa-020ef0879241.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "TevF5ohME1f+tSSfuVGlGBS73B9YmpAiEHCMSCfHeIw=", + "crlite_enrolled": false, + "id": "d2cb52cc-1cbb-46b2-9d66-bee7fa46e823", + "last_modified": 1650553057220 + }, + { + "schema": 1650552521921, + "derHash": "KekwU3adTRurhBuPXCYDvtXguC8zlnCGlWaJIUbokUE=", + "subject": "CN=GlobalSign Atlas R3 OV TLS CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAyMDIyIFEz", + "whitelist": false, + "attachment": { + "hash": "b08a91fa2723f41383dda1dddc9ee5f8cad013137a51866aed652c3d5c4dfbd9", + "size": 1642, + "filename": "wn6PW6g02WtaumkExzEzNw1bo4Mzu0_IX3rY3SmY9t0=.pem", + "location": "security-state-staging/intermediates/ce376919-b9f5-4dd5-96e0-282cf246eb19.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "wn6PW6g02WtaumkExzEzNw1bo4Mzu0/IX3rY3SmY9t0=", + "crlite_enrolled": false, + "id": "6bd389d2-bf1e-4c0b-b78e-970beaaeb339", + "last_modified": 1650553057211 + }, + { + "schema": 1650552520053, + "derHash": "DtWqAGHQm3A+GzFQ+2Nnhwu/JFzO7U/gjy2+QgFyOo0=", + "subject": "CN=GlobalSign Atlas R46 EV TLS CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFI0NiBFViBUTFMgQ0EgMjAyMiBRMw==", + "whitelist": false, + "attachment": { + "hash": "81b835c34d222b602141a4c129500f2b1835fab3796a3c9532d5dfb2cb487b46", + "size": 2324, + "filename": "ZZ_BfqFFbhO7SSCmu78v8N2CE5ykK9-zz37sWEIWEXI=.pem", + "location": "security-state-staging/intermediates/6916706c-a910-4b05-9dc3-be264f846783.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "ZZ/BfqFFbhO7SSCmu78v8N2CE5ykK9+zz37sWEIWEXI=", + "crlite_enrolled": false, + "id": "2b253bb2-317f-47bb-a793-79a8ca184ca3", + "last_modified": 1650553057201 + }, + { + "schema": 1650552519107, + "derHash": "8G4sPQWvYIx7rLY2b3pHoBet7CL3Er1BczU5bLi1Vb4=", + "subject": "CN=GlobalSign Atlas R3 OV ACME CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIE9WIEFDTUUgQ0EgMjAyMiBRMw==", + "whitelist": false, + "attachment": { + "hash": "a722c9f25470083db4069d629e106f0ca8de6caeaeceffd3c3af14cde8bc7220", + "size": 1642, + "filename": "v-6TVbKbKyGXPLB9TKvsbakeEhe-pi-eaT9sF4mgGr0=.pem", + "location": "security-state-staging/intermediates/884d150d-14aa-4b66-86e5-b81eab371750.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "v+6TVbKbKyGXPLB9TKvsbakeEhe+pi+eaT9sF4mgGr0=", + "crlite_enrolled": false, + "id": "9090bd44-30a3-4269-9ea1-3973dddf9033", + "last_modified": 1650553057192 + }, + { + "schema": 1650552523929, + "derHash": "5MLYxuVOzhyZajBZcrGuCwZPEFvgbP1ylf0trjO5fho=", + "subject": "CN=GlobalSign Atlas ECCR5 OV ACME CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIEFDTUUgQ0EgMjAyMiBRMw==", + "whitelist": false, + "attachment": { + "hash": "5cc2b94fc8e9c1b123bee963843ba94aff76a64649883767f1338c8d7f44f4e2", + "size": 1195, + "filename": "ipI_vvoPazVvEdDn9l8fFY4jeKtvuZSfWutFCu1kIkk=.pem", + "location": "security-state-staging/intermediates/74dbf254-96d5-401a-b9a0-4d408e850b5f.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "ipI/vvoPazVvEdDn9l8fFY4jeKtvuZSfWutFCu1kIkk=", + "crlite_enrolled": false, + "id": "ee7ae6b9-2371-4662-8209-79d4825ea154", + "last_modified": 1650553057183 + }, + { + "schema": 1650552518162, + "derHash": "615sGuMKD5uMV2kQW6nWiC5KzLpeLy9yrDiKL6yg/vM=", + "subject": "CN=GlobalSign Atlas R3 DV ACME CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIERWIEFDTUUgQ0EgMjAyMiBRMw==", + "whitelist": false, + "attachment": { + "hash": "48d7fb2872b9764b7517d7ec845608c055a064c655972e36e082a18069737f85", + "size": 1642, + "filename": "b5e0CjH-QPTCZha67VgJSQ3Uj1lumilZfgmxcw6hyi8=.pem", + "location": "security-state-staging/intermediates/a69121a6-44ac-4122-bd99-50cdfae0ac05.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "b5e0CjH+QPTCZha67VgJSQ3Uj1lumilZfgmxcw6hyi8=", + "crlite_enrolled": false, + "id": "e982faae-a5c3-4f6b-aa5e-e7c4b4e46e93", + "last_modified": 1650553057174 + }, + { + "schema": 1650552521002, + "derHash": "Etz/m2AmnjtUbD/7fnS6WOt+68v1lWdx94T3pYLC6no=", + "subject": "CN=GlobalSign Atlas R3 DV TLS CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIERWIFRMUyBDQSAyMDIyIFEz", + "whitelist": false, + "attachment": { + "hash": "bcb43fbd11578b570d27776e300f87eb5525df0ecfb473a6e4050c9252faaaf8", + "size": 1642, + "filename": "0OyeXCoPbY19oU2881iW7i1bAu8Ni-HMKGN08r_G5XI=.pem", + "location": "security-state-staging/intermediates/b5d214b9-02bf-46d5-8c86-4000177b8e47.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "0OyeXCoPbY19oU2881iW7i1bAu8Ni+HMKGN08r/G5XI=", + "crlite_enrolled": false, + "id": "0102afe2-e620-4086-8721-bfcf4279d0af", + "last_modified": 1650553057165 + }, + { + "schema": 1650552515284, + "derHash": "DJJZS9OUtIh6HWbsXmMf+tO6Swf+LrbRXS9f7kyQxFQ=", + "subject": "CN=GlobalSign Atlas R6 EV TLS CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFI2IEVWIFRMUyBDQSAyMDIyIFEz", + "whitelist": false, + "attachment": { + "hash": "8586ac0ab17dd90efb094612944d800faae022383e152b1aaeba033a284bc974", + "size": 2333, + "filename": "r0fgmmfQcPt1Okq9xY0UwyyuDUtKFs2nVQY9k68RyzY=.pem", + "location": "security-state-staging/intermediates/e10cbedd-0720-4272-9958-97e576da4e17.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "r0fgmmfQcPt1Okq9xY0UwyyuDUtKFs2nVQY9k68RyzY=", + "crlite_enrolled": false, + "id": "0f272ddb-4d19-4947-ba8f-5f5bddcf5046", + "last_modified": 1650553057156 + }, + { + "schema": 1650552514303, + "derHash": "5sGNbQCMcSswF94a52WUGJgyVLAd5Ila6R87Kf9IJBc=", + "subject": "CN=GlobalSign Atlas ECCR5 DV TLS CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIFRMUyBDQSAyMDIyIFEz", + "whitelist": false, + "attachment": { + "hash": "2a9c7dc537e9412fdafb13b4b2896b77ed6d2a7346610bce882f1ab2df5ac664", + "size": 1195, + "filename": "1OU4v4R9chWAHoW7_Lvqm0WW_68bV_okQ8VnVf6zQWY=.pem", + "location": "security-state-staging/intermediates/87b90dc7-c168-45d1-86f9-3a1dab597af5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "1OU4v4R9chWAHoW7/Lvqm0WW/68bV/okQ8VnVf6zQWY=", + "crlite_enrolled": false, + "id": "005ef0fb-4b58-42d2-97cd-606c8ef01974", + "last_modified": 1650553057146 + }, + { + "schema": 1650552517202, + "derHash": "EAU3DtJ2sM7zkkTp5pnOSAe/mt4Fv6WfJjgJ+0YGtyw=", + "subject": "CN=Prodrive Technologies GCC R3 OV TLS CA 2022,O=Prodrive Technologies B.V.,C=NL", + "subjectDN": "MGgxCzAJBgNVBAYTAk5MMSMwIQYDVQQKExpQcm9kcml2ZSBUZWNobm9sb2dpZXMgQi5WLjE0MDIGA1UEAxMrUHJvZHJpdmUgVGVjaG5vbG9naWVzIEdDQyBSMyBPViBUTFMgQ0EgMjAyMg==", + "whitelist": false, + "attachment": { + "hash": "6340c990e40558efb9b4997feecb901894ab85f7fd56125b77a9af382a4b527f", + "size": 1662, + "filename": "tahHgXS9JtW4UDcnvNe8n5iWicFpEkCKocabIv7CHMA=.pem", + "location": "security-state-staging/intermediates/3d30febd-5714-457a-af91-9ac17d3d6918.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "tahHgXS9JtW4UDcnvNe8n5iWicFpEkCKocabIv7CHMA=", + "crlite_enrolled": false, + "id": "e9fd6e58-e869-4d61-bb86-61fd93c8abbd", + "last_modified": 1650553057137 + }, + { + "schema": 1650552513297, + "derHash": "5owzdvAQIZzKFOM38zGD752GHlc6nXYofzqq1NBPo48=", + "subject": "CN=GlobalSign Atlas ECCR5 OV TLS CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIFRMUyBDQSAyMDIyIFEz", + "whitelist": false, + "attachment": { + "hash": "b3e37a14bbfdd2d3f69e8f01b9a816d95a7479b8c14cf839df6fdfb1453ec883", + "size": 1195, + "filename": "ohmQ9W-FUxsSXCYCKjia3ARHzcJlH8EH06XNXd2hlWs=.pem", + "location": "security-state-staging/intermediates/a8f2ee36-6254-44e6-aa22-e580e522c69e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "ohmQ9W+FUxsSXCYCKjia3ARHzcJlH8EH06XNXd2hlWs=", + "crlite_enrolled": false, + "id": "07905fa8-fe73-4334-805d-6a28fa6350b0", + "last_modified": 1650553057127 + }, + { + "schema": 1650552516241, + "derHash": "QAbN/22NUtwJD/U4K5wwzqjMUAXfLV6CA81nkheXdQ0=", + "subject": "CN=GlobalSign Atlas E46 EV TLS CA 2022 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIEU0NiBFViBUTFMgQ0EgMjAyMiBRMw==", + "whitelist": false, + "attachment": { + "hash": "5b93c9596b472129b6e4d110929b25bdb6fc53e792138971181cc78dd845f257", + "size": 1179, + "filename": "s9qNeP1oAz3ML21RIr9Nd_nR1L1bcapzMKpZ_2MqKe0=.pem", + "location": "security-state-staging/intermediates/c23322e4-6c40-459f-aa50-1c2e9702b06b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "s9qNeP1oAz3ML21RIr9Nd/nR1L1bcapzMKpZ/2MqKe0=", + "crlite_enrolled": false, + "id": "961ef95e-bbf4-47de-89fb-52ef4fe4cdf6", + "last_modified": 1650553057118 + }, + { + "schema": 1650070130036, + "derHash": "k45SZCUB3RbiPYrr+5frPDslYvUMMkFEw5CUayloSn4=", + "subject": "CN=Telekom Security DV RSA CA 22,O=Deutsche Telekom Security GmbH,C=DE", + "subjectDN": "MF4xCzAJBgNVBAYTAkRFMScwJQYDVQQKDB5EZXV0c2NoZSBUZWxla29tIFNlY3VyaXR5IEdtYkgxJjAkBgNVBAMMHVRlbGVrb20gU2VjdXJpdHkgRFYgUlNBIENBIDIy", + "whitelist": false, + "attachment": { + "hash": "2630819dec418a1e189974ade9765910f477438175848468a64894d5bbda8f67", + "size": 2113, + "filename": "PQgCR2Tyj2gl6d2EvsaoRq_hO9GQc1sBcmN7QkGUKf4=.pem", + "location": "security-state-staging/intermediates/0d78df23-c84c-4c49-8425-168287f3071c.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "PQgCR2Tyj2gl6d2EvsaoRq/hO9GQc1sBcmN7QkGUKf4=", + "crlite_enrolled": true, + "id": "159ab7e9-8e9c-4450-a603-927a7ba6336a", + "last_modified": 1650077838684 + }, + { + "schema": 1650070129502, + "derHash": "Lf5H4USrs5+f5FHOzTUtmpvSiYI1HotlJP6xAdurH+w=", + "subject": "CN=GlobalSign Atlas R3 DV ACME CA 2022 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIERWIEFDTUUgQ0EgMjAyMiBRMg==", + "whitelist": false, + "attachment": { + "hash": "63657216ab2e0265cbcbce85e9b2783ccd35376d4e7c0f127fcac181251aa5ed", + "size": 1642, + "filename": "_1VRS6Ha0tRFo_8a_6PqqF4wtj16qRxOO4rXTjqDNFk=.pem", + "location": "security-state-staging/intermediates/c70a5a54-9017-4d7c-814c-c431416e70eb.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "/1VRS6Ha0tRFo/8a/6PqqF4wtj16qRxOO4rXTjqDNFk=", + "crlite_enrolled": true, + "id": "681f5a20-f291-4509-bec3-6adbf5c05429", + "last_modified": 1650077838672 + }, + { + "schema": 1650070130566, + "derHash": "qBav/3RuoPCgoGTAQy+dK30M557C0emUD0oYaiUYIoQ=", + "subject": "CN=GlobalSign Atlas ECCR5 OV TLS CA 2022 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIFRMUyBDQSAyMDIyIFEy", + "whitelist": false, + "attachment": { + "hash": "049fc8dce345f116d37deb30e65527acd5a647e1de6e9d53685b97fe4fe7c5fe", + "size": 1195, + "filename": "TdoclaY2HEKPADeH2W-4kosHzm7UvYAafcidCBnsRDA=.pem", + "location": "security-state-staging/intermediates/6c42ca37-a352-4db9-b44d-e1a577fb1168.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "TdoclaY2HEKPADeH2W+4kosHzm7UvYAafcidCBnsRDA=", + "crlite_enrolled": true, + "id": "6de1a4fe-3539-4329-9838-cb4883353866", + "last_modified": 1650077838660 + }, + { + "schema": 1650070130388, + "derHash": "c1zDhuwaguZXpbRRyUlZYR08fQy7H9nZ7bQscZL4Rjo=", + "subject": "CN=GlobalSign Atlas R3 DV TLS CA 2022 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIERWIFRMUyBDQSAyMDIyIFEy", + "whitelist": false, + "attachment": { + "hash": "5dc3ef9866bfcfb8743ef46140622103cd877f3ecd2310029ef8d8ff09b17dd4", + "size": 1642, + "filename": "7Zgd-tc1DR60EUxxu86y2PNtnPLUCDONUQJhN35HWIU=.pem", + "location": "security-state-staging/intermediates/63da4365-743a-4755-bfb8-beb8ff31e794.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "7Zgd+tc1DR60EUxxu86y2PNtnPLUCDONUQJhN35HWIU=", + "crlite_enrolled": true, + "id": "12cc99be-332a-4aef-af43-25fe8420b210", + "last_modified": 1650077838648 + }, + { + "schema": 1650070129680, + "derHash": "RfGFRTDsA3qqy0st6bTQ/b/GGIir1O4EFBg9meYEN6w=", + "subject": "CN=GlobalSign Atlas R3 AlphaSSL CA 2022 Q2,O=Globalsign nv-sa,C=BE", + "subjectDN": "MFoxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxzaWduIG52LXNhMTAwLgYDVQQDEydHbG9iYWxTaWduIEF0bGFzIFIzIEFscGhhU1NMIENBIDIwMjIgUTI=", + "whitelist": false, + "attachment": { + "hash": "0f455b2160c81e5b49b03b477baaa020d52928d16a4fe13504fca71f176fcf2e", + "size": 1642, + "filename": "6bop5gsmVRhy033XqsI4UKTek3IMHHpiLVeicdR_Luw=.pem", + "location": "security-state-staging/intermediates/12de76d7-2251-470d-8c62-aebb1b54b3d5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "6bop5gsmVRhy033XqsI4UKTek3IMHHpiLVeicdR/Luw=", + "crlite_enrolled": true, + "id": "18283798-9f59-4d62-9a34-f643b9b7a76f", + "last_modified": 1650077838634 + }, + { + "schema": 1650070130741, + "derHash": "r9s8OW2F0Z++WCBt8GWermFMSrGPXM8gt4Oq8LvpagM=", + "subject": "CN=GlobalSign Atlas R3 OV TLS CA 2022 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAyMDIyIFEy", + "whitelist": false, + "attachment": { + "hash": "810129eb69110a8c071f593ade366adbaa81a2420d3531e8f862ea7a5b423c11", + "size": 1642, + "filename": "VkNfITzp8T2xdmHOxT0ZZUfHySNBzxU2GWFfqmC3oLE=.pem", + "location": "security-state-staging/intermediates/8ae25e5b-e31b-4d80-be59-24ed2ecd5386.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "VkNfITzp8T2xdmHOxT0ZZUfHySNBzxU2GWFfqmC3oLE=", + "crlite_enrolled": true, + "id": "6982bfcf-221f-44f5-b27e-d4af6dd1ab4f", + "last_modified": 1650077838620 + }, + { + "schema": 1650070129316, + "derHash": "Iy9jZ89WHgDIPhgKn8qFRrN3H7RQ68tKBSb4NJyMoTk=", + "subject": "CN=Entrust Certification Authority - L1E,OU=www.entrust.net/rpa is incorporated by reference+OU=(c) 2009 Entrust\\, Inc.,O=Entrust\\, Inc.,C=US", + "subjectDN": "MIGxMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjE5MDcGA1UECxMwd3d3LmVudHJ1c3QubmV0L3JwYSBpcyBpbmNvcnBvcmF0ZWQgYnkgcmVmZXJlbmNlMR8wHQYDVQQLExYoYykgMjAwOSBFbnRydXN0LCBJbmMuMS4wLAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gTDFF", + "whitelist": false, + "attachment": { + "hash": "fb13e64f68c20f1be87aefb4a955348c9604a4103426723d49f8029f9fbcc797", + "size": 1833, + "filename": "HeMEDmta9acr_zmjHkdP_dKlW5RaqBlmADFOqTG56eA=.pem", + "location": "security-state-staging/intermediates/524fa4a4-38af-437a-a31e-038e5aaf46ef.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "HeMEDmta9acr/zmjHkdP/dKlW5RaqBlmADFOqTG56eA=", + "crlite_enrolled": true, + "id": "7a058667-a078-4b7b-a38e-adb1e3e95b39", + "last_modified": 1650077838604 + }, + { + "schema": 1650070129859, + "derHash": "yikDieDYxipAg/Yoo59S/j84tzGZz/r3wDcjeKRA+2o=", + "subject": "CN=Entrust Certification Authority - L1M,OU=See www.entrust.net/legal-terms+OU=(c) 2014 Entrust\\, Inc. - for authorized use only,O=Entrust\\, Inc.,C=US", + "subjectDN": "MIG6MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTQgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gTDFN", + "whitelist": false, + "attachment": { + "hash": "02e23f9b06e438417e4e71c8b9fb42a8e2da31ad266ad1ca50792fd36d7251b9", + "size": 1829, + "filename": "VYZwGiJkq3NNo1YRI2RGiSTI1mqTWG8zDcRf1_KAN6I=.pem", + "location": "security-state-staging/intermediates/75652090-686b-4e77-99f1-1f4effac785a.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "VYZwGiJkq3NNo1YRI2RGiSTI1mqTWG8zDcRf1/KAN6I=", + "crlite_enrolled": true, + "id": "e7ad797a-d41f-4eb9-b47a-1af34311a9d1", + "last_modified": 1650077838590 + }, + { + "schema": 1650070130208, + "derHash": "Q6cONiC8RSM52HiqaPLlNYrEYHrHIsTXfTxNLCBPf3E=", + "subject": "CN=DigiCert Assured ID G2 TLS RSA4096 SHA256 2022 CA1,O=DigiCert\\, Inc.,C=US", + "subjectDN": "MGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgQXNzdXJlZCBJRCBHMiBUTFMgUlNBNDA5NiBTSEEyNTYgMjAyMiBDQTE=", + "whitelist": false, + "attachment": { + "hash": "fce800188289208c71c42766d767c63249b981ca723bba46e543fa2f5d87596c", + "size": 2093, + "filename": "Ld64SpoeXjpLjc-_7Wahk6p5-KVyzVSUptciuWsyxeY=.pem", + "location": "security-state-staging/intermediates/df08562c-f117-43d1-a40a-3997497594ad.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Ld64SpoeXjpLjc+/7Wahk6p5+KVyzVSUptciuWsyxeY=", + "crlite_enrolled": true, + "id": "55420fa1-1fcf-457c-ae91-dd6b8197e62b", + "last_modified": 1650077838575 + }, + { + "schema": 1649973510479, + "derHash": "2OGKZa94RUhUyqKPsvXnm1fsFB8BBCO8yKcav8BJbCw=", + "subject": "CN=GENIOUS RSA Extended Validation Secure Server CA,OU=Controlled by Sectigo exclusively for Genious Communications,O=Genious Communications,L=Marrakech,ST=Marrakech,C=MA", + "subjectDN": "MIHYMQswCQYDVQQGEwJNQTESMBAGA1UECBMJTWFycmFrZWNoMRIwEAYDVQQHEwlNYXJyYWtlY2gxHzAdBgNVBAoTFkdlbmlvdXMgQ29tbXVuaWNhdGlvbnMxRTBDBgNVBAsTPENvbnRyb2xsZWQgYnkgU2VjdGlnbyBleGNsdXNpdmVseSBmb3IgR2VuaW91cyBDb21tdW5pY2F0aW9uczE5MDcGA1UEAxMwR0VOSU9VUyBSU0EgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB", + "whitelist": false, + "attachment": { + "hash": "dc505a925299ceeea43e708019d0fb1086a320d0a035fb0cf585b7e376d7e4f6", + "size": 2304, + "filename": "ImErDX6kNNxXp53lr4QRD49owJiK0A8orzjdda8pDb0=.pem", + "location": "security-state-staging/intermediates/ae100f8d-c411-4912-908b-ef0fe59832c9.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "ImErDX6kNNxXp53lr4QRD49owJiK0A8orzjdda8pDb0=", + "crlite_enrolled": true, + "id": "51c58311-bdec-4aab-a6cb-4a4f8e10e262", + "last_modified": 1650077838556 + }, + { + "schema": 1649796517769, + "derHash": "P94NNuAmtujr4sKIg2B8hlHeEL1sH8rTZeVg9OovOwM=", + "subject": "CN=Entrust Root Certification Authority - EC1,OU=See www.entrust.net/legal-terms+OU=(c) 2012 Entrust\\, Inc. - for authorized use only,O=Entrust\\, Inc.,C=US", + "subjectDN": "MIG/MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTIgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTMwMQYDVQQDEypFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBFQzE=", + "whitelist": false, + "attachment": { + "hash": "fa84991015956f299a21164f4a77c8da26802bb7bac4207eb696cc086ce715b0", + "size": 1577, + "filename": "_qK31kX7pz11PB7Jp4cMQOH3sMVh6Se5hb9xGGbjbyI=.pem", + "location": "security-state-staging/intermediates/df5a27df-b846-4677-a6cf-a3cff5a7c5fd.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "/qK31kX7pz11PB7Jp4cMQOH3sMVh6Se5hb9xGGbjbyI=", + "crlite_enrolled": false, + "id": "d033c52e-0329-43dc-8844-1181a6da4c4c", + "last_modified": 1649973509957 + }, + { + "schema": 1649796515890, + "derHash": "axQ8IAXVU5zCLqtfdy2yqf6HRn/v+gf88Kn30oJ0yno=", + "subject": "CN=Entrust Root Certification Authority - G2,OU=See www.entrust.net/legal-terms+OU=(c) 2009 Entrust\\, Inc. - for authorized use only,O=Entrust\\, Inc.,C=US", + "subjectDN": "MIG+MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQDEylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMg==", + "whitelist": false, + "attachment": { + "hash": "d1674b1f7b1aef60543ae1256c7298ed99b5016d5a49c8ba8b9745c679003a0f", + "size": 1792, + "filename": "du6FkDdMcVQ3u8prumAo6t3i3G27uMP2EOhR8R0at_U=.pem", + "location": "security-state-staging/intermediates/4edf9367-ee46-443f-859e-c6bca2b52092.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "du6FkDdMcVQ3u8prumAo6t3i3G27uMP2EOhR8R0at/U=", + "crlite_enrolled": false, + "id": "d1b5e055-c4f8-4f16-96cf-f0ef4ee6496e", + "last_modified": 1649973509938 + }, + { + "schema": 1649860690936, + "derHash": "d81ReEppPZSC5+ppTkBTvP2d9lWA+84UsqdSfAgYA+E=", + "subject": "CN=DigiCert Assured ID TLS CA G2,O=DigiCert Inc,C=US", + "subjectDN": "MEwxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJjAkBgNVBAMTHURpZ2lDZXJ0IEFzc3VyZWQgSUQgVExTIENBIEcy", + "whitelist": false, + "attachment": { + "hash": "38c26b5824725648f58682db859677ed5f482b8a98476190e2f4b5cea965ce52", + "size": 1918, + "filename": "7DHaE3Q3dQ9k5S7DaYbXog4BK-Oj492ta3kc2xRJ04s=.pem", + "location": "security-state-staging/intermediates/84f2426b-c265-4fe5-8bcc-09e6d612433c.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "7DHaE3Q3dQ9k5S7DaYbXog4BK+Oj492ta3kc2xRJ04s=", + "crlite_enrolled": false, + "id": "d8d54086-08a6-43e4-94b4-1d46de796b92", + "last_modified": 1649973509799 + }, + { + "schema": 1649861371015, + "derHash": "E0XC05rktlzKceiOmispxx3JE/lS6TWoErAE26eueVc=", + "subject": "CN=ACCVCA-110,OU=PKIACCV,O=ACCV,C=ES", + "subjectDN": "MEMxEzARBgNVBAMMCkFDQ1ZDQS0xMTAxEDAOBgNVBAsMB1BLSUFDQ1YxDTALBgNVBAoMBEFDQ1YxCzAJBgNVBAYTAkVT", + "whitelist": false, + "attachment": { + "hash": "e6da6a137d62a7acc06ba43bbecbca249317995ef2a5821be7c4c3e4904d11cd", + "size": 2649, + "filename": "qX1E174XIirdC_7IZnHG6ACm0iCltwbZSr_U507C-Ck=.pem", + "location": "security-state-staging/intermediates/27528fc3-b963-415a-a99a-4f327d7d7c83.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "qX1E174XIirdC/7IZnHG6ACm0iCltwbZSr/U507C+Ck=", + "crlite_enrolled": false, + "id": "4dff9826-c4f5-4bad-9c0b-ef5d5c0bc30d", + "last_modified": 1649973509688 + }, + { + "schema": 1649947717604, + "derHash": "6TJ6NHy+HLlM3JqlTLMbbkPWiWjRfQnOMmoJG/wvCxE=", + "subject": "CN=ACCVCA-110,OU=PKIACCV,O=ACCV,C=ES", + "subjectDN": "MEMxEzARBgNVBAMMCkFDQ1ZDQS0xMTAxEDAOBgNVBAsMB1BLSUFDQ1YxDTALBgNVBAoMBEFDQ1YxCzAJBgNVBAYTAkVT", + "whitelist": false, + "attachment": { + "hash": "88d175177fc311fc5ad5e439d61dfabfbe6a0cc3dbf7be58654a104156ba2dae", + "size": 2686, + "filename": "qX1E174XIirdC_7IZnHG6ACm0iCltwbZSr_U507C-Ck=.pem", + "location": "security-state-staging/intermediates/7b9e7264-b0e3-4c9e-bda1-908a922c5b3f.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "qX1E174XIirdC/7IZnHG6ACm0iCltwbZSr/U507C+Ck=", + "crlite_enrolled": false, + "id": "772a5e91-e4ab-4bc1-b2a7-9d88c0c7e9bf", + "last_modified": 1649973509629 + }, + { + "schema": 1649292517069, + "derHash": "AYGythcxeVYudWMjRAN8pSMBhhin9xaCaaPrhTZ/91w=", + "subject": "CN=DigiCert Assured ID Grid TLS RSA2048 SHA256 2022 CA1,O=DigiCert\\, Inc.,C=US", + "subjectDN": "MGUxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE9MDsGA1UEAxM0RGlnaUNlcnQgQXNzdXJlZCBJRCBHcmlkIFRMUyBSU0EyMDQ4IFNIQTI1NiAyMDIyIENBMQ==", + "whitelist": false, + "attachment": { + "hash": "7f8f0eacf04c02686bfe08a2ccff1727606d8cbdee3d30408f7ee475b68600a3", + "size": 1804, + "filename": "_SfSGxeP1MQb2mpICOc8KzfYSH77KMzIMbCgylDKpPc=.pem", + "location": "security-state-staging/intermediates/4e91bcaa-5473-4b40-8c61-3bb878424076.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "/SfSGxeP1MQb2mpICOc8KzfYSH77KMzIMbCgylDKpPc=", + "crlite_enrolled": true, + "id": "a5acb099-b5f7-485c-a851-34cf19a7efc6", + "last_modified": 1649300241949 + }, + { + "schema": 1649235469232, + "derHash": "XLnp3jKxh+QLoU/fIA/aYse0+/iNZPd84C3W6+a8wbA=", + "subject": "CN=Hongkong Post e-Cert CA 1 - 15,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK", + "subjectDN": "MHYxCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEnMCUGA1UEAxMeSG9uZ2tvbmcgUG9zdCBlLUNlcnQgQ0EgMSAtIDE1", + "whitelist": false, + "attachment": { + "hash": "b1dec54f97f654e9b417aea0e0d23a22852001ddaf0a4b9b7a4c8d05cb468de6", + "size": 1743, + "filename": "nJWwmV0E5pEw1Pt8yzqltuQOo94m9iy9I53BzzbPaqE=.pem", + "location": "security-state-staging/intermediates/6388fa41-6293-4a28-b765-3fe9a3137870.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "nJWwmV0E5pEw1Pt8yzqltuQOo94m9iy9I53BzzbPaqE=", + "crlite_enrolled": true, + "id": "136210c9-de18-49a4-bbd8-4b85d01b0cfc", + "last_modified": 1649300241929 + }, + { + "schema": 1649292517278, + "derHash": "aezbwxR/WB39y1Itne+yYLJnhK1JVcdOalJSLMxMRAg=", + "subject": "CN=Hongkong Post e-Cert SSL CA 3 - 17,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK", + "subjectDN": "MHoxCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDErMCkGA1UEAxMiSG9uZ2tvbmcgUG9zdCBlLUNlcnQgU1NMIENBIDMgLSAxNw==", + "whitelist": false, + "attachment": { + "hash": "d819d0da20d45c8f93a0efb0d37fd86e274107134845bf5480d9b3697bb0711d", + "size": 2093, + "filename": "SUe0dPoWC5QKoJyXReRB3haevgxOd9ZVd5sn7N65_DY=.pem", + "location": "security-state-staging/intermediates/bfa15d55-724f-433e-8e8c-57f115fe9319.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "SUe0dPoWC5QKoJyXReRB3haevgxOd9ZVd5sn7N65/DY=", + "crlite_enrolled": true, + "id": "e04bc9de-e9d2-45e5-a6d5-3e29309132df", + "last_modified": 1649300241917 + }, + { + "schema": 1649292517458, + "derHash": "wY1Tv5hk3Qm8vKz9Zy4lZtTIH2iJ42313UJcBCEdB2M=", + "subject": "CN=Hongkong Post e-Cert EV SSL CA 3 - 17,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK", + "subjectDN": "MH0xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEuMCwGA1UEAxMlSG9uZ2tvbmcgUG9zdCBlLUNlcnQgRVYgU1NMIENBIDMgLSAxNw==", + "whitelist": false, + "attachment": { + "hash": "e4408c6b03e1deb0777ad20ea8b3466779565bcb2d92a17de6ac350bdaa5de18", + "size": 2097, + "filename": "shxxZc44F1hF3pjKzr0Oaoq-CwRFBKIr0_noGHUYkjA=.pem", + "location": "security-state-staging/intermediates/bdeda58e-1628-4e55-87fb-0b68db6affa9.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "shxxZc44F1hF3pjKzr0Oaoq+CwRFBKIr0/noGHUYkjA=", + "crlite_enrolled": true, + "id": "88070242-b7b9-4c79-870e-7b137524b1dc", + "last_modified": 1649300241905 + }, + { + "schema": 1648997868644, + "derHash": "02gLTj+I2x9bud3b+2v/MZx4Dj2fRO4k7BmVq0LWkU8=", + "subject": "CN=GIAG4x,O=Google Trust Services LLC,C=US", + "subjectDN": "MEIxCzAJBgNVBAYTAlVTMSIwIAYDVQQKExlHb29nbGUgVHJ1c3QgU2VydmljZXMgTExDMQ8wDQYDVQQDEwZHSUFHNHg=", + "whitelist": false, + "attachment": { + "hash": "7863677df584a77841650e5ad47e7ef8f7c42807c9d69969881133b275b19a50", + "size": 1991, + "filename": "AAGolo0N1iZa5uuvm02csZnkuZs8hvI-HRLhAHtNhqk=.pem", + "location": "security-state-staging/intermediates/d7339913-5a00-4ca1-8efa-d57dac665d41.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "AAGolo0N1iZa5uuvm02csZnkuZs8hvI+HRLhAHtNhqk=", + "crlite_enrolled": false, + "id": "339940cb-d4d8-4caa-88ba-b807e82edbbc", + "last_modified": 1649041064889 + }, + { + "schema": 1648781340337, + "derHash": "F2rr8pcr1vRxee3j3mOEixVDtFrilUvqRRhbFSU3ucQ=", + "subject": "CN=Hongkong Post Root CA 3,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK", + "subjectDN": "MG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9uZ2tvbmcgUG9zdCBSb290IENBIDM=", + "whitelist": false, + "attachment": { + "hash": "b4ba7c31c249eb874c39b6a3e78147e6623a6ccbab1429cce2313067069229b7", + "size": 2020, + "filename": "JUHlO6WzsHrL5wl6xKA-BAwRz3ptSmfLIT1Vi1AWegY=.pem", + "location": "security-state-staging/intermediates/39b3dcba-a7a7-4969-9493-b50803c7a8a2.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "JUHlO6WzsHrL5wl6xKA+BAwRz3ptSmfLIT1Vi1AWegY=", + "crlite_enrolled": false, + "id": "842fdd33-8665-48df-a734-9fa716c62edb", + "last_modified": 1648781848995 + }, + { + "schema": 1648781339361, + "derHash": "FEIqG9WpHtunOXuGmJIjabavaYT/h6z2E52qkZ55WhQ=", + "subject": "CN=Hongkong Post e-Cert CA 1 - 14,O=Hongkong Post,C=HK", + "subjectDN": "ME4xCzAJBgNVBAYTAkhLMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MScwJQYDVQQDEx5Ib25na29uZyBQb3N0IGUtQ2VydCBDQSAxIC0gMTQ=", + "whitelist": false, + "attachment": { + "hash": "5a4d38e1effb5367e3fd8c4536f7e3be9e065be0cb93778e4484d32658a3c99c", + "size": 1626, + "filename": "vSKE_tMDVyGX2f0WYoCAXCvfnFi2nosboVhJtpmvc10=.pem", + "location": "security-state-staging/intermediates/85cc6392-76ad-4ab9-8327-9f8d7cbb9b9a.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "vSKE/tMDVyGX2f0WYoCAXCvfnFi2nosboVhJtpmvc10=", + "crlite_enrolled": false, + "id": "a4269288-d28d-456b-84f5-cdd8b22a22d5", + "last_modified": 1648781848986 + }, + { + "schema": 1648667430650, + "derHash": "XScMtO/1h61s0Xyytg2QhKFT130qp5oss9sd25BGhPU=", + "subject": "CN=DigiCert High Assurance TLS Hybrid ECC SHA256 2020 CA1,O=DigiCert\\, Inc.,C=US", + "subjectDN": "MGcxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE/MD0GA1UEAxM2RGlnaUNlcnQgSGlnaCBBc3N1cmFuY2UgVExTIEh5YnJpZCBFQ0MgU0hBMjU2IDIwMjAgQ0Ex", + "whitelist": false, + "attachment": { + "hash": "3ea69b8dafeb8e68666332244529451eccd6e970a91f738b5ddac122f8ad34d2", + "size": 1500, + "filename": "vnCogm4QYze_Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=.pem", + "location": "security-state-staging/intermediates/80e952ea-02dd-40b2-9b1d-7cc71c4315a3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "vnCogm4QYze/Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=", + "crlite_enrolled": false, + "id": "5db1751f-eb67-4a74-b38e-d17a823eed64", + "last_modified": 1648695444528 + }, + { + "schema": 1648694933779, + "derHash": "dOq1c9p9sZUJe+DpDzNJNMekyJ6Ag3WdtDM6AO3SQ9k=", + "subject": "CN=DigiCert High Assurance TLS Hybrid ECC SHA256 2020 CA1,O=DigiCert\\, Inc.,C=US", + "subjectDN": "MGcxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE/MD0GA1UEAxM2RGlnaUNlcnQgSGlnaCBBc3N1cmFuY2UgVExTIEh5YnJpZCBFQ0MgU0hBMjU2IDIwMjAgQ0Ex", + "whitelist": false, + "attachment": { + "hash": "11a50056d6027ba92a4d016bbdd72de6b8e7498171f12762ce2eda7a60762e6e", + "size": 1483, + "filename": "vnCogm4QYze_Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=.pem", + "location": "security-state-staging/intermediates/7bf16759-da8d-43e0-b260-f55aac6a39b7.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "vnCogm4QYze/Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=", + "crlite_enrolled": false, + "id": "ce744321-7f4d-4f9c-9da1-63454f6d33bb", + "last_modified": 1648695444515 + }, + { + "schema": 1648544242965, + "derHash": "0tfUvuj/G33rpCd0AIHAf3sYai8poSNg1T+MINRVU40=", + "subject": "CN=TrustAsia RSA OV SSL Server CA,O=TrustAsia Technologies\\, Inc.,ST=Shanghai,C=CN", + "subjectDN": "MHAxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhTaGFuZ2hhaTElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEnMCUGA1UEAxMeVHJ1c3RBc2lhIFJTQSBPViBTU0wgU2VydmVyIENB", + "whitelist": false, + "attachment": { + "hash": "cef0257132e6443d4fa6a6f012339e0c0a90ba4eb8ce5d8083038ca1f5461393", + "size": 2133, + "filename": "ZyqPojkZzOKu3M2n4NkoNEh6f1YBTiJm2DtfHJroAWA=.pem", + "location": "security-state-staging/intermediates/f5b72560-0bb5-40bd-b68b-381a9e82b9e3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "ZyqPojkZzOKu3M2n4NkoNEh6f1YBTiJm2DtfHJroAWA=", + "crlite_enrolled": false, + "id": "e944087f-76e7-41f9-a1bb-8ef5a2cd787a", + "last_modified": 1648609047053 + }, + { + "schema": 1648543719121, + "derHash": "QciXRzsDafp0sfT51/iRKUhcGjBcBxmoZ9yHFOCHAgA=", + "subject": "CN=D-TRUST EV CA 1-20-1 2020,O=D-Trust GmbH,C=DE", + "subjectDN": "MEgxCzAJBgNVBAYTAkRFMRUwEwYDVQQKEwxELVRydXN0IEdtYkgxIjAgBgNVBAMTGUQtVFJVU1QgRVYgQ0EgMS0yMC0xIDIwMjA=", + "whitelist": false, + "attachment": { + "hash": "e7243885420768bcfaeaac83d278d2ecce102cec4ec1d4dfe7dcd96b7fd8729d", + "size": 1662, + "filename": "SJEHwcDvLp0G_-CfkfLyIPLHc6_k-E4CaepcoEBFq5s=.pem", + "location": "security-state-staging/intermediates/ff509022-df05-462c-8f12-7d582a910132.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "SJEHwcDvLp0G/+CfkfLyIPLHc6/k+E4CaepcoEBFq5s=", + "crlite_enrolled": false, + "id": "5767e4fa-0b6e-4802-be9d-d4bf52538de8", + "last_modified": 1648544242415 + }, + { + "schema": 1648543717132, + "derHash": "smjRaTSrW6Iy8XnNn1x/wH6oWDpWqafB1stY/ggjv1o=", + "subject": "CN=D-TRUST BR CA 1-20-2 2020,O=D-Trust GmbH,C=DE", + "subjectDN": "MEgxCzAJBgNVBAYTAkRFMRUwEwYDVQQKEwxELVRydXN0IEdtYkgxIjAgBgNVBAMTGUQtVFJVU1QgQlIgQ0EgMS0yMC0yIDIwMjA=", + "whitelist": false, + "attachment": { + "hash": "f0c02de6205d137c443f7dfaca0471f9e5055ebab902816844871afd5048a50e", + "size": 1666, + "filename": "mYMhLRmTQhVj2rn5bt1WUUNesYqFtN-rN6zvKEu8akY=.pem", + "location": "security-state-staging/intermediates/a9d2887c-fa0f-4b64-80b4-b9d290b7c78a.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "mYMhLRmTQhVj2rn5bt1WUUNesYqFtN+rN6zvKEu8akY=", + "crlite_enrolled": false, + "id": "9f5f757a-0664-40de-9df0-ddb2f904aa4b", + "last_modified": 1648544242406 + }, + { + "schema": 1648543718185, + "derHash": "GZqyqq//QEAeCjt7h+6ZZGWe/6lKH+y+kYrhNuS04Kg=", + "subject": "CN=D-TRUST BR CA 1-20-1 2020,O=D-Trust GmbH,C=DE", + "subjectDN": "MEgxCzAJBgNVBAYTAkRFMRUwEwYDVQQKEwxELVRydXN0IEdtYkgxIjAgBgNVBAMTGUQtVFJVU1QgQlIgQ0EgMS0yMC0xIDIwMjA=", + "whitelist": false, + "attachment": { + "hash": "83449537aac8862f1ea8058fb335366b6fa8c7a51110de57bb5435ab54ab0804", + "size": 1662, + "filename": "kVO5KcVhLn-EO7KjAiRhLgxhA1OOzdUgODPbCEfZ-kQ=.pem", + "location": "security-state-staging/intermediates/75be562f-315d-4bd4-a243-fe93b83b194b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "kVO5KcVhLn+EO7KjAiRhLgxhA1OOzdUgODPbCEfZ+kQ=", + "crlite_enrolled": false, + "id": "cc812a01-562a-4570-bb57-65b903984b64", + "last_modified": 1648544242397 + }, + { + "schema": 1648514935601, + "derHash": "NoevAsSXMco0/k/bm15eDsrNiiBpVvGa+zggOsXwpWc=", + "subject": "CN=E-Tugra TLS ECC SubCA R1,O=E-TUGRA EBG BILISIM TEKNOLOJILERI VE HIZMETLERI ANONIM SIRKETI,C=TR", + "subjectDN": "MHkxCzAJBgNVBAYTAlRSMUcwRQYDVQQKDD5FLVRVR1JBIEVCRyBCSUxJU0lNIFRFS05PTE9KSUxFUkkgVkUgSElaTUVUTEVSSSBBTk9OSU0gU0lSS0VUSTEhMB8GA1UEAwwYRS1UdWdyYSBUTFMgRUNDIFN1YkNBIFIx", + "whitelist": false, + "attachment": { + "hash": "42fa634a3eb98e54074f17d0fe0aab755c5e4067770fd05698206528ab594d6d", + "size": 1264, + "filename": "LEpoPBInvdPKvBnEvgOGVD6niF1p0SyPl8CVl1YmY3A=.pem", + "location": "security-state-staging/intermediates/4c248f82-43b8-41d7-ad2d-517e741f7bd1.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "LEpoPBInvdPKvBnEvgOGVD6niF1p0SyPl8CVl1YmY3A=", + "crlite_enrolled": true, + "id": "fc1b0c95-092b-42ed-9f22-9aab3be7f515", + "last_modified": 1648522634563 + }, + { + "schema": 1648479477863, + "derHash": "Xq8Fz8mgF3MNAeZojW45cQ4B/eN050sbJdOkgHauXbg=", + "subject": "CN=TrustSafe TLS ECC SubCA R1,O=Isimtescil Bilisim A.S.,C=TR", + "subjectDN": "MFQxCzAJBgNVBAYTAlRSMSAwHgYDVQQKDBdJc2ltdGVzY2lsIEJpbGlzaW0gQS5TLjEjMCEGA1UEAwwaVHJ1c3RTYWZlIFRMUyBFQ0MgU3ViQ0EgUjE=", + "whitelist": false, + "attachment": { + "hash": "cef634a3d7c8f2241427ca02aa357aa14537f9bb1c601d32b24ac5c78454e98d", + "size": 1215, + "filename": "SKjptlNHzgEvyArVrdTup8ORkGWGikm3iFmLJI4ZRGM=.pem", + "location": "security-state-staging/intermediates/830ef734-1768-45ce-9ec0-edcea0f351c5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "SKjptlNHzgEvyArVrdTup8ORkGWGikm3iFmLJI4ZRGM=", + "crlite_enrolled": true, + "id": "e25b26fc-5592-49af-bdc3-e378c0642fca", + "last_modified": 1648522634551 + }, + { + "schema": 1648514935045, + "derHash": "0WuprLdP7kqoCH7kguhuf29fVfrFAlY5cwdT/h5wXjw=", + "subject": "CN=TrustAsia RSA OV TLS CA - S1,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MFsxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSUwIwYDVQQDDBxUcnVzdEFzaWEgUlNBIE9WIFRMUyBDQSAtIFMx", + "whitelist": false, + "attachment": { + "hash": "3478555efe90114245336918b07ce2fd5642c151b04ae871aa5b719513eff08c", + "size": 2044, + "filename": "3sdsoSIuRvtjF8OsOc4xIdevOWOclELQuaEQ85MqCYY=.pem", + "location": "security-state-staging/intermediates/a04c15b5-f9b9-47f9-91bc-106fd7754d29.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "3sdsoSIuRvtjF8OsOc4xIdevOWOclELQuaEQ85MqCYY=", + "crlite_enrolled": true, + "id": "4a8de048-65c5-4477-b64e-79f9f290218e", + "last_modified": 1648522634539 + }, + { + "schema": 1648514936138, + "derHash": "G095TXcNxuBdx6QVhFD4JZVy621Z3mZ6PD++CNoBJIE=", + "subject": "CN=Global Trust CA - OV (RSA),O=Global Digital Inc.,C=TW", + "subjectDN": "MFAxCzAJBgNVBAYTAlRXMRwwGgYDVQQKExNHbG9iYWwgRGlnaXRhbCBJbmMuMSMwIQYDVQQDExpHbG9iYWwgVHJ1c3QgQ0EgLSBPViAoUlNBKQ==", + "whitelist": false, + "attachment": { + "hash": "136048afa3b294583ccc15f0a0a6102dcca6cc9bf7d5c19811460c54c4e79fce", + "size": 2089, + "filename": "K6VGZ_ktzZYufpj5GSQX1fCds5dLtjs5vlSRcV-Oe8U=.pem", + "location": "security-state-staging/intermediates/002c6e58-6238-435b-9b0d-7b0691d17ed4.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "K6VGZ/ktzZYufpj5GSQX1fCds5dLtjs5vlSRcV+Oe8U=", + "crlite_enrolled": true, + "id": "d6d94677-fd6d-4901-bbae-6817f8abcd97", + "last_modified": 1648522634527 + }, + { + "schema": 1648514935421, + "derHash": "PhR5gEdlpiu3vU8N3rtVqUaiBjzSiC8FRhsXVPG2Z7E=", + "subject": "CN=HARICA Administration SSL ECC SubCA R2,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR", + "subjectDN": "MIGVMQswCQYDVQQGEwJHUjEPMA0GA1UEBwwGQXRoZW5zMUQwQgYDVQQKDDtIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENlcnQuIEF1dGhvcml0eTEvMC0GA1UEAwwmSEFSSUNBIEFkbWluaXN0cmF0aW9uIFNTTCBFQ0MgU3ViQ0EgUjI=", + "whitelist": false, + "attachment": { + "hash": "d70d3f0dfbc3af1e7f43be02aa899e7f11297273559465b856d65421bb15a24c", + "size": 1890, + "filename": "XLCUgwMafFqrcdmzcM5gMLCX0OBG7_vbnVKij5FQYhg=.pem", + "location": "security-state-staging/intermediates/cd67a4e0-5a13-4946-972f-125a5e277867.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "XLCUgwMafFqrcdmzcM5gMLCX0OBG7/vbnVKij5FQYhg=", + "crlite_enrolled": true, + "id": "e274886d-aee1-4955-a7c1-fc32f4c81589", + "last_modified": 1648522634516 + }, + { + "schema": 1648514935242, "derHash": "wGjXdnhCVXcrvGrp9wpTakEK1oilDd6vv2a8xSVHlvY=", "subject": "CN=AC Firmaprofesional - Secure Web 2022,OU=Security Services,O=Firmaprofesional S.A.,C=ES", "subjectDN": "MIGTMQswCQYDVQQGEwJFUzEeMBwGA1UECgwVRmlybWFwcm9mZXNpb25hbCBTLkEuMRgwFgYDVQRhDA9WQVRFUy1BNjI2MzQwNjgxGjAYBgNVBAsMEVNlY3VyaXR5IFNlcnZpY2VzMS4wLAYDVQQDDCVBQyBGaXJtYXByb2Zlc2lvbmFsIC0gU2VjdXJlIFdlYiAyMDIy", @@ -14,9 +2174,45 @@ "mimetype": "application/x-pem-file" }, "pubKeyHash": "AzLO0BInI3V3PWBUXkW0rLPDpBwERRuBl6yYvAtDJ3M=", - "crlite_enrolled": false, + "crlite_enrolled": true, "id": "fb1dc569-0bb6-4432-bd65-32a8206361a7", - "last_modified": 1648177065480 + "last_modified": 1648522634504 + }, + { + "schema": 1648514935941, + "derHash": "mxby9oDXxL1qZ/YJNA2mQWq/nkPxMmsBuYgZInHQtfI=", + "subject": "CN=TWCA Secure SSL Certification Authority,OU=Secure SSL Sub-CA,O=TAIWAN-CA,C=TW", + "subjectDN": "MG8xCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExGjAYBgNVBAsTEVNlY3VyZSBTU0wgU3ViLUNBMTAwLgYDVQQDEydUV0NBIFNlY3VyZSBTU0wgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHk=", + "whitelist": false, + "attachment": { + "hash": "acd717a163c1e31ec674bb2953f2f16be424838b5d36e703984df5d77c80d023", + "size": 2032, + "filename": "8hqbhsMMFPaPA8t81pxqFer9-neHBcQvO7-TAKjWkb0=.pem", + "location": "security-state-staging/intermediates/b5f4faa4-0521-4c2b-939b-4bef5f921421.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "8hqbhsMMFPaPA8t81pxqFer9+neHBcQvO7+TAKjWkb0=", + "crlite_enrolled": true, + "id": "163c4d13-0624-40c4-83d7-7b9bbea0f129", + "last_modified": 1648522634492 + }, + { + "schema": 1648514934852, + "derHash": "SWlaXw9+9u32mBk9me1Iuq3iDqRXQDwRzq1JLEWGZdo=", + "subject": "CN=TWCA Global EVSSL Certification Authority,OU=Global EVSSL Sub-CA,O=TAIWAN-CA,C=TW", + "subjectDN": "MHMxCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExHDAaBgNVBAsTE0dsb2JhbCBFVlNTTCBTdWItQ0ExMjAwBgNVBAMTKVRXQ0EgR2xvYmFsIEVWU1NMIENlcnRpZmljYXRpb24gQXV0aG9yaXR5", + "whitelist": false, + "attachment": { + "hash": "4f777697d0c427439f9282b53a652b4a868074c5e1ae55a6dfe51dc32d19b817", + "size": 1955, + "filename": "3sXbPfqhHfn3hza4ob3X6iuMjfN9qdgOhBAC5GOp-TY=.pem", + "location": "security-state-staging/intermediates/1b6005ce-3d05-4336-b84f-46f273145539.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "3sXbPfqhHfn3hza4ob3X6iuMjfN9qdgOhBAC5GOp+TY=", + "crlite_enrolled": true, + "id": "c44d3056-f6b6-415c-8f13-43d0b71fb7b5", + "last_modified": 1648522634480 }, { "schema": 1648111717634, @@ -165,92 +2361,38 @@ { "schema": 1648025322112, "derHash": "qXyhN1uRlT5TalVHawrERMcIapUeSQo6PRNjChn0DNQ=", - "subject": "CN=TWCA InfoSec User CA,OU=User CA,O=TAIWAN-CA Inc.,C=TW", - "subjectDN": "MFcxCzAJBgNVBAYTAlRXMRcwFQYDVQQKEw5UQUlXQU4tQ0EgSW5jLjEQMA4GA1UECxMHVXNlciBDQTEdMBsGA1UEAxMUVFdDQSBJbmZvU2VjIFVzZXIgQ0E=", - "whitelist": false, - "attachment": { - "hash": "6aaaa07d5c201417999a0e22e73d6ede06b3ae7309353301a6d321d172316983", - "size": 1703, - "filename": "bqhl3DAHcc4Kg-bxpYCIoIh4Tjx38mrpuN4vD6gDaHY=.pem", - "location": "security-state-staging/intermediates/dbc7f86a-a8bd-4852-9d23-1d43fa46ee74.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "bqhl3DAHcc4Kg+bxpYCIoIh4Tjx38mrpuN4vD6gDaHY=", - "crlite_enrolled": false, - "id": "ffdd983c-ad21-42e0-bd71-4c89196fb73c", - "last_modified": 1648025848804 - }, - { - "schema": 1648025321155, - "derHash": "B0hA46Z9zSYAtrAE4Rh6yAvf6JbK9JPflMw9mjymiBQ=", - "subject": "CN=TWCA InfoSec User CA,OU=User CA,O=TAIWAN-CA Inc.,C=TW", - "subjectDN": "MFcxCzAJBgNVBAYTAlRXMRcwFQYDVQQKEw5UQUlXQU4tQ0EgSW5jLjEQMA4GA1UECxMHVXNlciBDQTEdMBsGA1UEAxMUVFdDQSBJbmZvU2VjIFVzZXIgQ0E=", - "whitelist": false, - "attachment": { - "hash": "45844bd66bf712d05a01885a5ed8fe191938dc90ceb1c6bb05a732c72ec77002", - "size": 1703, - "filename": "ffKwXiiyZfl8ltFLZ9k5urWtoCKNBNklL8cqiHHZUUQ=.pem", - "location": "security-state-staging/intermediates/54742694-a874-4df8-9c81-e88d2f2221f4.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "ffKwXiiyZfl8ltFLZ9k5urWtoCKNBNklL8cqiHHZUUQ=", - "crlite_enrolled": false, - "id": "73d165e8-c4b1-4300-a6eb-607ee522dabe", - "last_modified": 1648025848795 - }, - { - "schema": 1648025320193, - "derHash": "mxby9oDXxL1qZ/YJNA2mQWq/nkPxMmsBuYgZInHQtfI=", - "subject": "CN=TWCA Secure SSL Certification Authority,OU=Secure SSL Sub-CA,O=TAIWAN-CA,C=TW", - "subjectDN": "MG8xCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExGjAYBgNVBAsTEVNlY3VyZSBTU0wgU3ViLUNBMTAwLgYDVQQDEydUV0NBIFNlY3VyZSBTU0wgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHk=", - "whitelist": false, - "attachment": { - "hash": "acd717a163c1e31ec674bb2953f2f16be424838b5d36e703984df5d77c80d023", - "size": 2032, - "filename": "8hqbhsMMFPaPA8t81pxqFer9-neHBcQvO7-TAKjWkb0=.pem", - "location": "security-state-staging/intermediates/b5f4faa4-0521-4c2b-939b-4bef5f921421.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "8hqbhsMMFPaPA8t81pxqFer9+neHBcQvO7+TAKjWkb0=", - "crlite_enrolled": false, - "id": "163c4d13-0624-40c4-83d7-7b9bbea0f129", - "last_modified": 1648025848786 - }, - { - "schema": 1648025319180, - "derHash": "SWlaXw9+9u32mBk9me1Iuq3iDqRXQDwRzq1JLEWGZdo=", - "subject": "CN=TWCA Global EVSSL Certification Authority,OU=Global EVSSL Sub-CA,O=TAIWAN-CA,C=TW", - "subjectDN": "MHMxCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExHDAaBgNVBAsTE0dsb2JhbCBFVlNTTCBTdWItQ0ExMjAwBgNVBAMTKVRXQ0EgR2xvYmFsIEVWU1NMIENlcnRpZmljYXRpb24gQXV0aG9yaXR5", + "subject": "CN=TWCA InfoSec User CA,OU=User CA,O=TAIWAN-CA Inc.,C=TW", + "subjectDN": "MFcxCzAJBgNVBAYTAlRXMRcwFQYDVQQKEw5UQUlXQU4tQ0EgSW5jLjEQMA4GA1UECxMHVXNlciBDQTEdMBsGA1UEAxMUVFdDQSBJbmZvU2VjIFVzZXIgQ0E=", "whitelist": false, "attachment": { - "hash": "4f777697d0c427439f9282b53a652b4a868074c5e1ae55a6dfe51dc32d19b817", - "size": 1955, - "filename": "3sXbPfqhHfn3hza4ob3X6iuMjfN9qdgOhBAC5GOp-TY=.pem", - "location": "security-state-staging/intermediates/1b6005ce-3d05-4336-b84f-46f273145539.pem", + "hash": "6aaaa07d5c201417999a0e22e73d6ede06b3ae7309353301a6d321d172316983", + "size": 1703, + "filename": "bqhl3DAHcc4Kg-bxpYCIoIh4Tjx38mrpuN4vD6gDaHY=.pem", + "location": "security-state-staging/intermediates/dbc7f86a-a8bd-4852-9d23-1d43fa46ee74.pem", "mimetype": "application/x-pem-file" }, - "pubKeyHash": "3sXbPfqhHfn3hza4ob3X6iuMjfN9qdgOhBAC5GOp+TY=", + "pubKeyHash": "bqhl3DAHcc4Kg+bxpYCIoIh4Tjx38mrpuN4vD6gDaHY=", "crlite_enrolled": false, - "id": "c44d3056-f6b6-415c-8f13-43d0b71fb7b5", - "last_modified": 1648025848777 + "id": "ffdd983c-ad21-42e0-bd71-4c89196fb73c", + "last_modified": 1648025848804 }, { - "schema": 1647788245578, - "derHash": "8Hu73gdvm0DFfMS+/t6Xyh9Tua4UfwNdKEy/U/NDL7g=", - "subject": "CN=CFCA OV OCA,O=China Financial Certification Authority,C=CN", - "subjectDN": "MFUxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFDASBgNVBAMMC0NGQ0EgT1YgT0NB", + "schema": 1648025321155, + "derHash": "B0hA46Z9zSYAtrAE4Rh6yAvf6JbK9JPflMw9mjymiBQ=", + "subject": "CN=TWCA InfoSec User CA,OU=User CA,O=TAIWAN-CA Inc.,C=TW", + "subjectDN": "MFcxCzAJBgNVBAYTAlRXMRcwFQYDVQQKEw5UQUlXQU4tQ0EgSW5jLjEQMA4GA1UECxMHVXNlciBDQTEdMBsGA1UEAxMUVFdDQSBJbmZvU2VjIFVzZXIgQ0E=", "whitelist": false, "attachment": { - "hash": "bc37658d1568750ae385b92be54ede64df31899d30f67211fd1e015c9dc7803b", - "size": 1963, - "filename": "uc0FPx73f1ObHGmGZOcevy371Uo9asVjdabpiS0lKgQ=.pem", - "location": "security-state-staging/intermediates/8a832b56-3f0a-4b5f-8966-8a1da5242863.pem", + "hash": "45844bd66bf712d05a01885a5ed8fe191938dc90ceb1c6bb05a732c72ec77002", + "size": 1703, + "filename": "ffKwXiiyZfl8ltFLZ9k5urWtoCKNBNklL8cqiHHZUUQ=.pem", + "location": "security-state-staging/intermediates/54742694-a874-4df8-9c81-e88d2f2221f4.pem", "mimetype": "application/x-pem-file" }, - "pubKeyHash": "uc0FPx73f1ObHGmGZOcevy371Uo9asVjdabpiS0lKgQ=", + "pubKeyHash": "ffKwXiiyZfl8ltFLZ9k5urWtoCKNBNklL8cqiHHZUUQ=", "crlite_enrolled": false, - "id": "b2b776e5-2b2f-4c8e-819d-026b8d3855d2", - "last_modified": 1647853041835 + "id": "73d165e8-c4b1-4300-a6eb-607ee522dabe", + "last_modified": 1648025848795 }, { "schema": 1647701328614, @@ -289,24 +2431,6 @@ "last_modified": 1647701842304 }, { - "schema": 1647701328071, - "derHash": "lzpBJ2/9AeAnoqrUnjTDeEbT6Xb/amILZxLjODIEGqY=", - "subject": "CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O=GoDaddy.com\\, Inc.,L=Scottsdale,ST=Arizona,C=US", - "subjectDN": "MIG0MQswCQYDVQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5jb20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcy", - "whitelist": false, - "attachment": { - "hash": "a111efc20329e87b541cfc3e7f526fc54bb24624fddf210f4347b9fadfb1ab6b", - "size": 1727, - "filename": "8Rw90Ej3Ttt8RRkrg-WYDS9n7IS03bk5bjP_UXPtaY8=.pem", - "location": "security-state-staging/intermediates/a2a04dfe-6201-4d0a-b8cf-80d2975bfb51.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "8Rw90Ej3Ttt8RRkrg+WYDS9n7IS03bk5bjP/UXPtaY8=", - "crlite_enrolled": true, - "id": "549c92e2-3738-4c8c-ae37-407e4e6158ce", - "last_modified": 1647701842291 - }, - { "schema": 1647680259122, "derHash": "4i5rJZCOEQemB68GDgsk5QxtlWL/BPRVvg+N9BpQMsA=", "subject": "CN=SZAFIR Trusted CA2,O=Krajowa Izba Rozliczeniowa S.A.,C=PL", @@ -1081,42 +3205,6 @@ "last_modified": 1647053840388 }, { - "schema": 1646966924057, - "derHash": "AYGythcxeVYudWMjRAN8pSMBhhin9xaCaaPrhTZ/91w=", - "subject": "CN=DigiCert Assured ID Grid TLS RSA2048 SHA256 2022 CA1,O=DigiCert\\, Inc.,C=US", - "subjectDN": "MGUxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE9MDsGA1UEAxM0RGlnaUNlcnQgQXNzdXJlZCBJRCBHcmlkIFRMUyBSU0EyMDQ4IFNIQTI1NiAyMDIyIENBMQ==", - "whitelist": false, - "attachment": { - "hash": "7f8f0eacf04c02686bfe08a2ccff1727606d8cbdee3d30408f7ee475b68600a3", - "size": 1804, - "filename": "_SfSGxeP1MQb2mpICOc8KzfYSH77KMzIMbCgylDKpPc=.pem", - "location": "security-state-staging/intermediates/4e91bcaa-5473-4b40-8c61-3bb878424076.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "/SfSGxeP1MQb2mpICOc8KzfYSH77KMzIMbCgylDKpPc=", - "crlite_enrolled": false, - "id": "a5acb099-b5f7-485c-a851-34cf19a7efc6", - "last_modified": 1646967480339 - }, - { - "schema": 1646751472958, - "derHash": "G095TXcNxuBdx6QVhFD4JZVy621Z3mZ6PD++CNoBJIE=", - "subject": "CN=Global Trust CA - OV (RSA),O=Global Digital Inc.,C=TW", - "subjectDN": "MFAxCzAJBgNVBAYTAlRXMRwwGgYDVQQKExNHbG9iYWwgRGlnaXRhbCBJbmMuMSMwIQYDVQQDExpHbG9iYWwgVHJ1c3QgQ0EgLSBPViAoUlNBKQ==", - "whitelist": false, - "attachment": { - "hash": "136048afa3b294583ccc15f0a0a6102dcca6cc9bf7d5c19811460c54c4e79fce", - "size": 2089, - "filename": "K6VGZ_ktzZYufpj5GSQX1fCds5dLtjs5vlSRcV-Oe8U=.pem", - "location": "security-state-staging/intermediates/002c6e58-6238-435b-9b0d-7b0691d17ed4.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "K6VGZ/ktzZYufpj5GSQX1fCds5dLtjs5vlSRcV+Oe8U=", - "crlite_enrolled": false, - "id": "d6d94677-fd6d-4901-bbae-6817f8abcd97", - "last_modified": 1646881071888 - }, - { "schema": 1646449055023, "derHash": "YO9BLqvnw/xjme7RtjO3d3R1FbKdchuWPdJYvEmKspI=", "subject": "CN=SSL.com EV Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US", @@ -1207,24 +3295,6 @@ "last_modified": 1646513861656 }, { - "schema": 1646448537822, - "derHash": "NoevAsSXMco0/k/bm15eDsrNiiBpVvGa+zggOsXwpWc=", - "subject": "CN=E-Tugra TLS ECC SubCA R1,O=E-TUGRA EBG BILISIM TEKNOLOJILERI VE HIZMETLERI ANONIM SIRKETI,C=TR", - "subjectDN": "MHkxCzAJBgNVBAYTAlRSMUcwRQYDVQQKDD5FLVRVR1JBIEVCRyBCSUxJU0lNIFRFS05PTE9KSUxFUkkgVkUgSElaTUVUTEVSSSBBTk9OSU0gU0lSS0VUSTEhMB8GA1UEAwwYRS1UdWdyYSBUTFMgRUNDIFN1YkNBIFIx", - "whitelist": false, - "attachment": { - "hash": "42fa634a3eb98e54074f17d0fe0aab755c5e4067770fd05698206528ab594d6d", - "size": 1264, - "filename": "LEpoPBInvdPKvBnEvgOGVD6niF1p0SyPl8CVl1YmY3A=.pem", - "location": "security-state-staging/intermediates/4c248f82-43b8-41d7-ad2d-517e741f7bd1.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "LEpoPBInvdPKvBnEvgOGVD6niF1p0SyPl8CVl1YmY3A=", - "crlite_enrolled": false, - "id": "fc1b0c95-092b-42ed-9f22-9aab3be7f515", - "last_modified": 1646449054505 - }, - { "schema": 1646448540616, "derHash": "Z2JSLktXrtCWBXSrBh957qBoxa49gV9QqXHOxJWKkrg=", "subject": "CN=E-Tugra EV TLS RSA SubCA R1,O=E-TUGRA EBG BILISIM TEKNOLOJILERI VE HIZMETLERI ANONIM SIRKETI,C=TR", @@ -1243,24 +3313,6 @@ "last_modified": 1646449054486 }, { - "schema": 1646448541989, - "derHash": "Xq8Fz8mgF3MNAeZojW45cQ4B/eN050sbJdOkgHauXbg=", - "subject": "CN=TrustSafe TLS ECC SubCA R1,O=Isimtescil Bilisim A.S.,C=TR", - "subjectDN": "MFQxCzAJBgNVBAYTAlRSMSAwHgYDVQQKDBdJc2ltdGVzY2lsIEJpbGlzaW0gQS5TLjEjMCEGA1UEAwwaVHJ1c3RTYWZlIFRMUyBFQ0MgU3ViQ0EgUjE=", - "whitelist": false, - "attachment": { - "hash": "cef634a3d7c8f2241427ca02aa357aa14537f9bb1c601d32b24ac5c78454e98d", - "size": 1215, - "filename": "SKjptlNHzgEvyArVrdTup8ORkGWGikm3iFmLJI4ZRGM=.pem", - "location": "security-state-staging/intermediates/830ef734-1768-45ce-9ec0-edcea0f351c5.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "SKjptlNHzgEvyArVrdTup8ORkGWGikm3iFmLJI4ZRGM=", - "crlite_enrolled": false, - "id": "e25b26fc-5592-49af-bdc3-e378c0642fca", - "last_modified": 1646449054477 - }, - { "schema": 1646448543405, "derHash": "o2wcxiPs8+2JmprBT91WIJGYWOYh5od+Ae9Q2h22o6s=", "subject": "CN=E-Tugra EV TLS ECC SubCA R1,O=E-TUGRA EBG BILISIM TEKNOLOJILERI VE HIZMETLERI ANONIM SIRKETI,C=TR", @@ -1405,24 +3457,6 @@ "last_modified": 1645930654960 }, { - "schema": 1645714111086, - "derHash": "k45SZCUB3RbiPYrr+5frPDslYvUMMkFEw5CUayloSn4=", - "subject": "CN=Telekom Security DV RSA CA 22,O=Deutsche Telekom Security GmbH,C=DE", - "subjectDN": "MF4xCzAJBgNVBAYTAkRFMScwJQYDVQQKDB5EZXV0c2NoZSBUZWxla29tIFNlY3VyaXR5IEdtYkgxJjAkBgNVBAMMHVRlbGVrb20gU2VjdXJpdHkgRFYgUlNBIENBIDIy", - "whitelist": false, - "attachment": { - "hash": "2630819dec418a1e189974ade9765910f477438175848468a64894d5bbda8f67", - "size": 2113, - "filename": "PQgCR2Tyj2gl6d2EvsaoRq_hO9GQc1sBcmN7QkGUKf4=.pem", - "location": "security-state-staging/intermediates/0d78df23-c84c-4c49-8425-168287f3071c.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "PQgCR2Tyj2gl6d2EvsaoRq/hO9GQc1sBcmN7QkGUKf4=", - "crlite_enrolled": false, - "id": "159ab7e9-8e9c-4450-a603-927a7ba6336a", - "last_modified": 1645714648430 - }, - { "schema": 1645578826247, "derHash": "6IHTuDw7xpTX2Z+S3oOyv/XG7i2YcaRG3qEH1jl1Zfw=", "subject": "CN=Apple Public EV Server RSA CA 3 - G1,O=Apple Inc.,C=US", @@ -1495,24 +3529,6 @@ "last_modified": 1645579199231 }, { - "schema": 1645578764942, - "derHash": "V94Fg+/Ssm4DYdqZ2p30ZI3vfuhEHDtyivqbzeD5smo=", - "subject": "CN=Autoridad de Certificacion Firmaprofesional CIF A62634068,C=ES", - "subjectDN": "MFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjg=", - "whitelist": false, - "attachment": { - "hash": "6d84cf680e962beda938e61164d5227272b5f42dc698ba20d2daf9fa5b01e5a4", - "size": 2166, - "filename": "Ow1ztL5KhUrcPlHX75-kiu-7LN2CTWe9x9fQmiq8LUM=.pem", - "location": "security-state-staging/intermediates/db0d57a0-e293-40b4-ac35-c505d0b77f4c.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "Ow1ztL5KhUrcPlHX75+kiu+7LN2CTWe9x9fQmiq8LUM=", - "crlite_enrolled": true, - "id": "19461103-183f-4856-b2fe-be344c1f63e1", - "last_modified": 1645579199217 - }, - { "schema": 1645578818095, "derHash": "qq/pPjWbFJpMngtXLVG/N/2jin6aNZv5A1m6nKqWqt8=", "subject": "CN=Atos TrustedRoot Server-CA 2013,O=Atos,C=DE", @@ -1585,24 +3601,6 @@ "last_modified": 1645579199159 }, { - "schema": 1645578772450, - "derHash": "J47PIR4lGOndmROvxYPusxJ8gYS8vu2q171k6J6MQxA=", - "subject": "CN=QuoVadis Grid ICA G2,O=QuoVadis Limited,C=BM", - "subjectDN": "MEcxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR0wGwYDVQQDExRRdW9WYWRpcyBHcmlkIElDQSBHMg==", - "whitelist": false, - "attachment": { - "hash": "8e15c43f71096a592c3d5819db25f4547bb4ef4f8232293578abdf314d149392", - "size": 2353, - "filename": "5rlUfVlXaS82HCd6DZI7w8rIamphHCdjnXNpXREZynQ=.pem", - "location": "security-state-staging/intermediates/1524fb2d-0b4f-4e05-95b5-4ef2d0f54ce4.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "5rlUfVlXaS82HCd6DZI7w8rIamphHCdjnXNpXREZynQ=", - "crlite_enrolled": true, - "id": "fcc1dad7-82be-4595-a2a7-e393e733325e", - "last_modified": 1645579199146 - }, - { "schema": 1645578799164, "derHash": "N/0pxwHWl3mY8gUVPqikwumWNU3wctSYTcXYsfdaK2E=", "subject": "CN=SwissNS TLS Issuing RSA CA R1,O=swissns GmbH,L=Luzern,ST=Luzern,C=CH", @@ -1711,24 +3709,6 @@ "last_modified": 1645579199066 }, { - "schema": 1645578795149, - "derHash": "0zqEf2QDd74K4aQpFToH6HyIJ/pIQLUVi83LheEKRTo=", - "subject": "CN=VR IDENT EV SSL CA 2020,O=Fiducia & GAD IT AG,C=DE", - "subjectDN": "ME0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKDBNGaWR1Y2lhICYgR0FEIElUIEFHMSAwHgYDVQQDDBdWUiBJREVOVCBFViBTU0wgQ0EgMjAyMA==", - "whitelist": false, - "attachment": { - "hash": "a95e7ccf2ef4b020f65fbd061c44e49d966821be27623376e3f16a8a3ebd371f", - "size": 2361, - "filename": "te09bIALahNazDua57TEibeM7CatIkOAT8t-qu_Kdro=.pem", - "location": "security-state-staging/intermediates/298033d7-ae37-44c9-a510-5a992462dd9b.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "te09bIALahNazDua57TEibeM7CatIkOAT8t+qu/Kdro=", - "crlite_enrolled": true, - "id": "7a72a490-73aa-431e-8475-2fe1df233eff", - "last_modified": 1645579199052 - }, - { "schema": 1645578772806, "derHash": "6ywqgGxp/JY8TiSlu+og7U47hq55hzC7TupRv53jMyU=", "subject": "CN=QuoVadis PKIoverheid Server CA 2020,O=QuoVadis Trustlink B.V.,C=NL", @@ -1981,24 +3961,6 @@ "last_modified": 1645579198849 }, { - "schema": 1645578782836, - "derHash": "n/I8uTh7ngCDvVqhlU7t33kokKqOZ81NON0or0pDmtg=", - "subject": "CN=AC SERVIDORES SEGUROS TIPO2,OU=Ceres,O=FNMT-RCM,C=ES", - "subjectDN": "MHAxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgU0VSVklET1JFUyBTRUdVUk9TIFRJUE8y", - "whitelist": false, - "attachment": { - "hash": "ce9833a29f1fcb59210dd0a59d92c50ef56f427317cc530e9f61e8b7c2584453", - "size": 1280, - "filename": "dCoEY_Du2xeUAuG2_98ZWoRzf_eJoM-rCMtK2M1wF94=.pem", - "location": "security-state-staging/intermediates/598a03d5-c331-41bf-8b90-254be5a3768b.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "dCoEY/Du2xeUAuG2/98ZWoRzf/eJoM+rCMtK2M1wF94=", - "crlite_enrolled": true, - "id": "208442ca-2a8f-4348-837d-b7ae6c345a5b", - "last_modified": 1645579198835 - }, - { "schema": 1645578806912, "derHash": "MoZpFBLzDs5cBl/WL0OSpHYtHneBUzg1nfOQKZ+9Ye8=", "subject": "CN=Thawte EV RSA CA G2,O=DigiCert Inc,C=US", @@ -2143,24 +4105,6 @@ "last_modified": 1645579198720 }, { - "schema": 1645578808398, - "derHash": "YDiLdz0z6RQWSGE/NrkUnwFaEUN4us8+NpSGT/2kJuw=", - "subject": "CN=HydrantID EV SSL CA G2,O=HydrantID (Avalanche Cloud Corporation),C=US", - "subjectDN": "MGAxCzAJBgNVBAYTAlVTMTAwLgYDVQQKDCdIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHzAdBgNVBAMMFkh5ZHJhbnRJRCBFViBTU0wgQ0EgRzI=", - "whitelist": false, - "attachment": { - "hash": "ba2cc602bd31081e17f7745ac462854773e79726958ff1b8a553cc7ecaba9db2", - "size": 2389, - "filename": "FpAps1LWs_UTm3xApHYkNccnnZX-7Wc_v8V0t70p6rg=.pem", - "location": "security-state-staging/intermediates/63b88c2f-4e40-486a-9d6f-55dfd935e74d.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "FpAps1LWs/UTm3xApHYkNccnnZX+7Wc/v8V0t70p6rg=", - "crlite_enrolled": true, - "id": "500ac819-9169-4961-98fe-e44519ef181d", - "last_modified": 1645579198703 - }, - { "schema": 1645578810985, "derHash": "3JmT3DOnH9lYCHh9GaS1VwTmAdV+vOrMiALHi1w29cc=", "subject": "CN=Greek Universities Network TLS RSA SubCA R1,O=Hellenic Academic and Research Institutions CA,C=GR", @@ -2629,24 +4573,6 @@ "last_modified": 1645579198344 }, { - "schema": 1645578798430, - "derHash": "02gLTj+I2x9bud3b+2v/MZx4Dj2fRO4k7BmVq0LWkU8=", - "subject": "CN=GIAG4x,O=Google Trust Services LLC,C=US", - "subjectDN": "MEIxCzAJBgNVBAYTAlVTMSIwIAYDVQQKExlHb29nbGUgVHJ1c3QgU2VydmljZXMgTExDMQ8wDQYDVQQDEwZHSUFHNHg=", - "whitelist": false, - "attachment": { - "hash": "7863677df584a77841650e5ad47e7ef8f7c42807c9d69969881133b275b19a50", - "size": 1991, - "filename": "AAGolo0N1iZa5uuvm02csZnkuZs8hvI-HRLhAHtNhqk=.pem", - "location": "security-state-staging/intermediates/d7339913-5a00-4ca1-8efa-d57dac665d41.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "AAGolo0N1iZa5uuvm02csZnkuZs8hvI+HRLhAHtNhqk=", - "crlite_enrolled": true, - "id": "339940cb-d4d8-4caa-88ba-b807e82edbbc", - "last_modified": 1645579198330 - }, - { "schema": 1645578812086, "derHash": "8Z1VzQij6kK9kVCAc4IxdN2SNwITwXf4JTF1badQilE=", "subject": "CN=JPRS Domain Validation Authority - G4,O=Japan Registry Services Co.\\, Ltd.,C=JP", @@ -2989,42 +4915,6 @@ "last_modified": 1645579198073 }, { - "schema": 1645578770223, - "derHash": "9nwj73v3QSgJ22sd09RKCNN1TZnKumoT96BcckkInIk=", - "subject": "CN=QuoVadis Global SSL ICA G2,O=QuoVadis Limited,C=BM", - "subjectDN": "ME0xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSMwIQYDVQQDExpRdW9WYWRpcyBHbG9iYWwgU1NMIElDQSBHMg==", - "whitelist": false, - "attachment": { - "hash": "f3d6221594115cd098f20f66a013d90aae3becd3c578a737a8e58a35230c208d", - "size": 2016, - "filename": "tYkfFN27P1GUjH5ME128BCg302dL2iwOYhz5wwFJb50=.pem", - "location": "security-state-staging/intermediates/36feb64b-7e91-4cc9-a103-1c3a3407616c.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "tYkfFN27P1GUjH5ME128BCg302dL2iwOYhz5wwFJb50=", - "crlite_enrolled": true, - "id": "4465bd66-5d4a-4188-9862-8b514b0f1f46", - "last_modified": 1645579198047 - }, - { - "schema": 1645578790344, - "derHash": "Httr2RJ0iC23lb/FFPiqvhCtlVy8z9P9Wltf67LOW2g=", - "subject": "CN=AC SERVIDORES SEGUROS TIPO1,OU=Ceres,O=FNMT-RCM,C=ES", - "subjectDN": "MHAxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgU0VSVklET1JFUyBTRUdVUk9TIFRJUE8x", - "whitelist": false, - "attachment": { - "hash": "1b46f0408f2325ad33c8b3c5dbcf16fa1e7e49dc37065a9692b2b6f8b93fc666", - "size": 1280, - "filename": "Rlnql4UHcyG02SDPnuECa_zDzdDX09uEM9PKaegr4Qs=.pem", - "location": "security-state-staging/intermediates/08be4d50-7440-476f-b9ec-304930e3bb59.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "Rlnql4UHcyG02SDPnuECa/zDzdDX09uEM9PKaegr4Qs=", - "crlite_enrolled": true, - "id": "b5f78224-02b0-4114-bef3-50c347e8ed22", - "last_modified": 1645579198034 - }, - { "schema": 1645578827714, "derHash": "RAs3QW8t6FLKOGFQ1hHsCvMd1Y2KJ/iCgVp+o+5oSO4=", "subject": "CN=Bloomberg TLS CA,O=Bloomberg LP,C=US", @@ -3085,34 +4975,16 @@ "subjectDN": "ME8xCzAJBgNVBAYTAlVTMRowGAYDVQQKExFDcm93ZFN0cmlrZSwgSW5jLjEkMCIGA1UEAxMbQ3Jvd2RTdHJpa2UgR2xvYmFsIEVWIENBIEcy", "whitelist": false, "attachment": { - "hash": "97a63445016de40593136e1104d0b5b7fa88512347b74c1337c1ab82c6d566fb", - "size": 1743, - "filename": "CyxodpBYldiqnjPTH1njRYIU3fXbBlov3Ly_xnmsIrE=.pem", - "location": "security-state-staging/intermediates/f6986554-454b-40ee-866c-6fb52413316c.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "CyxodpBYldiqnjPTH1njRYIU3fXbBlov3Ly/xnmsIrE=", - "crlite_enrolled": true, - "id": "75aa3a64-ae1e-4d39-b34e-97bb23150bd8", - "last_modified": 1645579197981 - }, - { - "schema": 1645578780981, - "derHash": "XScMtO/1h61s0Xyytg2QhKFT130qp5oss9sd25BGhPU=", - "subject": "CN=DigiCert High Assurance TLS Hybrid ECC SHA256 2020 CA1,O=DigiCert\\, Inc.,C=US", - "subjectDN": "MGcxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE/MD0GA1UEAxM2RGlnaUNlcnQgSGlnaCBBc3N1cmFuY2UgVExTIEh5YnJpZCBFQ0MgU0hBMjU2IDIwMjAgQ0Ex", - "whitelist": false, - "attachment": { - "hash": "3ea69b8dafeb8e68666332244529451eccd6e970a91f738b5ddac122f8ad34d2", - "size": 1500, - "filename": "vnCogm4QYze_Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=.pem", - "location": "security-state-staging/intermediates/80e952ea-02dd-40b2-9b1d-7cc71c4315a3.pem", + "hash": "97a63445016de40593136e1104d0b5b7fa88512347b74c1337c1ab82c6d566fb", + "size": 1743, + "filename": "CyxodpBYldiqnjPTH1njRYIU3fXbBlov3Ly_xnmsIrE=.pem", + "location": "security-state-staging/intermediates/f6986554-454b-40ee-866c-6fb52413316c.pem", "mimetype": "application/x-pem-file" }, - "pubKeyHash": "vnCogm4QYze/Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=", + "pubKeyHash": "CyxodpBYldiqnjPTH1njRYIU3fXbBlov3Ly/xnmsIrE=", "crlite_enrolled": true, - "id": "5db1751f-eb67-4a74-b38e-d17a823eed64", - "last_modified": 1645579197964 + "id": "75aa3a64-ae1e-4d39-b34e-97bb23150bd8", + "last_modified": 1645579197981 }, { "schema": 1645578822211, @@ -4033,24 +5905,6 @@ "last_modified": 1645579197271 }, { - "schema": 1645578780234, - "derHash": "y2Zmsyv/Lv7cxBh98Umm00pdELcWW5z/KmfA4xGu7tc=", - "subject": "CN=QuoVadis Europe EV SSL CA G1,O=QuoVadis Trustlink B.V.,C=NL", - "subjectDN": "MFYxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjElMCMGA1UEAwwcUXVvVmFkaXMgRXVyb3BlIEVWIFNTTCBDQSBHMQ==", - "whitelist": false, - "attachment": { - "hash": "990290f2ea4ff420df521c3b3851971e7be41a8508394faa2cb562a69bce9e55", - "size": 2385, - "filename": "WkWVWx1-X3CuwtFGJvDjdr5hOX8PeMryJG2Va7Y6cj8=.pem", - "location": "security-state-staging/intermediates/e5b45de5-c4f7-4c43-82de-dedc4ae1a1e2.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "WkWVWx1+X3CuwtFGJvDjdr5hOX8PeMryJG2Va7Y6cj8=", - "crlite_enrolled": true, - "id": "003ddfee-23a8-48f9-8ae6-373cd5fcf8da", - "last_modified": 1645579197257 - }, - { "schema": 1645578829207, "derHash": "2ImiZB9d+UE1OBfIelzQ2c2s7TiGJAv72TcynpTTpFs=", "subject": "CN=DKB CA 1O1,O=Deutsche Kreditbank AG,C=DE", @@ -4339,24 +6193,6 @@ "last_modified": 1645579197021 }, { - "schema": 1645578795878, - "derHash": "NH0Y3Mwu/FGpIOen+7B7+9o1YTaB+C3KXExyuwyDwDU=", - "subject": "CN=VR IDENT SSL CA 2020,O=Fiducia & GAD IT AG,C=DE", - "subjectDN": "MEoxCzAJBgNVBAYTAkRFMRwwGgYDVQQKDBNGaWR1Y2lhICYgR0FEIElUIEFHMR0wGwYDVQQDDBRWUiBJREVOVCBTU0wgQ0EgMjAyMA==", - "whitelist": false, - "attachment": { - "hash": "4158e246be129509cb8d8eb14b647517fea0196e81a9d593f4b8f64a11a6414f", - "size": 2357, - "filename": "fQUctsUYoew1aFnAFT0prf-kJmkVNqkPo2jJ5Jm9RaA=.pem", - "location": "security-state-staging/intermediates/dad40639-ba45-44a1-a203-773fa93a2393.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "fQUctsUYoew1aFnAFT0prf+kJmkVNqkPo2jJ5Jm9RaA=", - "crlite_enrolled": true, - "id": "b0feb9ce-0625-4089-8193-4f2e7d87b79e", - "last_modified": 1645579197008 - }, - { "schema": 1645578757683, "derHash": "TzXGucEAkF/yW7AcCiDr4zW87vJJzp/6HhHgYu1m/NE=", "subject": "CN=DigiCert Trusted G4 TLS RSA SHA384 2020 CA1,O=DigiCert Inc,C=US", @@ -4375,24 +6211,6 @@ "last_modified": 1645579196995 }, { - "schema": 1645578819587, - "derHash": "sarhvNVV6KPR492o7ITnV8VSZVNEzj/uu6+Y6JXb7aw=", - "subject": "CN=QuoVadis Europe SSL CA G2,O=QuoVadis Trustlink B.V.,C=NL", - "subjectDN": "MFMxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEiMCAGA1UEAwwZUXVvVmFkaXMgRXVyb3BlIFNTTCBDQSBHMg==", - "whitelist": false, - "attachment": { - "hash": "dfb31ebff112bccbef0ba90c29987f9962823acb59f69bd984351d9e2c7e22df", - "size": 2381, - "filename": "XOogr9_VItHwTOA_JogutdX4V06tVw9btHQLa2tR0_A=.pem", - "location": "security-state-staging/intermediates/edc35c3e-658f-4b1e-a6c0-925b06319a69.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "XOogr9/VItHwTOA/JogutdX4V06tVw9btHQLa2tR0/A=", - "crlite_enrolled": true, - "id": "d7036b24-b5f1-44e4-8404-0f50130b95fd", - "last_modified": 1645579196981 - }, - { "schema": 1645578826623, "derHash": "JXaHE9O0Wfk4LSpZT4XzRwn9KokwcxVCpBRv+yRr7Gk=", "subject": "CN=DigiCert TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US", @@ -4735,24 +6553,6 @@ "last_modified": 1645579196726 }, { - "schema": 1645578779868, - "derHash": "f+uTdOqwjTknF8ZHQ22uBhdqJMAQYH/aHM5eXwEGtHI=", - "subject": "CN=QuoVadis Qualified Web ICA G2,O=QuoVadis Trustlink B.V.,C=NL", - "subjectDN": "MFcxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEmMCQGA1UEAwwdUXVvVmFkaXMgUXVhbGlmaWVkIFdlYiBJQ0EgRzI=", - "whitelist": false, - "attachment": { - "hash": "c551ff3d69db56e747169ab80b2fdea513f1de4806de98e0e34ab04da70a7566", - "size": 2385, - "filename": "HW4ktpkbc6tiWRVtXWUrZxqP505LD1tPqFHb3HiZbX8=.pem", - "location": "security-state-staging/intermediates/7f71d4f9-9d6e-4293-8a84-ecd68df1e8f5.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "HW4ktpkbc6tiWRVtXWUrZxqP505LD1tPqFHb3HiZbX8=", - "crlite_enrolled": true, - "id": "d082eca9-ebf1-4e1a-9d25-56d598ae88bc", - "last_modified": 1645579196711 - }, - { "schema": 1645578794003, "derHash": "iu/r2IvoejCxnGDFvQ+16fvNFdVYLV/Jp0mVeNaNzsA=", "subject": "CN=Valid Certificadora Digital SSL EV CA 2018,O=VALID CERTIFICADORA DIGITAL,C=BR", @@ -4789,24 +6589,6 @@ "last_modified": 1645579196683 }, { - "schema": 1645578773545, - "derHash": "DakU+3El9uZE63qiYd6euAncf5Jbayp9in7dhzY5i1s=", - "subject": "CN=Staat der Nederlanden Domein Server CA 2020,O=Staat der Nederlanden,C=NL", - "subjectDN": "MGMxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xNDAyBgNVBAMMK1N0YWF0IGRlciBOZWRlcmxhbmRlbiBEb21laW4gU2VydmVyIENBIDIwMjA=", - "whitelist": false, - "attachment": { - "hash": "2f30004a37d33d9c2a59bae9b9e7ae94f816bd331c1a88deabd4af0f028ec59e", - "size": 2438, - "filename": "N9-YluTCUa_HTXc60QxjUReBLpRniAkIK2N84DhgmW4=.pem", - "location": "security-state-staging/intermediates/3a5cccbb-d1da-4d6e-8650-128cb451f578.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "N9+YluTCUa/HTXc60QxjUReBLpRniAkIK2N84DhgmW4=", - "crlite_enrolled": true, - "id": "93fb54cf-1df3-4b48-80dc-309fa3745243", - "last_modified": 1645579196670 - }, - { "schema": 1645578794396, "derHash": "tl/mob8tUv9ot9Pp0PBrMAocPySDCbcEBcp73sBUvd0=", "subject": "CN=GlobalSign Atlas R3 DV TLS CA 2020,O=GlobalSign nv-sa,C=BE", @@ -4825,24 +6607,6 @@ "last_modified": 1645579196657 }, { - "schema": 1645578806141, - "derHash": "MCQkQ/aJWpRWDkjk3/cgU26vUWPLQvXod0AqveL4Ynw=", - "subject": "CN=QuoVadis Global SSL ICA G3,O=QuoVadis Limited,C=BM", - "subjectDN": "ME0xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSMwIQYDVQQDExpRdW9WYWRpcyBHbG9iYWwgU1NMIElDQSBHMw==", - "whitelist": false, - "attachment": { - "hash": "63f37d712386cb1b4ab3fb0368f861aeb7ba74ec9b9bc7ecdd247bcf94725693", - "size": 2373, - "filename": "KM3iZPSceB-hgYuNI-cSg4LRgTiUxCeGjrfXRQAY6Rs=.pem", - "location": "security-state-staging/intermediates/ea7c6aaf-2f08-4bd8-9233-93359bef2b5f.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "KM3iZPSceB+hgYuNI+cSg4LRgTiUxCeGjrfXRQAY6Rs=", - "crlite_enrolled": true, - "id": "d938811f-e653-4554-a74d-f8eec3a4920b", - "last_modified": 1645579196643 - }, - { "schema": 1645578788470, "derHash": "FGwc+bt9IxBg0Pq9mG6YUPAFAfWjt7asQsUbOMjiKiM=", "subject": "CN=Inst. of Accelerating Systems and Applications TLS RSA SubCA R1,O=Hellenic Academic and Research Institutions CA,C=GR", @@ -5239,24 +7003,6 @@ "last_modified": 1645578268527 }, { - "schema": 1645577368234, - "derHash": "0WuprLdP7kqoCH7kguhuf29fVfrFAlY5cwdT/h5wXjw=", - "subject": "CN=TrustAsia RSA OV TLS CA - S1,O=TrustAsia Technologies\\, Inc.,C=CN", - "subjectDN": "MFsxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSUwIwYDVQQDDBxUcnVzdEFzaWEgUlNBIE9WIFRMUyBDQSAtIFMx", - "whitelist": false, - "attachment": { - "hash": "3478555efe90114245336918b07ce2fd5642c151b04ae871aa5b719513eff08c", - "size": 2044, - "filename": "3sdsoSIuRvtjF8OsOc4xIdevOWOclELQuaEQ85MqCYY=.pem", - "location": "security-state-staging/intermediates/a04c15b5-f9b9-47f9-91bc-106fd7754d29.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "3sdsoSIuRvtjF8OsOc4xIdevOWOclELQuaEQ85MqCYY=", - "crlite_enrolled": false, - "id": "4a8de048-65c5-4477-b64e-79f9f290218e", - "last_modified": 1645578268465 - }, - { "schema": 1645577377719, "derHash": "vOcJE1XSQXo3+M/irI8XwnSIiLoO6pAAD8mA7PwtBB8=", "subject": "CN=GlobalSign Atlas R6 EV TLS CA 2020,O=GlobalSign nv-sa,C=BE", @@ -5761,24 +7507,6 @@ "last_modified": 1645578267528 }, { - "schema": 1645577500961, - "derHash": "PyJb2814jOkkhwyvkvgUt8b/Ttq6utk/HTqRdyUs8dE=", - "subject": "CN=QuoVadis Qualified Web ICA G3,O=QuoVadis Trustlink B.V.,C=NL", - "subjectDN": "MFcxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEmMCQGA1UEAwwdUXVvVmFkaXMgUXVhbGlmaWVkIFdlYiBJQ0EgRzM=", - "whitelist": false, - "attachment": { - "hash": "8eb4cfbfd4e31a971f563f4a974c582ecd679cc8c15604af9f0f24fb1daf720e", - "size": 2385, - "filename": "e7hbHQSuhSDkhjhlY1CGhoHNKcgJCpQxSU_inT417rc=.pem", - "location": "security-state-staging/intermediates/5b740164-6457-41b6-89f7-410a326facec.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "e7hbHQSuhSDkhjhlY1CGhoHNKcgJCpQxSU/inT417rc=", - "crlite_enrolled": false, - "id": "1a82be4e-e5db-438f-b125-fc325af58983", - "last_modified": 1645578267456 - }, - { "schema": 1645577504932, "derHash": "T4OELx8Eqx4E1NjnUWZvyoLlGRyvwkBiv9H+d8AspLQ=", "subject": "CN=e-Szigno Class3 CA 2017,O=Microsec Ltd.,L=Budapest,C=HU", @@ -6157,24 +7885,6 @@ "last_modified": 1645578266854 }, { - "schema": 1645577587363, - "derHash": "HjVoI/5AwOqsKfntVGO3stscCItj67BYdqLmMcEId5g=", - "subject": "CN=QuoVadis Enterprise Trust CA 2 G4,O=QuoVadis Trustlink B.V.,C=NL", - "subjectDN": "MFsxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEqMCgGA1UEAwwhUXVvVmFkaXMgRW50ZXJwcmlzZSBUcnVzdCBDQSAyIEc0", - "whitelist": false, - "attachment": { - "hash": "756cc72bf46fca106a4ae94315fc04ea6bbe1b93e3229513d02875b33ca13f45", - "size": 2385, - "filename": "z-lEyVPfwY15LjMDGouWc4Jt0MFWaf2MpLOSN9mx9tM=.pem", - "location": "security-state-staging/intermediates/0032aafc-3f1d-42e6-ac9e-078fb2d97821.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "z+lEyVPfwY15LjMDGouWc4Jt0MFWaf2MpLOSN9mx9tM=", - "crlite_enrolled": false, - "id": "35e53c32-41fc-4447-a3ba-9572bd7995c5", - "last_modified": 1645578266814 - }, - { "schema": 1645577590130, "derHash": "BYd+5cz+fPGrs8nt85BbX2FCx7eTnWfjJBHPiWMn+Yc=", "subject": "CN=CertCloud ECC TLS CA,O=CertCloud Pte. Ltd.,C=SG", @@ -6355,24 +8065,6 @@ "last_modified": 1645578266596 }, { - "schema": 1645577618495, - "derHash": "tvZVm7zgosyR5Qe11zGeMkh+2uKKBjvHO2QF5sRGZbY=", - "subject": "CN=QuoVadis Enterprise Trust CA 2 G3,O=QuoVadis Limited,C=BM", - "subjectDN": "MFQxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMSowKAYDVQQDDCFRdW9WYWRpcyBFbnRlcnByaXNlIFRydXN0IENBIDIgRzM=", - "whitelist": false, - "attachment": { - "hash": "0e8105a00963a2942951dacf763351b5c4f4fcffe32ab691c090848452d6b285", - "size": 2377, - "filename": "U_l9o-Lg2NOgB-7MLJUzZzbVrqatI_likIE44Ciah6M=.pem", - "location": "security-state-staging/intermediates/1c6a63e2-fcd0-42ea-a406-fce0e2a968cf.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "U/l9o+Lg2NOgB+7MLJUzZzbVrqatI/likIE44Ciah6M=", - "crlite_enrolled": false, - "id": "422b8455-5064-4577-9215-5a33b2d002c8", - "last_modified": 1645578266575 - }, - { "schema": 1645577621120, "derHash": "s0oztER0/bAHjxE1J7vbdv5b+ByiS7htYoE2xQFgQ+g=", "subject": "CN=Certum Class I CA,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL", @@ -7183,24 +8875,6 @@ "last_modified": 1643540242405 }, { - "schema": 1643539723702, - "derHash": "lp4yAFIOssaalmdYfm3U0LI/KPUQzBMXZwqO02E+vq0=", - "subject": "CN=DigitalTrust High Assurance CA G4 [Run by the Issuer],O=Digital Trust L.L.C.,C=AE", - "subjectDN": "MG0xCzAJBgNVBAYTAkFFMR0wGwYDVQQKExREaWdpdGFsIFRydXN0IEwuTC5DLjE/MD0GA1UEAww2RGlnaXRhbFRydXN0IEhpZ2ggQXNzdXJhbmNlIENBIEc0ICBbUnVuIGJ5IHRoZSBJc3N1ZXJd", - "whitelist": false, - "attachment": { - "hash": "e74dd2a02806fa7c508188e10a5f0c0712f1cfbccde8988e042626a766beecb4", - "size": 2507, - "filename": "LFyh5Bg1aFs3y7w1j2dwtnxqDbovX0i8cL9gYJC6PXw=.pem", - "location": "security-state-staging/intermediates/df91fee1-b72c-4071-bb40-85741d9a30db.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "LFyh5Bg1aFs3y7w1j2dwtnxqDbovX0i8cL9gYJC6PXw=", - "crlite_enrolled": true, - "id": "82e3caed-61a5-46f8-b0a5-e0e5548b3eaa", - "last_modified": 1643540242395 - }, - { "schema": 1643539751520, "derHash": "vb9XvRAWOncbKNCdTJAYjVlgcsaZvYJ0/kYo0SUOSb0=", "subject": "CN=DigitalTrust Secure CA G3 [Run by the Issuer],O=Digital Trust L.L.C.,C=AE", @@ -7327,24 +9001,6 @@ "last_modified": 1643540242323 }, { - "schema": 1643539724307, - "derHash": "nOYws1+K4sZBnnNK2dL6MEdt2ec5Sx6Tsn+D93agJOo=", - "subject": "CN=AC Unidades de Sellado de Tiempo,OU=Ceres,O=FNMT-RCM,C=ES", - "subjectDN": "MHUxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEpMCcGA1UEAwwgQUMgVW5pZGFkZXMgZGUgU2VsbGFkbyBkZSBUaWVtcG8=", - "whitelist": false, - "attachment": { - "hash": "671a59fe01d2cd2074dbea84483abb7c9c75db400f3b54d2aebd79a620add787", - "size": 2836, - "filename": "RFLsjPTrs1EoFCjTCI7RLImxM2pGcGMiymQyT87-GT4=.pem", - "location": "security-state-staging/intermediates/ba299b7d-dc4a-4efd-b7d4-c67563ad72aa.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "RFLsjPTrs1EoFCjTCI7RLImxM2pGcGMiymQyT87+GT4=", - "crlite_enrolled": true, - "id": "590c1b99-aca9-4c60-8b11-030c3d8071a5", - "last_modified": 1643540242313 - }, - { "schema": 1643539752426, "derHash": "jNco+cM5G6Q2ChDGbKSEyAdlHWIH8QYzZp7YiB/pG/U=", "subject": "CN=CrowdStrike Global EV CA,O=CrowdStrike\\, Inc.,C=US", @@ -7525,24 +9181,6 @@ "last_modified": 1643540242054 }, { - "schema": 1643539744538, - "derHash": "dOq1c9p9sZUJe+DpDzNJNMekyJ6Ag3WdtDM6AO3SQ9k=", - "subject": "CN=DigiCert High Assurance TLS Hybrid ECC SHA256 2020 CA1,O=DigiCert\\, Inc.,C=US", - "subjectDN": "MGcxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE/MD0GA1UEAxM2RGlnaUNlcnQgSGlnaCBBc3N1cmFuY2UgVExTIEh5YnJpZCBFQ0MgU0hBMjU2IDIwMjAgQ0Ex", - "whitelist": false, - "attachment": { - "hash": "11a50056d6027ba92a4d016bbdd72de6b8e7498171f12762ce2eda7a60762e6e", - "size": 1483, - "filename": "vnCogm4QYze_Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=.pem", - "location": "security-state-staging/intermediates/7bf16759-da8d-43e0-b260-f55aac6a39b7.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "vnCogm4QYze/Bc9r88xdA6NTQY74p4BAz2w5gxkLG2M=", - "crlite_enrolled": true, - "id": "ce744321-7f4d-4f9c-9da1-63454f6d33bb", - "last_modified": 1643540242043 - }, - { "schema": 1643539751823, "derHash": "tfYuw4ExzRSx/JW4d/TSEL5L+sx+amqhQi2J40t6xME=", "subject": "CN=GoGetSSL Domain Validation CA SHA2,OU=GoGetSSL Certification Authority,O=EnVers Group SIA,C=LV", @@ -7651,24 +9289,6 @@ "last_modified": 1643540241961 }, { - "schema": 1643539715307, - "derHash": "bVWNIt3W7UyhPucS/UKvIpTyycbXATwyRxD/uNjzb6k=", - "subject": "CN=Quantum Secure Site OV TLS RSA R1,O=Quantum CA Limited,C=GB", - "subjectDN": "MFYxCzAJBgNVBAYTAkdCMRswGQYDVQQKDBJRdWFudHVtIENBIExpbWl0ZWQxKjAoBgNVBAMMIVF1YW50dW0gU2VjdXJlIFNpdGUgT1YgVExTIFJTQSBSMQ==", - "whitelist": false, - "attachment": { - "hash": "4b736d8bf2429327ac547ed2eb1ddf79a0caa2ace478f955e02127eec63d403b", - "size": 2389, - "filename": "hLf9YhON-ykf9-ab3rrdyhkLe63PWjIvsvghrHEnILA=.pem", - "location": "security-state-staging/intermediates/0f82d056-d837-49b4-9cdd-d5d76a9b1a35.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "hLf9YhON+ykf9+ab3rrdyhkLe63PWjIvsvghrHEnILA=", - "crlite_enrolled": true, - "id": "1fba5287-1ee9-49bb-8756-3e120f3f4896", - "last_modified": 1643540241950 - }, - { "schema": 1643539728848, "derHash": "jYPWn6YVqiaDsT14lEgsVCsLzxi7ktMPAV+0JHGvu2Y=", "subject": "CN=TrustAsia ECC EV TLS Pro CA G3,O=TrustAsia Technologies\\, Inc.,C=CN", @@ -8029,24 +9649,6 @@ "last_modified": 1643540241387 }, { - "schema": 1643539736744, - "derHash": "VYRK03slu02z/+fc3DkCOkGzxIikepX60fz61Qi3AoU=", - "subject": "CN=Dodo Sign TLS ICA RSA R1,O=Dodo Sign Ltd,L=Ebene,ST=Plaines Wilhems,C=MU", - "subjectDN": "MHIxCzAJBgNVBAYTAk1VMRgwFgYDVQQIDA9QbGFpbmVzIFdpbGhlbXMxDjAMBgNVBAcMBUViZW5lMRYwFAYDVQQKDA1Eb2RvIFNpZ24gTHRkMSEwHwYDVQQDDBhEb2RvIFNpZ24gVExTIElDQSBSU0EgUjE=", - "whitelist": false, - "attachment": { - "hash": "9bbab79fdec346cdda828bc4486cedf2582bee9d80c23587c1c2f05407854b6e", - "size": 2438, - "filename": "QBni1na5RD10V0ehoagk-O8mlEaC8kPw1gH8_uoYYTY=.pem", - "location": "security-state-staging/intermediates/512c8ed9-74cb-4a34-a0b5-79f8a0f953b2.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "QBni1na5RD10V0ehoagk+O8mlEaC8kPw1gH8/uoYYTY=", - "crlite_enrolled": true, - "id": "d63929e7-804a-4e7f-9657-ccb49438e6ad", - "last_modified": 1643540241377 - }, - { "schema": 1643539727648, "derHash": "/yAcoSyHpvDLpkPpq7PJVMkVWt0xObLi6u0RS/n3XTE=", "subject": "CN=COMODO RSA Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB", @@ -8213,36 +9815,18 @@ "derHash": "RksOwKYC8Bk9tfM5EYhaOmGSGtFtJmTiW++rEM+m7SU=", "subject": "OU=Public Certification Authority,O=Chunghwa Telecom Co.\\, Ltd.,C=TW", "subjectDN": "MFsxCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEnMCUGA1UECwweUHVibGljIENlcnRpZmljYXRpb24gQXV0aG9yaXR5", - "whitelist": false, - "attachment": { - "hash": "49845caec147a9f80e7f49b5e4b2b8629653bccf72d7aa8dfa0b7029f5d75514", - "size": 1934, - "filename": "qMjf0br8Ay71_wiJ0t25y4v3IWwirr3SF1bWHJzkbnE=.pem", - "location": "security-state-staging/intermediates/cabaf189-98ae-41ee-8da3-966fb99dbea2.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "qMjf0br8Ay71/wiJ0t25y4v3IWwirr3SF1bWHJzkbnE=", - "crlite_enrolled": false, - "id": "201bbcbe-98a9-4e1d-9ba8-1d91ccaef4d5", - "last_modified": 1643317054962 - }, - { - "schema": 1643294903582, - "derHash": "Lf5H4USrs5+f5FHOzTUtmpvSiYI1HotlJP6xAdurH+w=", - "subject": "CN=GlobalSign Atlas R3 DV ACME CA 2022 Q2,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIERWIEFDTUUgQ0EgMjAyMiBRMg==", - "whitelist": false, - "attachment": { - "hash": "63657216ab2e0265cbcbce85e9b2783ccd35376d4e7c0f127fcac181251aa5ed", - "size": 1642, - "filename": "_1VRS6Ha0tRFo_8a_6PqqF4wtj16qRxOO4rXTjqDNFk=.pem", - "location": "security-state-staging/intermediates/c70a5a54-9017-4d7c-814c-c431416e70eb.pem", + "whitelist": false, + "attachment": { + "hash": "49845caec147a9f80e7f49b5e4b2b8629653bccf72d7aa8dfa0b7029f5d75514", + "size": 1934, + "filename": "qMjf0br8Ay71_wiJ0t25y4v3IWwirr3SF1bWHJzkbnE=.pem", + "location": "security-state-staging/intermediates/cabaf189-98ae-41ee-8da3-966fb99dbea2.pem", "mimetype": "application/x-pem-file" }, - "pubKeyHash": "/1VRS6Ha0tRFo/8a/6PqqF4wtj16qRxOO4rXTjqDNFk=", + "pubKeyHash": "qMjf0br8Ay71/wiJ0t25y4v3IWwirr3SF1bWHJzkbnE=", "crlite_enrolled": false, - "id": "681f5a20-f291-4509-bec3-6adbf5c05429", - "last_modified": 1643295452290 + "id": "201bbcbe-98a9-4e1d-9ba8-1d91ccaef4d5", + "last_modified": 1643317054962 }, { "schema": 1643294904826, @@ -8317,24 +9901,6 @@ "last_modified": 1643295452263 }, { - "schema": 1643294909522, - "derHash": "qBav/3RuoPCgoGTAQy+dK30M557C0emUD0oYaiUYIoQ=", - "subject": "CN=GlobalSign Atlas ECCR5 OV TLS CA 2022 Q2,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIFRMUyBDQSAyMDIyIFEy", - "whitelist": false, - "attachment": { - "hash": "049fc8dce345f116d37deb30e65527acd5a647e1de6e9d53685b97fe4fe7c5fe", - "size": 1195, - "filename": "TdoclaY2HEKPADeH2W-4kosHzm7UvYAafcidCBnsRDA=.pem", - "location": "security-state-staging/intermediates/6c42ca37-a352-4db9-b44d-e1a577fb1168.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "TdoclaY2HEKPADeH2W+4kosHzm7UvYAafcidCBnsRDA=", - "crlite_enrolled": false, - "id": "6de1a4fe-3539-4329-9838-cb4883353866", - "last_modified": 1643295452256 - }, - { "schema": 1643294910716, "derHash": "JWYC3IqAQbLtwMrmEaapjZs5rU3j4Z9i3AoKGVi3InE=", "subject": "CN=GlobalSign Atlas R6 EV TLS CA 2022 Q2,O=GlobalSign nv-sa,C=BE", @@ -8353,24 +9919,6 @@ "last_modified": 1643295452249 }, { - "schema": 1643294911965, - "derHash": "c1zDhuwaguZXpbRRyUlZYR08fQy7H9nZ7bQscZL4Rjo=", - "subject": "CN=GlobalSign Atlas R3 DV TLS CA 2022 Q2,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIERWIFRMUyBDQSAyMDIyIFEy", - "whitelist": false, - "attachment": { - "hash": "5dc3ef9866bfcfb8743ef46140622103cd877f3ecd2310029ef8d8ff09b17dd4", - "size": 1642, - "filename": "7Zgd-tc1DR60EUxxu86y2PNtnPLUCDONUQJhN35HWIU=.pem", - "location": "security-state-staging/intermediates/63da4365-743a-4755-bfb8-beb8ff31e794.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "7Zgd+tc1DR60EUxxu86y2PNtnPLUCDONUQJhN35HWIU=", - "crlite_enrolled": false, - "id": "12cc99be-332a-4aef-af43-25fe8420b210", - "last_modified": 1643295452242 - }, - { "schema": 1643294913157, "derHash": "1Qsgrf+Vm/vug7b9H6s2/eeUG5YM/Gg5qsY7n/20ZBM=", "subject": "CN=GlobalSign Atlas R3 OV ACME CA 2022 Q2,O=GlobalSign nv-sa,C=BE", @@ -8389,42 +9937,6 @@ "last_modified": 1643295452235 }, { - "schema": 1643294914396, - "derHash": "RfGFRTDsA3qqy0st6bTQ/b/GGIir1O4EFBg9meYEN6w=", - "subject": "CN=GlobalSign Atlas R3 AlphaSSL CA 2022 Q2,O=Globalsign nv-sa,C=BE", - "subjectDN": "MFoxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxzaWduIG52LXNhMTAwLgYDVQQDEydHbG9iYWxTaWduIEF0bGFzIFIzIEFscGhhU1NMIENBIDIwMjIgUTI=", - "whitelist": false, - "attachment": { - "hash": "0f455b2160c81e5b49b03b477baaa020d52928d16a4fe13504fca71f176fcf2e", - "size": 1642, - "filename": "6bop5gsmVRhy033XqsI4UKTek3IMHHpiLVeicdR_Luw=.pem", - "location": "security-state-staging/intermediates/12de76d7-2251-470d-8c62-aebb1b54b3d5.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "6bop5gsmVRhy033XqsI4UKTek3IMHHpiLVeicdR/Luw=", - "crlite_enrolled": false, - "id": "18283798-9f59-4d62-9a34-f643b9b7a76f", - "last_modified": 1643295452228 - }, - { - "schema": 1643294915568, - "derHash": "r9s8OW2F0Z++WCBt8GWermFMSrGPXM8gt4Oq8LvpagM=", - "subject": "CN=GlobalSign Atlas R3 OV TLS CA 2022 Q2,O=GlobalSign nv-sa,C=BE", - "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAyMDIyIFEy", - "whitelist": false, - "attachment": { - "hash": "810129eb69110a8c071f593ade366adbaa81a2420d3531e8f862ea7a5b423c11", - "size": 1642, - "filename": "VkNfITzp8T2xdmHOxT0ZZUfHySNBzxU2GWFfqmC3oLE=.pem", - "location": "security-state-staging/intermediates/8ae25e5b-e31b-4d80-be59-24ed2ecd5386.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "VkNfITzp8T2xdmHOxT0ZZUfHySNBzxU2GWFfqmC3oLE=", - "crlite_enrolled": false, - "id": "6982bfcf-221f-44f5-b27e-d4af6dd1ab4f", - "last_modified": 1643295452221 - }, - { "schema": 1643294916739, "derHash": "yyxoXLIU3NLyzabiwVWq8hp+E0vAvOgIsRMMRZElsKQ=", "subject": "CN=GlobalSign Atlas ECCR5 OV ACME CA 2022 Q2,O=GlobalSign nv-sa,C=BE", @@ -9829,24 +11341,6 @@ "last_modified": 1641481037225 }, { - "schema": 1641477704850, - "derHash": "d81ReEppPZSC5+ppTkBTvP2d9lWA+84UsqdSfAgYA+E=", - "subject": "CN=DigiCert Assured ID TLS CA G2,O=DigiCert Inc,C=US", - "subjectDN": "MEwxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJjAkBgNVBAMTHURpZ2lDZXJ0IEFzc3VyZWQgSUQgVExTIENBIEcy", - "whitelist": false, - "attachment": { - "hash": "38c26b5824725648f58682db859677ed5f482b8a98476190e2f4b5cea965ce52", - "size": 1918, - "filename": "7DHaE3Q3dQ9k5S7DaYbXog4BK-Oj492ta3kc2xRJ04s=.pem", - "location": "security-state-staging/intermediates/84f2426b-c265-4fe5-8bcc-09e6d612433c.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "7DHaE3Q3dQ9k5S7DaYbXog4BK+Oj492ta3kc2xRJ04s=", - "crlite_enrolled": true, - "id": "d8d54086-08a6-43e4-94b4-1d46de796b92", - "last_modified": 1641481037215 - }, - { "schema": 1641477710651, "derHash": "29+pGsxNuK2D/MeXjjXWL24y5VEIJzyOyZjjEzWA1mQ=", "subject": "CN=TrustAsia OV TLS Pro CA G2,O=TrustAsia Technologies\\, Inc.,C=CN", @@ -10405,114 +11899,6 @@ "last_modified": 1640876333340 }, { - "schema": 1640787170249, - "derHash": "yX42zr8VgKsb2tYcHVOwXHWBnoXZNyFL5oTIWbItReA=", - "subject": "CN=vTrus ECC DV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", - "subjectDN": "MEkxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRwwGgYDVQQDExN2VHJ1cyBFQ0MgRFYgU1NMIENB", - "whitelist": false, - "attachment": { - "hash": "ef4575a1abe7f8492e2e0d89dbbf6e80b196e4b6dccd8bf4e48700ed4bcfec4a", - "size": 1183, - "filename": "gJ1It3GyfR5y0xbHIcRJPwjI6151kRqrGSR_W5v6jek=.pem", - "location": "security-state-staging/intermediates/3a24be71-e5b8-4645-ba9c-4fabca8847d3.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "gJ1It3GyfR5y0xbHIcRJPwjI6151kRqrGSR/W5v6jek=", - "crlite_enrolled": false, - "id": "e296d20d-073e-4563-afc7-6e55d5946b3e", - "last_modified": 1640789973594 - }, - { - "schema": 1640787171474, - "derHash": "I1ge8ZId8vkpDboNTU9IqX+Yrq77XjNQs/cFgujNvng=", - "subject": "CN=vTrus ECC OV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", - "subjectDN": "MEkxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRwwGgYDVQQDExN2VHJ1cyBFQ0MgT1YgU1NMIENB", - "whitelist": false, - "attachment": { - "hash": "f5e788b19092bef358268ca50c1012469e23bacaec6b8968235a7fde8315fae3", - "size": 1183, - "filename": "atwg6ejpADR_jBbKnuSFzeAuVeHiQKJdUl2HSR0gLmU=.pem", - "location": "security-state-staging/intermediates/c703ae6f-ec40-48dd-a708-54774a3fa005.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "atwg6ejpADR/jBbKnuSFzeAuVeHiQKJdUl2HSR0gLmU=", - "crlite_enrolled": false, - "id": "2224e522-7889-4a09-b2de-d963d7e65cac", - "last_modified": 1640789973587 - }, - { - "schema": 1640787172648, - "derHash": "vTDA0eesuD78T19sYvjzpXm6snUnr65mbGlsOoZxdfE=", - "subject": "CN=vTrus ECC EV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", - "subjectDN": "MEkxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRwwGgYDVQQDExN2VHJ1cyBFQ0MgRVYgU1NMIENB", - "whitelist": false, - "attachment": { - "hash": "5efe51a26c5280ef3910747587a1258ee032a5cd4592afff27a55faecd152eec", - "size": 1183, - "filename": "7k0rYa-qry4wDaWSSycBwDVQALkMXBvBWeWHCjNIjTA=.pem", - "location": "security-state-staging/intermediates/1999d48b-3e07-48cf-bf4a-7656a1b29a53.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "7k0rYa+qry4wDaWSSycBwDVQALkMXBvBWeWHCjNIjTA=", - "crlite_enrolled": false, - "id": "72729739-8817-4cc4-a6d6-e50b179466d3", - "last_modified": 1640789973580 - }, - { - "schema": 1640787173887, - "derHash": "86ptcSoV9j+DUIBJedtUJBmmGysdIudWxBer/o10o8o=", - "subject": "CN=vTrus EV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", - "subjectDN": "MEUxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRgwFgYDVQQDEw92VHJ1cyBFViBTU0wgQ0E=", - "whitelist": false, - "attachment": { - "hash": "01cb1f5c741d941d11e0575e8235a3df364dc571bdd452841c23bd28e35016d3", - "size": 2003, - "filename": "tHoUHCrraSrjkHaUbZGcxRVrjSHn8i6s8_iI6HHC6Ok=.pem", - "location": "security-state-staging/intermediates/bfdb2a93-b869-4473-9246-b6dae2c91caf.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "tHoUHCrraSrjkHaUbZGcxRVrjSHn8i6s8/iI6HHC6Ok=", - "crlite_enrolled": false, - "id": "cd2c0c6f-fc8b-45b0-aa2b-15777338beb9", - "last_modified": 1640789973573 - }, - { - "schema": 1640787175080, - "derHash": "X36LSowRuvLL5kWbR/221QwChcSplPTu8v5RYKoKt4o=", - "subject": "CN=vTrus DV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", - "subjectDN": "MEUxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRgwFgYDVQQDEw92VHJ1cyBEViBTU0wgQ0E=", - "whitelist": false, - "attachment": { - "hash": "02cc66488a37100af024e6807b42f3d0fcca6bac68c70036847c21859c2e0f9f", - "size": 2003, - "filename": "75pE_IZKhqgviWzR4qTd2zPqnbH6f4VSS4OvPeBjEjQ=.pem", - "location": "security-state-staging/intermediates/c817af85-7cff-40a6-960f-7cb18bce787c.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "75pE/IZKhqgviWzR4qTd2zPqnbH6f4VSS4OvPeBjEjQ=", - "crlite_enrolled": false, - "id": "e3914740-82e4-4c6d-8237-d4b4be3ea8a3", - "last_modified": 1640789973567 - }, - { - "schema": 1640787176349, - "derHash": "pTtcm7WtknA9xPd/5k2ROiOf03IHOkjiegSBWApWN8Q=", - "subject": "CN=vTrus OV SSL CA,O=iTrusChina Co.\\,Ltd.,C=CN", - "subjectDN": "MEUxCzAJBgNVBAYTAkNOMRwwGgYDVQQKExNpVHJ1c0NoaW5hIENvLixMdGQuMRgwFgYDVQQDEw92VHJ1cyBPViBTU0wgQ0E=", - "whitelist": false, - "attachment": { - "hash": "4edc5bd03aede64fb9a23473cb654b555c969e2142043a263b82aeb3a59fe874", - "size": 2003, - "filename": "_AQe5lWT9xIwgAiIHcAT-pRj70-ckw8xE4qArEfIyd0=.pem", - "location": "security-state-staging/intermediates/0539c864-9413-4569-b1db-013de19c4878.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "/AQe5lWT9xIwgAiIHcAT+pRj70+ckw8xE4qArEfIyd0=", - "crlite_enrolled": false, - "id": "a1713f8e-1fc7-4247-88b6-891789cca9d7", - "last_modified": 1640789973559 - }, - { "schema": 1640574023025, "derHash": "vrUcj0UkJrK55nL33R7qSzPWw49MoqlpVs4kvQWww40=", "subject": "CN=TrustCor DV SSL CA - G2 - RSA,O=TrustCor Systems S. de R.L.,C=PA", @@ -10549,24 +11935,6 @@ "last_modified": 1640617119199 }, { - "schema": 1640614373653, - "derHash": "ODDbjqFSC2zfV+HgCl8Sl74R2eZDDINgcXYhL/hdLbg=", - "subject": "CN=TrustCor Enhanced Secure Site (CA2),OU=TrustCor Network,O=TrustCor Systems S. de R.L.,ST=Panama,C=PA", - "subjectDN": "MIGNMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xGTAXBgNVBAsMEFRydXN0Q29yIE5ldHdvcmsxLDAqBgNVBAMMI1RydXN0Q29yIEVuaGFuY2VkIFNlY3VyZSBTaXRlIChDQTIp", - "whitelist": false, - "attachment": { - "hash": "26631969fe5fbc543132a914eb2829ace13e9b418495495a837a47d8936c69b6", - "size": 2564, - "filename": "gTvKBlqs6VknFEiItiUhp5K_Oy0UnzZd7vVB6Ko3ZeE=.pem", - "location": "security-state-staging/intermediates/e49aa502-2469-4f4f-b00b-3d32c9f282e8.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "gTvKBlqs6VknFEiItiUhp5K/Oy0UnzZd7vVB6Ko3ZeE=", - "crlite_enrolled": true, - "id": "7f04f0ef-3fdc-4bfa-9cc5-c76e75f35add", - "last_modified": 1640617119189 - }, - { "schema": 1640269085632, "derHash": "+RYG0bxSxhATbKqFarUAxIw7mTusSAjNgrxLeKvyQVY=", "subject": "CN=NETLOCK DVSSL CA,OU=Tanúsítványkiadók (Certification Services),O=NETLOCK Kft.,L=Budapest,C=HU", @@ -10999,24 +12367,6 @@ "last_modified": 1639083515813 }, { - "schema": 1639083021523, - "derHash": "E0XC05rktlzKceiOmispxx3JE/lS6TWoErAE26eueVc=", - "subject": "CN=ACCVCA-110,OU=PKIACCV,O=ACCV,C=ES", - "subjectDN": "MEMxEzARBgNVBAMMCkFDQ1ZDQS0xMTAxEDAOBgNVBAsMB1BLSUFDQ1YxDTALBgNVBAoMBEFDQ1YxCzAJBgNVBAYTAkVT", - "whitelist": false, - "attachment": { - "hash": "e6da6a137d62a7acc06ba43bbecbca249317995ef2a5821be7c4c3e4904d11cd", - "size": 2649, - "filename": "qX1E174XIirdC_7IZnHG6ACm0iCltwbZSr_U507C-Ck=.pem", - "location": "security-state-staging/intermediates/27528fc3-b963-415a-a99a-4f327d7d7c83.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "qX1E174XIirdC/7IZnHG6ACm0iCltwbZSr/U507C+Ck=", - "crlite_enrolled": true, - "id": "4dff9826-c4f5-4bad-9c0b-ef5d5c0bc30d", - "last_modified": 1639083515803 - }, - { "schema": 1639083021821, "derHash": "I5/6htcQM7olWRR4IFfYfoQhrt1ZELeGkotqEkjD40E=", "subject": "CN=CA Disig R2I3 Certification Service,O=Disig a.s.,L=Bratislava,C=SK", @@ -11071,24 +12421,6 @@ "last_modified": 1639083515774 }, { - "schema": 1639083015751, - "derHash": "6TJ6NHy+HLlM3JqlTLMbbkPWiWjRfQnOMmoJG/wvCxE=", - "subject": "CN=ACCVCA-110,OU=PKIACCV,O=ACCV,C=ES", - "subjectDN": "MEMxEzARBgNVBAMMCkFDQ1ZDQS0xMTAxEDAOBgNVBAsMB1BLSUFDQ1YxDTALBgNVBAoMBEFDQ1YxCzAJBgNVBAYTAkVT", - "whitelist": false, - "attachment": { - "hash": "88d175177fc311fc5ad5e439d61dfabfbe6a0cc3dbf7be58654a104156ba2dae", - "size": 2686, - "filename": "qX1E174XIirdC_7IZnHG6ACm0iCltwbZSr_U507C-Ck=.pem", - "location": "security-state-staging/intermediates/7b9e7264-b0e3-4c9e-bda1-908a922c5b3f.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "qX1E174XIirdC/7IZnHG6ACm0iCltwbZSr/U507C+Ck=", - "crlite_enrolled": true, - "id": "772a5e91-e4ab-4bc1-b2a7-9d88c0c7e9bf", - "last_modified": 1639083515765 - }, - { "schema": 1639083020657, "derHash": "MlNBL9rUUjEIwJi7DuDv7df6/dAPsw5Hxrup/j4c24g=", "subject": "CN=GDCA TrustAUTH R4 Primer CA,O=Global Digital Cybersecurity Authority Co.\\, Ltd.,C=CN", @@ -11611,24 +12943,6 @@ "last_modified": 1636577884550 }, { - "schema": 1636555797761, - "derHash": "dYlNTJTCLXKW7hn7RHYjJYwlkbFwMSiLs4aiCqHw4KY=", - "subject": "CN=NetLock Közjegyzői (Class A) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU", - "subjectDN": "MIGuMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE8MDoGA1UEAwwzTmV0TG9jayBLw7Z6amVneXrFkWkgKENsYXNzIEEpIFRhbsO6c8OtdHbDoW55a2lhZMOz", - "whitelist": false, - "attachment": { - "hash": "4327de015aac627d028d4696e3b582048933e2f87d179c261b01897e32b67a1d", - "size": 2190, - "filename": "RWiIGgLo9cnu9JGiGhnz5uw6FBH1Y5qDY4qGsl5Q9EM=.pem", - "location": "security-state-staging/intermediates/27099d75-dfc0-441a-a1de-81e112a1d6e5.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "RWiIGgLo9cnu9JGiGhnz5uw6FBH1Y5qDY4qGsl5Q9EM=", - "crlite_enrolled": true, - "id": "a76d3004-9787-484d-a4d9-2e5555cd8b56", - "last_modified": 1636556282950 - }, - { "schema": 1636555800810, "derHash": "NyuPTOc77fyIcYxAe7az5tj5p5vpVxkNDnEBx7DvmjI=", "subject": "CN=NetLock Expressz (Class C) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU", @@ -11677,28 +12991,10 @@ "location": "security-state-staging/intermediates/5ae11eb3-59e2-4f2f-a3ad-09d610869295.pem", "mimetype": "application/x-pem-file" }, - "pubKeyHash": "1YROuDznuNvrat3sL9gwGR124PRLocGQQWd6IoM50Ls=", - "crlite_enrolled": true, - "id": "1a8145a6-66a3-4c40-914b-e027086ea091", - "last_modified": 1636556282833 - }, - { - "schema": 1635991660699, - "derHash": "Fh7lOGMpsoon/0BXNlUqYh1ahEpDgR42I+Uu76C6hAo=", - "subject": "CN=QuoVadis Global SSL ICA G3,O=QuoVadis Limited,C=BM", - "subjectDN": "ME0xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSMwIQYDVQQDExpRdW9WYWRpcyBHbG9iYWwgU1NMIElDQSBHMw==", - "whitelist": false, - "attachment": { - "hash": "b8fd47c4234e14aae99e993f325e88c880408479e0c6ecf0a155bcb2481f0c25", - "size": 2353, - "filename": "KM3iZPSceB-hgYuNI-cSg4LRgTiUxCeGjrfXRQAY6Rs=.pem", - "location": "security-state-staging/intermediates/54eee2eb-1fa3-4f22-84be-3db33a9a0e5d.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "KM3iZPSceB+hgYuNI+cSg4LRgTiUxCeGjrfXRQAY6Rs=", + "pubKeyHash": "1YROuDznuNvrat3sL9gwGR124PRLocGQQWd6IoM50Ls=", "crlite_enrolled": true, - "id": "9f149ba1-e8dc-457d-9abd-23718172f6af", - "last_modified": 1635994653520 + "id": "1a8145a6-66a3-4c40-914b-e027086ea091", + "last_modified": 1636556282833 }, { "schema": 1635735519825, @@ -12835,24 +14131,6 @@ "last_modified": 1625126256032 }, { - "schema": 1624978190848, - "derHash": "UsCaLKF5NocDoYVwBM1aPIfTvaw6VY4UPvNQj77rEDI=", - "subject": "CN=VTB BANK GCC R6 EV CA 2021,O=VTB BANK (PJSC),C=RU", - "subjectDN": "MEwxCzAJBgNVBAYTAlJVMRgwFgYDVQQKEw9WVEIgQkFOSyAoUEpTQykxIzAhBgNVBAMTGlZUQiBCQU5LIEdDQyBSNiBFViBDQSAyMDIx", - "whitelist": false, - "attachment": { - "hash": "75dc13be98517e35b11cfb3d466e7babe6240e9ec480752d55cf763bfccf4cf3", - "size": 2389, - "filename": "XFbaj2K7SX_8Lbb_N5o8z-DwCDiYKyc2ZsRYCFYweAY=.pem", - "location": "security-state-staging/intermediates/1afbe1af-f8e7-46a2-af62-d860d9a88f52.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "XFbaj2K7SX/8Lbb/N5o8z+DwCDiYKyc2ZsRYCFYweAY=", - "crlite_enrolled": true, - "id": "7f60c9b6-2fbc-4a44-a104-18b30f5ed0a8", - "last_modified": 1624978716106 - }, - { "schema": 1624978190351, "derHash": "x/FF1HT13CCyemThaWF5UiRpB4szP+j/iHuXzngF42I=", "subject": "CN=CUISEC GCC R3 TLS OV CA 2021,O=联通智慧安全科技有限公司,C=CN", @@ -12871,24 +14149,6 @@ "last_modified": 1624978716085 }, { - "schema": 1624978187811, - "derHash": "MSqwEnRPhZ7viuD6JdAlnonar1G5T6xn38YQYPDbIgc=", - "subject": "CN=VTB BANK GCC R6 OV CA 2021,O=VTB BANK (PJSC),C=RU", - "subjectDN": "MEwxCzAJBgNVBAYTAlJVMRgwFgYDVQQKEw9WVEIgQkFOSyAoUEpTQykxIzAhBgNVBAMTGlZUQiBCQU5LIEdDQyBSNiBPViBDQSAyMDIx", - "whitelist": false, - "attachment": { - "hash": "8aeafa0e77fe21899b8d6fec6a9d28910d10a874856375b9043010f048407bae", - "size": 2389, - "filename": "1NDMrvPgEIgVf_T0x1FbpvAfsQQ32xZnSYEqeQ6nzD4=.pem", - "location": "security-state-staging/intermediates/a3d2b25d-bf3f-4eb2-b373-fd42fa9733a4.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "1NDMrvPgEIgVf/T0x1FbpvAfsQQ32xZnSYEqeQ6nzD4=", - "crlite_enrolled": true, - "id": "340ef00d-96c5-47c2-908d-d9eaa69779f1", - "last_modified": 1624978716064 - }, - { "schema": 1624976027068, "derHash": "aS/huLommVMd5M0vUq44+hGasB9LMat4/m2z/fA6cDE=", "subject": "CN=CUISEC GCC R3 TLS DV CA 2021,O=联通智慧安全科技有限公司,C=CN", @@ -12925,24 +14185,6 @@ "last_modified": 1624978716023 }, { - "schema": 1624978189829, - "derHash": "lbqW9yyzFOzQXOD9ddiGOBo2jI9YafBL3TAkiT9OOTs=", - "subject": "CN=VTB BANK GCC R6 DV CA 2021,O=VTB BANK (PJSC),C=RU", - "subjectDN": "MEwxCzAJBgNVBAYTAlJVMRgwFgYDVQQKEw9WVEIgQkFOSyAoUEpTQykxIzAhBgNVBAMTGlZUQiBCQU5LIEdDQyBSNiBEViBDQSAyMDIx", - "whitelist": false, - "attachment": { - "hash": "f807d756c8fb3d76c22571a72a26bb72e8c7b73ef52d98b439358f790f5a1df4", - "size": 2389, - "filename": "olnee8t8xOsYWGNSkIcYUCYeNenyhxG6R_lLRa2yMI0=.pem", - "location": "security-state-staging/intermediates/a19ddf6a-3fa5-4ca1-9514-0de02dfba270.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "olnee8t8xOsYWGNSkIcYUCYeNenyhxG6R/lLRa2yMI0=", - "crlite_enrolled": true, - "id": "a9491b45-dfaf-47ef-8f30-073c2220bb90", - "last_modified": 1624978716000 - }, - { "schema": 1624913392136, "derHash": "00GZhqSHZYJdE7MBVHsn3Fag7NMJGYr+mn1/qtZJaao=", "subject": "CN=Verokey High Assurance Business,O=Verokey,C=AU", @@ -13483,24 +14725,6 @@ "last_modified": 1616745549953 }, { - "schema": 1616205449736, - "derHash": "0tfUvuj/G33rpCd0AIHAf3sYai8poSNg1T+MINRVU40=", - "subject": "CN=TrustAsia RSA OV SSL Server CA,O=TrustAsia Technologies\\, Inc.,ST=Shanghai,C=CN", - "subjectDN": "MHAxCzAJBgNVBAYTAkNOMREwDwYDVQQIEwhTaGFuZ2hhaTElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEnMCUGA1UEAxMeVHJ1c3RBc2lhIFJTQSBPViBTU0wgU2VydmVyIENB", - "whitelist": false, - "attachment": { - "hash": "cef0257132e6443d4fa6a6f012339e0c0a90ba4eb8ce5d8083038ca1f5461393", - "size": 2133, - "filename": "ZyqPojkZzOKu3M2n4NkoNEh6f1YBTiJm2DtfHJroAWA=.pem", - "location": "security-state-staging/intermediates/f5b72560-0bb5-40bd-b68b-381a9e82b9e3.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "ZyqPojkZzOKu3M2n4NkoNEh6f1YBTiJm2DtfHJroAWA=", - "crlite_enrolled": true, - "id": "e944087f-76e7-41f9-a1bb-8ef5a2cd787a", - "last_modified": 1616248690156 - }, - { "schema": 1616075883477, "derHash": "WSKFNdEU6NKfm5LUIlGLxj3ctXCXQo2MyYd32QfG7v4=", "subject": "CN=AC Firmaprofesional - Secure Web 2021,OU=Security Services,O=Firmaprofesional S.A.,C=ES", @@ -13879,24 +15103,6 @@ "last_modified": 1610999846045 }, { - "schema": 1610979409846, - "derHash": "AUU/ZFzZHiM7dISCfyP4pXP9ZBAp6opr/lSe9O2LMj0=", - "subject": "CN=HydrantID SSL ICA G2,O=HydrantID (Avalanche Cloud Corporation),C=US", - "subjectDN": "MF4xCzAJBgNVBAYTAlVTMTAwLgYDVQQKEydIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHTAbBgNVBAMTFEh5ZHJhbnRJRCBTU0wgSUNBIEcy", - "whitelist": false, - "attachment": { - "hash": "7210ab4fd67176c39b121dc273d719681e6df16720f1ec337d1ed98f2f42397f", - "size": 2410, - "filename": "400Fim9IQe4j-Gj-Ci4R44M3gA6J1_TRh8LlPSLF3I8=.pem", - "location": "security-state-staging/intermediates/d86830f0-be1c-4699-823a-14b96b05fedd.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "400Fim9IQe4j+Gj+Ci4R44M3gA6J1/TRh8LlPSLF3I8=", - "crlite_enrolled": true, - "id": "03652dfb-4639-4ce5-a586-d186a812f8e7", - "last_modified": 1610981840623 - }, - { "schema": 1608651068348, "derHash": "wWnWndPSbTbLgt8TXFf+M27P9+fqQB6Z484ZF6j7gYA=", "subject": "CN=CSP SSL Service CA 5,O=CENTRAL SECURITY PATROLS CO.\\, LTD.,L=Shinjuku-ku,ST=Tokyo,C=JP", @@ -14221,60 +15427,6 @@ "last_modified": 1603418262218 }, { - "schema": 1603331414283, - "derHash": "GLtw79o/kUOBFcnrTzM+tOxoNUVx5pSRlaCpHJ5vvNg=", - "subject": "CN=QuoVadis RCA1G3 TLS CA,O=QuoVadis Limited,C=BM", - "subjectDN": "MEkxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMR8wHQYDVQQDDBZRdW9WYWRpcyBSQ0ExRzMgVExTIENB", - "whitelist": false, - "attachment": { - "hash": "b3bb67e5eae26a4c94edb219c24b0b5e4b61ccf76dfc1f6b45000e822a22ceb3", - "size": 2369, - "filename": "oVTzYxEWPWmbDlo2GZhwL-6my7pLP_DO_Q5zS0j4erM=.pem", - "location": "security-state-staging/intermediates/0142a491-80f0-4728-bbff-4b23436aafa0.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "oVTzYxEWPWmbDlo2GZhwL+6my7pLP/DO/Q5zS0j4erM=", - "crlite_enrolled": false, - "id": "6737f4c2-a14c-4b1d-8e0c-b062884b238a", - "last_modified": 1603331864382 - }, - { - "schema": 1603331409918, - "derHash": "7MDResMmOsahZNzbCPgtB+k/zqcj9muIsG7rqWeN8rs=", - "subject": "CN=QuoVadis RCA3G3 TLS CA,O=QuoVadis Limited,C=BM", - "subjectDN": "MEkxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMR8wHQYDVQQDDBZRdW9WYWRpcyBSQ0EzRzMgVExTIENB", - "whitelist": false, - "attachment": { - "hash": "fc4fc6584822834debd279e4a8481536c6bd26913df00dda003fbc4ed5facf42", - "size": 2369, - "filename": "HGG1eHmdWucI4rZV77-UwfI3jqj3-wm0NFUmWbyNZvs=.pem", - "location": "security-state-staging/intermediates/098ff8c0-cbd6-4de0-93e9-b29fc7971c7d.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "HGG1eHmdWucI4rZV77+UwfI3jqj3+wm0NFUmWbyNZvs=", - "crlite_enrolled": false, - "id": "c4121d69-d075-4111-9d27-6dbed565f530", - "last_modified": 1603331864371 - }, - { - "schema": 1603331407633, - "derHash": "OmbmSCEuYyH5TZ6rzJLAUuZ52ZLJmtRZak57ha3O5d4=", - "subject": "CN=QuoVadis RCA3G1 TLS CA,O=QuoVadis Limited,C=BM", - "subjectDN": "MEkxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMR8wHQYDVQQDDBZRdW9WYWRpcyBSQ0EzRzEgVExTIENB", - "whitelist": false, - "attachment": { - "hash": "e5c77c38ef33f161625bc3592afbf547db64bc8507aff887efbd2902cd674003", - "size": 2361, - "filename": "cDYpcfBIVfSGVjIXkR2jSnkBmuagMeyfAzJa6dOp_y4=.pem", - "location": "security-state-staging/intermediates/4251568a-3965-4fe1-81c3-100b6c736472.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "cDYpcfBIVfSGVjIXkR2jSnkBmuagMeyfAzJa6dOp/y4=", - "crlite_enrolled": false, - "id": "6eca33ec-4f64-4e1a-9686-48926a7dccbd", - "last_modified": 1603331864347 - }, - { "schema": 1603241851952, "derHash": "qmHCkn3InbIlypoX1gA3PQWPaW2G0Q4r17Xo9EqX7tE=", "subject": "CN=WoSign OV SSL Pro CA,O=WoSign CA Limited,C=CN", @@ -14293,24 +15445,6 @@ "last_modified": 1603245450595 }, { - "schema": 1602961037868, - "derHash": "qlf0gsvFFrTRDKQJfdkNmfWqcn0gcJDQfanDaZirua0=", - "subject": "CN=HydrantID SSL CA G3,O=HydrantID (Avalanche Cloud Corporation),C=US", - "subjectDN": "MF0xCzAJBgNVBAYTAlVTMTAwLgYDVQQKDCdIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHDAaBgNVBAMME0h5ZHJhbnRJRCBTU0wgQ0EgRzM=", - "whitelist": false, - "attachment": { - "hash": "7e0808e92ebc33ef96558a3d7c46b9b86290ea9b9c814fe1b375dd5f6e94179f", - "size": 2414, - "filename": "CgDzm8Z-Gk0j7D6yq4U4IstjpiYpBiVqyPDYr-62oO8=.pem", - "location": "security-state-staging/intermediates/5cbfc23e-7d49-4372-82b5-58e1a0a3785e.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "CgDzm8Z+Gk0j7D6yq4U4IstjpiYpBiVqyPDYr+62oO8=", - "crlite_enrolled": true, - "id": "b97f538d-34bf-41f2-ba3b-3ffa41cdfa5e", - "last_modified": 1602964635139 - }, - { "schema": 1601581757962, "derHash": "vao4RyBgT/RlOwDaOHOoxUWZb/uKuR1hbxBJX8Am6Pw=", "subject": "CN=cPanel\\, Inc. ECC Certification Authority,O=cPanel\\, Inc.,L=Houston,ST=TX,C=US", @@ -14437,24 +15571,6 @@ "last_modified": 1601517444423 }, { - "schema": 1601376755442, - "derHash": "axQ8IAXVU5zCLqtfdy2yqf6HRn/v+gf88Kn30oJ0yno=", - "subject": "CN=Entrust Root Certification Authority - G2,OU=See www.entrust.net/legal-terms+OU=(c) 2009 Entrust\\, Inc. - for authorized use only,O=Entrust\\, Inc.,C=US", - "subjectDN": "MIG+MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQDEylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMg==", - "whitelist": false, - "attachment": { - "hash": "d1674b1f7b1aef60543ae1256c7298ed99b5016d5a49c8ba8b9745c679003a0f", - "size": 1792, - "filename": "du6FkDdMcVQ3u8prumAo6t3i3G27uMP2EOhR8R0at_U=.pem", - "location": "security-state-staging/intermediates/90532b3e-aeb1-42ae-b53d-9b0794e82506.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "du6FkDdMcVQ3u8prumAo6t3i3G27uMP2EOhR8R0at/U=", - "crlite_enrolled": false, - "id": "512e1df0-26cc-48dd-9524-3c1d7aaf422b", - "last_modified": 1601517444299 - }, - { "schema": 1601376733088, "derHash": "ZHFyUK+LAo3Y5cC65MkULIsQNTJhK8SHCF/Twxn5wGc=", "subject": "CN=ePKI Root Certification Authority - G2,O=Chunghwa Telecom Co.\\, Ltd.,C=TW", @@ -14473,42 +15589,6 @@ "last_modified": 1601517444135 }, { - "schema": 1601376743119, - "derHash": "P94NNuAmtujr4sKIg2B8hlHeEL1sH8rTZeVg9OovOwM=", - "subject": "CN=Entrust Root Certification Authority - EC1,OU=See www.entrust.net/legal-terms+OU=(c) 2012 Entrust\\, Inc. - for authorized use only,O=Entrust\\, Inc.,C=US", - "subjectDN": "MIG/MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTIgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTMwMQYDVQQDEypFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBFQzE=", - "whitelist": false, - "attachment": { - "hash": "fa84991015956f299a21164f4a77c8da26802bb7bac4207eb696cc086ce715b0", - "size": 1577, - "filename": "_qK31kX7pz11PB7Jp4cMQOH3sMVh6Se5hb9xGGbjbyI=.pem", - "location": "security-state-staging/intermediates/2827fb47-01de-4cf9-88b5-faa3f7464bf6.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "/qK31kX7pz11PB7Jp4cMQOH3sMVh6Se5hb9xGGbjbyI=", - "crlite_enrolled": false, - "id": "10eb04ab-95e7-45a1-94b3-40bc33bad469", - "last_modified": 1601517444117 - }, - { - "schema": 1601376774088, - "derHash": "BTHIb3hZWJOf3FOZJNOV0e+kCTZOaCfTq5h2MR/7J7A=", - "subject": "CN=QuoVadis Enterprise Trust CA 1 G3,O=QuoVadis Limited,C=BM", - "subjectDN": "MFQxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMSowKAYDVQQDDCFRdW9WYWRpcyBFbnRlcnByaXNlIFRydXN0IENBIDEgRzM=", - "whitelist": false, - "attachment": { - "hash": "0838a224858164040768ee9fb8bab6de6efb11294b58f2c5db9fea5788b39bc7", - "size": 2333, - "filename": "8ZpHrAG1eQIQZnOeYn-p9E7tqq_yc1fiaSaeKR1BY2I=.pem", - "location": "security-state-staging/intermediates/360e077f-09bb-4788-bbfe-80bd616b8011.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "8ZpHrAG1eQIQZnOeYn+p9E7tqq/yc1fiaSaeKR1BY2I=", - "crlite_enrolled": false, - "id": "2a1565c1-b11e-4fb4-a545-99acd43e82cf", - "last_modified": 1601517444099 - }, - { "schema": 1601376769580, "derHash": "rY6zLJ2pHdyFXzgnRZkBR9xvI9n7sE/J1Hax7iD8cdg=", "subject": "CN=DigiCert Trusted Root G4,OU=www.digicert.com,O=DigiCert Inc,C=US", @@ -14581,24 +15661,6 @@ "last_modified": 1601517443537 }, { - "schema": 1601376749293, - "derHash": "2lRiUmoMLphSqGGGsCU5AVh1nNymriHwn3E8pqzN0fE=", - "subject": "CN=QuoVadis Enterprise Trust CA 3 G3,O=QuoVadis Limited,C=BM", - "subjectDN": "MFQxCzAJBgNVBAYTAkJNMRkwFwYDVQQKDBBRdW9WYWRpcyBMaW1pdGVkMSowKAYDVQQDDCFRdW9WYWRpcyBFbnRlcnByaXNlIFRydXN0IENBIDMgRzM=", - "whitelist": false, - "attachment": { - "hash": "0b01ec78286d184607dd09e4cac9c4992d4af9f58534eb2cb8fea437481a6197", - "size": 2333, - "filename": "smsafMf1m1b-3NN_jssl3RMKHXok-GELWWNtG9vZEmA=.pem", - "location": "security-state-staging/intermediates/e3b263a6-dc7b-4bda-8acb-d8c10b677b2f.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "smsafMf1m1b+3NN/jssl3RMKHXok+GELWWNtG9vZEmA=", - "crlite_enrolled": false, - "id": "b1c31974-0f71-4207-8532-82f8138e8ca8", - "last_modified": 1601517443502 - }, - { "schema": 1601376725349, "derHash": "KGibMOTDBqq1OwJ7KeNq1t0dz0uVOZRILKhL3B7KyZY=", "subject": "CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\\, Inc.,L=Scottsdale,ST=Arizona,C=US", @@ -14653,24 +15715,6 @@ "last_modified": 1601517443342 }, { - "schema": 1601376757868, - "derHash": "uCIQzend6g4UvimvZH5LMvlu0qnvGqW6qcxks4tsAco=", - "subject": "OU=AC RAIZ FNMT-RCM,O=FNMT-RCM,C=ES", - "subjectDN": "MDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTQ==", - "whitelist": false, - "attachment": { - "hash": "dda828b4a97c8a8f24d378bef318af5d144be4d873ff73ba3f07303c1c298e49", - "size": 1971, - "filename": "L8VmekuaJnjtasatJUZfy_YJS_zZUECXx6j6R63l6Ig=.pem", - "location": "security-state-staging/intermediates/517b4707-ce8c-4711-b41b-f2251c5edd3d.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "L8VmekuaJnjtasatJUZfy/YJS/zZUECXx6j6R63l6Ig=", - "crlite_enrolled": false, - "id": "a16f609b-1af0-4b48-90e8-2d6a182ca81f", - "last_modified": 1601517443289 - }, - { "schema": 1601376755045, "derHash": "5x2MO69D9rM1LfV0qfDUogZb8D2heVFLH8xdm+yMj80=", "subject": "CN=Cybertrust Global Root,O=Cybertrust\\, Inc", @@ -16021,24 +17065,6 @@ "last_modified": 1591199862091 }, { - "schema": 1591166848442, - "derHash": "gmV1bdXNijfuYeQDUSiOSxaondJIwexOuiWq8WGr9Jg=", - "subject": "CN=AC Sector Público,OU=Ceres,O=FNMT-RCM,C=ES", - "subjectDN": "MGcxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ2VyZXMxGDAWBgNVBGEMD1ZBVEVTLVEyODI2MDA0SjEbMBkGA1UEAwwSQUMgU2VjdG9yIFDDumJsaWNv", - "whitelist": false, - "attachment": { - "hash": "cfe09ce65e4dcbc8449292b7e92e1cdaacc6c228de14a49ccc6300fda8e73598", - "size": 2816, - "filename": "aN4wUQfL0YidepsDn9ylA8GoitH0XRdS349Qxylp2RU=.pem", - "location": "security-state-staging/intermediates/7f6c9b16-66e0-4bd8-bb34-a2812443ecfb.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "aN4wUQfL0YidepsDn9ylA8GoitH0XRdS349Qxylp2RU=", - "crlite_enrolled": false, - "id": "72c55deb-6292-4294-b3d7-cd0eb0bc896a", - "last_modified": 1591199862045 - }, - { "schema": 1591166832366, "derHash": "HhMjmuBLlxvd5lOv38cyRDi44UbFxIqBcDEibJV2RTk=", "subject": "CN=GlobeSSL DV CA,O=CentralNic Luxembourg Sàrl,C=LU", @@ -16345,24 +17371,6 @@ "last_modified": 1591199861316 }, { - "schema": 1591167131032, - "derHash": "Iy9jZ89WHgDIPhgKn8qFRrN3H7RQ68tKBSb4NJyMoTk=", - "subject": "CN=Entrust Certification Authority - L1E,OU=www.entrust.net/rpa is incorporated by reference+OU=(c) 2009 Entrust\\, Inc.,O=Entrust\\, Inc.,C=US", - "subjectDN": "MIGxMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjE5MDcGA1UECxMwd3d3LmVudHJ1c3QubmV0L3JwYSBpcyBpbmNvcnBvcmF0ZWQgYnkgcmVmZXJlbmNlMR8wHQYDVQQLExYoYykgMjAwOSBFbnRydXN0LCBJbmMuMS4wLAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gTDFF", - "whitelist": false, - "attachment": { - "hash": "fb13e64f68c20f1be87aefb4a955348c9604a4103426723d49f8029f9fbcc797", - "size": 1833, - "filename": "HeMEDmta9acr_zmjHkdP_dKlW5RaqBlmADFOqTG56eA=.pem", - "location": "security-state-staging/intermediates/703534c7-f828-4ce3-86b8-8655d652362c.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "HeMEDmta9acr/zmjHkdP/dKlW5RaqBlmADFOqTG56eA=", - "crlite_enrolled": true, - "id": "4afefd58-c2fb-4ede-9f24-7a133bc67e03", - "last_modified": 1591199861291 - }, - { "schema": 1591167097159, "derHash": "vMOlTXCDEWMWzgO5pAyjbzNvSDmsWBhi1DEahPcBUU0=", "subject": "CN=OKCERT R4 OV SSL CA G2,OU=Kingnettech,O=Kingnet Information Technology Co.\\, Ltd.,C=CN", @@ -16453,24 +17461,6 @@ "last_modified": 1580831371623 }, { - "schema": 1580831333485, - "derHash": "Ies3q0z274ll7BdmQJyna4suA/LRo4jfc0II6G3u5nk=", - "subject": "CN=DigiCert High Assurance CA-3,OU=www.digicert.com,O=DigiCert Inc,C=US", - "subjectDN": "MGYxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJTAjBgNVBAMTHERpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIENBLTM=", - "whitelist": false, - "attachment": { - "hash": "d90539ef3ff76bf2ac792ae9bbc21d751d2ce841eab7781e291ab04fd791d950", - "size": 2259, - "filename": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm-jrFQ=.pem", - "location": "security-state-staging/intermediates/3211ad63-2e73-4235-916c-6b7f2a4c67d9.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm+jrFQ=", - "crlite_enrolled": false, - "id": "d468c05a-c173-4f74-855c-1e3eba3d2298", - "last_modified": 1580831371587 - }, - { "schema": 1580831339070, "derHash": "LarG/frBbFSMU/8RmCVNfpN3YdIqHnzFwalGLpcUYfU=", "subject": "CN=TrustAsia ECC EV TLS Pro CA,O=TrustAsia Technologies\\, Inc.,C=CN", @@ -16516,85 +17506,31 @@ "hash": "c0d77ccda911d76f8c80ebf6c501b4dba9c6a787604981af5b3c3a9f954bac59", "size": 1642, "filename": "v2OX1FzmsvhGRs3vKv7P5R4N-Aly9A_qKXxfEauTwao=.pem", - "location": "security-state-staging/intermediates/b3abe3ee-8707-467d-8091-1ab64836b606.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "v2OX1FzmsvhGRs3vKv7P5R4N+Aly9A/qKXxfEauTwao=", - "crlite_enrolled": false, - "id": "86931689-a92f-49d4-a149-95fd2b1d44eb", - "last_modified": 1580831371541 - }, - { - "schema": 1580831331985, - "derHash": "wN0GD/jOVW81aD1WTg5mspBxeICGk/g/OqZCMmv20Mg=", - "subject": "CN=TrustAsia ECC EV TLS Pro CA G2,O=TrustAsia Technologies\\, Inc.,C=CN", - "subjectDN": "MF0xCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMScwJQYDVQQDEx5UcnVzdEFzaWEgRUNDIEVWIFRMUyBQcm8gQ0EgRzI=", - "whitelist": false, - "attachment": { - "hash": "0b22b379557262c177cd0df97c067db059c622c348c2768de211920a4cc62a97", - "size": 1398, - "filename": "6lJqHj6Al12YiHTPXbfLj9_MNtnpjUBiUvHLHqoVkTA=.pem", - "location": "security-state-staging/intermediates/7e4a29a7-3ed7-4e85-8e48-c24ebed06855.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "6lJqHj6Al12YiHTPXbfLj9/MNtnpjUBiUvHLHqoVkTA=", - "crlite_enrolled": false, - "id": "293e0ccd-71f9-42a4-ac96-f21584cc8fa2", - "last_modified": 1580831371521 - }, - { - "schema": 1580831338677, - "derHash": "V9jVuDJha3gjRmoMNydw0WpdzyRlgfD1g3PlHH4eUxY=", - "subject": "CN=DigiCert High Assurance CA-3,OU=www.digicert.com,O=DigiCert Inc,C=US", - "subjectDN": "MGYxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJTAjBgNVBAMTHERpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIENBLTM=", - "whitelist": false, - "attachment": { - "hash": "80d4bb692e396cf3ccf6595d18d123459107363391f6c0e030d16cefc85308ba", - "size": 2255, - "filename": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm-jrFQ=.pem", - "location": "security-state-staging/intermediates/e98dee35-7b84-4d8f-9f01-3021b3339da7.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm+jrFQ=", - "crlite_enrolled": false, - "id": "2a5f71dc-243b-43b6-918e-b6e20ae381aa", - "last_modified": 1580831371512 - }, - { - "schema": 1580831338274, - "derHash": "wKShrAXgMJajsquKOFArOeJhThE5e+5z0KZris73ooM=", - "subject": "CN=DigiCert High Assurance CA-3,OU=www.digicert.com,O=DigiCert Inc,C=US", - "subjectDN": "MGYxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJTAjBgNVBAMTHERpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIENBLTM=", - "whitelist": false, - "attachment": { - "hash": "e3909fbaebb8ef6af7bbffe333d52eafa063b31f216ab25a26f98adacb9b51f6", - "size": 2349, - "filename": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm-jrFQ=.pem", - "location": "security-state-staging/intermediates/202293f2-84fb-4a8c-b939-35ceaeb78a8d.pem", + "location": "security-state-staging/intermediates/b3abe3ee-8707-467d-8091-1ab64836b606.pem", "mimetype": "application/x-pem-file" }, - "pubKeyHash": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm+jrFQ=", + "pubKeyHash": "v2OX1FzmsvhGRs3vKv7P5R4N+Aly9A/qKXxfEauTwao=", "crlite_enrolled": false, - "id": "4495c40e-442c-4744-bcea-962e2b93bfd0", - "last_modified": 1580831371491 + "id": "86931689-a92f-49d4-a149-95fd2b1d44eb", + "last_modified": 1580831371541 }, { - "schema": 1580831331243, - "derHash": "3LQArMJJ+4SDQV/CZQvJBIjKlmQxGMsOT0Qkshw6paQ=", - "subject": "CN=DigiCert High Assurance CA-3,OU=www.digicert.com,O=DigiCert Inc,C=US", - "subjectDN": "MGYxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJTAjBgNVBAMTHERpZ2lDZXJ0IEhpZ2ggQXNzdXJhbmNlIENBLTM=", + "schema": 1580831331985, + "derHash": "wN0GD/jOVW81aD1WTg5mspBxeICGk/g/OqZCMmv20Mg=", + "subject": "CN=TrustAsia ECC EV TLS Pro CA G2,O=TrustAsia Technologies\\, Inc.,C=CN", + "subjectDN": "MF0xCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMScwJQYDVQQDEx5UcnVzdEFzaWEgRUNDIEVWIFRMUyBQcm8gQ0EgRzI=", "whitelist": false, "attachment": { - "hash": "7b2bb2e718615878d60921325a6b6a79bfcdb0076c093323e35de7dc5ccb5e1e", - "size": 2259, - "filename": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm-jrFQ=.pem", - "location": "security-state-staging/intermediates/dc2adf52-a65a-47f4-98df-90d1bc2795c0.pem", + "hash": "0b22b379557262c177cd0df97c067db059c622c348c2768de211920a4cc62a97", + "size": 1398, + "filename": "6lJqHj6Al12YiHTPXbfLj9_MNtnpjUBiUvHLHqoVkTA=.pem", + "location": "security-state-staging/intermediates/7e4a29a7-3ed7-4e85-8e48-c24ebed06855.pem", "mimetype": "application/x-pem-file" }, - "pubKeyHash": "emrYgpjLplsXa6OnqyXuj5BgQDPaapisB5WfVm+jrFQ=", + "pubKeyHash": "6lJqHj6Al12YiHTPXbfLj9/MNtnpjUBiUvHLHqoVkTA=", "crlite_enrolled": false, - "id": "b1fa8b2a-9240-4c89-a31e-bbedfe18d2c1", - "last_modified": 1580831371478 + "id": "293e0ccd-71f9-42a4-ac96-f21584cc8fa2", + "last_modified": 1580831371521 }, { "schema": 1579028933319, @@ -17317,24 +18253,6 @@ "last_modified": 1576536533821 }, { - "schema": 1576535909746, - "derHash": "yikDieDYxipAg/Yoo59S/j84tzGZz/r3wDcjeKRA+2o=", - "subject": "CN=Entrust Certification Authority - L1M,OU=See www.entrust.net/legal-terms+OU=(c) 2014 Entrust\\, Inc. - for authorized use only,O=Entrust\\, Inc.,C=US", - "subjectDN": "MIG6MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTQgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gTDFN", - "whitelist": false, - "attachment": { - "hash": "02e23f9b06e438417e4e71c8b9fb42a8e2da31ad266ad1ca50792fd36d7251b9", - "size": 1829, - "filename": "VYZwGiJkq3NNo1YRI2RGiSTI1mqTWG8zDcRf1_KAN6I=.pem", - "location": "security-state-staging/intermediates/3aae7952-dcc2-4419-b53f-9eac4094c51b.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "VYZwGiJkq3NNo1YRI2RGiSTI1mqTWG8zDcRf1/KAN6I=", - "crlite_enrolled": true, - "id": "d9a71e99-a2ad-4f36-b975-79dca9dd44f0", - "last_modified": 1576536533809 - }, - { "schema": 1576535908358, "derHash": "peM8KOMBOnH192CuOxZZUJAEPS7FIJ7FKQPE+60lja0=", "subject": "CN=GlobalSign Root R46,O=GlobalSign nv-sa,C=BE", @@ -17767,24 +18685,6 @@ "last_modified": 1576536533196 }, { - "schema": 1576535678404, - "derHash": "Ocdjqc8Z2SP5d9I2JquJBEmkRKuLeVyBXvHvgf68Hjg=", - "subject": "CN=Amazon,OU=Server CA 1A,O=Amazon,C=US", - "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAxQTEPMA0GA1UEAxMGQW1hem9u", - "whitelist": false, - "attachment": { - "hash": "f399c4419d079a15a697f418e9a8d5ff90d3ac32db49507e30ee4a17491a1fd2", - "size": 1544, - "filename": "ZLtb2AMR-j9TvZlATKuHYq1uBIRH0Kl_IZ_OyhZh83w=.pem", - "location": "security-state-staging/intermediates/0bf45415-b984-4367-b6a5-c8d413da9d72.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "ZLtb2AMR+j9TvZlATKuHYq1uBIRH0Kl/IZ/OyhZh83w=", - "crlite_enrolled": false, - "id": "ad381075-9d54-4e8f-9730-7b932a4f8b90", - "last_modified": 1576536533183 - }, - { "schema": 1576535676932, "derHash": "lqWizTmADPtqKoMO5S3PR/uwD/GwMgTbNpFc6jHxM0I=", "subject": "CN=GDCA TrustAUTH R4 EV SSL CA,O=Global Digital Cybersecurity Authority Co.\\, Ltd.,C=CN", @@ -17839,24 +18739,6 @@ "last_modified": 1576536533071 }, { - "schema": 1576535651001, - "derHash": "8DhCHwfyDWOiDTaR5aF4q4RZ6+VwwWR7dpBVTvI4dqs=", - "subject": "OU=AC Componentes Informáticos,O=FNMT-RCM,C=ES", - "subjectDN": "MEcxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTElMCMGA1UECwwcQUMgQ29tcG9uZW50ZXMgSW5mb3Jtw6F0aWNvcw==", - "whitelist": false, - "attachment": { - "hash": "711fb746c38ddfee6090169d62da5358968caf228ade2ad75cb8be4c4dd3832d", - "size": 2430, - "filename": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ-57NkgXsoGc=.pem", - "location": "security-state-staging/intermediates/0ab80520-1d1a-43c3-88ab-467f0681114b.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ+57NkgXsoGc=", - "crlite_enrolled": true, - "id": "e28f2f6d-d594-43d7-8356-195ce9834fcf", - "last_modified": 1576536533065 - }, - { "schema": 1576535643788, "derHash": "7nk2QxmUdO1g79yMzeTTdEWSFoNZOqdRu/juSRo5Hpc=", "subject": "CN=AlphaSSL CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE", @@ -18127,24 +19009,6 @@ "last_modified": 1576536532774 }, { - "schema": 1576535552192, - "derHash": "38x3XGRNtKM61xKTQz9GPI4xBXziLLJn+dMaA1P0/C8=", - "subject": "CN=Amazon,OU=Server CA 0A,O=Amazon,C=US", - "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAwQTEPMA0GA1UEAxMGQW1hem9u", - "whitelist": false, - "attachment": { - "hash": "beb147abe96d6e343843d2e2fd729d58e42b2dab74a3c0ccc41530639168e721", - "size": 1666, - "filename": "tYU57KoTkhzNuA0400h1_eZHHFoVnZvu8vpvmZg71hE=.pem", - "location": "security-state-staging/intermediates/e3003237-67fc-4118-adfa-35b22f4430b8.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "tYU57KoTkhzNuA0400h1/eZHHFoVnZvu8vpvmZg71hE=", - "crlite_enrolled": false, - "id": "838bb94d-8f5e-4921-a93a-9035addc8ae6", - "last_modified": 1576536532770 - }, - { "schema": 1576535550809, "derHash": "U5wT1vJzElL5ndK69D1AVZxGxYV1jE/EQQx+xILb7Wk=", "subject": "CN=OneSignSSL ECC DV Secure Server CA,O=One Sign Pte. Ltd.,L=Singapore,ST=Singapore,C=SG", @@ -18181,24 +19045,6 @@ "last_modified": 1576536532759 }, { - "schema": 1576535549332, - "derHash": "ORIgcFt1vPPtPNSzYxIT9WnSz4ImEB4XB5mlNUqxKGE=", - "subject": "CN=Amazon Root CA 1,O=Amazon,C=US", - "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDE=", - "whitelist": false, - "attachment": { - "hash": "076400302106a1d71c433340807aa21af7fdcdd85ff586d57757cf6d6718dbc4", - "size": 1646, - "filename": "--MBgDH5WGvL9Bcn5Be30cRcL0f5O-NyoXuWtQdX1aI=.pem", - "location": "security-state-staging/intermediates/3f9e0d02-5eec-434a-9f82-730c885b8a36.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "++MBgDH5WGvL9Bcn5Be30cRcL0f5O+NyoXuWtQdX1aI=", - "crlite_enrolled": false, - "id": "9cb19f7a-6a36-46ac-a938-502daee657ab", - "last_modified": 1576536532756 - }, - { "schema": 1576535544989, "derHash": "pfS4JqWGN/kStp/oWZByQ73+qnGgLcRCnQZk4hSgqds=", "subject": "CN=EV TLS ECC ICA R1,O=Public Key Infrastructure Ltd,L=Victoria,ST=Mahé,C=SC", @@ -18289,24 +19135,6 @@ "last_modified": 1576536532675 }, { - "schema": 1576535485113, - "derHash": "GKQ8UdCBdMOm2F8cExi9KQl1PnXZHPZZn3M0ewBwKJA=", - "subject": "SERIALNUMBER=Q2826004J,CN=AC Administración Pública,OU=CERES,O=FNMT-RCM,C=ES", - "subjectDN": "MGoxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ0VSRVMxEjAQBgNVBAUTCVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgQWRtaW5pc3RyYWNpw7NuIFDDumJsaWNh", - "whitelist": false, - "attachment": { - "hash": "b1b8087026dcff96160076000ab8ec70cb29448880359f0ce676c987951eea3d", - "size": 2438, - "filename": "uoKUEuwkPtDw_4xcvGkwXVXs-8X9iESzjMRl18SDGV0=.pem", - "location": "security-state-staging/intermediates/b3020299-7dbb-43c6-97f7-e87736a45fc9.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "uoKUEuwkPtDw/4xcvGkwXVXs+8X9iESzjMRl18SDGV0=", - "crlite_enrolled": true, - "id": "aabec165-9b72-4d6a-8fa8-d4eeb29669f0", - "last_modified": 1576536532600 - }, - { "schema": 1576535467347, "derHash": "9V+f/Lg8c0UyYWAcfgRNsVoPA0uTwFgw8oY174ic9nA=", "subject": "CN=Amazon,OU=Server CA 1B,O=Amazon,C=US", @@ -18415,24 +19243,6 @@ "last_modified": 1576536532446 }, { - "schema": 1576536118729, - "derHash": "izWEZtZhJjEhIGRaWHWmpX48gdmEdqlnYEJEJU6sAPA=", - "subject": "CN=Amazon Root CA 2,O=Amazon,C=US", - "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDI=", - "whitelist": false, - "attachment": { - "hash": "099a90f379b0ecca696c3cde0f60b64211dbaafa0ce4ae4b1b13e1dc145c4f27", - "size": 1991, - "filename": "f0KW_FtqTjs108NpYj42SrGvOB2PpxIVM8nWxjPqJGE=.pem", - "location": "security-state-staging/intermediates/b138d0b5-195f-401a-8c97-1bd007ddf648.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "f0KW/FtqTjs108NpYj42SrGvOB2PpxIVM8nWxjPqJGE=", - "crlite_enrolled": false, - "id": "4a7d284b-1295-4ae6-af24-7de01c05ab0d", - "last_modified": 1576536532395 - }, - { "schema": 1576536107246, "derHash": "cpVqHFql2RrGnNYxB6JaoYQ4Gd3CHFEI7B2X8yKWA84=", "subject": "CN=USERTrust ECC Domain Validation Secure Server CA,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US", @@ -18469,24 +19279,6 @@ "last_modified": 1576536532374 }, { - "schema": 1576536113725, - "derHash": "h9zU3HRkCjIs0gVVJQbRvmTxJZYlgJZUSYa0hQvHJwY=", - "subject": "CN=Amazon Root CA 1,O=Amazon,C=US", - "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDE=", - "whitelist": false, - "attachment": { - "hash": "8f2766bb42744fe0fcf37f433c66191277a29d9bd4641cc4121ccf842ecf940c", - "size": 1646, - "filename": "--MBgDH5WGvL9Bcn5Be30cRcL0f5O-NyoXuWtQdX1aI=.pem", - "location": "security-state-staging/intermediates/6e41f0a0-496f-4745-a675-09b997850d04.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "++MBgDH5WGvL9Bcn5Be30cRcL0f5O+NyoXuWtQdX1aI=", - "crlite_enrolled": false, - "id": "a3c4dda1-24a7-46e0-97f3-4ce13eb70857", - "last_modified": 1576536532366 - }, - { "schema": 1576536088977, "derHash": "h8cVU0Res8M8PgcQcRuZ6cd3PwTZGsOKn0wILuJBAeo=", "subject": "CN=GlobalSign ECC OV SSL CA 2018,O=GlobalSign nv-sa,C=BE", @@ -18685,24 +19477,6 @@ "last_modified": 1576536532124 }, { - "schema": 1576536128757, - "derHash": "VD2bf8KmRxzYT8pSws9hWd+D6/zYjYsIta8/iHN/UuY=", - "subject": "CN=Amazon Root CA 4,O=Amazon,C=US", - "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDQ=", - "whitelist": false, - "attachment": { - "hash": "529e23adcf592c5f3ead786e4cade919e70e5ce97467aa24135ffedb958ca909", - "size": 1410, - "filename": "9-ze1cZgR9KO1kZrVDxA4HQ6voHRCSVNz4RdTCx4U8U=.pem", - "location": "security-state-staging/intermediates/7e2813c8-5040-4edb-82d1-6727b462247e.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "9+ze1cZgR9KO1kZrVDxA4HQ6voHRCSVNz4RdTCx4U8U=", - "crlite_enrolled": false, - "id": "6fb12511-5167-469d-9692-07522e197a11", - "last_modified": 1576536532102 - }, - { "schema": 1576536080221, "derHash": "m/WJZ1RZlhlFEtthdxUa/plwauo9o2/u562fizwFB8s=", "subject": "CN=Go Daddy Root Certificate Authority - G2,OU=https://certs.godaddy.com/repository/,O=GoDaddy.com\\, Inc.,L=Scottsdale,ST=Arizona,C=US", @@ -18811,24 +19585,6 @@ "last_modified": 1576536531830 }, { - "schema": 1576536097708, - "derHash": "QMgm/bIroyovnbT5R3D3K4sdqcj/2nsR5vJ68kXIm14=", - "subject": "CN=Amazon Root CA 3,O=Amazon,C=US", - "subjectDN": "MDkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xGTAXBgNVBAMTEEFtYXpvbiBSb290IENBIDM=", - "whitelist": false, - "attachment": { - "hash": "527804e0cdb3a780b57c0f3f7429e1a5b42984b3bd67157b9fda6ba75cdc6d0a", - "size": 1370, - "filename": "NqvDJlas_GRcYbcWE8S_IceH9cq77kg0jVhZeAPXq8k=.pem", - "location": "security-state-staging/intermediates/52ba3866-d596-48e9-9a8f-b80188b6a77a.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "NqvDJlas/GRcYbcWE8S/IceH9cq77kg0jVhZeAPXq8k=", - "crlite_enrolled": false, - "id": "249a688b-b665-4574-a1c8-43ac8cff8067", - "last_modified": 1576536531740 - }, - { "schema": 1576536075273, "derHash": "jxn/4C/Hle1wdl0UNq3fdy/g8Hc9pDbtvbQqLjDi6Cg=", "subject": "CN=GlobalSign ECC EV SSL CA 2018,O=GlobalSign nv-sa,C=BE", @@ -19207,24 +19963,6 @@ "last_modified": 1576536530666 }, { - "schema": 1576536134890, - "derHash": "2OGKZa94RUhUyqKPsvXnm1fsFB8BBCO8yKcav8BJbCw=", - "subject": "CN=GENIOUS RSA Extended Validation Secure Server CA,OU=Controlled by Sectigo exclusively for Genious Communications,O=Genious Communications,L=Marrakech,ST=Marrakech,C=MA", - "subjectDN": "MIHYMQswCQYDVQQGEwJNQTESMBAGA1UECBMJTWFycmFrZWNoMRIwEAYDVQQHEwlNYXJyYWtlY2gxHzAdBgNVBAoTFkdlbmlvdXMgQ29tbXVuaWNhdGlvbnMxRTBDBgNVBAsTPENvbnRyb2xsZWQgYnkgU2VjdGlnbyBleGNsdXNpdmVseSBmb3IgR2VuaW91cyBDb21tdW5pY2F0aW9uczE5MDcGA1UEAxMwR0VOSU9VUyBSU0EgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB", - "whitelist": false, - "attachment": { - "hash": "dc505a925299ceeea43e708019d0fb1086a320d0a035fb0cf585b7e376d7e4f6", - "size": 2304, - "filename": "ImErDX6kNNxXp53lr4QRD49owJiK0A8orzjdda8pDb0=.pem", - "location": "security-state-staging/intermediates/ae100f8d-c411-4912-908b-ef0fe59832c9.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "ImErDX6kNNxXp53lr4QRD49owJiK0A8orzjdda8pDb0=", - "crlite_enrolled": false, - "id": "51c58311-bdec-4aab-a6cb-4a4f8e10e262", - "last_modified": 1576536530584 - }, - { "schema": 1562108591033, "derHash": "pKfQXyloVnnjwAoyLOa2zVf92l8u9CxsbnNYHIpHEHc=", "subject": "CN=Trusted Secure ECC Certificate Authority DV,O=Corporation Service Company,L=Wilmington,ST=DE,C=US", @@ -19531,24 +20269,6 @@ "last_modified": 1562108490643 }, { - "schema": 1562108488345, - "derHash": "2w2hYDLxZDoklv3nQuK76B2spYzXYSBhQg4VTOG84r0=", - "subject": "OU=AC Componentes Informáticos,O=FNMT-RCM,C=ES", - "subjectDN": "MEcxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTElMCMGA1UECwwcQUMgQ29tcG9uZW50ZXMgSW5mb3Jtw6F0aWNvcw==", - "whitelist": false, - "attachment": { - "hash": "9667524969985c4cb1aa76f3e3c434be6441809f9c3d2bad6265165a0b509b08", - "size": 2430, - "filename": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ-57NkgXsoGc=.pem", - "location": "security-state-staging/intermediates/5bc2733e-1751-448d-9db9-b1e6c1f4afc4.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "MEJWDQI0WXBrEdYtj1u1WdwD26XsIXQQ+57NkgXsoGc=", - "crlite_enrolled": true, - "id": "43dee182-4f7e-46ed-8e3c-f6b84da2e351", - "last_modified": 1562108489116 - }, - { "schema": 1562108486020, "derHash": "dCZArGf41xssR3dQdK2MYLriwBI6sYNUwkwXGTLYYYM=", "subject": "CN=eMudhra ECC Organization Validation Secure Server CA,O=eMudhra Technologies Limited,L=Bengaluru,ST=Karnataka,C=IN", @@ -19999,24 +20719,6 @@ "last_modified": 1562108340038 }, { - "schema": 1562108330185, - "derHash": "chMOOyiQA0khRhf01vP7hdCEde54vwlcWUWKFNGCiGY=", - "subject": "CN=Amazon,OU=Server CA 2A,O=Amazon,C=US", - "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAyQTEPMA0GA1UEAxMGQW1hem9u", - "whitelist": false, - "attachment": { - "hash": "2a82794488d990d2916a320c0881fba10016362c3188bf9954c30bf6848d39ec", - "size": 2235, - "filename": "G9pa__g3gTgL9wgZj599LbHgZ_FLuep7rnCqwLAwXns=.pem", - "location": "security-state-staging/intermediates/83918488-ba2c-4ac0-8d46-0bf63d394383.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "G9pa//g3gTgL9wgZj599LbHgZ/FLuep7rnCqwLAwXns=", - "crlite_enrolled": false, - "id": "b35b0a67-1556-41a4-a319-97a50209d163", - "last_modified": 1562108330937 - }, - { "schema": 1562108327127, "derHash": "ykOJyJ3fwxvsJsdLRKhJjFiy2DhRb6AbFPE5NinlikA=", "subject": "CN=AffirmTrust Certificate Authority - DV1,OU=See www.affirmtrust.com/repository,O=AffirmTrust,C=CA", @@ -21043,24 +21745,6 @@ "last_modified": 1562025423424 }, { - "schema": 1562025418924, - "derHash": "e+0pJ2rL7Z8Xbzi7o6Z85YFbXL8VIse7WezYawnhbtI=", - "subject": "CN=Amazon,OU=Server CA 4A,O=Amazon,C=US", - "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSA0QTEPMA0GA1UEAxMGQW1hem9u", - "whitelist": false, - "attachment": { - "hash": "80e7ade2cfaf2410560723bc955bfee6189c0738bf29f0cbef746f8ab6211ff5", - "size": 1089, - "filename": "F3CN_yt_rsnLG1IV67JCHZewVDyTb6ydbgK5LyDlxwc=.pem", - "location": "security-state-staging/intermediates/e35a1354-e5b2-4212-a952-670b71886c48.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "F3CN/yt/rsnLG1IV67JCHZewVDyTb6ydbgK5LyDlxwc=", - "crlite_enrolled": false, - "id": "e892e888-930b-4d65-ac61-bac8ebb2adc5", - "last_modified": 1562025419658 - }, - { "schema": 1562025406966, "derHash": "SKL31+gNQucip1LYkjgcBu7EQUFVydZFKqUG7qTtQ/Y=", "subject": "CN=Trustico ECC OV CA,O=The Trustico Group Ltd,L=Croydon,ST=London,C=GB", @@ -21547,24 +22231,6 @@ "last_modified": 1562025274069 }, { - "schema": 1562025267327, - "derHash": "nG0IkzIBQH+/KxJUC2fMDkyWZvEy4VBHYqcXy66PP9Y=", - "subject": "CN=HydrantID SSL ICA G2,O=HydrantID (Avalanche Cloud Corporation),C=US", - "subjectDN": "MF4xCzAJBgNVBAYTAlVTMTAwLgYDVQQKEydIeWRyYW50SUQgKEF2YWxhbmNoZSBDbG91ZCBDb3Jwb3JhdGlvbikxHTAbBgNVBAMTFEh5ZHJhbnRJRCBTU0wgSUNBIEcy", - "whitelist": false, - "attachment": { - "hash": "c4fbca9a15eb275e83118896e4839aba070abde056cf047aa1a57afdd78af927", - "size": 2406, - "filename": "400Fim9IQe4j-Gj-Ci4R44M3gA6J1_TRh8LlPSLF3I8=.pem", - "location": "security-state-staging/intermediates/a6966be8-fd40-411c-9f57-e4027bd92592.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "400Fim9IQe4j+Gj+Ci4R44M3gA6J1/TRh8LlPSLF3I8=", - "crlite_enrolled": true, - "id": "c6e5ffe6-a302-4ac5-a6b6-3b6b960d5347", - "last_modified": 1562025268059 - }, - { "schema": 1562025265805, "derHash": "CCf2v9u/MOoP6s8be9Bu72XbJxrNfptdJpoPLzcrIek=", "subject": "CN=EuropeanSSL Server CA 2,O=EUNETIC GmbH,L=Durmersheim,ST=Baden-Württemberg,C=DE", @@ -22537,24 +23203,6 @@ "last_modified": 1562024929214 }, { - "schema": 1562024919307, - "derHash": "IFFUt3ftxVpRRlhaXlTgVKcL5KrTuF0CMY2ie/gHrfE=", - "subject": "CN=Amazon,OU=Server CA 3A,O=Amazon,C=US", - "subjectDN": "MEYxCzAJBgNVBAYTAlVTMQ8wDQYDVQQKEwZBbWF6b24xFTATBgNVBAsTDFNlcnZlciBDQSAzQTEPMA0GA1UEAxMGQW1hem9u", - "whitelist": false, - "attachment": { - "hash": "05a3b22929a248fe09c8e080b25d2e2076a990ab5c629c24916624485d790547", - "size": 1008, - "filename": "fFO133kTXZr2GV72u3OrmMLImVC4krGS3_14TbklpBw=.pem", - "location": "security-state-staging/intermediates/88877557-2163-4dde-bcc8-c9e7b0b12206.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "fFO133kTXZr2GV72u3OrmMLImVC4krGS3/14TbklpBw=", - "crlite_enrolled": false, - "id": "7760fae2-5a3c-4718-9149-d102bf58eb33", - "last_modified": 1562024920055 - }, - { "schema": 1562024917049, "derHash": "bN+dy/NRCju0AnYdYtDF5OevxR2c/wHwK9UyVtxWet8=", "subject": "CN=GDCA TrustAUTH R4 DV SSL CA G2,O=Global Digital Cybersecurity Authority Co.\\, Ltd.,C=CN", @@ -23743,24 +24391,6 @@ "last_modified": 1562023810560 }, { - "schema": 1561997070297, - "derHash": "gw/yBa5pSFBZw/sjdqfy+e4cKmHeJZ3QnQu2rWn4iDI=", - "subject": "SERIALNUMBER=Q2826004J,CN=AC Administración Pública,OU=CERES,O=FNMT-RCM,C=ES", - "subjectDN": "MGoxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEOMAwGA1UECwwFQ0VSRVMxEjAQBgNVBAUTCVEyODI2MDA0SjEkMCIGA1UEAwwbQUMgQWRtaW5pc3RyYWNpw7NuIFDDumJsaWNh", - "whitelist": false, - "attachment": { - "hash": "1a643193c39cf1aa75be19f71a124a43c4ff5403f87361b228eed95bdccebd66", - "size": 2438, - "filename": "uoKUEuwkPtDw_4xcvGkwXVXs-8X9iESzjMRl18SDGV0=.pem", - "location": "security-state-staging/intermediates/b2066e9b-2ccd-4607-b8f6-e71ba0621bca.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "uoKUEuwkPtDw/4xcvGkwXVXs+8X9iESzjMRl18SDGV0=", - "crlite_enrolled": true, - "id": "a37e40f6-ffa2-4d26-992d-432521bce7f9", - "last_modified": 1562023808306 - }, - { "schema": 1559867684823, "derHash": "9nIr5ErNrltaizsLSvn0v15fvDlhz1JsvZdp0cbhSFk=", "subject": "CN=Sectigo ECC Domain Validation Secure Server CA 2,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB", diff -Nru thunderbird-91.8.1+build1/SOURCE_CHANGESET thunderbird-91.9.1+build1/SOURCE_CHANGESET --- thunderbird-91.8.1+build1/SOURCE_CHANGESET 2022-04-15 07:49:38.000000000 +0000 +++ thunderbird-91.9.1+build1/SOURCE_CHANGESET 2022-05-20 06:00:00.000000000 +0000 @@ -1 +1 @@ -3b54d6b5407fca03efdb2e2f57a9838498e0d038 \ No newline at end of file +262b3b86a564b17e3397b519488698bc530f0858 \ No newline at end of file diff -Nru thunderbird-91.8.1+build1/taskcluster/docker/decision/HASH thunderbird-91.9.1+build1/taskcluster/docker/decision/HASH --- thunderbird-91.8.1+build1/taskcluster/docker/decision/HASH 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/taskcluster/docker/decision/HASH 2022-05-20 05:47:21.000000000 +0000 @@ -1 +1 @@ -sha256:9964730ed951584e65032bd1d6a2b7ede6d880a8b7aefb72d0d7f82346d834e3 +sha256:9f69fe08c28e3cb3cc296451f0a2735df6e25d0e3c877ea735ef1b7f0b345b06 diff -Nru thunderbird-91.8.1+build1/.taskcluster.yml thunderbird-91.9.1+build1/.taskcluster.yml --- thunderbird-91.8.1+build1/.taskcluster.yml 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/.taskcluster.yml 2022-05-20 05:46:55.000000000 +0000 @@ -214,7 +214,7 @@ ACTION_CALLBACK: '${action.cb_name}' cache: - "${trustDomain}-level-${repository.level}-checkouts-sparse-v2": /builds/worker/checkouts + "${trustDomain}-level-${repository.level}-checkouts-sparse-v3": /builds/worker/checkouts features: taskclusterProxy: true @@ -222,7 +222,7 @@ # Note: This task is built server side without the context or tooling that # exist in tree so we must hard code the hash - image: 'mozillareleases/gecko_decision:3.0.1@sha256:9964730ed951584e65032bd1d6a2b7ede6d880a8b7aefb72d0d7f82346d834e3' + image: 'mozillareleases/gecko_decision:4.0.0@sha256:9f69fe08c28e3cb3cc296451f0a2735df6e25d0e3c877ea735ef1b7f0b345b06' maxRunTime: 1800 diff -Nru thunderbird-91.8.1+build1/testing/firefox-ui/tests/functional/security/manifest.ini thunderbird-91.9.1+build1/testing/firefox-ui/tests/functional/security/manifest.ini --- thunderbird-91.8.1+build1/testing/firefox-ui/tests/functional/security/manifest.ini 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/testing/firefox-ui/tests/functional/security/manifest.ini 2022-05-20 05:47:22.000000000 +0000 @@ -2,3 +2,4 @@ tags = remote [test_ssl_status_after_restart.py] +skip-if = true # Bug 1762505: badssl.com not reachable and expired certificate diff -Nru thunderbird-91.8.1+build1/testing/web-platform/meta/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html.ini thunderbird-91.9.1+build1/testing/web-platform/meta/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html.ini --- thunderbird-91.8.1+build1/testing/web-platform/meta/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html.ini 2022-04-15 07:48:28.000000000 +0000 +++ thunderbird-91.9.1+build1/testing/web-platform/meta/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html.ini 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -[sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html] - bug: 1600442 - expected: - if release_or_beta: [OK, TIMEOUT] - [Sandboxed => unsandboxed popup] - expected: - if release_or_beta: [FAIL, TIMEOUT] - if (os == "android") and debug: ["FAIL", "PASS"] - if (os == "android") and not debug: ["FAIL", "PASS"] - FAIL - diff -Nru thunderbird-91.8.1+build1/third_party/cbindgen/.cargo/config thunderbird-91.9.1+build1/third_party/cbindgen/.cargo/config --- thunderbird-91.8.1+build1/third_party/cbindgen/.cargo/config 2022-04-15 07:50:04.000000000 +0000 +++ thunderbird-91.9.1+build1/third_party/cbindgen/.cargo/config 2022-05-20 06:03:05.000000000 +0000 @@ -1,4 +1,3 @@ - [source.crates-io] replace-with = "vendored-sources" diff -Nru thunderbird-91.8.1+build1/third_party/dump_syms/.cargo/config thunderbird-91.9.1+build1/third_party/dump_syms/.cargo/config --- thunderbird-91.8.1+build1/third_party/dump_syms/.cargo/config 2022-04-15 07:50:13.000000000 +0000 +++ thunderbird-91.9.1+build1/third_party/dump_syms/.cargo/config 2022-05-20 06:03:35.000000000 +0000 @@ -1,4 +1,3 @@ - [source.crates-io] replace-with = "vendored-sources" diff -Nru thunderbird-91.8.1+build1/toolkit/components/reader/AboutReader.jsm thunderbird-91.9.1+build1/toolkit/components/reader/AboutReader.jsm --- thunderbird-91.8.1+build1/toolkit/components/reader/AboutReader.jsm 2022-04-15 07:41:23.000000000 +0000 +++ thunderbird-91.9.1+build1/toolkit/components/reader/AboutReader.jsm 2022-05-20 05:47:40.000000000 +0000 @@ -767,7 +767,12 @@ try { article = await ReaderMode.downloadAndParseDocument(url); } catch (e) { - if (e && e.newURL) { + if (e?.newURL && this._actor) { + await this._actor.sendQuery("RedirectTo", { + newURL: e.newURL, + article: e.article, + }); + let readerURL = "about:reader?url=" + encodeURIComponent(e.newURL); this._win.location.replace(readerURL); return; diff -Nru thunderbird-91.8.1+build1/toolkit/components/reader/ReaderMode.jsm thunderbird-91.9.1+build1/toolkit/components/reader/ReaderMode.jsm --- thunderbird-91.8.1+build1/toolkit/components/reader/ReaderMode.jsm 2022-04-15 07:41:23.000000000 +0000 +++ thunderbird-91.9.1+build1/toolkit/components/reader/ReaderMode.jsm 2022-05-20 05:47:40.000000000 +0000 @@ -135,7 +135,7 @@ }); let url = win.document.location.href; - let originalURL = ReaderMode.getOriginalUrl(url); + let originalURL = this.getOriginalUrl(url); let webNav = docShell.QueryInterface(Ci.nsIWebNavigation); if (!Services.appinfo.sessionHistoryInParent) { @@ -219,7 +219,7 @@ }, getOriginalUrlObjectForDisplay(url) { - let originalUrl = ReaderMode.getOriginalUrl(url); + let originalUrl = this.getOriginalUrl(url); if (originalUrl) { let uriObj; try { @@ -264,10 +264,11 @@ * @resolves JS object representing the article, or null if no article is found. */ async downloadAndParseDocument(url) { - let doc = await this._downloadDocument(url); - if (!doc) { + let result = await this._downloadDocument(url); + if (!result?.doc) { return null; } + let { doc, newURL } = result; if ( !Readerable.shouldCheckUri(doc.documentURIObject) || !Readerable.shouldCheckUri(doc.baseURIObject, true) @@ -276,7 +277,14 @@ return null; } - return this._readerParse(doc); + let article = await this._readerParse(doc); + // If we have to redirect, reject to the caller with the parsed article, + // so we can update the URL before displaying it. + if (newURL) { + return Promise.reject({ newURL, article }); + } + // Otherwise, we can just continue with the article. + return article; }, _downloadDocument(url) { @@ -312,48 +320,6 @@ return; } - // Manually follow a meta refresh tag if one exists. - let meta = doc.querySelector("meta[http-equiv=refresh]"); - if (meta) { - let content = meta.getAttribute("content"); - if (content) { - let urlIndex = content.toUpperCase().indexOf("URL="); - if (urlIndex > -1) { - let baseURI = Services.io.newURI(url); - let newURI = Services.io.newURI( - content.substring(urlIndex + 4), - null, - baseURI - ); - let newURL = newURI.spec; - let ssm = Services.scriptSecurityManager; - let flags = - ssm.LOAD_IS_AUTOMATIC_DOCUMENT_REPLACEMENT | - ssm.DISALLOW_INHERIT_PRINCIPAL; - try { - ssm.checkLoadURIStrWithPrincipal( - doc.nodePrincipal, - newURL, - flags - ); - } catch (ex) { - let errorMsg = - "Reader mode disallowed meta refresh (reason: " + ex + ")."; - - if (Services.prefs.getBoolPref("reader.errors.includeURLs")) { - errorMsg += " Refresh target URI: '" + newURL + "'."; - } - reject(errorMsg); - return; - } - // Otherwise, pass an object indicating our new URL: - if (!baseURI.equalsExceptRef(newURI)) { - reject({ newURL }); - return; - } - } - } - } let responseURL = xhr.responseURL; let givenURL = url; // Convert these to real URIs to make sure the escaping (or lack @@ -369,14 +335,15 @@ /* Ignore errors - we'll use what we had before */ } + // We treat redirects as download successes here: + histogram.add(DOWNLOAD_SUCCESS); + + let result = { doc }; if (responseURL != givenURL) { - // We were redirected without a meta refresh tag. - // Force redirect to the correct place: - reject({ newURL: xhr.responseURL }); - return; + result.newURL = xhr.responseURL; } - resolve(doc); - histogram.add(DOWNLOAD_SUCCESS); + + resolve(result); }; xhr.send(); }); diff -Nru thunderbird-91.8.1+build1/toolkit/components/windowwatcher/nsWindowWatcher.cpp thunderbird-91.9.1+build1/toolkit/components/windowwatcher/nsWindowWatcher.cpp --- thunderbird-91.8.1+build1/toolkit/components/windowwatcher/nsWindowWatcher.cpp 2022-04-15 07:41:23.000000000 +0000 +++ thunderbird-91.9.1+build1/toolkit/components/windowwatcher/nsWindowWatcher.cpp 2022-05-20 05:47:40.000000000 +0000 @@ -1346,8 +1346,8 @@ } } // If a website opens a popup exit DOM fullscreen - if (StaticPrefs::full_screen_api_exit_on_windowOpen() && windowIsNew && - aCalledFromJS && !hasChromeParent && !isCallerChrome && parentWindow) { + if (StaticPrefs::full_screen_api_exit_on_windowOpen() && aCalledFromJS && + !hasChromeParent && !isCallerChrome && parentWindow) { Document::AsyncExitFullscreen(parentWindow->GetDoc()); } diff -Nru thunderbird-91.8.1+build1/widget/cocoa/nsChildView.mm thunderbird-91.9.1+build1/widget/cocoa/nsChildView.mm --- thunderbird-91.8.1+build1/widget/cocoa/nsChildView.mm 2022-04-15 07:41:25.000000000 +0000 +++ thunderbird-91.9.1+build1/widget/cocoa/nsChildView.mm 2022-05-20 05:47:41.000000000 +0000 @@ -2870,15 +2870,6 @@ } - (bool)shouldConsiderStartingSwipeFromEvent:(NSEvent*)anEvent { - // This method checks whether the AppleEnableSwipeNavigateWithScrolls global - // preference is set. If it isn't, fluid swipe tracking is disabled, and a - // horizontal two-finger gesture is always a scroll (even in Safari). This - // preference can't (currently) be set from the Preferences UI -- only using - // 'defaults write'. - if (![NSEvent isSwipeTrackingFromScrollEventsEnabled]) { - return false; - } - // Only initiate horizontal tracking for gestures that have just begun -- // otherwise a scroll to one side of the page can have a swipe tacked on // to it. @@ -2888,6 +2879,15 @@ return false; } + // This method checks whether the AppleEnableSwipeNavigateWithScrolls global + // preference is set. If it isn't, fluid swipe tracking is disabled, and a + // horizontal two-finger gesture is always a scroll (even in Safari). This + // preference can't (currently) be set from the Preferences UI -- only using + // 'defaults write'. + if (![NSEvent isSwipeTrackingFromScrollEventsEnabled]) { + return false; + } + // Only initiate horizontal tracking for events whose horizontal element is // at least eight times larger than its vertical element. This minimizes // performance problems with vertical scrolls (by minimizing the possibility diff -Nru thunderbird-91.8.1+build1/widget/windows/GfxInfo.cpp thunderbird-91.9.1+build1/widget/windows/GfxInfo.cpp --- thunderbird-91.8.1+build1/widget/windows/GfxInfo.cpp 2022-04-15 07:41:24.000000000 +0000 +++ thunderbird-91.9.1+build1/widget/windows/GfxInfo.cpp 2022-05-20 05:47:41.000000000 +0000 @@ -1686,12 +1686,18 @@ V(8, 15, 10, 2869), "FEATURE_FAILURE_INTEL_W7_HW_DECODING"); /* Bug 1203199/1092166: DXVA startup crashes on some intel drivers. */ - APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::Windows, DeviceFamily::IntelAll, - nsIGfxInfo::FEATURE_HARDWARE_VIDEO_DECODING, - nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, - DRIVER_BUILD_ID_LESS_THAN_OR_EQUAL, 2849, - "FEATURE_FAILURE_BUG_1203199_1", - "Intel driver > X.X.X.2849"); + APPEND_TO_DRIVER_BLOCKLIST_RANGE(OperatingSystem::Windows, DeviceFamily::IntelAll, + nsIGfxInfo::FEATURE_HARDWARE_VIDEO_DECODING, + nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, + DRIVER_BETWEEN_INCLUSIVE, V(9,17,10,0), V(9,17,10,2849), + "FEATURE_FAILURE_BUG_1203199_1", "Intel driver > 9.17.10.2849"); + + /* Bug 1203199/1092166: DXVA startup crashes on some intel drivers. */ + APPEND_TO_DRIVER_BLOCKLIST_RANGE(OperatingSystem::Windows, DeviceFamily::IntelAll, + nsIGfxInfo::FEATURE_HARDWARE_VIDEO_DECODING, + nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION, + DRIVER_BETWEEN_INCLUSIVE, V(8,15,10,0), V(8,15,10,2849), + "FEATURE_FAILURE_BUG_1203199_1", "Intel driver > 8.15.10.2849"); APPEND_TO_DRIVER_BLOCKLIST2( OperatingSystem::Windows, DeviceFamily::Nvidia8800GTS,