From fa82edefb618a9599ee3ffcec535b73a5b7a9031 Mon Sep 17 00:00:00 2001 From: Ghostery Adblocker Bot Date: Mon, 5 Oct 2026 20:22:07 +0000 Subject: [PATCH] Update scriptlets --- package.json | 2 +- ubo.js | 969 ++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 880 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 79f3bd1..630a3a0 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "type": "module", "scripts": { - "build": "deno build.ts --tagName 1.75.1b1 > ubo.js", + "build": "deno build.ts --tagName 1.75.1b4 > ubo.js", "test": "node --test" }, "author": { diff --git a/ubo.js b/ubo.js index a624943..35fd021 100644 --- a/ubo.js +++ b/ubo.js @@ -369,7 +369,7 @@ function abortCurrentScript(...args) { }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -679,7 +679,7 @@ function setAttr( setAttrFn(false, logPrefix, selector, attr, value, options); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -979,7 +979,7 @@ function trustedSetAttr( setAttrFn(true, logPrefix, selector, attr, value, options); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -1306,7 +1306,7 @@ function removeAttr( runAt(( ) => { start(); }, safe.String_split.call(behavior, /\s+/)); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -1610,7 +1610,7 @@ function trustedCreateHTML( runAt(start, extraArgs.runAt || 'loading'); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -2021,7 +2021,7 @@ function hrefSanitizer( runAt(( ) => { start(); }, 'interactive'); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -2909,7 +2909,7 @@ function editOutboundObject(propChain = '', jsonq = '') { editOutboundObjectFn(false, propChain, jsonq); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -3777,7 +3777,7 @@ function trustedEditOutboundObject(propChain = '', jsonq = '') { editOutboundObjectFn(true, propChain, jsonq); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -4644,7 +4644,7 @@ function jsonEdit(jsonq = '', ...varargs) { jsonEditFn(false, jsonq, ...varargs); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -5511,7 +5511,7 @@ function trustedJsonEdit(jsonq = '', ...varargs) { jsonEditFn(true, jsonq, ...varargs); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -6406,7 +6406,7 @@ function editInboundObject(propChain = '', argPos = '', jsonq = '') { editInboundObjectFn(false, propChain, argPos, jsonq); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -7301,7 +7301,7 @@ function trustedEditInboundObject(propChain = '', argPos = '', jsonq = '') { editInboundObjectFn(true, propChain, argPos, jsonq); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -8179,7 +8179,7 @@ function editThisObject(...args) { editThisObjectFn(false, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -9057,7 +9057,7 @@ function trustedEditThisObject(...args) { editThisObjectFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -9907,7 +9907,7 @@ function editObjectOnGetter(...args) { editObjectOnGetterFn(false, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -10757,7 +10757,7 @@ function trustedEditObjectOnGetter(...args) { editObjectOnGetterFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -11610,7 +11610,7 @@ function editObjectOnSetter(...args) { editObjectOnSetterFn(false, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -12463,7 +12463,7 @@ function trustedEditObjectOnSetter(...args) { editObjectOnSetterFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -13356,7 +13356,7 @@ function editElementObject(...args) { editElementObjectFn(false, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -14249,7 +14249,7 @@ function trustedEditElementObject(...args) { editElementObjectFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -15098,7 +15098,7 @@ function jsonEditXhrResponse(jsonq = '', ...args) { jsonEditXhrResponseFn(false, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -15947,7 +15947,7 @@ function trustedJsonEditXhrResponse(jsonq = '', ...args) { jsonEditXhrResponseFn(true, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -16779,7 +16779,7 @@ function jsonEditXhrRequest(jsonq = '', ...args) { jsonEditXhrRequestFn(false, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -17611,7 +17611,7 @@ function trustedJsonEditXhrRequest(jsonq = '', ...args) { jsonEditXhrRequestFn(true, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -18577,7 +18577,7 @@ function jsonEditFetchResponse(jsonq = '', ...args) { jsonEditFetchResponseFn(false, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -19543,7 +19543,7 @@ function trustedJsonEditFetchResponse(jsonq = '', ...args) { jsonEditFetchResponseFn(true, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -19555,6 +19555,795 @@ trustedJsonEditFetchResponse(...args); }; +scriptlets['trusted-edit-inbound-element.js'] = { +aliases: [], + +requiresTrust: true, +func: function (scriptletGlobals = {}, ...args) { +function safeSelf() { + if ( safeSelf.safe ) { + return safeSelf.safe; + } + const self = globalThis; + const safe = { + 'Array_from': Array.from, + 'Error': self.Error, + 'Function_toString': Function.prototype.call.bind(self.Function.prototype.toString), + 'Math_floor': Math.floor, + 'Math_max': Math.max, + 'Math_min': Math.min, + 'Math_random': Math.random, + 'Object': Object, + 'Object_defineProperty': Object.defineProperty.bind(Object), + 'Object_defineProperties': Object.defineProperties.bind(Object), + 'Object_fromEntries': Object.fromEntries.bind(Object), + 'Object_getOwnPropertyDescriptor': Object.getOwnPropertyDescriptor.bind(Object), + 'Object_hasOwn': Object.hasOwn.bind(Object), + 'Object_toString': Object.prototype.toString, + 'RegExp': self.RegExp, + 'RegExp_test': Function.prototype.call.bind(self.RegExp.prototype.test), + 'RegExp_exec': self.RegExp.prototype.exec, + 'Request_clone': self.Request.prototype.clone, + 'String': self.String, + 'String_fromCharCode': String.fromCharCode, + 'String_split': String.prototype.split, + 'XMLHttpRequest': self.XMLHttpRequest, + 'addEventListener': self.EventTarget.prototype.addEventListener, + 'removeEventListener': self.EventTarget.prototype.removeEventListener, + 'fetch': self.fetch, + 'JSON': self.JSON, + 'JSON_parse': Function.prototype.call.bind(self.JSON.parse, self.JSON), + 'JSON_stringify': Function.prototype.call.bind(self.JSON.stringify, self.JSON), + 'log': console.log.bind(console), + // Properties + logLevel: 0, + // Methods + makeLogPrefix(...args) { + return this.sendToLogger && `[${args.join(' \u205D ')}]` || ''; + }, + uboLog(...args) { + if ( this.sendToLogger === undefined ) { return; } + if ( args === undefined || args[0] === '' ) { return; } + return this.sendToLogger('info', ...args); + + }, + uboErr(...args) { + if ( this.sendToLogger === undefined ) { return; } + if ( args === undefined || args[0] === '' ) { return; } + return this.sendToLogger('error', ...args); + }, + escapeRegexChars(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + }, + initPattern(pattern, options = {}) { + if ( pattern === '' ) { + return { matchAll: true, expect: true }; + } + const expect = (options.canNegate !== true || pattern.startsWith('!') === false); + if ( expect === false ) { + pattern = pattern.slice(1); + } + const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern); + if ( match !== null ) { + return { + re: new this.RegExp( + match[1], + match[2] || options.flags + ), + expect, + }; + } + if ( options.flags !== undefined ) { + return { + re: new this.RegExp(this.escapeRegexChars(pattern), + options.flags + ), + expect, + }; + } + return { pattern, expect }; + }, + testPattern(details, haystack) { + if ( details.matchAll ) { return true; } + if ( details.re ) { + return this.RegExp_test(details.re, haystack) === details.expect; + } + return haystack.includes(details.pattern) === details.expect; + }, + patternToRegex(pattern, flags = undefined, verbatim = false) { + if ( pattern === '' ) { return /^/; } + const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern); + if ( match === null ) { + const reStr = this.escapeRegexChars(pattern); + return new RegExp(verbatim ? `^${reStr}$` : reStr, flags); + } + try { + return new RegExp(match[1], match[2] || undefined); + } + catch { + } + return /^/; + }, + parseVarargs(varargs) { + const entries = varargs.reduce((out, v, i, a) => { + if ( i & 1 ) { return out; } + const rawValue = a[i+1]; + const value = /^\d+$/.test(rawValue) + ? parseInt(rawValue, 10) + : rawValue; + out.push([ a[i], value ]); + return out; + }, []); + return this.Object_fromEntries(entries); + }, + }; + safeSelf.safe = safe; + if ( scriptletGlobals.bcSecret === undefined ) { return safe; } + // This is executed only when the logger is opened + safe.logLevel = scriptletGlobals.logLevel || 1; + let lastLogType = ''; + let lastLogText = ''; + let lastLogTime = 0; + safe.toLogText = (type, ...args) => { + if ( args.length === 0 ) { return; } + const text = `[${document.location.hostname || document.location.href}]${args.join(' ')}`; + if ( text === lastLogText && type === lastLogType ) { + if ( (Date.now() - lastLogTime) < 5000 ) { return; } + } + lastLogType = type; + lastLogText = text; + lastLogTime = Date.now(); + return text; + }; + try { + const bc = new self.BroadcastChannel(scriptletGlobals.bcSecret); + let bcBuffer = []; + safe.sendToLogger = (type, ...args) => { + const text = safe.toLogText(type, ...args); + if ( text === undefined ) { return; } + if ( bcBuffer === undefined ) { + return bc.postMessage({ what: 'messageToLogger', type, text }); + } + bcBuffer.push({ type, text }); + }; + bc.onmessage = ev => { + const msg = ev.data; + switch ( msg ) { + case 'iamready!': + if ( bcBuffer === undefined ) { break; } + bcBuffer.forEach(({ type, text }) => + bc.postMessage({ what: 'messageToLogger', type, text }) + ); + bcBuffer = undefined; + break; + case 'setScriptletLogLevelToOne': + safe.logLevel = 1; + break; + case 'setScriptletLogLevelToTwo': + safe.logLevel = 2; + break; + } + }; + bc.postMessage('areyouready?'); + } catch { + safe.sendToLogger = (type, ...args) => { + const text = safe.toLogText(type, ...args); + if ( text === undefined ) { return; } + safe.log(`uBO ${text}`); + }; + } + return safe; +} +class JSONPath { + static create(query) { + const jsonp = new JSONPath(); + jsonp.compile(query); + return jsonp; + } + static toJSON(obj, stringifier, ...args) { + return (stringifier || JSON.stringify)(obj, ...args) + .replace(/\//g, '\\/'); + } + static keys = Object.keys; + static entries = Object.entries; + static hasOwn = Object.hasOwn; + static Regex = RegExp; + get value() { + return this.#compiled && this.#compiled.rval; + } + set value(v) { + if ( this.#compiled === undefined ) { return; } + this.#compiled.rval = v; + } + get valid() { + return this.#compiled !== undefined; + } + compile(query) { + this.#compiled = undefined; + this.v2 = query.startsWith('v2:'); + if ( this.v2 ) { query = query.slice(3); } + const r = this.#compile(query, 0); + if ( r === undefined ) { return; } + if ( r.i !== query.length ) { + let val; + if ( query.startsWith('=', r.i) ) { + const match = this.#reRval.exec(query.slice(r.i)); + if ( match ) { + r.modify = match[1]; + val = match[2]; + } else { + val = query.slice(r.i+1); + } + } else if ( query.startsWith('+=', r.i) ) { + r.modify = '+'; + val = query.slice(r.i+2); + } + try { r.rval = JSON.parse(val); } + catch { return; } + } + r.v2 = this.v2; + this.#compiled = r; + } + evaluate(root) { + if ( this.valid === false ) { return []; } + this.#root = { '$': root }; + const paths = this.#evaluate(this.#compiled.steps, []); + this.#root = null; + return paths; + } + apply(root) { + if ( this.valid === false ) { return; } + const { rval } = this.#compiled; + this.#root = { '$': root }; + const paths = this.#evaluate(this.#compiled.steps, []); + let i = paths.length + if ( i === 0 ) { this.#root = null; return; } + while ( i-- ) { + const { obj, key } = this.#resolvePath(paths[i]); + if ( obj === undefined ) { continue; } + if ( rval !== undefined ) { + this.#modifyVal(obj, key); + } else if ( Array.isArray(obj) && typeof key === 'number' ) { + obj.splice(key, 1); + } else { + delete obj[key]; + } + } + const result = this.#root['$'] ?? null; + this.#root = null; + return result; + } + dump() { + return JSON.stringify(this.#compiled); + } + toJSON(obj, ...args) { + return JSONPath.toJSON(obj, null, ...args) + } + get [Symbol.toStringTag]() { + return 'JSONPath'; + } + #UNDEFINED = 0; + #ROOT = 1; + #CURRENT = 2; + #CHILDREN = 3; + #DESCENDANTS = 4; + #QUANTIFIER = 5; + #reUnquotedIdentifier = /^[A-Za-z_][\w]*|^\*/; + #reExpr = /^\s*([!=^$*]=|[<>]=?)\s*(.+?)\]/; + #reIndice = /^-?\d+/; + #reRval = /^=([a-z]+)\((.+)\)$/; + #reQuantifier = /^\{(\d+|\d+,\d+|\d+,|,\d+)\};\$/; + #root; + #compiled; + #compile(query, i) { + if ( query.length === 0 ) { return; } + const steps = []; + let c = query.charCodeAt(i); + if ( c === 0x24 /* $ */ ) { + steps.push({ mv: this.#ROOT }); + i += 1; + } else if ( c === 0x40 /* @ */ ) { + steps.push({ mv: this.#CURRENT }); + i += 1; + } else { + steps.push({ mv: i === 0 ? this.#ROOT : this.#CURRENT }); + } + let mv = this.#UNDEFINED; + for (;;) { + if ( i === query.length ) { break; } + c = query.charCodeAt(i); + if ( c === 0x20 /* whitespace */ ) { + i += 1; + continue; + } + // Dot accessor syntax + if ( c === 0x2E /* . */ ) { + if ( mv !== this.#UNDEFINED ) { return; } + if ( query.startsWith('..', i) ) { + mv = this.#DESCENDANTS; + i += 2; + } else { + mv = this.#CHILDREN; + i += 1; + } + continue; + } + if ( c === 0x3B /* ; */ ) { + if ( query.startsWith(';$', i) === false ) { return; } + steps.push( + { mv: this.#QUANTIFIER, min: 1, max: 1e6 }, + { mv: this.#ROOT } + ); + i += 2; + mv = this.#UNDEFINED; + continue; + } + if ( c === 0x7B /* { */ ) { + const match = this.#reQuantifier.exec(query.slice(i)); + if ( match === null ) { return; } + const comma = match[1].indexOf(','); + let min, max; + if ( comma === -1 ) { + min = max = parseInt(match[1]); + } else { + min = parseInt(match[1].slice(0, comma)) || 0; + max = parseInt(match[1].slice(comma+1)) || 1e6; + } + steps.push( + { mv: this.#QUANTIFIER, min, max }, + { mv: this.#ROOT } + ); + i += match[0].length; + mv = this.#UNDEFINED; + continue; + } + if ( c !== 0x5B /* [ */ ) { + if ( mv === this.#UNDEFINED ) { + const step = steps.at(-1); + if ( step === undefined ) { return; } + const j = this.#compileExpr(query, step, i); + if ( j ) { i = j; } + break; + } + const r = this.#consumeUnquotedIdentifier(query, i); + if ( r === undefined ) { return; } + steps.push({ mv, k: r.s }); + i = r.i; + mv = this.#UNDEFINED; + continue; + } + // Bracket accessor syntax + if ( mv === this.#CHILDREN ) { return; } + if ( query.startsWith('[?', i) ) { + const not = query.charCodeAt(i+2) === 0x21 /* ! */ ? 1 : 0; + const j = i + 2 + not; + const r = this.#compile(query, j); + if ( r === undefined ) { return; } + if ( query.startsWith(']', r.i) === false ) { return; } + if ( not ) { r.steps.at(-1).not = true; } + steps.push({ mv: mv || this.#CHILDREN, steps: r.steps }); + i = r.i + 1; + mv = this.#UNDEFINED; + continue; + } + if ( query.startsWith('[*]', i) ) { + mv ||= this.#CHILDREN; + steps.push({ mv, k: '*' }); + i += 3; + mv = this.#UNDEFINED; + continue; + } + const r = this.#consumeIdentifier(query, i+1); + if ( r === undefined ) { return; } + mv ||= this.#CHILDREN; + steps.push({ mv, k: r.s }); + i = r.i + 1; + mv = this.#UNDEFINED; + } + if ( steps.length === 0 ) { return; } + if ( mv !== this.#UNDEFINED ) { return; } + return { steps, i }; + } + #evaluate(steps, pathin) { + let resultset = []; + if ( Array.isArray(steps) === false ) { return resultset; } + for ( const step of steps ) { + switch ( step.mv ) { + case this.#ROOT: + resultset = [ [ '$' ] ]; + break; + case this.#CURRENT: + if ( step.op ) { + const { obj, key } = this.#resolvePath(pathin); + if ( obj === undefined ) { return []; } + const outcome = this.#evaluateExpr(step, obj, key); + if ( outcome !== true ) { break; } + } + resultset = [ pathin ]; + break; + case this.#CHILDREN: + case this.#DESCENDANTS: { + if ( resultset.length === 0 ) { break; } + resultset = this.#getMatches(resultset, step); + break; + } + case this.#QUANTIFIER: { + const { length } = resultset; + if ( length < step.min || length > step.max ) { return []; } + resultset = []; + break; + } + default: + break; + } + } + return resultset; + } + #getMatches(listin, step) { + const listout = []; + for ( const pathin of listin ) { + const { value: owner } = this.#resolvePath(pathin); + if ( owner === undefined ) { continue; } + if ( step.steps ) { + this.#getMatchesFromExpr(pathin, step, owner, listout); + continue; + } + const iter = this.#expandKey(owner, step.k); + if ( iter ) { + for ( const k of iter ) { + const outcome = this.#evaluateExpr(step, owner, k); + if ( outcome !== true ) { continue; } + listout.push([ ...pathin, k ]); + } + } + if ( step.mv !== this.#DESCENDANTS ) { continue; } + for ( const { obj, key, path } of this.#getDescendants(owner, true) ) { + const iter = this.#expandKey(obj[key], step.k); + if ( iter === undefined ) { continue; } + for ( const k of iter ) { + const outcome = this.#evaluateExpr(step, obj[key], k); + if ( outcome !== true ) { continue; } + listout.push([ ...pathin, ...path, k ]); + } + } + } + return listout; + } + #expandKey(owner, k) { + if ( typeof owner !== 'object' || owner === null ) { return; } + if ( Array.isArray(k) ) { + const out = []; + for ( const a of k ) { + const iter = this.#expandKey(owner, a); + if ( iter === undefined ) { continue; } + out.push(...iter); + } + return out; + } + if ( typeof k === 'number' ) { + if ( Array.isArray(owner) === false ) { return; } + return [ k >= 0 ? k : owner.length + k ]; + } + if ( k === '*' ) { + if ( Array.isArray(owner) ) { return owner.keys(); } + return JSONPath.keys(owner); + } + if ( k instanceof JSONPath.Regex ) { + const out = []; + for ( const key of JSONPath.keys(owner) ) { + if ( k.test(key) === false ) { continue; } + out.push(key); + } + return out; + } + return [ k ]; + } + #getMatchesFromExpr(pathin, step, owner, out) { + const recursive = step.mv === this.#DESCENDANTS; + const v2 = this.#compiled.v2 || recursive || Array.isArray(owner); + for ( const { path } of this.#getDescendants(owner, recursive) ) { + const q = v2 ? [ ...pathin, ...path ] : pathin; + const r = this.#evaluate(step.steps, q); + if ( Boolean(r?.length) === false ) { continue; } + out.push(q); + if ( v2 === false ) { break; } + } + } + #getDescendants(v, recursive) { + const iterator = { + next() { + const n = this.stack.length; + if ( n === 0 ) { + this.value = undefined; + this.done = true; + return this; + } + const details = this.stack[n-1]; + const entry = details.keys.next(); + if ( entry.done ) { + this.stack.pop(); + this.path.pop(); + return this.next(); + } + this.path[n-1] = entry.value; + this.value = { + obj: details.obj, + key: entry.value, + path: this.path.slice(), + }; + const v = this.value.obj[this.value.key]; + if ( recursive ) { + if ( Array.isArray(v) ) { + this.stack.push({ obj: v, keys: v.keys() }); + } else if ( typeof v === 'object' && v !== null ) { + this.stack.push({ obj: v, keys: JSONPath.keys(v).values() }); + } + } + return this; + }, + path: [], + value: undefined, + done: false, + stack: [], + [Symbol.iterator]() { return this; }, + }; + if ( Array.isArray(v) ) { + iterator.stack.push({ obj: v, keys: v.keys() }); + } else if ( typeof v === 'object' && v !== null ) { + iterator.stack.push({ obj: v, keys: JSONPath.keys(v).values() }); + } + return iterator; + } + #consumeIdentifier(query, i) { + const keys = []; + let needIdentifier = true; + while ( i < query.length ) { + const c0 = query.charCodeAt(i); + if ( c0 === 0x5D /* ] */ ) { break; } + if ( c0 === 0x20 /* SPACE */ ) { + i += 1; + continue; + } + if ( c0 === 0x2C /* , */ ) { + if ( needIdentifier ) { return; } + i += 1; + needIdentifier = true; + continue; + } + if ( c0 === 0x22 /* " */ || c0 === 0x27 /* ' */ ) { + const r = this.#untilChar(query, c0, i+1); + if ( r === undefined ) { return; } + keys.push(r.s); + i = r.i; + needIdentifier = false; + continue; + } + if ( c0 === 0x2D /* - */ || c0 >= 0x30 && c0 <= 0x39 ) { + const match = this.#reIndice.exec(query.slice(i)); + if ( match === null ) { return; } + const indice = parseInt(query.slice(i), 10); + keys.push(indice); + i += match[0].length; + needIdentifier = false; + continue; + } + if ( this.v2 ) { return; } + const r = this.#consumeUnquotedIdentifier(query, i); + if ( r === undefined ) { return; } + keys.push(r.s); + i = r.i; + } + if ( needIdentifier ) { return; } + return { s: keys.length === 1 ? keys[0] : keys, i }; + } + #consumeUnquotedIdentifier(query, i) { + if ( query.charCodeAt(i) === 0x2F /* / */ ) { + const r = this.#untilChar(query, 0x2F, i+1); + if ( r === undefined ) { return; } + let re; + try { re = new JSONPath.Regex(r.s); } catch { return; } + return { s: re, i: r.i }; + } + const match = this.#reUnquotedIdentifier.exec(query.slice(i)); + if ( match === null ) { return; } + return { s: match[0], i: i + match[0].length }; + } + #untilChar(query, targetCharCode, i) { + const len = query.length; + const parts = []; + let beg = i, end = i; + for (;;) { + if ( end === len ) { return; } + const c = query.charCodeAt(end); + if ( c === targetCharCode ) { + parts.push(query.slice(beg, end)); + end += 1; + break; + } + if ( c === 0x5C /* \ */ && (end+1) < len ) { + const d = query.charCodeAt(end+1); + if ( d === targetCharCode ) { + parts.push(query.slice(beg, end)); + end += 1; + beg = end; + } + } + end += 1; + } + return { s: parts.join(''), i: end }; + } + #compileExpr(query, step, i) { + if ( query.startsWith('=/', i) ) { + const r = this.#untilChar(query, 0x2F /* / */, i+2); + if ( r === undefined ) { return i; } + const match = /^[i]/.exec(query.slice(r.i)); + try { + step.rval = new JSONPath.Regex(r.s, match && match[0] || undefined); + } catch { return; } + step.op = 're'; + if ( match ) { r.i += match[0].length; } + return r.i; + } + const match = this.#reExpr.exec(query.slice(i)); + if ( match === null ) { return; } + const op = match[1], rval = match[2]; + if ( rval.charCodeAt(0) === 0x27 /* ' */ ) { + const r = this.#untilChar(rval, 0x27, 1); + if ( r === undefined ) { return; } + step.rval = r.s; + step.op = op; + } else { + try { + step.rval = JSON.parse(rval); + step.op = op; + } catch { return; } + } + return i + match[0].length - 1; + } + #resolvePath(path) { + if ( path.length === 0 ) { return { value: this.#root }; } + const key = path.at(-1); + let obj = this.#root + for ( let i = 0, n = path.length-1; i < n; i++ ) { + obj = obj[path[i]]; + if ( obj instanceof Object === false ) { return {}; } + } + return { obj, key, value: obj[key] }; + } + #evaluateExpr(step, owner, k) { + if ( owner === undefined || owner === null ) { return; } + const hasOwn = owner[k] !== undefined || JSONPath.hasOwn(owner, k); + if ( step.op !== undefined && hasOwn === false ) { return; } + const target = step.not !== true; + const v = owner[k]; + switch ( step.op ) { + case '==': return (v === step.rval) === target; + case '!=': return (v !== step.rval) === target; + case '<': return (v < step.rval) === target; + case '<=': return (v <= step.rval) === target; + case '>': return (v > step.rval) === target; + case '>=': return (v >= step.rval) === target; + case '^=': return `${v}`.startsWith(step.rval) === target; + case '$=': return `${v}`.endsWith(step.rval) === target; + case '*=': return `${v}`.includes(step.rval) === target; + case 're': return step.rval.test(`${v}`); + default: break; + } + return hasOwn === target; + } + #modifyVal(obj, key) { + let { modify, rval } = this.#compiled; + if ( typeof rval === 'string' ) { + rval = rval.replace('${now}', `${Date.now()}`); + } + switch ( modify ) { + case undefined: + obj[key] = rval; + break; + case '+': { + if ( rval instanceof Object === false ) { return; } + const lval = obj[key]; + if ( lval instanceof Object === false ) { return; } + if ( Array.isArray(lval) ) { return; } + for ( const [ k, v ] of JSONPath.entries(rval) ) { + lval[k] = v; + } + break; + } + case 'call': { + const entries = rval.slice(); + if ( entries.length < 2 ) { break; } + entries.forEach((a, i, aa) => { + if ( a === '${obj}' ) { aa[i] = obj; } + else if ( a === '${key}' ) { aa[i] = key; } + else if ( a === '${val}' ) { aa[i] = obj[key]; } + }); + const instance = entries[0] ?? self; + instance[entries[1]](...entries.slice(2)); + break; + } + case 'repl': { + const lval = obj[key]; + if ( typeof lval !== 'string' ) { return; } + if ( this.#compiled.re === undefined ) { + this.#compiled.re = null; + try { + this.#compiled.re = rval.regex !== undefined + ? new JSONPath.Regex(rval.regex, rval.flags) + : new JSONPath.Regex(rval.pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); + } catch { } + } + if ( this.#compiled.re === null ) { return; } + obj[key] = lval.replace(this.#compiled.re, rval.replacement); + break; + } + default: + break; + } + } +} +async function editInboundElementFn( + trusted = false, + propChain = '', + argPosRaw = '', + selector = '', + jsonq = '' +) { + if ( propChain === '' ) { return; } + if ( selector === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}edit-inbound-element`, + propChain, argPosRaw, selector, jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const argPos = parseInt(argPosRaw, 10); + const getElem = context => { + if ( argPosRaw === 'this' ) { return context.thisArg; } + const { callArgs } = context; + if ( Array.isArray(callArgs) === false ) { return; } + if ( isNaN(argPos) ) { return; } + if ( argPos >= 0 ) { + if ( callArgs.length <= argPos ) { return; } + return callArgs[argPos]; + } + if ( callArgs.length < -argPos ) { return; } + return callArgs[callArgs.length + argPos]; + }; + const editElem = elem => { + if ( elem instanceof Element === false ) { return; } + if ( elem.matches(selector) === false ) { return; } + elem = jsonp.apply(elem); + if ( elem === undefined ) { return; } + safe.uboLog(logPrefix, 'Edited'); + }; + proxyApplyFn(propChain, function(context) { + const elem = getElem(context); + if ( elem !== undefined ) { + editElem(elem); + } + return context.reflect(); + }); +} +function trustedEditInboundElement(...args) { + editInboundElementFn(true, ...args); +}; +try { + const key = Symbol.for('safeSelf.1.75.1b4'); + safeSelf.safe = globalThis[key]; + if ( safeSelf.safe === undefined ) { + Object.defineProperty(globalThis, key, { value: safeSelf() }); + } +} catch { +} +trustedEditInboundElement(...args); +}, +}; + + scriptlets['json-edit-fetch-request.js'] = { aliases: [], @@ -20506,7 +21295,7 @@ function jsonEditFetchRequest(jsonq = '', ...args) { jsonEditFetchRequestFn(false, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -21469,7 +22258,7 @@ function trustedJsonEditFetchRequest(jsonq = '', ...args) { jsonEditFetchRequestFn(true, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -22346,7 +23135,7 @@ function jsonlEditXhrResponse(jsonq = '', ...args) { jsonlEditXhrResponseFn(false, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -23223,7 +24012,7 @@ function trustedJsonlEditXhrResponse(jsonq = '', ...args) { jsonlEditXhrResponseFn(true, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -24230,7 +25019,7 @@ function jsonlEditFetchResponse(jsonq = '', ...args) { jsonlEditFetchResponseFn(false, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -25237,7 +26026,7 @@ function trustedJsonlEditFetchResponse(jsonq = '', ...args) { jsonlEditFetchResponseFn(true, jsonq, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -25543,7 +26332,7 @@ function abortOnStackTrace( makeProxy(owner, chain); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -25968,7 +26757,7 @@ function trustedPruneInboundObject( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -26445,7 +27234,7 @@ function trustedPruneOutboundObject( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -26930,7 +27719,7 @@ function jsonPrune( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -27423,7 +28212,7 @@ function jsonPruneFetchResponse( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -27901,7 +28690,7 @@ function jsonPruneXhrResponse( }; }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -28368,7 +29157,7 @@ function evaldataPrune( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -28678,7 +29467,7 @@ function noEvalIf( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -29089,7 +29878,7 @@ function preventAddEventListener( }, extraArgs.runAt); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -29442,7 +30231,7 @@ function preventBab() { }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -29854,7 +30643,7 @@ function preventClipboardWrite(matches = '', ...varargs) { }, 'interactive') }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -30072,7 +30861,7 @@ function preventDialog( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -30584,7 +31373,7 @@ function preventFetch(...args) { preventFetchFn(false, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -31096,7 +31885,7 @@ function trustedPreventFetch(...args) { preventFetchFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -31340,7 +32129,7 @@ function freezeElementProperty( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -31590,7 +32379,7 @@ function preventInnerHTML( freezeElementProperty('innerHTML', selector, pattern); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -31802,7 +32591,7 @@ function preventNavigation( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -32148,7 +32937,7 @@ function preventSetTimeout( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -32494,7 +33283,7 @@ function preventSetInterval( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -32805,7 +33594,7 @@ function preventRequestAnimationFrame( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -33231,7 +34020,7 @@ function setConstant( setConstantFn(false, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -33657,7 +34446,7 @@ function trustedSetConstant( setConstantFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -34176,7 +34965,7 @@ function trustedReplaceArgument( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -34485,7 +35274,7 @@ function spoofCSS( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -35049,7 +35838,7 @@ function preventXhr(...args) { preventXhrFn(false, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -35613,7 +36402,7 @@ function trustedPreventXhr(...args) { preventXhrFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -36050,7 +36839,7 @@ function mpegdashPrune( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -36379,7 +37168,7 @@ function setCookie( } }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -36711,7 +37500,7 @@ function setCookieReload(name, value, path, ...args) { setCookie(name, value, path, 'reload', '1', ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -37029,7 +37818,7 @@ function trustedSetCookie( } }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -37350,7 +38139,7 @@ function trustedSetCookieReload(name, value, offsetExpiresSec, path, ...args) { trustedSetCookie(name, value, offsetExpiresSec, path, 'reload', '1', ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -37614,7 +38403,7 @@ function removeCookie( } }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -37916,7 +38705,7 @@ function setLocalStorageItem(key = '', value = '', ...varargs) { setLocalStorageItemFn('local', false, key, value, options); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -38218,7 +39007,7 @@ function setSessionStorageItem(key = '', value = '', ...varargs) { setLocalStorageItemFn('session', false, key, value, options); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -38520,7 +39309,7 @@ function trustedSetLocalStorageItem(key = '', value = '', ...varargs) { setLocalStorageItemFn('local', true, key, value, options); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -38822,7 +39611,7 @@ function trustedSetSessionStorageItem(key = '', value = '', ...varargs) { setLocalStorageItemFn('session', true, key, value, options); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -39076,7 +39865,7 @@ function abortOnPropertyRead( makeProxy(owner, chain); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -39308,7 +40097,7 @@ function abortOnPropertyWrite( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -39527,7 +40316,7 @@ function adjustSetInterval( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -39746,7 +40535,7 @@ function adjustSetTimeout( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -39963,7 +40752,7 @@ function preventRefresh( self.addEventListener('load', defuse, { capture: true, once: true }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -40251,7 +41040,7 @@ function removeClass( }, /\bcomplete\b/.test(behavior) ? 'idle' : 'loading'); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -40501,7 +41290,7 @@ function webrtcIf( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -40876,7 +41665,7 @@ function noWindowOpenIf( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -41088,7 +41877,7 @@ function closeWindow( } }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -41662,7 +42451,7 @@ function xmlPrune( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -42110,7 +42899,7 @@ function m3uPrune( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -42330,7 +43119,7 @@ function callNothrow( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -42676,7 +43465,7 @@ function removeNodeText( replaceNodeTextFn(nodeName, '', '', 'includes', includes || '', ...extraArgs); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -42881,7 +43670,7 @@ function preventCanvas( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -43368,7 +44157,7 @@ function replaceNodeText( replaceNodeTextFn(nodeName, pattern, replacement, ...extraArgs); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -43695,7 +44484,7 @@ function trustedReplaceFetchResponse(...args) { replaceFetchResponseFn(true, ...args); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -43996,7 +44785,7 @@ function trustedReplaceXhrResponse( }; }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -44437,7 +45226,7 @@ function trustedClickElement( runAtHtmlElementFn(process); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -44768,7 +45557,7 @@ function trustedReplaceOutboundText( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -45185,7 +45974,7 @@ function trustedSuppressNativeMethod( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -45515,7 +46304,7 @@ function trustedPreventDomBypass( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() }); @@ -45889,7 +46678,7 @@ function trustedOverrideElementMethod( }); }; try { - const key = Symbol.for('safeSelf.1.75.1b1'); + const key = Symbol.for('safeSelf.1.75.1b4'); safeSelf.safe = globalThis[key]; if ( safeSelf.safe === undefined ) { Object.defineProperty(globalThis, key, { value: safeSelf() });