From 214716e28c2a6a59952544bce519ccce86bc83cd Mon Sep 17 00:00:00 2001 From: QuiteAFancyEmerald <46467239+QuiteAFancyEmerald@users.noreply.github.com> Date: Wed, 18 Dec 2024 23:22:45 -0800 Subject: [PATCH] feat: added scramjet. it is broken. but it will soon be not --- run-command.mjs | 1 + src/routes.mjs | 1 + src/server.mjs | 17 +++ views/assets/js/common-16451543478.js | 18 ++- views/assets/js/register-sw.js | 189 +++++++++++++------------ views/pages/proxnav/scramjet.html | 172 ++++++++++++++++++++++ views/pages/proxnav/ultraviolet.html | 2 +- views/pages/surf.html | 1 + views/scram/scramjet.client.js | 15 ++ views/scram/scramjet.client.js.map | 1 + views/scram/scramjet.controller.js | 11 ++ views/scram/scramjet.controller.js.map | 1 + views/scram/scramjet.shared.js | 30 ++++ views/scram/scramjet.shared.js.map | 1 + views/scram/scramjet.sw.js | 26 ++++ views/scram/scramjet.sync.js | 2 + views/scram/scramjet.sync.js.map | 1 + views/scram/scramjet.wasm.js | 4 + views/scram/scramjet.worker.js | 179 +++++++++++++++++++++++ views/scram/scramjet.worker.js.map | 1 + 20 files changed, 577 insertions(+), 96 deletions(-) create mode 100644 views/pages/proxnav/scramjet.html create mode 100644 views/scram/scramjet.client.js create mode 100644 views/scram/scramjet.client.js.map create mode 100644 views/scram/scramjet.controller.js create mode 100644 views/scram/scramjet.controller.js.map create mode 100644 views/scram/scramjet.shared.js create mode 100644 views/scram/scramjet.shared.js.map create mode 100644 views/scram/scramjet.sw.js create mode 100644 views/scram/scramjet.sync.js create mode 100644 views/scram/scramjet.sync.js.map create mode 100644 views/scram/scramjet.wasm.js create mode 100644 views/scram/scramjet.worker.js create mode 100644 views/scram/scramjet.worker.js.map diff --git a/run-command.mjs b/run-command.mjs index d0668912..2cc16765 100644 --- a/run-command.mjs +++ b/run-command.mjs @@ -122,6 +122,7 @@ commands: for (let i = 2; i < process.argv.length; i++) await build({ entryPoints: [ './views/uv/**/*.js', + './views/scram/**/*.js', './views/assets/js/**/*.js', './views/assets/css/**/*.css', ], diff --git a/src/routes.mjs b/src/routes.mjs index ea806e9b..5c9e26da 100644 --- a/src/routes.mjs +++ b/src/routes.mjs @@ -36,6 +36,7 @@ NOT entire folders check src/routes.mjs and add it manually. */ 'retro-games': 'pages/nav/emulibrary.html', /* Proxies */ ultraviolet: 'pages/proxnav/ultraviolet.html', + scramjet: 'pages/proxnav/scramjet.html', uverror: 'pages/proxnav/ultraviolet-error.html', rammerhead: 'pages/proxnav/rammerhead.html', /* Proxy Presets */ diff --git a/src/server.mjs b/src/server.mjs index fc603d3a..edd090c1 100644 --- a/src/server.mjs +++ b/src/server.mjs @@ -203,6 +203,23 @@ app.register(fastifyStatic, { decorateReply: false, }); +// This combines scripts from the official scramjet repository with local scramjet scripts into +// one directory path. Local versions of files override the official versions. +app.register(fastifyStatic, { + root: [ + fileURLToPath( + new URL( + // Use the pre-compiled, minified scripts instead, if enabled in config. + config.minifyScripts ? '../views/dist/scram' : '../views/scram', + import.meta.url + ) + ), + uvPath, + ], + prefix: '/scram/', + decorateReply: false, +}); + // Register proxy paths to the website. app.register(fastifyStatic, { root: epoxyPath, diff --git a/views/assets/js/common-16451543478.js b/views/assets/js/common-16451543478.js index ec3ef52d..288105cc 100644 --- a/views/assets/js/common-16451543478.js +++ b/views/assets/js/common-16451543478.js @@ -63,7 +63,7 @@ const setAuthCookie = (s, lax) => { // Search engine is set to Bing. Intended to work just like the usual // bar at the top of a browser. -const sx = 'bing.com' + '/search?q=', +const sx = 'startpage.com/sp' + '/search?query=', /* omnibox = url => (url.indexOf("http") @@ -107,6 +107,19 @@ const sx = 'bing.com' + '/search?q=', url = search(url); } return url; + }, + // Parse a URL to use with Scramjet. + sjUrl = (url) => { + try { + url = + location.origin + + "/scram/service/" + + search(url); + } catch (e) { + // This is for cases where the SJ scripts have not been loaded. + url = search(url); + } + return url; }; /* RAMMERHEAD CONFIGURATION */ @@ -364,6 +377,8 @@ addEventListener('DOMContentLoaded', async () => { // setAuthCookie("__cor_auth=1", false); ultraviolet: urlHandler(uvUrl), + scramjet: urlHandler(sjUrl), + rammerhead: asyncUrlHandler( async (url) => location.origin + (await RammerheadEncode(search(url))) ), @@ -451,6 +466,7 @@ addEventListener('DOMContentLoaded', async () => { }; prSet('pr-uv', 'ultraviolet'); + prSet('pr-sj', 'scramjet'); prSet('pr-rh', 'rammerhead'); prSet('pr-yt', 'youtube'); prSet('pr-rh-dc', 'discordRH'); diff --git a/views/assets/js/register-sw.js b/views/assets/js/register-sw.js index 851ec570..b2ae518f 100644 --- a/views/assets/js/register-sw.js +++ b/views/assets/js/register-sw.js @@ -1,98 +1,99 @@ // Encase everything in a new scope so that variables are not accidentally // attached to the global scope. (() => { -const stockSW = '/uv/sw.js', - blacklistSW = '/uv/sw-blacklist.js', - swAllowedHostnames = ['localhost', '127.0.0.1'], - connection = new BareMux.BareMuxConnection('/baremux/worker.js'), - wispUrl = - (location.protocol === 'https:' ? 'wss' : 'ws') + - '://' + - location.host + - '/wisp/', - // Proxy configuration - proxyUrl = 'socks5h://localhost:9050', // Replace with your proxy URL - transports = { - epoxy: '/epoxy/index.mjs', - libcurl: '/libcurl/index.mjs', - bare: '/baremux/index.mjs', - }, - // The following two variables are copied and pasted here from csel.js. - readCookie = async (name) => { - // Get the first cookie that has the same name. - for (let cookie of document.cookie.split('; ')) - if (!cookie.indexOf(name + '=')) - // Return the cookie's stored content. - return decodeURIComponent(cookie.slice(name.length + 1)); - }, - // Sets the default transport mode based on the browser. Firefox is not - // supported by epoxy yet, which is why this is implemented. - defaultMode = /(?:Chrome|AppleWebKit)\//.test(navigator.userAgent) - ? 'epoxy' - : 'libcurl'; + const stockSW = '/uv/sw.js', + blacklistSW = '/uv/sw-blacklist.js', + swAllowedHostnames = ['localhost', '127.0.0.1'], + connection = new BareMux.BareMuxConnection('/baremux/worker.js'), + wispUrl = + (location.protocol === 'https:' ? 'wss' : 'ws') + + '://' + + location.host + + '/wisp/', + scramjet = new ScramjetController({ + prefix: "/scram/service/", + files: { + wasm: "/scram/scramjet.wasm.js", + worker: "/scram/scramjet.worker.js", + client: "/scram/scramjet.client.js", + shared: "/scram/scramjet.shared.js", + sync: "/scram/scramjet.sync.js" + }, + flags: { + serviceworkers: true, + syncxhr: true, + scramitize: true, + }, + }), + // Proxy configuration + proxyUrl = 'socks5h://localhost:9050', // Replace with your TOR proxy URL (or any) + transports = { + epoxy: '/epoxy/index.mjs', + libcurl: '/libcurl/index.mjs', + bare: '/baremux/index.mjs', + }, + // The following two variables are copied and pasted here from csel.js. + readCookie = async (name) => { + // Get the first cookie that has the same name. + for (let cookie of document.cookie.split('; ')) + if (!cookie.indexOf(name + '=')) + // Return the cookie's stored content. + return decodeURIComponent(cookie.slice(name.length + 1)); + }, + // Sets the default transport mode based on the browser. Firefox is not + // supported by epoxy yet, which is why this is implemented. + defaultMode = /(?:Chrome|AppleWebKit)\//.test(navigator.userAgent) + ? 'epoxy' + : 'libcurl'; + + transports.default = transports[defaultMode]; + + // Prevent the transports object from accidentally being edited. + Object.freeze(transports); + + const registerSW = async () => { + if (!navigator.serviceWorker) { + if ( + location.protocol !== 'https:' && + !swAllowedHostnames.includes(location.hostname) + ) + throw new Error('Service workers cannot be registered without https.'); + + throw new Error("Your browser doesn't support service workers."); + } + + // If the user has changed the transport mode, use that over the default. + const transportMode = + transports[await readCookie('HBTransport')] || transports.default; + let transportOptions = { wisp: wispUrl }; + + // Only use Tor with the proxy if the user has enabled it in settings. + if ((await readCookie('HBUseOnion')) === 'true') + transportOptions.proxy = proxyUrl; + + await connection.setTransport(transportMode, [transportOptions]); + + /* Choose a service worker to register based on whether or not the user + * has adblocking enabled. If the user changes this setting, this script needs + * to be reloaded for this to update, such as by refreshing the page. + */ + const registrations = await navigator.serviceWorker.getRegistrations(), + usedSW = + (await readCookie('HBHideAds')) !== 'false' ? blacklistSW : stockSW; + + // Unregister a service worker if it isn't the one being used. + for (const registration of registrations) + if ( + registration.active && + new URL(registration.active.scriptURL).pathname !== + new URL(usedSW, location.origin).pathname + ) + await registration.unregister(); + + await navigator.serviceWorker.register(usedSW); + }; -transports.default = transports[defaultMode]; - -// Prevent the transports object from accidentally being edited. -Object.freeze(transports); - -const registerSW = async () => { - if (!navigator.serviceWorker) { - if ( - location.protocol !== 'https:' && - !swAllowedHostnames.includes(location.hostname) - ) - throw new Error('Service workers cannot be registered without https.'); - - throw new Error("Your browser doesn't support service workers."); - } - - // If the user has changed the transport mode, use that over the default. - const transportMode = - transports[await readCookie('HBTransport')] || transports.default; - let transportOptions = { wisp: wispUrl }; - - // Only use Tor with the proxy if the user has enabled it in settings. - if ((await readCookie('HBUseOnion')) === 'true') - transportOptions.proxy = proxyUrl; - - await connection.setTransport(transportMode, [transportOptions]); - - /* Choose a service worker to register based on whether or not the user - * has ads enabled. If the user changes this setting, this script needs - * to be reloaded for this to update, such as by refreshing the page. - */ - const registrations = await navigator.serviceWorker.getRegistrations(), - usedSW = - (await readCookie('HBHideAds')) !== 'false' ? blacklistSW : stockSW; - - // Unregister a service worker if it isn't the one being used. - for (const registration of registrations) - if ( - registration.active && - new URL(registration.active.scriptURL).pathname !== - new URL(usedSW, location.origin).pathname - ) - await registration.unregister(); - - await navigator.serviceWorker.register(usedSW); -}; - -/* - -Commented out upon discovering that a duplicate BareMux connection may be -unnecessary; previously thought to have prevented issues with refreshing. - -async function setupTransportOnLoad() { - const conn = new BareMux.BareMuxConnection("/baremux/worker.js"); - if (await conn.getTransport() !== "/baremux/module.js") { - await conn.setTransport("/libcurl/index.mjs", [{ wisp: wispUrl, proxy: proxyUrl }]); - } -} - -// Run transport setup on page load. -setupTransportOnLoad(); -*/ - -registerSW(); -})(); + // Register the service worker + registerSW(); + scramjet.init("/scram/scramjet.sw.js"); +})(); \ No newline at end of file diff --git a/views/pages/proxnav/scramjet.html b/views/pages/proxnav/scramjet.html new file mode 100644 index 00000000..53977d76 --- /dev/null +++ b/views/pages/proxnav/scramjet.html @@ -0,0 +1,172 @@ + + + + + + Holy Unblocker LTS | Scramjet Proxy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

Scramjet (Beta)

+

+ Scramjet is an experimental interception based web proxy that aims to + be the successor to Ultraviolet.
+

+ +

+ Network fix if errors occurs + or blank page: +

+ +

+

More Information:

+
+

+ Scramjet works with almost all sites including Google, Youtube, Spotify, Discord, + Reddit, GeForce NOW, and now.gg! +

Scramjet is highly recommended due + to security, developer friendliness, and performance along enhanced + support for almost every site making it one of the most advanced web + proxies.
+

+

+ Common Errors with Solutions: +
- Having issues with CAPTCHAs? It will take trial and error + but try to go slow when it comes to solving them. CAPTCHA is a given + but will take a few attempts.
- You may not be able to login + normally into a number of sites. Phone verification on a select + number of sites may occur also with no real soluion. +

+

+ GitHub: https://github.com/MercuryWorkshop/scramjet +

+
+
+
+ + + + + + + + + + diff --git a/views/pages/proxnav/ultraviolet.html b/views/pages/proxnav/ultraviolet.html index e4729675..c718e8ed 100644 --- a/views/pages/proxnav/ultraviolet.html +++ b/views/pages/proxnav/ultraviolet.html @@ -51,7 +51,7 @@
-

Ultraviolet (Beta)

+

Ultraviolet

The highly innovative proxy of Titanium Network using technologies such as service workers and sophisticated rewriting techniques with diff --git a/views/pages/surf.html b/views/pages/surf.html index 4783490a..cbc6e2bb 100644 --- a/views/pages/surf.html +++ b/views/pages/surf.html @@ -60,6 +60,7 @@

advanced security measures.

+ Scramjet (Beta) Ultraviolet Rammerhead
diff --git a/views/scram/scramjet.client.js b/views/scram/scramjet.client.js new file mode 100644 index 00000000..7a215fed --- /dev/null +++ b/views/scram/scramjet.client.js @@ -0,0 +1,15 @@ +(()=>{var e={5831:function(e,t,r){var n={"./":"6707","./client":"2712","./client.ts":"2712","./document":"5974","./document.ts":"5974","./dom/attr":"8959","./dom/attr.ts":"8959","./dom/beacon":"2863","./dom/beacon.ts":"2863","./dom/cookie":"1197","./dom/cookie.ts":"1197","./dom/css":"7339","./dom/css.ts":"7339","./dom/document":"1938","./dom/document.ts":"1938","./dom/element":"2439","./dom/element.ts":"2439","./dom/fontface":"6643","./dom/fontface.ts":"6643","./dom/history":"461","./dom/history.ts":"461","./dom/navigation":"2410","./dom/navigation.ts":"2410","./dom/open":"8805","./dom/open.ts":"8805","./dom/origin":"3261","./dom/origin.ts":"3261","./dom/performance":"4475","./dom/performance.ts":"4475","./dom/serviceworker":"5707","./dom/serviceworker.ts":"5707","./dom/storage":"9227","./dom/storage.ts":"9227","./events":"5008","./events.ts":"5008","./global":"2237","./global.ts":"2237","./helpers":"7932","./helpers.ts":"7932","./index":"6707","./index.ts":"6707","./location":"8971","./location.ts":"8971","./natives":"3498","./natives.ts":"3498","./shared/antiantidebugger":"8278","./shared/antiantidebugger.ts":"8278","./shared/blob":"9447","./shared/blob.ts":"9447","./shared/caches":"4169","./shared/caches.ts":"4169","./shared/err":"5146","./shared/err.ts":"5146","./shared/error":"7651","./shared/error.ts":"7651","./shared/eval":"4423","./shared/eval.ts":"4423","./shared/event":"8231","./shared/event.ts":"8231","./shared/function":"7636","./shared/function.ts":"7636","./shared/import":"4306","./shared/import.ts":"4306","./shared/indexeddb":"2930","./shared/indexeddb.ts":"2930","./shared/postmessage":"2625","./shared/postmessage.ts":"2625","./shared/realm":"6594","./shared/realm.ts":"6594","./shared/requests/eventsource":"2738","./shared/requests/eventsource.ts":"2738","./shared/requests/fetch":"106","./shared/requests/fetch.ts":"106","./shared/requests/websocket":"7219","./shared/requests/websocket.ts":"7219","./shared/requests/xmlhttprequest":"7481","./shared/requests/xmlhttprequest.ts":"7481","./shared/sourcemaps":"6321","./shared/sourcemaps.ts":"6321","./shared/trustedTypes":"1587","./shared/trustedTypes.ts":"1587","./shared/unproxy":"2370","./shared/unproxy.ts":"2370","./shared/worker":"8475","./shared/worker.ts":"8475","./shared/wrap":"7706","./shared/wrap.ts":"7706","./swruntime":"633","./swruntime.ts":"633","./worker/importScripts":"5425","./worker/importScripts.ts":"5425"};function o(e){return r(a(e))}function a(e){if(!r.o(n,e)){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=a,e.exports=o,o.id="5831"},2712:function(e,t,r){"use strict";r.r(t),r.d(t,{ScramjetClient:function(){return g}});var n=r(6707),o=r(9777),a=r(5974),s=r(2237),i=r(7932),l=r(8971),c=r(3498),u=r(4471),p=r(7706),f=r(5008);class g{global;documentProxy;globalProxy;locationProxy;serviceWorker;bare;natives;descriptors;wrapfn;cookieStore;eventcallbacks;meta;constructor(e){if(this.global=e,this.cookieStore=new u.hc,this.eventcallbacks=new Map,o.a in e)throw console.error("attempted to initialize a scramjet cl ient, but one is already loaded - this is very bad"),Error();this.serviceWorker=this.global.navigator.serviceWorker,n.iswindow&&(this.documentProxy=(0,a.createDocumentProxy)(this,e),e.document[o.a]=this),this.locationProxy=(0,l.createLocationProxy)(this,e),this.globalProxy=(0,s.createGlobalProxy)(this,e),this.wrapfn=(0,p.createWrapFn)(this,e),n.iswindow?this.bare=new u.dg:this.bare=new u.dg(new Promise(e=>{addEventListener("message",({data:t})=>{"object"==typeof t&&"$scramjet$type"in t&&"baremuxinit"===t.$scramjet$type&&e(t.port)})})),this.natives={store:new Proxy({},{get:(e,t)=>{if(t in e)return e[t];let r=t.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=Reflect.get(o,n);return e[t]=a,e[t]}}),construct(e,...t){let r=this.store[e];return r?new r(...t):null},call(e,t,...r){let n=this.store[e];return n?n.call(t,...r):null}},this.descriptors={store:new Proxy({},{get:(e,t)=>{if(t in e)return e[t];let r=t.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=(0,c.nativeGetOwnPropertyDescriptor)(o,n);return e[t]=a,e[t]}}),get(e,t){let r=this.store[e];return r?r.get.call(t):null},set(e,t,r){let n=this.store[e];if(!n)return null;n.set.call(t,r)}};let t=this;this.meta={get origin(){return t.url},get base(){if(n.iswindow){let e=t.natives.call("Document.prototype.querySelector",t.global.document,"base");if(e){let r=e.getAttribute("href"),n=r.indexOf("#");if(!(r=r.substring(0,-1===n?void 0:n)))return t.url;return new URL(r,t.url.origin)}}return t.url}},e[o.a]=this}get frame(){if(!n.iswindow)return null;let e=this.descriptors.get("window.frameElement",this.global);if(!e)return null;let t=e[o.D];if(!t){let e=this.global.window;for(;e.parent!=e;){if(!e.frameElement)return null;if(e.frameElement&&e.frameElement[o.D])return e.frameElement[o.D];e=e.parent.window}}return t}loadcookies(e){this.cookieStore.load(e)}hook(){let e=r(5831),t=[];for(let r of e.keys()){let n=e(r);r.endsWith(".ts")&&(r.startsWith("./dom/")&&"window"in this.global||r.startsWith("./worker/")&&"WorkerGlobalScope"in this.global||r.startsWith("./shared/"))&&t.push(n)}for(let e of(t.sort((e,t)=>{let r=e.order||0;return r-(t.order||0)}),t))!e.enabled||e.enabled(this)?e.default(this,this.global):e.disabled&&e.disabled(this,this.global)}get url(){return new URL((0,u.Sd)(this.global.location.href))}set url(e){e instanceof URL&&(e=e.toString());let t=new f.NavigateEvent(e);this.frame&&this.frame.dispatchEvent(t),!t.defaultPrevented&&(this.global.location.href=(0,u.dm)(t.url,this.meta))}Proxy(e,t){if(Array.isArray(e)){for(let r of e)this.Proxy(r,t);return}let r=e.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=Reflect.get(o,n);this.natives.store[e]=a,this.RawProxy(o,n,t)}RawProxy(e,t,r){if(!e||!t||!Reflect.has(e,t))return;let n=Reflect.get(e,t);delete e[t];let o={};r.construct&&(o.construct=function(e,t,n){let o;let a=!1,s={fn:e,this:null,args:t,newTarget:n,return:e=>{a=!0,o=e},call:()=>(a=!0,o=Reflect.construct(s.fn,s.args,s.newTarget))};return(r.construct(s),a)?o:Reflect.construct(s.fn,s.args,s.newTarget)}),r.apply&&(o.apply=function(e,t,n){let o;let a=!1,s={fn:e,this:t,args:n,newTarget:null,return:e=>{a=!0,o=e},call:()=>(a=!0,o=Reflect.apply(s.fn,s.this,s.args))},i=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){if(t[0].getFileName()&&!t[0].getFileName().startsWith(location.origin+u.vc.prefix))return{stack:e.stack}};try{r.apply(s)}catch(e){if(e instanceof Error){if(e.stack instanceof Object)e.stack=e.stack.stack,console.error("ERROR FROM SCRAMJET INTERNALS",e);else throw e}else throw e}return(Error.prepareStackTrace=i,a)?o:Reflect.apply(s.fn,s.this,s.args)}),o.getOwnPropertyDescriptor=i.getOwnPropertyDescriptorHandler,e[t]=new Proxy(n,o)}Trap(e,t){if(Array.isArray(e)){for(let r of e)this.Trap(r,t);return}let r=e.split("."),n=r.pop(),o=r.reduce((e,t)=>e?.[t],this.global);if(!o)return;let a=(0,c.nativeGetOwnPropertyDescriptor)(o,n);return this.descriptors.store[e]=a,this.RawTrap(o,n,t)}RawTrap(e,t,r){if(!e||!t||!Reflect.has(e,t))return;let n=(0,c.nativeGetOwnPropertyDescriptor)(e,t),o={this:null,get:function(){return n&&n.get.call(this.this)},set:function(e){n&&n.set.call(this.this,e)}};delete e[t];let a={};return r.get?a.get=function(){return o.this=this,r.get(o)}:n?.get&&(a.get=n.get),r.set?a.set=function(e){o.this=this,r.set(o,e)}:n?.set&&(a.set=n.set),r.enumerable?a.enumerable=r.enumerable:n?.enumerable&&(a.enumerable=n.enumerable),r.configurable?a.configurable=r.configurable:n?.configurable&&(a.configurable=n.configurable),Object.defineProperty(e,t,a),n}}},5974:function(e,t,r){"use strict";r.r(t),r.d(t,{createDocumentProxy:function(){return a}});var n=r(4471),o=r(7932);function a(e,t){return new Proxy(t.document,{get:(t,r)=>"location"===r?e.locationProxy:"defaultView"===r?e.globalProxy:Reflect.get(t,r),set(t,r,o){if("location"===r){location.href=(0,n.dm)(o,e.meta);return}return Reflect.set(t,r,o)},getOwnPropertyDescriptor:o.getOwnPropertyDescriptorHandler})}},8959:function(e,t,r){"use strict";function n(e,t){e.Trap("Element.prototype.attributes",{get(e){let t=e.get(),r=new Proxy(t,{get(e,n,o){let a=Reflect.get(e,n);return"length"===n?Object.keys(r).length:"getNamedItem"===n?e=>r[e]:"getNamedItemNS"===n?(e,t)=>r[`${e}:${t}`]:n in NamedNodeMap.prototype&&"function"==typeof a?new Proxy(a,{apply:(e,n,o)=>n===r?Reflect.apply(e,t,o):Reflect.apply(e,n,o)}):"string"!=typeof n&&"number"!=typeof n||isNaN(Number(n))?this.has(e,n)?a:void 0:t[Object.keys(r)[n]]},ownKeys(e){return Reflect.ownKeys(e).filter(t=>this.has(e,t))},has:(e,r)=>"symbol"==typeof r?Reflect.has(e,r):!(r.startsWith("scramjet-attr-")||t[r]?.name?.startsWith("scramjet-attr-"))&&Reflect.has(e,r)});return r}}),e.Trap("Attr.prototype.value",{get:e=>e.this?.ownerElement?e.this.ownerElement.getAttribute(e.this.name):e.get(),set:(e,t)=>e.this?.ownerElement?e.this.ownerElement.setAttribute(e.this.name,t):e.set(t)})}r.r(t),r.d(t,{default:function(){return n}})},2863:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("Navigator.prototype.sendBeacon",{apply(t){t.args[0]=(0,n.dm)(t.args[0],e.meta)}})}},1197:function(e,t,r){"use strict";function n(e,t){e.serviceWorker.addEventListener("message",({data:t})=>{"scramjet$type"in t&&"cookie"===t.scramjet$type&&e.cookieStore.setCookies([t.cookie],new URL(t.url))}),e.Trap("Document.prototype.cookie",{get:()=>e.cookieStore.getCookies(e.url,!0),set(t,r){e.cookieStore.setCookies([r],e.url);let n=e.descriptors.get("ServiceWorkerContainer.prototype.controller",e.serviceWorker);n&&e.natives.call("ServiceWorker.prototype.postMessage",n,{scramjet$type:"cookie",cookie:r,url:e.url.href})}}),delete t.cookieStore}r.r(t),r.d(t,{default:function(){return n}})},7339:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e){e.Proxy("CSSStyleDeclaration.prototype.setProperty",{apply(t){t.args[1]&&(t.args[1]=(0,n.U5)(t.args[1],e.meta))}}),e.Proxy("CSSStyleDeclaration.prototype.getPropertyValue",{apply(e){let t=e.call();if(!t)return t;e.return((0,n.Od)(t))}}),e.Trap("CSSStyleDeclaration.prototype.cssText",{set(t,r){t.set((0,n.U5)(r,e.meta))},get:e=>(0,n.Od)(e.get())}),e.Trap("HTMLElement.prototype.style",{get(t){let r=t.get();return new Proxy(r,{get(e,t){let o=Reflect.get(e,t);return"function"==typeof o?new Proxy(o,{apply:(e,t,n)=>Reflect.apply(e,r,n)}):t in CSSStyleDeclaration.prototype||!o?o:(0,n.Od)(o)},set:(t,r,o)=>"cssText"==r||""==o||"string"!=typeof o?Reflect.set(t,r,o):Reflect.set(t,r,(0,n.U5)(o,e.meta))})},set(e,t){e.set(t)}})}},1938:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("Document.prototype.write",{apply(t){if(t.args[0])try{t.args[0]=(0,n.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}}),e.Proxy("Document.prototype.writeln",{apply(t){if(t.args[0])try{t.args[0]=(0,n.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}})}},2439:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(9777),o=r(2712),a=r(3498),s=r(4471);let i=new TextEncoder;function l(e,t){let r={nonce:[t.HTMLElement],integrity:[t.HTMLScriptElement,t.HTMLLinkElement],csp:[t.HTMLIFrameElement],credentialless:[t.HTMLIFrameElement],src:[t.HTMLImageElement,t.HTMLMediaElement,t.HTMLIFrameElement,t.HTMLFrameElement,t.HTMLEmbedElement,t.HTMLScriptElement,t.HTMLSourceElement],href:[t.HTMLAnchorElement,t.HTMLLinkElement,t.SVGUseElement,t.SVGImageElement],data:[t.HTMLObjectElement],action:[t.HTMLFormElement],formaction:[t.HTMLButtonElement,t.HTMLInputElement],srcdoc:[t.HTMLIFrameElement],srcset:[t.HTMLImageElement,t.HTMLSourceElement],poster:[t.HTMLVideoElement],imagesrcset:[t.HTMLLinkElement]},l=[t.HTMLAnchorElement.prototype,t.HTMLAreaElement.prototype],c=[(0,a.nativeGetOwnPropertyDescriptor)(t.HTMLAnchorElement.prototype,"href"),(0,a.nativeGetOwnPropertyDescriptor)(t.HTMLAreaElement.prototype,"href")];for(let e of Object.keys(r))for(let t of r[e]){let r=(0,a.nativeGetOwnPropertyDescriptor)(t.prototype,e);Object.defineProperty(t.prototype,e,{get(){return["src","data","href","action","formaction"].includes(e)?(0,s.Sd)(r.get.call(this)):r.get.call(this)},set(t){return this.setAttribute(e,t)}})}for(let t of["protocol","hash","host","hostname","origin","pathname","port","search"])for(let r in l){let n=l[r],o=c[r];e.RawTrap(n,t,{get(e){let r=o.get.call(e.this);return r?new URL((0,s.Sd)(r))[t]:r}})}e.Trap("Node.prototype.baseURI",{get(){let r=t.document.querySelector("base");return r?new URL(r.href,e.url.origin).href:e.url.origin},set:()=>!1}),e.Proxy("Element.prototype.getAttribute",{apply(t){let[r]=t.args;if(r.startsWith("scramjet-attr"))return t.return(null);if(e.natives.call("Element.prototype.hasAttribute",t.this,`scramjet-attr-${r}`)){let e=t.fn.call(t.this,`scramjet-attr-${r}`);return null===e?t.return(""):t.return(e)}}}),e.Proxy("Element.prototype.getAttributeNames",{apply(e){let t=e.call().filter(e=>!e.startsWith("scramjet-attr"));e.return(t)}}),e.Proxy("Element.prototype.getAttributeNode",{apply(e){if(e.args[0].startsWith("scramjet-attr"))return e.return(null)}}),e.Proxy("Element.prototype.hasAttribute",{apply(e){if(e.args[0].startsWith("scramjet-attr"))return e.return(!1)}}),e.Proxy("Element.prototype.setAttribute",{apply(t){let[r,n]=t.args,o=s.Gq.find(e=>{let n=e[r.toLowerCase()];return!!n&&("*"===n||"function"!=typeof n&&n.includes(t.this.tagName.toLowerCase()))});o&&(t.args[1]=o.fn(n,e.meta,e.cookieStore),t.fn.call(t.this,`scramjet-attr-${t.args[0]}`,n))}}),e.Proxy("Element.prototype.setAttributeNode",{apply(e){}}),e.Proxy("Element.prototype.setAttributeNS",{apply(t){let[r,n,o]=t.args,a=s.Gq.find(e=>{let r=e[n.toLowerCase()];return!!r&&("*"===r||"function"!=typeof r&&r.includes(t.this.tagName.toLowerCase()))});a&&(t.args[2]=a.fn(o,e.meta,e.cookieStore),e.natives.call("Element.prototype.setAttribute",t.this,`scramjet-attr-${t.args[1]}`,o))}}),e.Proxy("Element.prototype.removeAttribute",{apply(t){if(t.args[0].startsWith("scramjet-attr"))return t.return(void 0);e.natives.call("Element.prototype.hasAttribute",t.this,t.args[0])&&t.fn.call(t.this,`scramjet-attr-${t.args[0]}`)}}),e.Proxy("Element.prototype.toggleAttribute",{apply(t){if(t.args[0].startsWith("scramjet-attr"))return t.return(!1);e.natives.call("Element.prototype.hasAttribute",t.this,t.args[0])&&t.fn.call(t.this,`scramjet-attr-${t.args[0]}`)}}),e.Trap("Element.prototype.innerHTML",{set(r,n){let o;if(r.this instanceof t.HTMLScriptElement)o=(0,s.Zs)(n,"(anonymous script element)",e.meta),e.natives.call("Element.prototype.setAttribute",r.this,"scramjet-attr-script-source-src",btoa(Array.from(i.encode(o),e=>String.fromCodePoint(e)).join("")));else if(r.this instanceof t.HTMLStyleElement)o=(0,s.U5)(n,e.meta);else try{o=(0,s.r4)(n,e.cookieStore,e.meta)}catch{o=n}r.set(o)},get(r){if(r.this instanceof t.HTMLScriptElement){let t=e.natives.call("Element.prototype.getAttribute",r.this,"scramjet-attr-script-source-src");return t?atob(t):r.get()}return r.this instanceof t.HTMLStyleElement?r.get():(0,s.WT)(r.get())}}),e.Trap("Element.prototype.outerHTML",{set(t,r){t.set((0,s.r4)(r,e.cookieStore,e.meta))},get:e=>(0,s.WT)(e.get())}),e.Proxy("Element.prototype.setHTMLUnsafe",{apply(t){try{t.args[0]=(0,s.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}}),e.Proxy("Element.prototype.getHTML",{apply(e){e.return((0,s.WT)(e.call()))}}),e.Proxy("Element.prototype.insertAdjacentHTML",{apply(t){if(t.args[1])try{t.args[1]=(0,s.r4)(t.args[1],e.cookieStore,e.meta,!1)}catch{}}}),e.Trap(["HTMLIFrameElement.prototype.contentWindow","HTMLFrameElement.prototype.contentWindow","HTMLObjectElement.prototype.contentWindow","HTMLEmbedElement.prototype.contentWindow"],{get(e){let t=e.get();if(!t)return t;if(n.a in t)return t[n.a].globalProxy;{let e=new o.ScramjetClient(t);return e.hook(),e.globalProxy}}}),e.Trap(["HTMLIFrameElement.prototype.contentDocument","HTMLFrameElement.prototype.contentDocument","HTMLObjectElement.prototype.contentDocument","HTMLEmbedElement.prototype.contentDocument"],{get(t){let r=e.descriptors.get(`${t.this.constructor.name}.prototype.contentWindow`,t.this);if(!r)return r;if(n.a in r)return r[n.a].documentProxy;{let e=new o.ScramjetClient(r);return e.hook(),e.documentProxy}}}),e.Proxy(["HTMLIFrameElement.prototype.getSVGDocument","HTMLObjectElement.prototype.getSVGDocument","HTMLEmbedElement.prototype.getSVGDocument"],{apply(e){if(e.call())return e.return(e.this.contentDocument)}}),e.Trap("TreeWalker.prototype.currentNode",{get:e=>e.get(),set:(r,n)=>n===e.documentProxy?r.set(t.document):r.set(n)}),e.Proxy("Document.prototype.open",{apply(e){let t=e.call(),r=t[n.a];return r?e.return(r.documentProxy):e.return(t)}}),e.Trap("Node.prototype.ownerDocument",{get(e){let t=e.get();if(!t)return null;let r=t[n.a];return r?r.documentProxy:t}}),e.Trap(["Node.prototype.parentNode","Node.prototype.parentElement","Node.prototype.previousSibling","Node.prototype.nextSibling","Range.prototype.commonAncestorContainer","AbstractRange.prototype.endContainer","AbstractRange.prototype.startContainer"],{get(e){let t=e.get();if(!(t instanceof Document))return t;let r=t[n.a];return r?r.documentProxy:t}}),e.Proxy("Node.prototype.getRootNode",{apply(e){let t=e.call();if(!(t instanceof Document))return e.return(t);let r=t[n.a];return r?e.return(r.documentProxy):e.return(t)}}),e.Proxy(["DOMParser.prototype.parseFromString","Document.prototype.parseHTMLUnsafe"],{apply(t){if("text/html"===t.args[1])try{t.args[0]=(0,s.r4)(t.args[0],e.cookieStore,e.meta,!1)}catch{}}})}},6643:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("FontFace",{construct(t){t.args[1]=(0,n.U5)(t.args[1],e.meta)}})}},461:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(4471),o=r(5008);function a(e,t){e.Proxy("History.prototype.pushState",{apply(t){(t.args[2]||""===t.args[2])&&(t.args[2]=(0,n.dm)(t.args[2],e.meta)),t.call();let r=new o.UrlChangeEvent(e.url.href);e.frame&&e.frame.dispatchEvent(r)}}),e.Proxy("History.prototype.replaceState",{apply(t){(t.args[2]||""===t.args[2])&&(t.args[2]=(0,n.dm)(t.args[2],e.meta)),t.call();let r=new o.UrlChangeEvent(e.url.href);e.frame&&e.frame.dispatchEvent(r)}})}},2410:function(e,t,r){"use strict";function n(e,t){delete t.navigation}r.r(t),r.d(t,{default:function(){return n}})},8805:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s}});var n=r(4471),o=r(2712),a=r(9777);function s(e){e.Proxy("window.open",{apply(t){t.args[0]&&(t.args[0]=(0,n.dm)(t.args[0],e.meta)),["_parent","_top","_unfencedTop"].includes(t.args[1])&&(t.args[1]="_self");let r=t.call();if(!r)return t.return(r);if(a.a in r)return t.return(r[a.a].globalProxy);{let e=new o.ScramjetClient(r);return e.hook(),t.return(e.globalProxy)}}}),e.Trap("opener",{get(e){let t=e.get();return t&&a.a in t?t[a.a].globalProxy:void 0}}),e.Trap("window.frameElement",{get(e){let t=e.get();return t?t.ownerDocument.defaultView[a.a]?t:null:t}})}},3261:function(e,t,r){"use strict";function n(e,t){e.Trap("origin",{get:()=>e.url.origin,set:()=>!1}),e.Trap("Document.prototype.URL",{get:()=>e.url.href,set:()=>!1}),e.Trap("Document.prototype.documentURI",{get:()=>e.url.href,set:()=>!1}),e.Trap("Document.prototype.domain",{get:()=>e.url.hostname,set:()=>!1})}r.r(t),r.d(t,{default:function(){return n}})},4475:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Trap("PerformanceEntry.prototype.name",{get:e=>(0,n.Sd)(e.get())})}},5707:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l},disabled:function(){return i},enabled:function(){return s},order:function(){return a}});var n=r(4471),o=r(8810);let a=2,s=e=>(0,o.Sp)("serviceworkers",e.url);function i(e,t){Reflect.deleteProperty(Navigator.prototype,"serviceWorker")}function l(e,t){let r=new WeakMap;e.Proxy("EventTarget.prototype.addEventListener",{apply(e){r.get(e.this)&&e.return(void 0)}}),e.Proxy("EventTarget.prototype.removeEventListener",{apply(e){r.get(e.this)&&e.return(void 0)}}),e.Proxy("ServiceWorkerContainer.prototype.getRegistration",{apply(e){e.return(new Promise(e=>e(registration)))}}),e.Proxy("ServiceWorkerContainer.prototype.getRegistrations",{apply(e){e.return(new Promise(e=>e([registration])))}}),e.Trap("ServiceWorkerContainer.prototype.ready",{get:e=>new Promise(e=>e(registration))}),e.Trap("ServiceWorkerContainer.prototype.controller",{get:e=>registration?.active}),e.Proxy("ServiceWorkerContainer.prototype.register",{apply(t){let o=new EventTarget;Object.setPrototypeOf(o,self.ServiceWorkerRegistration.prototype),o.constructor=t.fn;let a=(0,n.dm)(t.args[0],e.meta)+"?dest=serviceworker";t.args[1]&&"module"===t.args[1].type&&(a+="&type=module");let s=e.natives.construct("SharedWorker",a).port,i={scope:t.args[0],active:s},l=e.descriptors.get("ServiceWorkerContainer.prototype.controller",e.serviceWorker);e.natives.call("ServiceWorker.prototype.postMessage",l,{scramjet$type:"registerServiceWorker",port:s,origin:e.url.origin},[s]),r.set(o,i),t.return(new Promise(e=>e(o)))}})}},9227:function(e,t,r){"use strict";function n(e,t){let r={get(t,r){switch(r){case"getItem":return r=>t.getItem(e.url.host+"@"+r);case"setItem":return(r,n)=>t.setItem(e.url.host+"@"+r,n);case"removeItem":return r=>t.removeItem(e.url.host+"@"+r);case"clear":return()=>{for(let r in Object.keys(t))r.startsWith(e.url.host)&&t.removeItem(r)};case"key":return r=>{let n=Object.keys(t).filter(t=>t.startsWith(e.url.host));return t.getItem(n[r])};case"length":return Object.keys(t).filter(t=>t.startsWith(e.url.host)).length;default:if(r in Object.prototype||"symbol"==typeof r)return Reflect.get(t,r);return console.log("GET",r,t==n),t.getItem(e.url.host+"@"+r)}},set:(t,r,o)=>(t==n&&console.log("SET",r,o,t===n),t.setItem(e.url.host+"@"+r,o),!0),ownKeys:t=>Reflect.ownKeys(t).filter(t=>"string"==typeof t&&t.startsWith(e.url.host)).map(t=>"string"==typeof t?t.substring(e.url.host.length+1):t),getOwnPropertyDescriptor:(t,r)=>({value:t.getItem(e.url.host+"@"+r),enumerable:!0,configurable:!0,writable:!0}),defineProperty:(t,r,n)=>(t.setItem(e.url.host+"@"+r,n.value),!0)},n=t.localStorage,o=new Proxy(t.localStorage,r),a=new Proxy(t.sessionStorage,r);delete t.localStorage,delete t.sessionStorage,t.localStorage=o,t.sessionStorage=a}r.r(t),r.d(t,{default:function(){return n}})},5008:function(e,t,r){"use strict";r.r(t),r.d(t,{NavigateEvent:function(){return n},ScramjetContextInit:function(){return a},UrlChangeEvent:function(){return o}});class n extends Event{url;constructor(e){super("navigate"),this.url=e}}class o extends Event{url;constructor(e){super("urlchange"),this.url=e}}class a extends Event{window;constructor(e){super("contextInit"),this.window=e}}},2237:function(e,t,r){"use strict";r.r(t),r.d(t,{UNSAFE_GLOBALS:function(){return i},createGlobalProxy:function(){return l}});var n=r(6707),o=r(9777),a=r(2712),s=r(7932);let i=["window","self","globalThis","this","parent","top","location","document","eval","frames"];function l(e,t){return new Proxy(t,{get(t,r){let s=Reflect.get(t,r);if(n.iswindow&&("string"==typeof r||"number"==typeof r)&&!isNaN(Number(r))&&s){let e=s.self;if(e){if(o.a in e)return e[o.a].globalProxy;{let t=new a.ScramjetClient(e);return t.hook(),t.globalProxy}}}if("$scramjet"!==r)return"string"==typeof r&&i.includes(r)?e.wrapfn(s):s},set(t,r,n){if("location"===r){e.url=n;return}return Reflect.set(t,r,n)},has:(e,t)=>"$scramjet"!==t&&Reflect.has(e,t),ownKeys:e=>Reflect.ownKeys(e).filter(e=>"$scramjet"!==e),defineProperty:(e,t,r)=>(!r.get&&!r.set&&(r.writable=!0),r.configurable=!0,Reflect.defineProperty(e,t,r)),getOwnPropertyDescriptor:s.getOwnPropertyDescriptorHandler})}},7932:function(e,t,r){"use strict";function n(e,t){return Reflect.getOwnPropertyDescriptor(e,t)}r.r(t),r.d(t,{getOwnPropertyDescriptorHandler:function(){return n}})},6707:function(e,t,r){"use strict";r.r(t),r.d(t,{isdedicated:function(){return f},isemulatedsw:function(){return d},isshared:function(){return g},issw:function(){return p},iswindow:function(){return c},isworker:function(){return u}});var n=r(8810),o=r(9777),a=r(2712),s=r(5008),i=r(633),l=r(1762).Z;let c="window"in self&&window instanceof Window,u="WorkerGlobalScope"in self,p="ServiceWorkerGlobalScope"in self,f="DedicatedWorkerGlobalScope"in self,g="SharedWorkerGlobalScope"in self,d="serviceworker"===new URL(self.location.href).searchParams.get("dest");if(l.log("scrammin"),!(o.a in self)){(0,n.t8)();let e=new a.ScramjetClient(self);self.COOKIE&&e.loadcookies(self.COOKIE),e.hook(),d&&new i.ScramjetServiceWorkerRuntime(e).hook();let t=new s.ScramjetContextInit(e.global.window);e.frame?.dispatchEvent(t)}Reflect.deleteProperty(self,"WASM"),Reflect.deleteProperty(self,"COOKIE"),"document"in self&&document?.currentScript&&document.currentScript.remove()},8971:function(e,t,r){"use strict";r.r(t),r.d(t,{createLocationProxy:function(){return i}});var n=r(3498),o=r(4471),a=r(5008),s=r(6707);function i(e,t){let r=s.iswindow?t.Location:t.WorkerLocation,i={};Object.setPrototypeOf(i,r.prototype),i.constructor=r;let l=s.iswindow?t.location:r.prototype;for(let r of["protocol","hash","host","hostname","href","origin","pathname","port","search"]){let o=(0,n.nativeGetOwnPropertyDescriptor)(l,r);if(!o)continue;let s={configurable:!0,enumerable:!0};o.get&&(s.get=new Proxy(o.get,{apply:()=>e.url[r]})),o.set&&(s.set=new Proxy(o.set,{apply(n,o,s){if("href"===r){e.url=s[0];return}if("hash"===r){t.location.hash=s[0];let r=new a.UrlChangeEvent(e.url.href);e.frame&&e.frame.dispatchEvent(r);return}let i=new URL(e.url.href);i[r]=s[0],e.url=i}})),Object.defineProperty(i,r,s)}return i.toString=new Proxy(t.location.toString,{apply:()=>e.url.href}),t.location.valueOf&&(i.valueOf=new Proxy(t.location.valueOf,{apply:()=>e.url.href})),t.location.assign&&(i.assign=new Proxy(t.location.assign,{apply(r,n,a){a[0]=(0,o.dm)(a[0],e.meta),Reflect.apply(r,t.location,a)}})),t.location.reload&&(i.reload=new Proxy(t.location.reload,{apply(e,r,n){Reflect.apply(e,t.location,n)}})),t.location.replace&&(i.replace=new Proxy(t.location.replace,{apply(r,n,a){a[0]=(0,o.dm)(a[0],e.meta),Reflect.apply(r,t.location,a)}})),i}},3498:function(e,t,r){"use strict";r.r(t),r.d(t,{nativeFunction:function(){return n},nativeGetOwnPropertyDescriptor:function(){return o}});let n=self.Function,o=self.Object.getOwnPropertyDescriptor},8278:function(e,t,r){"use strict";function n(e){e.Proxy("console.clear",{apply(e){e.return(void 0)}});let t=console.log;e.Trap("console.log",{set(e,t){},get:e=>t})}r.r(t),r.d(t,{default:function(){return n}})},9447:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e){e.Proxy("URL.createObjectURL",{apply(t){let r=t.call();r.startsWith("blob:")?t.return((0,n.ls)(r,e.meta)):t.return(r)}}),e.Proxy("URL.revokeObjectURL",{apply(e){e.args[0]=(0,n.Ag)(e.args[0])}})}},4169:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("CacheStorage.prototype.open",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Proxy("CacheStorage.prototype.has",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Proxy("CacheStorage.prototype.match",{apply(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,n.dm)(t.args[0],e.meta))}}),e.Proxy("CacheStorage.prototype.delete",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Proxy("Cache.prototype.add",{apply(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,n.dm)(t.args[0],e.meta))}}),e.Proxy("Cache.prototype.addAll",{apply(t){for(let r=0;r(0,n.Sp)("captureErrors",e.url);function a(e,t=[]){switch(typeof e){case"string":break;case"object":if(e&&e[Symbol.iterator]&&"function"==typeof e[Symbol.iterator])for(let r in e){let n=Object.getOwnPropertyDescriptor(e,r);if(n&&n.get)continue;let o=e[r];!t.includes(o)&&(t.push(o),a(o,t))}}}function s(e,t){t.$scramerr=function(e){console.warn("CAUGHT ERROR",e)},t.$scramdbg=function(e,t){return e&&"object"==typeof e&&e.length>0&&a(e),a(t),t},e.Proxy("Promise.prototype.catch",{apply(e){e.args[0]&&(e.args[0]=new Proxy(e.args[0],{apply(e,t,r){Reflect.apply(e,t,r)}}))}})}},7651:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s},enabled:function(){return a}});var n=r(8810),o=r(4471);let a=e=>(0,n.Sp)("cleanErrors",e.url);function s(e,t){let r=(e,t)=>{let r=e.stack;for(let e=0;ee.includes(n));e.splice(t,1),r=e.join("\n");continue}try{r=r.replaceAll(n,(0,o.Sd)(n))}catch{}}return r};e.Trap("Error.prepareStackTrace",{get:e=>r,set(e){}})}},4423:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o},indirectEval:function(){return a}});var n=r(4471);function o(e,t){Object.defineProperty(t,n.vc.globals.rewritefn,{value:function(t){return"string"!=typeof t?t:(0,n.Zs)(t,"(direct eval proxy)",e.meta)},writable:!1,configurable:!1})}function a(e){return"string"!=typeof e?e:(0,this.global.eval)((0,n.Zs)(e,"(indirect eval proxy)",this.meta))}},8231:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return c}});var n=r(6707),o=r(9777),a=r(7932),s=r(3498),i=r(2370);let l=Symbol.for("scramjet original onevent function");function c(e,t){let r={message:{_init(){return("object"!=typeof this.data||!("$scramjet$type"in this.data))&&!0},ports(){return this.ports},source(){if(null===this.source)return null;let e=this.source[o.a];return e?e.globalProxy:this.source},origin(){return"object"==typeof this.data&&"$scramjet$origin"in this.data?this.data.$scramjet$origin:e.url.origin},data(){return"object"==typeof this.data&&"$scramjet$data"in this.data?this.data.$scramjet$data:this.data}}};function c(e){return new Proxy(e,{apply(e,n,o){let s=o[0];if(s.isTrusted){let t=s.type;if(t in r){let n=r[t];if(n._init&&!1===n._init.call(s))return;o[0]=new Proxy(s,{get:(t,r,o)=>r in n?n[r].call(t):Reflect.get(e,r,o),getOwnPropertyDescriptor:a.getOwnPropertyDescriptorHandler})}}return!t.event&&Object.defineProperty(t,"event",{get:()=>o[0],configurable:!0}),Reflect.apply(e,n,o)},getOwnPropertyDescriptor:a.getOwnPropertyDescriptorHandler})}e.Proxy("EventTarget.prototype.addEventListener",{apply(t){if((0,i.unproxy)(t,e),"function"!=typeof t.args[1])return;let r=t.args[1],n=c(r);t.args[1]=n;let o=e.eventcallbacks.get(t.this);(o||=[]).push({event:t.args[0],originalCallback:r,proxiedCallback:n}),e.eventcallbacks.set(t.this,o)}}),e.Proxy("EventTarget.prototype.removeEventListener",{apply(t){if((0,i.unproxy)(t,e),"function"!=typeof t.args[1])return;let r=e.eventcallbacks.get(t.this);if(!r)return;let n=r.findIndex(e=>e.event===t.args[0]&&e.originalCallback===t.args[1]);if(-1===n)return;let o=r.splice(n,1);e.eventcallbacks.set(t.this,r),t.args[1]=o[0].proxiedCallback}}),e.Proxy("EventTarget.prototype.dispatchEvent",{apply(t){(0,i.unproxy)(t,e)}});let u=[t.self,t.MessagePort.prototype];for(let o of(n.iswindow&&u.push(t.HTMLElement.prototype),t.Worker&&u.push(t.Worker.prototype),u))for(let t of Reflect.ownKeys(o))if("string"==typeof t&&t.startsWith("on")&&r[t.slice(2)]){let r=(0,s.nativeGetOwnPropertyDescriptor)(o,t);if(!r.get||!r.set||!r.configurable)continue;e.RawTrap(o,t,{get(e){return this[l]?this[l]:e.get()},set(e,t){if(this[l]=t,"function"!=typeof t)return e.set(t);e.set(c(t))}})}}},7636:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(4471);function o(e,t){let r=e.call().toString(),o=(0,n.Zs)(`return ${r}`,"(function proxy)",t.meta);e.return(e.fn(o)())}function a(e,t){e.Proxy("Function",{apply(t){o(t,e)},construct(t){o(t,e)}})}},4306:function(e,t,r){"use strict";let n;r.r(t),r.d(t,{default:()=>k});var o=r("4471"),a=r("8810");function s(e){let t=n.__externref_table_alloc();return n.__wbindgen_export_2.set(t,e),t}function i(e,t){try{return e.apply(this,t)}catch(t){let e=s(t);n.__wbindgen_exn_store(e)}}let l="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&l.decode();let c=null;function u(){return(null===c||c.buffer!==n.memory.buffer)&&(c=new Uint8Array(n.memory.buffer)),c}function p(e,t){return e>>>=0,l.decode(u().slice(e,e+t))}let f=0,g="undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},d=function(e,t){let r=g.encode(e);return t.set(r),{read:e.length,written:r.length}};function y(e,t,r){if(void 0===r){let r=g.encode(e),n=t(r.length,1)>>>0;return u().subarray(n,n+r.length).set(r),f=r.length,n}let n=e.length,o=t(n,1)>>>0,a=u(),s=0;for(;s127)break;a[o+s]=t}if(s!==n){0!==s&&(e=e.slice(s)),o=r(o,n,n=s+3*e.length,1)>>>0;let t=d(e,u().subarray(o+s,o+n));s+=t.written,o=r(o,n,s,1)>>>0}return f=s,o}let m=null;function h(){return(null===m||m.buffer!==n.memory.buffer)&&(m=new DataView(n.memory.buffer)),m}function b(e){return null==e}function w(e){let t=n.__wbindgen_export_2.get(e);return n.__externref_table_dealloc(e),t}async function v(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"!=e.headers.get("Content-Type"))console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t);else throw t}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}{let r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}function x(){let e={};return e.wbg={},e.wbg.__wbg_call_3b770f0d6eb4720e=function(){return i(function(e,t,r,n){return e.call(t,r,n)},arguments)},e.wbg.__wbg_call_500db948e69c7330=function(){return i(function(e,t,r){return e.call(t,r)},arguments)},e.wbg.__wbg_call_b0d8e36992d9900d=function(){return i(function(e,t){return e.call(t)},arguments)},e.wbg.__wbg_get_bbccf8970793c087=function(){return i(function(e,t){return Reflect.get(e,t)},arguments)},e.wbg.__wbg_new_17f755666e48d1d8=function(){return i(function(e,t){return new URL(p(e,t))},arguments)},e.wbg.__wbg_new_254fa9eac11932ae=function(){return[]},e.wbg.__wbg_new_688846f374351c92=function(){return{}},e.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d=function(e,t){return Function(p(e,t))},e.wbg.__wbg_newwithbase_aa2c471fe3eacc2b=function(){return i(function(e,t,r,n){return new URL(p(e,t),p(r,n))},arguments)},e.wbg.__wbg_now_62a101fe35b60230=function(e){return e.now()},e.wbg.__wbg_scramtag_bd98edaa0eaec45e=function(e){let t=y("10000000000".replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),n.__wbindgen_malloc,n.__wbindgen_realloc),r=f;h().setInt32(e+4,r,!0),h().setInt32(e+0,t,!0)},e.wbg.__wbg_set_4e647025551483bd=function(){return i(function(e,t,r){return Reflect.set(e,t,r)},arguments)},e.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3=function(){let e="undefined"==typeof global?null:global;return b(e)?0:s(e)},e.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb=function(){let e="undefined"==typeof globalThis?null:globalThis;return b(e)?0:s(e)},e.wbg.__wbg_static_accessor_SELF_1dc398a895c82351=function(){let e="undefined"==typeof self?null:self;return b(e)?0:s(e)},e.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a=function(){let e="undefined"==typeof window?null:window;return b(e)?0:s(e)},e.wbg.__wbg_toString_a491ccf7be1ca5c9=function(e){return e.toString()},e.wbg.__wbg_toString_cbcf95f260c441ae=function(e){return e.toString()},e.wbg.__wbindgen_boolean_get=function(e){return"boolean"==typeof e?e?1:0:2},e.wbg.__wbindgen_error_new=function(e,t){return Error(p(e,t))},e.wbg.__wbindgen_init_externref_table=function(){let e=n.__wbindgen_export_2,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)},e.wbg.__wbindgen_is_function=function(e){return"function"==typeof e},e.wbg.__wbindgen_is_undefined=function(e){return void 0===e},e.wbg.__wbindgen_number_new=function(e){return e},e.wbg.__wbindgen_string_get=function(e,t){let r="string"==typeof t?t:void 0;var o=b(r)?0:y(r,n.__wbindgen_malloc,n.__wbindgen_realloc),a=f;h().setInt32(e+4,a,!0),h().setInt32(e+0,o,!0)},e.wbg.__wbindgen_string_new=function(e,t){return p(e,t)},e.wbg.__wbindgen_throw=function(e,t){throw Error(p(e,t))},e.wbg.__wbindgen_uint8_array_new=function(e,t){var r,o,a=(r=e,o=t,r>>>=0,u().subarray(r/1,r/1+o)).slice();return n.__wbindgen_free(e,1*t,1),a},e}function P(e,t){e.wbg.memory=t||new WebAssembly.Memory({initial:18,maximum:16384,shared:!0})}function _(e,t,r){if(n=e.exports,T.__wbindgen_wasm_module=t,m=null,c=null,void 0!==r&&("number"!=typeof r||0===r||r%65536!=0))throw"invalid stack size";return n.__wbindgen_start(r),n}async function T(e,t){let r;if(void 0!==n)return n;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e,memory:t,thread_stack_size:r}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new URL("wasm_bg.wasm",""));let o=x();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e)),P(o,t);let{instance:a,module:s}=await v(await e,o);return _(a,s,r)}!function(e,t){let r;if(void 0!==n)return;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?{module:e,memory:t,thread_stack_size:r}=e:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let o=x();P(o,t),!(e instanceof WebAssembly.Module)&&(e=new WebAssembly.Module(e)),_(new WebAssembly.Instance(e,o),e,r)}({module:new WebAssembly.Module(Uint8Array.from(atob(self.WASM),e=>e.charCodeAt(0)))}),Error.stackTraceLimit=50;let S=new TextDecoder;function E(e,t){try{return new URL(e,t)}catch{return null}}function k(e,t){let r=e.natives.store.Function;t[o.vc.globals.importfn]=function(t){return function(o){let s=new URL(o,t).href;return r(`return import("${function(e,t){if(e instanceof URL&&(e=e.toString()),e.startsWith("javascript:"))return"javascript:"+function(e,t,r){if((0,a.Sp)("naiiveRewriter",r.origin)){let t="string"==typeof e?e:new TextDecoder().decode(e);return console.log("naiive"),function(e){return"string"!=typeof e&&(e=new TextDecoder().decode(e)),` + with (${a.h3.config.globals.wrapfn}(globalThis)) { + + ${e} + + } + `}(t)}return e=function(e,t,r){let o;let s=performance.now();try{o="string"==typeof e?function(e,t,r,o){let a=y(e,n.__wbindgen_malloc,n.__wbindgen_realloc),s=f,i=y(t,n.__wbindgen_malloc,n.__wbindgen_realloc),l=f,c=y(r,n.__wbindgen_malloc,n.__wbindgen_realloc),u=f,p=n.rewrite_js(a,s,i,l,c,u,o);if(p[2])throw w(p[1]);return w(p[0])}(e,r.base.href,t||"(unknown)",a.h3):function(e,t,r,o){let a=function(e,t){let r=t(1*e.length,1)>>>0;return u().set(e,r/1),f=e.length,r}(e,n.__wbindgen_malloc),s=f,i=y(t,n.__wbindgen_malloc,n.__wbindgen_realloc),l=f,c=y(r,n.__wbindgen_malloc,n.__wbindgen_realloc),p=f,g=n.rewrite_js_from_arraybuffer(a,s,i,l,c,p,o);if(g[2])throw w(g[1]);return w(g[0])}(new Uint8Array(e),r.base.href,t||"(unknown)",a.h3)}catch(r){throw console.error("failed rewriting js for",t,r,e),r.message=`failed rewriting js for "${t}": ${r.message}`,r}let i=performance.now(),{js:l,errors:c,duration:p}=o;if((0,a.Sp)("rewriterLogs",r.base))for(let e of c)console.error("oxc parse error",e);if((0,a.Sp)("rewriterLogs",r.base)){let e;e=p<1n?"BLAZINGLY FAST":p<500n?"decent speed":"really slow";let r=(i-s-Number(p)).toFixed(2);console.log(`oxc rewrite for "${t||"(unknown)"}" was ${e} (${p}ms; ${r}ms overhead)`)}return"string"==typeof e?S.decode(l):l}(e,t,r)}(e.slice(11),"(javascript: url)",t);if(e.startsWith("blob:"))return location.origin+a.h3.config.prefix+e;if(e.startsWith("data:"))return location.origin+a.h3.config.prefix+e;else{if(e.startsWith("mailto:")||e.startsWith("about:"))return e;let r=t.base.href;r.startsWith("about:")&&(r=function(e){e instanceof URL&&(e=e.toString());let t=location.origin+a.h3.config.prefix;if(e.startsWith("javascript:"))return e;if(e.startsWith("blob:"))return e;if(e.startsWith(t+"blob:"))return e.substring(t.length);else if(e.startsWith(t+"data:"))return e.substring(t.length);else if(e.startsWith("mailto:")||e.startsWith("about:"))return e;else if(E(e))return a.h3.codec.decode(e.slice((location.origin+a.h3.config.prefix).length));else return e}(self.location.href));let n=E(e,r);return n?location.origin+a.h3.config.prefix+a.h3.codec.encode(n.href):e}}(s,e.meta)}")`)()}},t[o.vc.globals.metafn]=function(e){return{url:e,resolve:function(t){return new URL(t,e).href}}}}},2930:function(e,t,r){"use strict";function n(e){e.Proxy("IDBFactory.prototype.open",{apply(t){t.args[0]=`${e.url.origin}@${t.args[0]}`}}),e.Trap("IDBDatabase.prototype.name",{get(e){let t=e.get();return t.substring(t.indexOf("@")+1)}})}r.r(t),r.d(t,{default:function(){return n}})},2625:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s}});var n=r(6707),o=r(9777),a=r(6594);function s(e){n.iswindow&&e.Proxy("window.postMessage",{apply(e){let t;let{constructor:{constructor:r}}=t="object"==typeof e.args[0]&&null!==e.args[0]?e.args[0]:"object"==typeof e.args[2]&&null!==e.args[2]?e.args[2]:e.this&&a.POLLUTANT in e.this&&"object"==typeof e.this[a.POLLUTANT]&&null!==e.this[a.POLLUTANT]?e.this[a.POLLUTANT]:{},n=r("return globalThis")()[o.a],s=r("...args","this(...args)");e.args[0]={$scramjet$messagetype:"window",$scramjet$origin:n.url.origin,$scramjet$data:e.args[0]},"string"==typeof e.args[1]&&(e.args[1]="*"),"object"==typeof e.args[1]&&(e.args[1].targetOrigin="*"),e.return(s.call(e.fn,...e.args))}});let t=["MessagePort.prototype.postMessage"];self.Worker&&t.push("Worker.prototype.postMessage"),!n.iswindow&&t.push("self.postMessage"),e.Proxy(t,{apply(e){e.args[0]={$scramjet$messagetype:"worker",$scramjet$data:e.args[0]}}})}},6594:function(e,t,r){"use strict";r.r(t),r.d(t,{POLLUTANT:function(){return o},default:function(){return a}});var n=r(4471);let o=Symbol.for("scramjet realm pollutant");function a(e,t){Object.defineProperty(t.Object.prototype,n.vc.globals.setrealmfn,{value(e){return Object.defineProperty(this,o,{value:e,writable:!1,configurable:!0,enumerable:!1}),this},writable:!0,configurable:!0,enumerable:!1})}},2738:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e){e.Proxy("EventSource",{construct(t){t.args[0]=(0,n.dm)(t.args[0],e.meta)}}),e.Trap("EventSource.prototype.url",{get(e){(0,n.Sd)(e.get())}})}},106:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(6707),o=r(4471);function a(e,t){e.Proxy("fetch",{apply(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,o.dm)(t.args[0],e.meta),n.isemulatedsw&&(t.args[0]+="?from=swruntime"))}}),e.Proxy("Request",{construct(t){("string"==typeof t.args[0]||t.args[0]instanceof URL)&&(t.args[0]=(0,o.dm)(t.args[0],e.meta),n.isemulatedsw&&(t.args[0]+="?from=swruntime"))}}),e.Trap("Response.prototype.url",{get:e=>(0,o.Sd)(e.get())}),e.Trap("Request.prototype.url",{get:e=>(0,o.Sd)(e.get())})}},7219:function(e,t,r){"use strict";function n(e,t){let r=new WeakMap;e.Proxy("WebSocket",{construct(n){let o=new EventTarget;Object.setPrototypeOf(o,n.fn.prototype),o.constructor=n.fn;let a=e=>new Proxy(e,{get:(e,t)=>"isTrusted"===t||Reflect.get(e,t)}),s=e.bare.createWebSocket(n.args[0],n.args[1],null,{"User-Agent":t.navigator.userAgent,Origin:e.url.origin}),i={extensions:"",protocol:"",url:n.args[0],binaryType:"blob",barews:s,onclose:null,onerror:null,onmessage:null,onopen:null};function l(e){i["on"+e.type]?.(a(e)),o.dispatchEvent(e)}s.addEventListener("open",()=>{l(new Event("open"))}),s.addEventListener("close",e=>{l(new CloseEvent("close",e))}),s.addEventListener("message",async e=>{let t=e.data;"string"==typeof t||("byteLength"in t?"blob"===i.binaryType?t=new Blob([t]):Object.setPrototypeOf(t,ArrayBuffer.prototype):"arrayBuffer"in t&&"arraybuffer"===i.binaryType&&Object.setPrototypeOf(t=await t.arrayBuffer(),ArrayBuffer.prototype)),l(new MessageEvent("message",{data:t,origin:e.origin,lastEventId:e.lastEventId,source:e.source,ports:e.ports}))}),s.addEventListener("error",()=>{l(new Event("error"))}),r.set(o,i),n.return(o)}}),e.Trap("WebSocket.prototype.binaryType",{get:e=>r.get(e.this).binaryType,set(e,t){let n=r.get(e.this);("blob"===t||"arraybuffer"===t)&&(n.binaryType=t)}}),e.Trap("WebSocket.prototype.bufferedAmount",{get:()=>0}),e.Trap("WebSocket.prototype.extensions",{get:e=>r.get(e.this).extensions}),e.Trap("WebSocket.prototype.onclose",{get:e=>r.get(e.this).onclose,set(e,t){r.get(e.this).onclose=t}}),e.Trap("WebSocket.prototype.onerror",{get:e=>r.get(e.this).onerror,set(e,t){r.get(e.this).onerror=t}}),e.Trap("WebSocket.prototype.onmessage",{get:e=>r.get(e.this).onmessage,set(e,t){r.get(e.this).onmessage=t}}),e.Trap("WebSocket.prototype.onopen",{get:e=>r.get(e.this).onopen,set(e,t){r.get(e.this).onopen=t}}),e.Trap("WebSocket.prototype.url",{get:e=>r.get(e.this).url}),e.Trap("WebSocket.prototype.protocol",{get:e=>r.get(e.this).protocol}),e.Trap("WebSocket.prototype.readyState",{get:e=>r.get(e.this).barews.readyState}),e.Proxy("WebSocket.prototype.send",{apply(e){let t=r.get(e.this);e.return(t.barews.send(e.args[0]))}}),e.Proxy("WebSocket.prototype.close",{apply(e){let t=r.get(e.this);void 0===e.args[0]&&(e.args[0]=1e3),void 0===e.args[1]&&(e.args[1]=""),e.return(t.barews.close(e.args[0],e.args[1]))}})}r.r(t),r.d(t,{default:function(){return n}})},7481:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a}});var n=r(8810),o=r(4471);function a(e,t){let r;t.Worker&&(0,n.Sp)("syncxhr",e.url)&&(r=e.natives.construct("Worker",o.vc.files.sync));let a=Symbol("xhr original args"),s=Symbol("xhr headers");e.Proxy("XMLHttpRequest.prototype.open",{apply(t){t.args[1]&&(t.args[1]=(0,o.dm)(t.args[1],e.meta)),void 0===t.args[2]&&(t.args[2]=!0),t.this[a]=t.args}}),e.Proxy("XMLHttpRequest.prototype.setRequestHeader",{apply(e){(e.this[s]||(e.this[s]={}))[e.args[0]]=e.args[1]}}),e.Proxy("XMLHttpRequest.prototype.send",{apply(t){let o=t.this[a];if(!o||o[2])return;if(!(0,n.Sp)("syncxhr",e.url))return console.warn("ignoring request - sync xhr disabled in flags"),t.return(void 0);let i=new SharedArrayBuffer(1024,{maxByteLength:0x7fffffff}),l=new DataView(i);e.natives.call("Worker.prototype.postMessage",r,{sab:i,args:o,headers:t.this[s],body:t.args[0]});let c=performance.now();for(;0===l.getUint8(0);)if(performance.now()-c>1e3)throw Error("xhr timeout");let u=l.getUint16(1),p=l.getUint32(3),f=new Uint8Array(p);f.set(new Uint8Array(i.slice(7,7+p)));let g=new TextDecoder().decode(f),d=l.getUint32(7+p),y=new Uint8Array(d);y.set(new Uint8Array(i.slice(11+p,11+p+d)));let m=new TextDecoder().decode(y);e.RawTrap(t.this,"status",{get:()=>u}),e.RawTrap(t.this,"responseText",{get:()=>m}),e.RawTrap(t.this,"response",{get:()=>"arraybuffer"===t.this.responseType?y.buffer:m}),e.RawTrap(t.this,"responseXML",{get:()=>new DOMParser().parseFromString(m,"text/xml")}),e.RawTrap(t.this,"getAllResponseHeaders",{get:()=>()=>g}),e.RawTrap(t.this,"getResponseHeader",{get:()=>e=>{let t=RegExp(`^${e}: (.*)$`,"m").exec(g);return t?t[1]:null}}),t.return(void 0)}}),e.Trap("XMLHttpRequest.prototype.responseURL",{get:e=>(0,o.Sd)(e.get())})}},6321:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s},enabled:function(){return a}});var n=r(8810);let o={},a=e=>(0,n.Sp)("sourcemaps",e.url);function s(e,t){Object.defineProperty(t,n.h3.config.globals.pushsourcemapfn,{value:(e,t)=>{let r=Uint8Array.from(e),n=new DataView(r.buffer),a=new TextDecoder("utf-8"),s=[],i=n.getUint32(0,!0),l=0;for(let e=0;evoid 0)}r.r(t),r.d(t,{default:function(){return n}})},2370:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return a},order:function(){return o},unproxy:function(){return s}});var n=r(6707);let o=3;function a(e,t){for(let r of[t])for(let t in r)try{"function"==typeof r[t]&&e.RawProxy(r,t,{apply(t){s(t,e)}})}catch{}if(n.iswindow){for(let r of[t.Node.prototype,t.MutationObserver.prototype,t.document,t.MouseEvent.prototype,t.Range.prototype])for(let t in r)try{"function"==typeof r[t]&&e.RawProxy(r,t,{apply(t){s(t,e)}})}catch{}e.Proxy("IntersectionObserver",{construct(e){e.args[1]&&e.args[1].root&&(e.args[1].root=t.document)}}),e.Proxy("Object.defineProperty",{apply(t){s(t,e)}}),e.Proxy("Object.getOwnPropertyDescriptor",{apply(t){let r=t.call();r&&(r.get&&e.RawProxy(r,"get",{apply(t){s(t,e)}}),r.set&&e.RawProxy(r,"set",{apply(t){s(t,e)}}),t.return(r))}})}}function s(e,t){let r=t.global;for(let n in e.this===t.globalProxy&&(e.this=r),e.this===t.documentProxy&&(e.this=r.document),e.args)e.args[n]===t.documentProxy&&(e.args[n]=r.document),e.args[n]===t.globalProxy&&(e.args[n]=r)}},8475:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("Worker",{construct({args:t,call:r}){t[0]=(0,n.dm)(t[0],e.meta)+"?dest=worker",t[1]&&"module"===t[1].type&&(t[0]+="&type=module");let o=r(),a=new n.ut;(async()=>{let t=await a.getInnerPort();e.natives.call("Worker.prototype.postMessage",o,{$scramjet$type:"baremuxinit",port:t},[t])})()}}),e.Proxy("SharedWorker",{construct({args:t,call:r}){t[0]=(0,n.dm)(t[0],e.meta)+"?dest=worker",t[1]&&"string"==typeof t[1]&&(t[1]=`${e.url.origin}@${t[1]}`),t[1]&&"object"==typeof t[1]&&("module"===t[1].type&&(t[0]+="&type=module"),t[1].name&&(t[1].name=`${e.url.origin}@${t[1].name}`));let o=r(),a=new n.ut;(async()=>{let t=await a.getInnerPort();e.natives.call("MessagePort.prototype.postMessage",o.port,{$scramjet$type:"baremuxinit",port:t},[t])})()}}),e.Proxy("Worklet.prototype.addModule",{apply(t){t.args[0]&&(t.args[0]=(0,n.dm)(t.args[0],e.meta))}})}},7706:function(e,t,r){"use strict";r.r(t),r.d(t,{createWrapFn:function(){return i},default:function(){return c},order:function(){return l}});var n=r(6707),o=r(9777),a=r(4471),s=r(4423);function i(e,t){return function(r){if(r===t)return e.globalProxy;if(r===t.location)return e.locationProxy;if(r===eval)return s.indirectEval.bind(e);if(n.iswindow){if(r===t.parent)return o.a in t.parent?t.parent[o.a].globalProxy:e.globalProxy;if(r===t.document)return e.documentProxy;else if(r===t.top){let e=t;for(;;){let t=e.parent.self;if(t===e||!(o.a in t))break;e=t}return e[o.a].globalProxy}}return r}}let l=4;function c(e,t){Object.defineProperty(t,a.vc.globals.wrapfn,{value:e.wrapfn,writable:!1,configurable:!1}),Object.defineProperty(t,a.vc.globals.wrapthisfn,{value:function(r){return r===t?e.globalProxy:r},writable:!1,configurable:!1}),t.$scramitize=function(e){return"string"==typeof e&&e.includes("scramjet"),"string"==typeof e&&e.includes(location.origin),e===t&&e?.$scramjet,n.iswindow&&e instanceof Document&&e.defaultView?.$scramjet,e},Object.defineProperty(t,a.vc.globals.trysetfn,{value:function(e,t,r){if(e instanceof Location)return locationProxy.href=r,!0},writable:!1,configurable:!1})}},633:function(e,t,r){"use strict";r.r(t),r.d(t,{ScramjetServiceWorkerRuntime:function(){return a}});var n=r(4471),o=r(1762).Z;class a{client;recvport;constructor(e){this.client=e,self.onconnect=t=>{let r=t.ports[0];o.log("sw","connected"),r.addEventListener("message",t=>{console.log("sw",t.data),"scramjet$type"in t.data&&("init"===t.data.scramjet$type?(this.recvport=t.data.scramjet$port,this.recvport.postMessage({scramjet$type:"init"})):s.call(this,e,t.data))}),r.start()}}hook(){this.client.global.registration={scope:this.client.url.href,active:{scriptURL:this.client.url.href,state:"activated",onstatechange:null,onerror:null,postMessage:()=>{},addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:e=>{}},showNotification:async()=>{},unregister:async()=>!0,update:async()=>{},installing:null,waiting:null},this.client.global.ServiceWorkerGlobalScope=this.client.global}}function s(e,t){let r=this.recvport,a=t.scramjet$type,s=t.scramjet$token,i=e.eventcallbacks.get(self);if("fetch"===a){o.log("ee",t);let a=i.filter(e=>"fetch"===e.event);if(!a)return;for(let i of a){let a=t.scramjet$request,l=new e.natives.Request((0,n.Sd)(a.url),{body:a.body,headers:new Headers(a.headers),method:a.method,mode:"same-origin"});Object.defineProperty(l,"destination",{value:a.destinitation});let c=new Event("fetch");c.request=l;let u=!1;c.respondWith=e=>{u=!0,(async()=>{let t={scramjet$type:"fetch",scramjet$token:s,scramjet$response:{body:(e=await e).body,headers:Array.from(e.headers.entries()),status:e.status,statusText:e.statusText}};o.log("sw","responding",t),r.postMessage(t,[e.body])})()},o.log("to fn",c),i.proxiedCallback(function(e){return new Proxy(e,{get:(e,t,r)=>"isTrusted"===t||Reflect.get(e,t)})}(c)),!u&&(console.log("sw","no response"),r.postMessage({scramjet$type:"fetch",scramjet$token:s,scramjet$response:!1}))}}}},5425:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return o}});var n=r(4471);function o(e,t){e.Proxy("importScripts",{apply(t){for(let r in t.args)t.args[r]=(0,n.dm)(t.args[r],e.meta)}})}},1762:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n={fmt:function(e,t,...r){let n=Error.prepareStackTrace;Error.prepareStackTrace=(e,t)=>{t.shift(),t.shift(),t.shift();let r="";for(let e=1;e `+r);return r+=t[0].getFunctionName()||"Anonymous"};let o=function(){try{throw Error()}catch(e){return e.stack}}();Error.prepareStackTrace=n;let a=console[e]||console.log;a(`%c${o}%c ${t}`,` + background-color: ${{log:"#000",warn:"#f80",error:"#f00",debug:"transparent"}[e]}; + color: ${{log:"#fff",warn:"#fff",error:"#fff",debug:"gray"}[e]}; + padding: ${{log:2,warn:4,error:4,debug:0}[e]}px; + font-weight: bold; + font-family: monospace; + font-size: 0.9em; + `,`${"debug"===e?"color: gray":""}`,...r)},log:function(e,...t){this.fmt("log",e,...t)},warn:function(e,...t){this.fmt("warn",e,...t)},error:function(e,...t){this.fmt("error",e,...t)},debug:function(e,...t){this.fmt("debug",e,...t)}}},8810:function(e,t,r){"use strict";r.d(t,{Sp:function(){return s},h3:function(){return n},t8:function(){return a}}),!("$scramjet"in self)&&(self.$scramjet={version:{build:"1efcf85",version:"1.0.2-dev"},codec:{},flagEnabled:s});let n=self.$scramjet,o=Function;function a(){n.codec.encode=o("url",n.config.codec.encode),n.codec.decode=o("url",n.config.codec.decode)}function s(e,t){let r=n.config.flags[e];for(let r in n.config.siteFlags){let o=n.config.siteFlags[r];if(new RegExp(r).test(t.href)&&e in o)return o[e]}return r}},4471:function(e,t,r){"use strict";r.d(t,{Ag:function(){return u},Gq:function(){return w},Od:function(){return f},Sd:function(){return l},U5:function(){return p},WT:function(){return d},Zs:function(){return m},dg:function(){return o},dm:function(){return i},hc:function(){return v},ls:function(){return c},r4:function(){return g},ut:function(){return s},vc:function(){return x}});var n=r(8810);let{util:{BareClient:o,ScramjetHeaders:a,BareMuxConnection:s},url:{rewriteUrl:i,unrewriteUrl:l,rewriteBlob:c,unrewriteBlob:u},rewrite:{rewriteCss:p,unrewriteCss:f,rewriteHtml:g,unrewriteHtml:d,rewriteSrcset:y,rewriteJs:m,rewriteHeaders:h,rewriteWorkers:b,htmlRules:w},CookieStore:v}=n.h3.shared,x=n.h3.config},9777:function(e,t,r){"use strict";r.d(t,{D:function(){return o},a:function(){return n}});let n=Symbol.for("scramjet client global"),o=Symbol.for("scramjet frame handle")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r("6707")})(); +//# sourceMappingURL=scramjet.client.js.map \ No newline at end of file diff --git a/views/scram/scramjet.client.js.map b/views/scram/scramjet.client.js.map new file mode 100644 index 00000000..c87df1ed --- /dev/null +++ b/views/scram/scramjet.client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scramjet.client.js","sources":["webpack://@mercuryworkshop/scramjet/./src/client/client.ts","webpack://@mercuryworkshop/scramjet/./src/client/document.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/attr.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/beacon.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/cookie.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/css.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/document.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/element.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/fontface.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/history.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/navigation.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/open.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/origin.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/performance.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/serviceworker.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/storage.ts","webpack://@mercuryworkshop/scramjet/./src/client/events.ts","webpack://@mercuryworkshop/scramjet/./src/client/global.ts","webpack://@mercuryworkshop/scramjet/./src/client/helpers.ts","webpack://@mercuryworkshop/scramjet/./src/client/index.ts","webpack://@mercuryworkshop/scramjet/./src/client/location.ts","webpack://@mercuryworkshop/scramjet/./src/client/natives.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/antiantidebugger.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/blob.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/caches.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/err.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/error.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/eval.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/event.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/function.ts","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/wasm.js","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/snippets/wasm-4b0f351a8e6eeb46/inline0.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/js.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/url.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/import.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/indexeddb.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/postmessage.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/realm.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/eventsource.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/fetch.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/websocket.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/xmlhttprequest.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/sourcemaps.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/trustedTypes.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/unproxy.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/worker.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/wrap.ts","webpack://@mercuryworkshop/scramjet/./src/client/swruntime.ts","webpack://@mercuryworkshop/scramjet/./src/client/worker/importScripts.ts","webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./src/shared.ts","webpack://@mercuryworkshop/scramjet/./src/symbols.ts"],"sourcesContent":["import { iswindow } from \".\";\nimport { ScramjetFrame } from \"../controller/frame\";\nimport { SCRAMJETCLIENT, SCRAMJETFRAME } from \"../symbols\";\nimport { createDocumentProxy } from \"./document\";\nimport { createGlobalProxy } from \"./global\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\nimport { createLocationProxy } from \"./location\";\nimport { nativeGetOwnPropertyDescriptor } from \"./natives\";\nimport {\n\tBareClient,\n\tCookieStore,\n\tconfig,\n\tunrewriteUrl,\n\trewriteUrl,\n} from \"../shared\";\nimport type { BareClient as BareClientType } from \"@mercuryworkshop/bare-mux\";\nimport { createWrapFn } from \"./shared/wrap\";\nimport { NavigateEvent } from \"./events\";\nimport type { URLMeta } from \"../shared/rewriters/url\";\n\ntype NativeStore = {\n\tstore: Record;\n\tcall: (target: string, that: any, ...args) => any;\n\tconstruct: (target: string, ...args) => any;\n};\ntype DescriptorStore = {\n\tstore: Record;\n\tget: (target: string, that: any) => any;\n\tset: (target: string, that: any, value: any) => void;\n};\n//eslint-disable-next-line\nexport type AnyFunction = Function;\n\nexport type ScramjetModule = {\n\tenabled: (client: ScramjetClient) => boolean | undefined;\n\tdisabled: (\n\t\tclient: ScramjetClient,\n\t\tself: typeof globalThis\n\t) => void | undefined;\n\torder: number | undefined;\n\tdefault: (client: ScramjetClient, self: typeof globalThis) => void;\n};\n\nexport type ProxyCtx = {\n\tfn: AnyFunction;\n\tthis: any;\n\targs: any[];\n\tnewTarget: AnyFunction;\n\treturn: (r: any) => void;\n\tcall: () => any;\n};\nexport type Proxy = {\n\tconstruct?(ctx: ProxyCtx): any;\n\tapply?(ctx: ProxyCtx): any;\n};\n\nexport type TrapCtx = {\n\tthis: any;\n\tget: () => T;\n\tset: (v: T) => void;\n};\nexport type Trap = {\n\twritable?: boolean;\n\tvalue?: any;\n\tenumerable?: boolean;\n\tconfigurable?: boolean;\n\tget?: (ctx: TrapCtx) => T;\n\tset?: (ctx: TrapCtx, v: T) => void;\n};\n\nexport class ScramjetClient {\n\tdocumentProxy: any;\n\tglobalProxy: any;\n\tlocationProxy: any;\n\tserviceWorker: ServiceWorkerContainer;\n\tbare: BareClientType;\n\n\tnatives: NativeStore;\n\tdescriptors: DescriptorStore;\n\twrapfn: (i: any, ...args: any) => any;\n\n\tcookieStore = new CookieStore();\n\n\teventcallbacks: Map<\n\t\tany,\n\t\t[\n\t\t\t{\n\t\t\t\tevent: string;\n\t\t\t\toriginalCallback: AnyFunction;\n\t\t\t\tproxiedCallback: AnyFunction;\n\t\t\t},\n\t\t]\n\t> = new Map();\n\n\tmeta: URLMeta;\n\n\tconstructor(public global: typeof globalThis) {\n\t\tif (SCRAMJETCLIENT in global) {\n\t\t\tconsole.error(\n\t\t\t\t\"attempted to initialize a scramjet cl ient, but one is already loaded - this is very bad\"\n\t\t\t);\n\t\t\tthrow new Error();\n\t\t}\n\n\t\tthis.serviceWorker = this.global.navigator.serviceWorker;\n\n\t\tif (iswindow) {\n\t\t\tthis.documentProxy = createDocumentProxy(this, global);\n\n\t\t\tglobal.document[SCRAMJETCLIENT] = this;\n\t\t}\n\n\t\tthis.locationProxy = createLocationProxy(this, global);\n\t\tthis.globalProxy = createGlobalProxy(this, global);\n\t\tthis.wrapfn = createWrapFn(this, global);\n\t\tif (iswindow) {\n\t\t\tthis.bare = new BareClient();\n\t\t} else {\n\t\t\tthis.bare = new BareClient(\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\taddEventListener(\"message\", ({ data }) => {\n\t\t\t\t\t\tif (typeof data !== \"object\") return;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\"$scramjet$type\" in data &&\n\t\t\t\t\t\t\tdata.$scramjet$type === \"baremuxinit\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresolve(data.port);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tthis.natives = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = Reflect.get(realTarget, realProp);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tconstruct(target: string, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn new original(...args);\n\t\t\t},\n\t\t\tcall(target: string, that: any, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.call(that, ...args);\n\t\t\t},\n\t\t};\n\t\tthis.descriptors = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = nativeGetOwnPropertyDescriptor(\n\t\t\t\t\t\t\trealTarget,\n\t\t\t\t\t\t\trealProp\n\t\t\t\t\t\t);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tget(target: string, that: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.get.call(that);\n\t\t\t},\n\t\t\tset(target: string, that: any, value: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\toriginal.set.call(that, value);\n\t\t\t},\n\t\t};\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst client = this;\n\t\tthis.meta = {\n\t\t\tget origin() {\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t\tget base() {\n\t\t\t\tif (iswindow) {\n\t\t\t\t\tconst base = client.natives.call(\n\t\t\t\t\t\t\"Document.prototype.querySelector\",\n\t\t\t\t\t\tclient.global.document,\n\t\t\t\t\t\t\"base\"\n\t\t\t\t\t);\n\t\t\t\t\tif (base) {\n\t\t\t\t\t\tlet url = base.getAttribute(\"href\");\n\t\t\t\t\t\tconst frag = url.indexOf(\"#\");\n\t\t\t\t\t\turl = url.substring(0, frag === -1 ? undefined : frag);\n\t\t\t\t\t\tif (!url) return client.url;\n\n\t\t\t\t\t\treturn new URL(url, client.url.origin);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t};\n\n\t\tglobal[SCRAMJETCLIENT] = this;\n\t}\n\n\tget frame(): ScramjetFrame | null {\n\t\tif (!iswindow) return null;\n\t\tconst frame = this.descriptors.get(\"window.frameElement\", this.global);\n\n\t\tif (!frame) return null; // we're top level\n\t\tconst sframe = frame[SCRAMJETFRAME];\n\n\t\tif (!sframe) {\n\t\t\t// we're in a subframe, recurse upward until we find one\n\t\t\tlet currentwin = this.global.window;\n\t\t\twhile (currentwin.parent != currentwin) {\n\t\t\t\tif (!currentwin.frameElement) return null; // ??\n\t\t\t\tif (currentwin.frameElement && currentwin.frameElement[SCRAMJETFRAME]) {\n\t\t\t\t\treturn currentwin.frameElement[SCRAMJETFRAME];\n\t\t\t\t}\n\t\t\t\tcurrentwin = currentwin.parent.window;\n\t\t\t}\n\t\t}\n\n\t\treturn sframe;\n\t}\n\n\tloadcookies(cookiestr: string) {\n\t\tthis.cookieStore.load(cookiestr);\n\t}\n\n\thook() {\n\t\t// @ts-ignore\n\t\tconst context = import.meta.webpackContext(\".\", {\n\t\t\trecursive: true,\n\t\t});\n\n\t\tconst modules: ScramjetModule[] = [];\n\n\t\tfor (const key of context.keys()) {\n\t\t\tconst module: ScramjetModule = context(key);\n\t\t\tif (!key.endsWith(\".ts\")) continue;\n\t\t\tif (\n\t\t\t\t(key.startsWith(\"./dom/\") && \"window\" in this.global) ||\n\t\t\t\t(key.startsWith(\"./worker/\") && \"WorkerGlobalScope\" in this.global) ||\n\t\t\t\tkey.startsWith(\"./shared/\")\n\t\t\t) {\n\t\t\t\tmodules.push(module);\n\t\t\t}\n\t\t}\n\n\t\tmodules.sort((a, b) => {\n\t\t\tconst aorder = a.order || 0;\n\t\t\tconst border = b.order || 0;\n\n\t\t\treturn aorder - border;\n\t\t});\n\n\t\tfor (const module of modules) {\n\t\t\tif (!module.enabled || module.enabled(this))\n\t\t\t\tmodule.default(this, this.global);\n\t\t\telse if (module.disabled) module.disabled(this, this.global);\n\t\t}\n\t}\n\n\tget url(): URL {\n\t\treturn new URL(unrewriteUrl(this.global.location.href));\n\t}\n\n\tset url(url: URL | string) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\tconst ev = new NavigateEvent(url);\n\t\tif (this.frame) {\n\t\t\tthis.frame.dispatchEvent(ev);\n\t\t}\n\t\tif (ev.defaultPrevented) return;\n\n\t\tthis.global.location.href = rewriteUrl(ev.url, this.meta);\n\t}\n\n\t// below are the utilities for proxying and trapping dom APIs\n\t// you don't have to understand this it just makes the rest easier\n\t// i'll document it eventually\n\n\tProxy(name: string | string[], handler: Proxy) {\n\t\tif (Array.isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Proxy(n, handler);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\n\t\tconst original = Reflect.get(target, prop);\n\t\tthis.natives.store[name] = original;\n\n\t\tthis.RawProxy(target, prop, handler);\n\t}\n\tRawProxy(target: any, prop: string, handler: Proxy) {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect.has(target, prop)) return;\n\n\t\tconst value = Reflect.get(target, prop);\n\t\tdelete target[prop];\n\n\t\tconst h: ProxyHandler = {};\n\n\t\tif (handler.construct) {\n\t\t\th.construct = function (\n\t\t\t\tconstructor: any,\n\t\t\t\targArray: any[],\n\t\t\t\tnewTarget: AnyFunction\n\t\t\t) {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx = {\n\t\t\t\t\tfn: constructor,\n\t\t\t\t\tthis: null,\n\t\t\t\t\targs: argArray,\n\t\t\t\t\tnewTarget: newTarget,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = Reflect.construct(ctx.fn, ctx.args, ctx.newTarget);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thandler.construct(ctx);\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn Reflect.construct(ctx.fn, ctx.args, ctx.newTarget);\n\t\t\t};\n\t\t}\n\n\t\tif (handler.apply) {\n\t\t\th.apply = function (fn: any, thisArg: any, argArray: any[]) {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx = {\n\t\t\t\t\tfn,\n\t\t\t\t\tthis: thisArg,\n\t\t\t\t\targs: argArray,\n\t\t\t\t\tnewTarget: null,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = Reflect.apply(ctx.fn, ctx.this, ctx.args);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tconst pst = Error.prepareStackTrace;\n\n\t\t\t\tError.prepareStackTrace = function (err, s) {\n\t\t\t\t\tif (\n\t\t\t\t\t\ts[0].getFileName() &&\n\t\t\t\t\t\t!s[0].getFileName().startsWith(location.origin + config.prefix)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn { stack: err.stack };\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\thandler.apply(ctx);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (err instanceof Error) {\n\t\t\t\t\t\tif ((err.stack as any) instanceof Object) {\n\t\t\t\t\t\t\t//@ts-expect-error i'm not going to explain this\n\t\t\t\t\t\t\terr.stack = err.stack.stack;\n\t\t\t\t\t\t\tconsole.error(\"ERROR FROM SCRAMJET INTERNALS\", err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tError.prepareStackTrace = pst;\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn Reflect.apply(ctx.fn, ctx.this, ctx.args);\n\t\t\t};\n\t\t}\n\n\t\th.getOwnPropertyDescriptor = getOwnPropertyDescriptorHandler;\n\t\ttarget[prop] = new Proxy(value, h);\n\t}\n\tTrap(name: string | string[], descriptor: Trap): PropertyDescriptor {\n\t\tif (Array.isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Trap(n, descriptor);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\n\t\tconst original = nativeGetOwnPropertyDescriptor(target, prop);\n\t\tthis.descriptors.store[name] = original;\n\n\t\treturn this.RawTrap(target, prop, descriptor);\n\t}\n\tRawTrap(\n\t\ttarget: any,\n\t\tprop: string,\n\t\tdescriptor: Trap\n\t): PropertyDescriptor {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect.has(target, prop)) return;\n\n\t\tconst oldDescriptor = nativeGetOwnPropertyDescriptor(target, prop);\n\n\t\tconst ctx: TrapCtx = {\n\t\t\tthis: null,\n\t\t\tget: function () {\n\t\t\t\treturn oldDescriptor && oldDescriptor.get.call(this.this);\n\t\t\t},\n\t\t\tset: function (v: T) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\t\toldDescriptor && oldDescriptor.set.call(this.this, v);\n\t\t\t},\n\t\t};\n\n\t\tdelete target[prop];\n\n\t\tconst desc: PropertyDescriptor = {};\n\n\t\tif (descriptor.get) {\n\t\t\tdesc.get = function () {\n\t\t\t\tctx.this = this;\n\n\t\t\t\treturn descriptor.get(ctx);\n\t\t\t};\n\t\t} else if (oldDescriptor?.get) {\n\t\t\tdesc.get = oldDescriptor.get;\n\t\t}\n\n\t\tif (descriptor.set) {\n\t\t\tdesc.set = function (v: T) {\n\t\t\t\tctx.this = this;\n\n\t\t\t\tdescriptor.set(ctx, v);\n\t\t\t};\n\t\t} else if (oldDescriptor?.set) {\n\t\t\tdesc.set = oldDescriptor.set;\n\t\t}\n\n\t\tif (descriptor.enumerable) desc.enumerable = descriptor.enumerable;\n\t\telse if (oldDescriptor?.enumerable)\n\t\t\tdesc.enumerable = oldDescriptor.enumerable;\n\t\tif (descriptor.configurable) desc.configurable = descriptor.configurable;\n\t\telse if (oldDescriptor?.configurable)\n\t\t\tdesc.configurable = oldDescriptor.configurable;\n\n\t\tObject.defineProperty(target, prop, desc);\n\n\t\treturn oldDescriptor;\n\t}\n}\n","import { rewriteUrl } from \"../shared\";\nimport { ScramjetClient } from \"./client\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\n\nexport function createDocumentProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n) {\n\treturn new Proxy(self.document, {\n\t\tget(target, prop) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\treturn client.locationProxy;\n\t\t\t}\n\n\t\t\tif (prop === \"defaultView\") {\n\t\t\t\treturn client.globalProxy;\n\t\t\t}\n\n\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\treturn value;\n\t\t},\n\t\tset(target, prop, newValue) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\tlocation.href = rewriteUrl(newValue, client.meta);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn Reflect.set(target, prop, newValue);\n\t\t},\n\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: typeof window) {\n\tclient.Trap(\"Element.prototype.attributes\", {\n\t\tget(ctx) {\n\t\t\tconst map = ctx.get() as NamedNodeMap;\n\t\t\tconst proxy = new Proxy(map, {\n\t\t\t\tget(target, prop, _receiver) {\n\t\t\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\t\t\tif (prop === \"length\") {\n\t\t\t\t\t\treturn Object.keys(proxy).length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop === \"getNamedItem\") {\n\t\t\t\t\t\treturn (name: string) => proxy[name];\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"getNamedItemNS\") {\n\t\t\t\t\t\treturn (namespace: string, name: string) =>\n\t\t\t\t\t\t\tproxy[`${namespace}:${name}`];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop in NamedNodeMap.prototype && typeof value === \"function\") {\n\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\t\t\t\t\tif (thisArg === proxy) {\n\t\t\t\t\t\t\t\t\treturn Reflect.apply(target, map, argArray);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, thisArg, argArray);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(typeof prop === \"string\" || typeof prop === \"number\") &&\n\t\t\t\t\t\t!isNaN(Number(prop))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst position = Object.keys(proxy)[prop];\n\n\t\t\t\t\t\treturn map[position];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.has(target, prop)) return undefined;\n\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\townKeys(target) {\n\t\t\t\t\tconst keys = Reflect.ownKeys(target);\n\n\t\t\t\t\treturn keys.filter((key) => this.has(target, key));\n\t\t\t\t},\n\t\t\t\thas(target, prop) {\n\t\t\t\t\tif (typeof prop === \"symbol\") return Reflect.has(target, prop);\n\t\t\t\t\tif (prop.startsWith(\"scramjet-attr-\")) return false;\n\t\t\t\t\tif (map[prop]?.name?.startsWith(\"scramjet-attr-\")) return false;\n\n\t\t\t\t\treturn Reflect.has(target, prop);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn proxy;\n\t\t},\n\t});\n\n\tclient.Trap(\"Attr.prototype.value\", {\n\t\tget(ctx) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.getAttribute(ctx.this.name);\n\t\t\t}\n\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, value) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.setAttribute(ctx.this.name, value);\n\t\t\t}\n\n\t\t\treturn ctx.set(value);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Navigator.prototype.sendBeacon\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tclient.serviceWorker.addEventListener(\"message\", ({ data }) => {\n\t\tif (!(\"scramjet$type\" in data)) return;\n\n\t\tif (data.scramjet$type === \"cookie\") {\n\t\t\tclient.cookieStore.setCookies([data.cookie], new URL(data.url));\n\t\t}\n\t});\n\n\tclient.Trap(\"Document.prototype.cookie\", {\n\t\tget() {\n\t\t\treturn client.cookieStore.getCookies(client.url, true);\n\t\t},\n\t\tset(ctx, value: string) {\n\t\t\tclient.cookieStore.setCookies([value], client.url);\n\t\t\tconst controller = client.descriptors.get(\n\t\t\t\t\"ServiceWorkerContainer.prototype.controller\",\n\t\t\t\tclient.serviceWorker\n\t\t\t);\n\t\t\tif (controller) {\n\t\t\t\tclient.natives.call(\"ServiceWorker.prototype.postMessage\", controller, {\n\t\t\t\t\tscramjet$type: \"cookie\",\n\t\t\t\t\tcookie: value,\n\t\t\t\t\turl: client.url.href,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n\n\t// @ts-ignore\n\tdelete self.cookieStore;\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteCss, unrewriteCss } from \"../../shared\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.setProperty\", {\n\t\tapply(ctx) {\n\t\t\tif (!ctx.args[1]) return;\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.getPropertyValue\", {\n\t\tapply(ctx) {\n\t\t\tconst v = ctx.call();\n\t\t\tif (!v) return v;\n\t\t\tctx.return(unrewriteCss(v));\n\t\t},\n\t});\n\n\tclient.Trap(\"CSSStyleDeclaration.prototype.cssText\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteCss(value, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteCss(ctx.get());\n\t\t},\n\t});\n\n\tclient.Trap(\"HTMLElement.prototype.style\", {\n\t\tget(ctx) {\n\t\t\t// unfortunate and dumb hack. we have to trap every property of this\n\t\t\t// since the prototype chain is fucked\n\n\t\t\tconst style = ctx.get() as CSSStyleDeclaration;\n\n\t\t\treturn new Proxy(style, {\n\t\t\t\tget(t, p) {\n\t\t\t\t\tconst v = Reflect.get(t, p);\n\n\t\t\t\t\tif (typeof v === \"function\") {\n\t\t\t\t\t\treturn new Proxy(v, {\n\t\t\t\t\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, style, argArray);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (p in CSSStyleDeclaration.prototype) return v;\n\t\t\t\t\tif (!v) return v;\n\n\t\t\t\t\treturn unrewriteCss(v);\n\t\t\t\t},\n\t\t\t\tset(t, p, v) {\n\t\t\t\t\tif (p == \"cssText\" || v == \"\" || typeof v !== \"string\") {\n\t\t\t\t\t\treturn Reflect.set(t, p, v);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.set(t, p, rewriteCss(v, client.meta));\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tset(ctx, v: string) {\n\t\t\t// this will actually run the trap for cssText. don't rewrite it here\n\t\t\tctx.set(v);\n\t\t},\n\t});\n}\n","import { rewriteHtml } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Document.prototype.write\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.writeln\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n}\n","import { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { nativeGetOwnPropertyDescriptor } from \"../natives\";\nimport { unrewriteUrl, htmlRules, unrewriteHtml } from \"../../shared\";\nimport { rewriteCss, rewriteHtml, rewriteJs } from \"../../shared\";\n\nconst encoder = new TextEncoder();\nfunction bytesToBase64(bytes: Uint8Array) {\n\tconst binString = Array.from(bytes, (byte) =>\n\t\tString.fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst attrObject = {\n\t\tnonce: [self.HTMLElement],\n\t\tintegrity: [self.HTMLScriptElement, self.HTMLLinkElement],\n\t\tcsp: [self.HTMLIFrameElement],\n\t\tcredentialless: [self.HTMLIFrameElement],\n\t\tsrc: [\n\t\t\tself.HTMLImageElement,\n\t\t\tself.HTMLMediaElement,\n\t\t\tself.HTMLIFrameElement,\n\t\t\tself.HTMLFrameElement,\n\t\t\tself.HTMLEmbedElement,\n\t\t\tself.HTMLScriptElement,\n\t\t\tself.HTMLSourceElement,\n\t\t],\n\t\thref: [\n\t\t\tself.HTMLAnchorElement,\n\t\t\tself.HTMLLinkElement,\n\t\t\tself.SVGUseElement,\n\t\t\tself.SVGImageElement,\n\t\t],\n\t\tdata: [self.HTMLObjectElement],\n\t\taction: [self.HTMLFormElement],\n\t\tformaction: [self.HTMLButtonElement, self.HTMLInputElement],\n\t\tsrcdoc: [self.HTMLIFrameElement],\n\t\tsrcset: [self.HTMLImageElement, self.HTMLSourceElement],\n\t\tposter: [self.HTMLVideoElement],\n\t\timagesrcset: [self.HTMLLinkElement],\n\t};\n\n\tconst urlinterfaces = [\n\t\tself.HTMLAnchorElement.prototype,\n\t\tself.HTMLAreaElement.prototype,\n\t];\n\tconst originalhrefs = [\n\t\tnativeGetOwnPropertyDescriptor(self.HTMLAnchorElement.prototype, \"href\"),\n\t\tnativeGetOwnPropertyDescriptor(self.HTMLAreaElement.prototype, \"href\"),\n\t];\n\n\tconst attrs = Object.keys(attrObject);\n\n\tfor (const attr of attrs) {\n\t\tfor (const element of attrObject[attr]) {\n\t\t\tconst descriptor = nativeGetOwnPropertyDescriptor(\n\t\t\t\telement.prototype,\n\t\t\t\tattr\n\t\t\t);\n\t\t\tObject.defineProperty(element.prototype, attr, {\n\t\t\t\tget() {\n\t\t\t\t\tif ([\"src\", \"data\", \"href\", \"action\", \"formaction\"].includes(attr)) {\n\t\t\t\t\t\treturn unrewriteUrl(descriptor.get.call(this));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn descriptor.get.call(this);\n\t\t\t\t},\n\n\t\t\t\tset(value) {\n\t\t\t\t\treturn this.setAttribute(attr, value);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\t// note that href is not here\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tfor (const i in urlinterfaces) {\n\t\t\tconst target = urlinterfaces[i];\n\t\t\tconst desc = originalhrefs[i];\n\t\t\tclient.RawTrap(target, prop, {\n\t\t\t\tget(ctx) {\n\t\t\t\t\tconst href = desc.get.call(ctx.this);\n\t\t\t\t\tif (!href) return href;\n\n\t\t\t\t\tconst url = new URL(unrewriteUrl(href));\n\n\t\t\t\t\treturn url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tclient.Trap(\"Node.prototype.baseURI\", {\n\t\tget() {\n\t\t\t// TODO this should be using ownerdocument but who gaf\n\t\t\tconst base = self.document.querySelector(\"base\");\n\t\t\tif (base) {\n\t\t\t\treturn new URL(base.href, client.url.origin).href;\n\t\t\t}\n\n\t\t\treturn client.url.origin;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name] = ctx.args;\n\n\t\t\tif (name.startsWith(\"scramjet-attr\")) {\n\t\t\t\treturn ctx.return(null);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${name}`\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst attrib = ctx.fn.call(ctx.this, `scramjet-attr-${name}`);\n\t\t\t\tif (attrib === null) return ctx.return(\"\");\n\n\t\t\t\treturn ctx.return(attrib);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNames\", {\n\t\tapply(ctx) {\n\t\t\tconst attrNames = ctx.call() as string[];\n\t\t\tconst cleaned = attrNames.filter(\n\t\t\t\t(attr) => !attr.startsWith(\"scramjet-attr\")\n\t\t\t);\n\n\t\t\tctx.return(cleaned);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNode\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(null);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.hasAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(false);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name, value] = ctx.args;\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(ctx.this.tagName.toLowerCase());\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tctx.args[1] = ruleList.fn(value, client.meta, client.cookieStore);\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`, value);\n\t\t\t}\n\t\t},\n\t});\n\n\t// i actually need to do something with this\n\tclient.Proxy(\"Element.prototype.setAttributeNode\", {\n\t\tapply(_ctx) {},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttributeNS\", {\n\t\tapply(ctx) {\n\t\t\tconst [_namespace, name, value] = ctx.args;\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(ctx.this.tagName.toLowerCase());\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tctx.args[2] = ruleList.fn(value, client.meta, client.cookieStore);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${ctx.args[1]}`,\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.removeAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(undefined);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.toggleAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(false);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.innerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tlet newval;\n\t\t\tif (ctx.this instanceof self.HTMLScriptElement) {\n\t\t\t\tnewval = rewriteJs(value, \"(anonymous script element)\", client.meta);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\",\n\t\t\t\t\tbytesToBase64(encoder.encode(newval))\n\t\t\t\t);\n\t\t\t} else if (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\tnewval = rewriteCss(value, client.meta);\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tnewval = rewriteHtml(value, client.cookieStore, client.meta);\n\t\t\t\t} catch {\n\t\t\t\t\tnewval = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.set(newval);\n\t\t},\n\t\tget(ctx) {\n\t\t\tif (ctx.this instanceof self.HTMLScriptElement) {\n\t\t\t\tconst scriptSource = client.natives.call(\n\t\t\t\t\t\"Element.prototype.getAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\"\n\t\t\t\t);\n\n\t\t\t\tif (scriptSource) {\n\t\t\t\t\treturn atob(scriptSource);\n\t\t\t\t}\n\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\t\t\tif (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\n\t\t\treturn unrewriteHtml(ctx.get());\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.outerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteHtml(value, client.cookieStore, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteHtml(ctx.get());\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setHTMLUnsafe\", {\n\t\tapply(ctx) {\n\t\t\ttry {\n\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\tctx.args[0],\n\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\tclient.meta,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getHTML\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(unrewriteHtml(ctx.call()));\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.insertAdjacentHTML\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[1] = rewriteHtml(\n\t\t\t\t\t\tctx.args[1],\n\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLObjectElement.prototype.contentWindow\",\n\t\t\t\"HTMLEmbedElement.prototype.contentWindow\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst realwin = ctx.get() as Window;\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\tif (SCRAMJETCLIENT in realwin) {\n\t\t\t\t\treturn realwin[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t} else {\n\t\t\t\t\t// hook the iframe\n\t\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\treturn newclient.globalProxy;\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLObjectElement.prototype.contentDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.contentDocument\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst realwin = client.descriptors.get(\n\t\t\t\t\t`${ctx.this.constructor.name}.prototype.contentWindow`,\n\t\t\t\t\tctx.this\n\t\t\t\t);\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\tif (SCRAMJETCLIENT in realwin) {\n\t\t\t\t\treturn realwin[SCRAMJETCLIENT].documentProxy;\n\t\t\t\t} else {\n\t\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\treturn newclient.documentProxy;\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLObjectElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.getSVGDocument\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tconst doc = ctx.call();\n\t\t\t\tif (doc) {\n\t\t\t\t\treturn ctx.return(ctx.this.contentDocument);\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Trap(\"TreeWalker.prototype.currentNode\", {\n\t\tget(ctx) {\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, value) {\n\t\t\tif (value === client.documentProxy) {\n\t\t\t\treturn ctx.set(self.document);\n\t\t\t}\n\n\t\t\treturn ctx.set(value);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tconst doc = ctx.call() as Document;\n\n\t\t\tconst scram: ScramjetClient = doc[SCRAMJETCLIENT];\n\t\t\tif (!scram) return ctx.return(doc); // ??\n\n\t\t\treturn ctx.return(scram.documentProxy);\n\t\t},\n\t});\n\n\tclient.Trap(\"Node.prototype.ownerDocument\", {\n\t\tget(ctx) {\n\t\t\tconst doc = ctx.get() as Document | null;\n\t\t\tif (!doc) return null;\n\n\t\t\tconst scram: ScramjetClient = doc[SCRAMJETCLIENT];\n\t\t\tif (!scram) return doc; // ??\n\n\t\t\treturn scram.documentProxy;\n\t\t},\n\t});\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"Node.prototype.parentNode\",\n\t\t\t\"Node.prototype.parentElement\",\n\t\t\t\"Node.prototype.previousSibling\",\n\t\t\t\"Node.prototype.nextSibling\",\n\t\t\t\"Range.prototype.commonAncestorContainer\",\n\t\t\t\"AbstractRange.prototype.endContainer\",\n\t\t\t\"AbstractRange.prototype.startContainer\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst n = ctx.get() as Node;\n\t\t\t\tif (!(n instanceof Document)) return n;\n\n\t\t\t\tconst scram: ScramjetClient = n[SCRAMJETCLIENT];\n\t\t\t\tif (!scram) return n; // ??\n\n\t\t\t\treturn scram.documentProxy;\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\"Node.prototype.getRootNode\", {\n\t\tapply(ctx) {\n\t\t\tconst n = ctx.call() as Node;\n\t\t\tif (!(n instanceof Document)) return ctx.return(n);\n\n\t\t\tconst scram: ScramjetClient = n[SCRAMJETCLIENT];\n\t\t\tif (!scram) return ctx.return(n); // ??\n\n\t\t\treturn ctx.return(scram.documentProxy);\n\t\t},\n\t});\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"DOMParser.prototype.parseFromString\",\n\t\t\t\"Document.prototype.parseHTMLUnsafe\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tif (ctx.args[1] === \"text/html\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteCss } from \"../../shared\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"FontFace\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.meta);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteUrl } from \"../../shared\";\nimport { UrlChangeEvent } from \"../events\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"History.prototype.pushState\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\tctx.args[2] = rewriteUrl(ctx.args[2], client.meta);\n\t\t\tctx.call();\n\n\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\t\t},\n\t});\n\n\tclient.Proxy(\"History.prototype.replaceState\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\tctx.args[2] = rewriteUrl(ctx.args[2], client.meta);\n\t\t\tctx.call();\n\n\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\t\t},\n\t});\n}\n","export default function (client, self: Self) {\n\t// @ts-ignore\n\tdelete self.navigation;\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"window.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\tif ([\"_parent\", \"_top\", \"_unfencedTop\"].includes(ctx.args[1]))\n\t\t\t\tctx.args[1] = \"_self\";\n\n\t\t\tconst realwin = ctx.call();\n\n\t\t\tif (!realwin) return ctx.return(realwin);\n\n\t\t\tif (SCRAMJETCLIENT in realwin) {\n\t\t\t\treturn ctx.return(realwin[SCRAMJETCLIENT].globalProxy);\n\t\t\t} else {\n\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t// hook the opened window\n\t\t\t\tnewclient.hook();\n\n\t\t\t\treturn ctx.return(newclient.globalProxy);\n\t\t\t}\n\t\t},\n\t});\n\n\t// opener will refer to the real window if it was opened by window.open\n\tclient.Trap(\"opener\", {\n\t\tget(ctx) {\n\t\t\tconst realwin = ctx.get() as Window;\n\n\t\t\tif (realwin && SCRAMJETCLIENT in realwin) {\n\t\t\t\treturn realwin[SCRAMJETCLIENT].globalProxy;\n\t\t\t} else {\n\t\t\t\t// the opener has to have been already hooked, so if we reach here then it's a real window\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"window.frameElement\", {\n\t\tget(ctx) {\n\t\t\tconst f = ctx.get() as HTMLIFrameElement | null;\n\t\t\tif (!f) return f;\n\n\t\t\tconst win = f.ownerDocument.defaultView;\n\t\t\tif (win[SCRAMJETCLIENT]) {\n\t\t\t\t// then this is a subframe in a scramjet context, and it's safe to pass back the real iframe\n\t\t\t\treturn f;\n\t\t\t} else {\n\t\t\t\t// no, the top frame is outside the sandbox\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"origin\", {\n\t\tget() {\n\t\t\t// this isn't right!!\n\t\t\treturn client.url.origin;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.URL\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.documentURI\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.domain\", {\n\t\tget() {\n\t\t\treturn client.url.hostname;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n}\n","import { unrewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"PerformanceEntry.prototype.name\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nimport { type MessageC2W } from \"../../worker\";\nimport { flagEnabled } from \"../../scramjet\";\n\n// we need a late order because we're mangling with addEventListener at a higher level\nexport const order = 2;\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"serviceworkers\", client.url);\n\nexport function disabled(_client: ScramjetClient, _self: Self) {\n\tReflect.deleteProperty(Navigator.prototype, \"serviceWorker\");\n}\n\ntype FakeRegistrationState = {\n\tscope: string;\n\tactive: ServiceWorker;\n};\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst registrationmap: WeakMap<\n\t\tServiceWorkerRegistration,\n\t\tFakeRegistrationState\n\t> = new WeakMap();\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (registrationmap.get(ctx.this)) {\n\t\t\t\t// do nothing\n\t\t\t\tctx.return(undefined);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (registrationmap.get(ctx.this)) {\n\t\t\t\t// do nothing\n\t\t\t\tctx.return(undefined);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.getRegistration\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve(registration)));\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.getRegistrations\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve([registration])));\n\t\t},\n\t});\n\n\tclient.Trap(\"ServiceWorkerContainer.prototype.ready\", {\n\t\tget(_ctx) {\n\t\t\treturn new Promise((resolve) => resolve(registration));\n\t\t},\n\t});\n\n\tclient.Trap(\"ServiceWorkerContainer.prototype.controller\", {\n\t\tget(ctx) {\n\t\t\treturn registration?.active;\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.register\", {\n\t\tapply(ctx) {\n\t\t\tconst fakeRegistration = new EventTarget() as ServiceWorkerRegistration;\n\t\t\tObject.setPrototypeOf(\n\t\t\t\tfakeRegistration,\n\t\t\t\tself.ServiceWorkerRegistration.prototype\n\t\t\t);\n\t\t\tfakeRegistration.constructor = ctx.fn;\n\t\t\tlet url = rewriteUrl(ctx.args[0], client.meta) + \"?dest=serviceworker\";\n\t\t\tif (ctx.args[1] && ctx.args[1].type === \"module\") {\n\t\t\t\turl += \"&type=module\";\n\t\t\t}\n\n\t\t\tconst worker = client.natives.construct(\"SharedWorker\", url);\n\t\t\tconst handle = worker.port;\n\t\t\tconst state: FakeRegistrationState = {\n\t\t\t\tscope: ctx.args[0],\n\t\t\t\tactive: handle as ServiceWorker,\n\t\t\t};\n\t\t\tconst controller = client.descriptors.get(\n\t\t\t\t\"ServiceWorkerContainer.prototype.controller\",\n\t\t\t\tclient.serviceWorker\n\t\t\t);\n\n\t\t\tclient.natives.call(\n\t\t\t\t\"ServiceWorker.prototype.postMessage\",\n\t\t\t\tcontroller,\n\t\t\t\t{\n\t\t\t\t\tscramjet$type: \"registerServiceWorker\",\n\t\t\t\t\tport: handle,\n\t\t\t\t\torigin: client.url.origin,\n\t\t\t\t} as MessageC2W,\n\t\t\t\t[handle]\n\t\t\t);\n\n\t\t\tregistrationmap.set(fakeRegistration, state);\n\t\t\tctx.return(new Promise((resolve) => resolve(fakeRegistration)));\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst handler: ProxyHandler = {\n\t\tget(target, prop) {\n\t\t\tswitch (prop) {\n\t\t\t\tcase \"getItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"setItem\":\n\t\t\t\t\treturn (key: string, value: string) => {\n\t\t\t\t\t\treturn target.setItem(client.url.host + \"@\" + key, value);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"removeItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.removeItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"clear\":\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tfor (const key in Object.keys(target)) {\n\t\t\t\t\t\t\tif (key.startsWith(client.url.host)) {\n\t\t\t\t\t\t\t\ttarget.removeItem(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\tcase \"key\":\n\t\t\t\t\treturn (index: number) => {\n\t\t\t\t\t\tconst keys = Object.keys(target).filter((key) =>\n\t\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn target.getItem(keys[index]);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"length\":\n\t\t\t\t\treturn Object.keys(target).filter((key) =>\n\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t).length;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (prop in Object.prototype || typeof prop === \"symbol\") {\n\t\t\t\t\t\treturn Reflect.get(target, prop);\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(\"GET\", prop, target == realLocalStorage);\n\n\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + (prop as string));\n\t\t\t}\n\t\t},\n\n\t\tset(target, prop, value) {\n\t\t\tif (target == realLocalStorage)\n\t\t\t\tconsole.log(\"SET\", prop, value, target === realLocalStorage);\n\t\t\ttarget.setItem(client.url.host + \"@\" + (prop as string), value);\n\n\t\t\treturn true;\n\t\t},\n\n\t\townKeys(target) {\n\t\t\treturn Reflect.ownKeys(target)\n\t\t\t\t.filter((f) => typeof f === \"string\" && f.startsWith(client.url.host))\n\t\t\t\t.map((f) =>\n\t\t\t\t\ttypeof f === \"string\" ? f.substring(client.url.host.length + 1) : f\n\t\t\t\t);\n\t\t},\n\n\t\tgetOwnPropertyDescriptor(target, property) {\n\t\t\treturn {\n\t\t\t\tvalue: target.getItem(client.url.host + \"@\" + (property as string)),\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t};\n\t\t},\n\n\t\tdefineProperty(target, property, attributes) {\n\t\t\ttarget.setItem(\n\t\t\t\tclient.url.host + \"@\" + (property as string),\n\t\t\t\tattributes.value\n\t\t\t);\n\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst realLocalStorage = self.localStorage;\n\n\tconst localStorageProxy = new Proxy(self.localStorage, handler);\n\tconst sessionStorageProxy = new Proxy(self.sessionStorage, handler);\n\n\tdelete self.localStorage;\n\tdelete self.sessionStorage;\n\n\tself.localStorage = localStorageProxy;\n\tself.sessionStorage = sessionStorageProxy;\n}\n","export class NavigateEvent extends Event {\n\tconstructor(public url: string) {\n\t\tsuper(\"navigate\");\n\t}\n}\n\nexport class UrlChangeEvent extends Event {\n\tconstructor(public url: string) {\n\t\tsuper(\"urlchange\");\n\t}\n}\n\nexport class ScramjetContextInit extends Event {\n\tconstructor(public window: Self) {\n\t\tsuper(\"contextInit\");\n\t}\n}\n","// import { encodeUrl } from \"../shared\";\nimport { iswindow } from \".\";\nimport { SCRAMJETCLIENT } from \"../symbols\";\nimport { ScramjetClient } from \"./client\";\n// import { config } from \"../shared\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\n\nexport const UNSAFE_GLOBALS = [\n\t\"window\",\n\t\"self\",\n\t\"globalThis\",\n\t\"this\",\n\t\"parent\",\n\t\"top\",\n\t\"location\",\n\t\"document\",\n\t\"eval\",\n\t\"frames\",\n];\n\nexport function createGlobalProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n): typeof globalThis {\n\treturn new Proxy(self, {\n\t\tget(target, prop) {\n\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\tif (\n\t\t\t\tiswindow &&\n\t\t\t\t(typeof prop === \"string\" || typeof prop === \"number\") &&\n\t\t\t\t!isNaN(Number(prop)) &&\n\t\t\t\tvalue\n\t\t\t) {\n\t\t\t\tconst win: Self = value.self;\n\t\t\t\t// indexing into window gives you the contentWindow of the subframes for some reason\n\t\t\t\t// you can't *set* it so this should always be the right value\n\t\t\t\tif (win) {\n\t\t\t\t\tif (SCRAMJETCLIENT in win) {\n\t\t\t\t\t\t// then we've already hooked this frame and we can just send over its proxy\n\t\t\t\t\t\treturn win[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// this can happen if it's an about:blank iframe that we've never gotten the chance to inject into\n\t\t\t\t\t\t// just make a new client for it and inject\n\t\t\t\t\t\tconst newclient = new ScramjetClient(win);\n\t\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\t\treturn newclient.globalProxy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (prop === \"$scramjet\") return undefined;\n\n\t\t\tif (typeof prop === \"string\" && UNSAFE_GLOBALS.includes(prop))\n\t\t\t\treturn client.wrapfn(value);\n\n\t\t\treturn value;\n\t\t},\n\n\t\tset(target, prop, value) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\tclient.url = value;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn Reflect.set(target, prop, value);\n\t\t},\n\t\thas(target, prop) {\n\t\t\tif (prop === \"$scramjet\") return false;\n\n\t\t\treturn Reflect.has(target, prop);\n\t\t},\n\t\townKeys(target) {\n\t\t\treturn Reflect.ownKeys(target).filter((key) => key !== \"$scramjet\");\n\t\t},\n\t\tdefineProperty(target, property, attributes) {\n\t\t\tif (!attributes.get && !attributes.set) {\n\t\t\t\tattributes.writable = true;\n\t\t\t}\n\t\t\tattributes.configurable = true;\n\n\t\t\treturn Reflect.defineProperty(target, property, attributes);\n\t\t},\n\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t});\n}\n","export function getOwnPropertyDescriptorHandler(target, prop) {\n\tconst realDescriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\treturn realDescriptor;\n}\n","// entrypoint for scramjet.client.js\n\nimport { loadCodecs } from \"../scramjet\";\nimport { SCRAMJETCLIENT } from \"../symbols\";\nimport { ScramjetClient } from \"./client\";\nimport { ScramjetContextInit } from \"./events\";\nimport { ScramjetServiceWorkerRuntime } from \"./swruntime\";\n\nexport const iswindow = \"window\" in self && window instanceof Window;\nexport const isworker = \"WorkerGlobalScope\" in self;\nexport const issw = \"ServiceWorkerGlobalScope\" in self;\nexport const isdedicated = \"DedicatedWorkerGlobalScope\" in self;\nexport const isshared = \"SharedWorkerGlobalScope\" in self;\nexport const isemulatedsw =\n\tnew URL(self.location.href).searchParams.get(\"dest\") === \"serviceworker\";\n\ndbg.log(\"scrammin\");\n// if it already exists, that means the handlers have probably already been setup by the parent document\nif (!(SCRAMJETCLIENT in >self)) {\n\tloadCodecs();\n\n\tconst client = new ScramjetClient(self);\n\n\tif (self.COOKIE) client.loadcookies(self.COOKIE);\n\n\tclient.hook();\n\n\tif (isemulatedsw) {\n\t\tconst runtime = new ScramjetServiceWorkerRuntime(client);\n\t\truntime.hook();\n\t}\n\n\tconst ev = new ScramjetContextInit(client.global.window);\n\tclient.frame?.dispatchEvent(ev);\n}\n\nReflect.deleteProperty(self, \"WASM\");\nReflect.deleteProperty(self, \"COOKIE\");\nif (\"document\" in self && document?.currentScript) {\n\tdocument.currentScript.remove();\n}\n","// @ts-nocheck\nimport { ScramjetClient } from \"./client\";\nimport { nativeGetOwnPropertyDescriptor } from \"./natives\";\nimport { rewriteUrl } from \"../shared\";\nimport { UrlChangeEvent } from \"./events\";\nimport { iswindow } from \".\";\n\nexport function createLocationProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n) {\n\tconst Location = iswindow ? self.Location : self.WorkerLocation;\n\t// location cannot be Proxy()d\n\tconst fakeLocation = {};\n\tObject.setPrototypeOf(fakeLocation, Location.prototype);\n\tfakeLocation.constructor = Location;\n\n\t// for some reason it's on the object for Location and on the prototype for WorkerLocation??\n\tconst descriptorSource = iswindow ? self.location : Location.prototype;\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"href\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tconst native = nativeGetOwnPropertyDescriptor(descriptorSource, prop);\n\t\tif (!native) continue;\n\n\t\tconst desc = {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t};\n\t\tif (native.get) {\n\t\t\tdesc.get = new Proxy(native.get, {\n\t\t\t\tapply() {\n\t\t\t\t\treturn client.url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tif (native.set) {\n\t\t\tdesc.set = new Proxy(native.set, {\n\t\t\t\tapply(target, thisArg, args) {\n\t\t\t\t\tif (prop === \"href\") {\n\t\t\t\t\t\t// special case\n\t\t\t\t\t\tclient.url = args[0];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"hash\") {\n\t\t\t\t\t\tself.location.hash = args[0];\n\t\t\t\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\t\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst url = new URL(client.url.href);\n\t\t\t\t\turl[prop] = args[0];\n\t\t\t\t\tclient.url = url;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tObject.defineProperty(fakeLocation, prop, desc);\n\t}\n\n\t// functions\n\tfakeLocation.toString = new Proxy(self.location.toString, {\n\t\tapply() {\n\t\t\treturn client.url.href;\n\t\t},\n\t});\n\n\tif (self.location.valueOf)\n\t\tfakeLocation.valueOf = new Proxy(self.location.valueOf, {\n\t\t\tapply() {\n\t\t\t\treturn client.url.href;\n\t\t\t},\n\t\t});\n\tif (self.location.assign)\n\t\tfakeLocation.assign = new Proxy(self.location.assign, {\n\t\t\tapply(target, thisArg, args) {\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta);\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\tif (self.location.reload)\n\t\tfakeLocation.reload = new Proxy(self.location.reload, {\n\t\t\tapply(target, thisArg, args) {\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\tif (self.location.replace)\n\t\tfakeLocation.replace = new Proxy(self.location.replace, {\n\t\t\tapply(target, thisArg, args) {\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta);\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\n\treturn fakeLocation;\n}\n","export const nativeFunction = self.Function;\nexport const nativeGetOwnPropertyDescriptor =\n\tself.Object.getOwnPropertyDescriptor;\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"console.clear\", {\n\t\tapply(ctx) {\n\t\t\t// fuck you\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tconst log = console.log;\n\tclient.Trap(\"console.log\", {\n\t\tset(_ctx, _v) {\n\t\t\t// is there a legitimate reason to let sites do this?\n\t\t},\n\t\tget(_ctx) {\n\t\t\treturn log;\n\t\t},\n\t});\n}\n","import { rewriteBlob, unrewriteBlob } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nexport default function (client: ScramjetClient) {\n\t// hide the origin from object urls from the page\n\tclient.Proxy(\"URL.createObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tconst url: string = ctx.call();\n\t\t\tif (url.startsWith(\"blob:\")) {\n\t\t\t\tctx.return(rewriteBlob(url, client.meta));\n\t\t\t} else {\n\t\t\t\tctx.return(url);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"URL.revokeObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = unrewriteBlob(ctx.args[0]);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"CacheStorage.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.has\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.match\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.delete\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.add\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.addAll\", {\n\t\tapply(ctx) {\n\t\t\tfor (let i = 0; i < ctx.args[0].length; i++) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof ctx.args[0][i] === \"string\" ||\n\t\t\t\t\tctx.args[0][i] instanceof URL\n\t\t\t\t) {\n\t\t\t\t\tctx.args[0][i] = rewriteUrl(ctx.args[0][i], client.meta);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.put\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.match\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.matchAll\", {\n\t\tapply(ctx) {\n\t\t\tif (\n\t\t\t\t(ctx.args[0] && typeof ctx.args[0] === \"string\") ||\n\t\t\t\t(ctx.args[0] && ctx.args[0] instanceof URL)\n\t\t\t) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.keys\", {\n\t\tapply(ctx) {\n\t\t\tif (\n\t\t\t\t(ctx.args[0] && typeof ctx.args[0] === \"string\") ||\n\t\t\t\t(ctx.args[0] && ctx.args[0] instanceof URL)\n\t\t\t) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.delete\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../scramjet\";\nimport { ScramjetClient } from \"../client\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"captureErrors\", client.url);\nexport function argdbg(arg, recurse = []) {\n\tswitch (typeof arg) {\n\t\tcase \"string\":\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif (\n\t\t\t\targ &&\n\t\t\t\targ[Symbol.iterator] &&\n\t\t\t\ttypeof arg[Symbol.iterator] === \"function\"\n\t\t\t)\n\t\t\t\tfor (const prop in arg) {\n\t\t\t\t\t// make sure it's not a getter\n\t\t\t\t\tconst desc = Object.getOwnPropertyDescriptor(arg, prop);\n\t\t\t\t\tif (desc && desc.get) continue;\n\n\t\t\t\t\tconst ar = arg[prop];\n\t\t\t\t\tif (recurse.includes(ar)) continue;\n\t\t\t\t\trecurse.push(ar);\n\t\t\t\t\targdbg(ar, recurse);\n\t\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tself.$scramerr = function scramerr(e) {\n\t\tconsole.warn(\"CAUGHT ERROR\", e);\n\t};\n\n\tself.$scramdbg = function scramdbg(args, t) {\n\t\tif (args && typeof args === \"object\" && args.length > 0) argdbg(args);\n\t\targdbg(t);\n\n\t\treturn t;\n\t};\n\n\tclient.Proxy(\"Promise.prototype.catch\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\tctx.args[0] = new Proxy(ctx.args[0], {\n\t\t\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\t\t\t// console.warn(\"CAUGHT PROMISE REJECTION\", argArray);\n\t\t\t\t\t\tReflect.apply(target, thisArg, argArray);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../scramjet\";\nimport { config, unrewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"cleanErrors\", client.url);\n\nexport default function (client: ScramjetClient, _self: Self) {\n\t// v8 only. all we need to do is clean the scramjet urls from stack traces\n\tconst closure = (error, stack) => {\n\t\tlet newstack = error.stack;\n\n\t\tfor (let i = 0; i < stack.length; i++) {\n\t\t\tconst url = stack[i].getFileName();\n\n\t\t\tif (url.endsWith(config.files.client)) {\n\t\t\t\t// strip stack frames including scramjet handlers from the trace\n\t\t\t\tconst lines = newstack.split(\"\\n\");\n\t\t\t\tconst line = lines.find((l) => l.includes(url));\n\t\t\t\tlines.splice(line, 1);\n\t\t\t\tnewstack = lines.join(\"\\n\");\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tnewstack = newstack.replaceAll(url, unrewriteUrl(url));\n\t\t\t} catch {}\n\t\t}\n\n\t\treturn newstack;\n\t};\n\tclient.Trap(\"Error.prepareStackTrace\", {\n\t\tget(_ctx) {\n\t\t\t// this is a funny js quirk. the getter is ran every time you type something in console\n\t\t\treturn closure;\n\t\t},\n\t\tset(_value) {\n\t\t\t// just ignore it if a site tries setting their own. not much we can really do\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\nimport { config, rewriteJs } from \"../../shared\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// used for proxying *direct eval*\n\t// eval(\"...\") -> eval($scramjet$rewrite(\"...\"))\n\tObject.defineProperty(self, config.globals.rewritefn, {\n\t\tvalue: function (js: any) {\n\t\t\tif (typeof js !== \"string\") return js;\n\n\t\t\tconst rewritten = rewriteJs(js, \"(direct eval proxy)\", client.meta);\n\n\t\t\treturn rewritten;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n\nexport function indirectEval(this: ScramjetClient, js: any) {\n\t// > If the argument of eval() is not a string, eval() returns the argument unchanged\n\tif (typeof js !== \"string\") return js;\n\n\tconst indirection = this.global.eval;\n\n\treturn indirection(\n\t\trewriteJs(js, \"(indirect eval proxy)\", this.meta) as string\n\t);\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { getOwnPropertyDescriptorHandler } from \"../helpers\";\nimport { nativeGetOwnPropertyDescriptor } from \"../natives\";\nimport { unproxy } from \"./unproxy\";\n\nconst realOnEvent = Symbol.for(\"scramjet original onevent function\");\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst handlers = {\n\t\tmessage: {\n\t\t\t_init() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$type\" in this.data) {\n\t\t\t\t\t// this is a ctl message\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tports() {\n\t\t\t\t// don't know why i have to do this?\n\t\t\t\treturn this.ports;\n\t\t\t},\n\t\t\tsource() {\n\t\t\t\tif (this.source === null) return null;\n\n\t\t\t\tconst scram: ScramjetClient = this.source[SCRAMJETCLIENT];\n\n\t\t\t\tif (scram) return scram.globalProxy;\n\n\t\t\t\treturn this.source;\n\t\t\t},\n\t\t\torigin() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$origin\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$origin;\n\n\t\t\t\treturn client.url.origin;\n\t\t\t},\n\t\t\tdata() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$data\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$data;\n\n\t\t\t\treturn this.data;\n\t\t\t},\n\t\t},\n\t};\n\n\t// TODO! window.event not proxied\n\n\tfunction wraplistener(listener: (...args: any) => any) {\n\t\treturn new Proxy(listener, {\n\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\tconst realEvent: Event = argArray[0];\n\n\t\t\t\t// we only need to handle events dispatched from the browser\n\t\t\t\tif (realEvent.isTrusted) {\n\t\t\t\t\tconst type = realEvent.type;\n\n\t\t\t\t\tif (type in handlers) {\n\t\t\t\t\t\tconst handler = handlers[type];\n\n\t\t\t\t\t\tif (handler._init) {\n\t\t\t\t\t\t\tif (handler._init.call(realEvent) === false) return;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\targArray[0] = new Proxy(realEvent, {\n\t\t\t\t\t\t\tget(_target, prop, reciever) {\n\t\t\t\t\t\t\t\tif (prop in handler) {\n\t\t\t\t\t\t\t\t\treturn handler[prop].call(_target);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn Reflect.get(target, prop, reciever);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!self.event) {\n\t\t\t\t\tObject.defineProperty(self, \"event\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn argArray[0];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst rv = Reflect.apply(target, thisArg, argArray);\n\n\t\t\t\treturn rv;\n\t\t\t},\n\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t});\n\t}\n\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst origlistener = ctx.args[1];\n\t\t\tconst proxylistener = wraplistener(origlistener);\n\n\t\t\tctx.args[1] = proxylistener;\n\n\t\t\tlet arr = client.eventcallbacks.get(ctx.this);\n\t\t\tarr ||= [] as any;\n\t\t\tarr.push({\n\t\t\t\tevent: ctx.args[0] as string,\n\t\t\t\toriginalCallback: origlistener,\n\t\t\t\tproxiedCallback: proxylistener,\n\t\t\t});\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst arr = client.eventcallbacks.get(ctx.this);\n\t\t\tif (!arr) return;\n\n\t\t\tconst i = arr.findIndex(\n\t\t\t\t(e) => e.event === ctx.args[0] && e.originalCallback === ctx.args[1]\n\t\t\t);\n\t\t\tif (i === -1) return;\n\n\t\t\tconst r = arr.splice(i, 1);\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\n\t\t\tctx.args[1] = r[0].proxiedCallback;\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.dispatchEvent\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t},\n\t});\n\n\tconst targets = [self.self, self.MessagePort.prototype] as Array;\n\tif (iswindow) targets.push(self.HTMLElement.prototype);\n\tif (self.Worker) targets.push(self.Worker.prototype);\n\n\tfor (const target of targets) {\n\t\tconst keys = Reflect.ownKeys(target);\n\n\t\tfor (const key of keys) {\n\t\t\tif (\n\t\t\t\ttypeof key === \"string\" &&\n\t\t\t\tkey.startsWith(\"on\") &&\n\t\t\t\thandlers[key.slice(2)]\n\t\t\t) {\n\t\t\t\tconst descriptor = nativeGetOwnPropertyDescriptor(target, key);\n\t\t\t\tif (!descriptor.get || !descriptor.set || !descriptor.configurable)\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// these are the `onmessage`, `onclick`, etc. properties\n\t\t\t\tclient.RawTrap(target, key, {\n\t\t\t\t\tget(ctx) {\n\t\t\t\t\t\tif (this[realOnEvent]) return this[realOnEvent];\n\n\t\t\t\t\t\treturn ctx.get();\n\t\t\t\t\t},\n\t\t\t\t\tset(ctx, value: any) {\n\t\t\t\t\t\tthis[realOnEvent] = value;\n\n\t\t\t\t\t\tif (typeof value !== \"function\") return ctx.set(value);\n\n\t\t\t\t\t\tctx.set(wraplistener(value));\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","import { ScramjetClient, ProxyCtx, Proxy } from \"../client\";\nimport { rewriteJs } from \"../../shared\";\n\nfunction rewriteFunction(ctx: ProxyCtx, client: ScramjetClient) {\n\tconst stringifiedFunction = ctx.call().toString();\n\n\tconst content = rewriteJs(\n\t\t`return ${stringifiedFunction}`,\n\t\t\"(function proxy)\",\n\t\tclient.meta\n\t);\n\tctx.return(ctx.fn(content)());\n}\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst handler: Proxy = {\n\t\tapply(ctx: ProxyCtx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t\tconstruct(ctx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t};\n\n\tclient.Proxy(\"Function\", handler);\n\t/*\n\t// god i love javascript\n\tclient.RawProxy(function () {}.constructor.prototype, \"constructor\", handler);\n\tclient.RawProxy(\n\t\tasync function () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\tclient.RawProxy(\n\t\tfunction* () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\tclient.RawProxy(\n\t\tasync function* () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\t*/\n}\n","import { scramtag } from './snippets/wasm-4b0f351a8e6eeb46/inline0.js';\n\nlet wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n * @param {string} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js(js, url, script_url, scramjet) {\n const ptr0 = passStringToWasm0(js, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * @param {Uint8Array} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js_from_arraybuffer(js, url, script_url, scramjet) {\n const ptr0 = passArray8ToWasm0(js, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js_from_arraybuffer(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_call_3b770f0d6eb4720e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_500db948e69c7330 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_b0d8e36992d9900d = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_bbccf8970793c087 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_17f755666e48d1d8 = function() { return handleError(function (arg0, arg1) {\n const ret = new URL(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_254fa9eac11932ae = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_688846f374351c92 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_newwithbase_aa2c471fe3eacc2b = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new URL(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_now_62a101fe35b60230 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_scramtag_bd98edaa0eaec45e = function(arg0) {\n const ret = scramtag();\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_set_4e647025551483bd = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_1dc398a895c82351 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_toString_a491ccf7be1ca5c9 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbg_toString_cbcf95f260c441ae = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_uint8_array_new = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n const ret = v0;\n return ret;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n imports.wbg.memory = memory || new WebAssembly.Memory({initial:18,maximum:16384,shared:true});\n}\n\nfunction __wbg_finalize_init(instance, module, thread_stack_size) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\n wasm.__wbindgen_start(thread_stack_size);\n return wasm;\n}\n\nfunction initSync(module, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module, memory, thread_stack_size} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports, memory);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nasync function __wbg_init(module_or_path, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path, memory, thread_stack_size} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('wasm_bg.wasm', \"\");\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports, memory);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","\n// slightly modified https://github.com/ungap/random-uuid/blob/main/index.js\nexport function scramtag() {\n return (\"\"+1e10).replace(/[018]/g,\n c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { URLMeta } from \"./url\";\n\n// i am a cat. i like to be petted. i like to be fed. i like to be\nimport {\n\tinitSync,\n\trewrite_js,\n\trewrite_js_from_arraybuffer,\n\tRewriterOutput,\n} from \"../../../rewriter/wasm/out/wasm.js\";\nimport { $scramjet, flagEnabled } from \"../../scramjet\";\n\ninitSync({\n\tmodule: new WebAssembly.Module(\n\t\tUint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0))\n\t),\n});\n\nError.stackTraceLimit = 50;\n\nconst decoder = new TextDecoder();\n\nfunction rewriteJsWrapper(\n\tinput: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n): string | ArrayBuffer {\n\tlet out: RewriterOutput;\n\tconst before = performance.now();\n\ttry {\n\t\tif (typeof input === \"string\") {\n\t\t\tout = rewrite_js(input, meta.base.href, url || \"(unknown)\", $scramjet);\n\t\t} else {\n\t\t\tout = rewrite_js_from_arraybuffer(\n\t\t\t\tnew Uint8Array(input),\n\t\t\t\tmeta.base.href,\n\t\t\t\turl || \"(unknown)\",\n\t\t\t\t$scramjet\n\t\t\t);\n\t\t}\n\t} catch (err) {\n\t\tlet err1 = err as Error;\n\t\tconsole.error(\"failed rewriting js for\", url, err1, input);\n\t\terr1.message = `failed rewriting js for \"${url}\": ${err1.message}`;\n\t\tthrow err1;\n\t}\n\tconst after = performance.now();\n\tconst { js, errors, duration } = out;\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tfor (const error of errors) {\n\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t}\n\t}\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tlet timespan: string;\n\t\tif (duration < 1n) {\n\t\t\ttimespan = \"BLAZINGLY FAST\";\n\t\t} else if (duration < 500n) {\n\t\t\ttimespan = \"decent speed\";\n\t\t} else {\n\t\t\ttimespan = \"really slow\";\n\t\t}\n\t\tconst overhead = (after - before - Number(duration)).toFixed(2);\n\t\tconsole.log(\n\t\t\t`oxc rewrite for \"${url || \"(unknown)\"}\" was ${timespan} (${duration}ms; ${overhead}ms overhead)`\n\t\t);\n\t}\n\n\treturn typeof input === \"string\" ? decoder.decode(js) : js;\n}\n\nexport function rewriteJs(\n\tjs: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n) {\n\tif (flagEnabled(\"naiiveRewriter\", meta.origin)) {\n\t\tconst text = typeof js === \"string\" ? js : new TextDecoder().decode(js);\n\n\t\tconsole.log(\"naiive\");\n\n\t\treturn rewriteJsNaiive(text);\n\t}\n\n\tjs = rewriteJsWrapper(js, url, meta);\n\n\treturn js;\n}\n\n// 1. does not work with modules\n// 2. cannot proxy import()\n// 3. disables \"use strict\" optimizations\n// 4. i think the global state can get clobbered somehow\n//\n// if you can ensure all the preconditions are met this is faster than full rewrites\nexport function rewriteJsNaiive(js: string | ArrayBuffer) {\n\tif (typeof js !== \"string\") {\n\t\tjs = new TextDecoder().decode(js);\n\t}\n\n\treturn `\n\t\twith (${$scramjet.config.globals.wrapfn}(globalThis)) {\n\n\t\t\t${js}\n\n\t\t}\n\t`;\n}\n","import { $scramjet } from \"../../scramjet\";\nimport { rewriteJs } from \"./js\";\n\nexport type URLMeta = {\n\torigin: URL;\n\tbase: URL;\n};\n\nfunction tryCanParseURL(url: string, origin?: string | URL): URL | null {\n\ttry {\n\t\treturn new URL(url, origin);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function rewriteBlob(url: string, meta: URLMeta) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + meta.origin.origin + blob.pathname;\n}\n\nexport function unrewriteBlob(url: string) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + location.origin + blob.pathname;\n}\n\nexport function rewriteUrl(url: string | URL, meta: URLMeta) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" +\n\t\t\trewriteJs(url.slice(\"javascript:\".length), \"(javascript: url)\", meta)\n\t\t);\n\t} else if (url.startsWith(\"blob:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"data:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else {\n\t\tlet base = meta.base.href;\n\n\t\tif (base.startsWith(\"about:\")) base = unrewriteUrl(self.location.href); // jank!!!!! weird jank!!!\n\t\tconst realUrl = tryCanParseURL(url, base);\n\t\tif (!realUrl) return url;\n\n\t\treturn (\n\t\t\tlocation.origin +\n\t\t\t$scramjet.config.prefix +\n\t\t\t$scramjet.codec.encode(realUrl.href)\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tconst prefixed = location.origin + $scramjet.config.prefix;\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\t//TODO\n\t\treturn url;\n\t} else if (url.startsWith(\"blob:\")) {\n\t\t// realistically this shouldn't happen\n\t\treturn url;\n\t} else if (url.startsWith(prefixed + \"blob:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(prefixed + \"data:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else if (tryCanParseURL(url)) {\n\t\treturn $scramjet.codec.decode(\n\t\t\turl.slice((location.origin + $scramjet.config.prefix).length)\n\t\t);\n\t} else {\n\t\treturn url;\n\t}\n}\n","import { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\nimport { rewriteUrl } from \"../../shared/rewriters/url\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst Function = client.natives.store[\"Function\"];\n\n\tself[config.globals.importfn] = function (base: string) {\n\t\treturn function (url: string) {\n\t\t\tconst resolved = new URL(url, base).href;\n\n\t\t\treturn Function(\n\t\t\t\t`return import(\"${rewriteUrl(resolved, client.meta)}\")`\n\t\t\t)();\n\t\t};\n\t};\n\n\tself[config.globals.metafn] = function (base: string) {\n\t\treturn {\n\t\t\turl: base,\n\t\t\tresolve: function (url: string) {\n\t\t\t\treturn new URL(url, base).href;\n\t\t\t},\n\t\t};\n\t};\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"IDBFactory.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Trap(\"IDBDatabase.prototype.name\", {\n\t\tget(ctx) {\n\t\t\tconst name = ctx.get() as string;\n\n\t\t\treturn name.substring(name.indexOf(\"@\") + 1);\n\t\t},\n\t});\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { POLLUTANT } from \"../shared/realm\";\n\nexport default function (client: ScramjetClient) {\n\tif (iswindow)\n\t\tclient.Proxy(\"window.postMessage\", {\n\t\t\tapply(ctx) {\n\t\t\t\t// so we need to send the real origin here, since the recieving window can't possibly know.\n\t\t\t\t// except, remember that this code is being ran in a different realm than the invoker, so if we ask our `client` it may give us the wrong origin\n\t\t\t\t// if we were given any object that came from the real realm we can use that to get the real origin\n\t\t\t\t// and this works in every case EXCEPT for the fact that all three arguments can be strings which are copied instead of cloned\n\t\t\t\t// so we have to use `$setrealm` which will pollute this with an object from the real realm\n\n\t\t\t\tlet pollutant;\n\n\t\t\t\tif (typeof ctx.args[0] === \"object\" && ctx.args[0] !== null) {\n\t\t\t\t\tpollutant = ctx.args[0]; // try to use the first object we can find because it's more reliable\n\t\t\t\t} else if (typeof ctx.args[2] === \"object\" && ctx.args[2] !== null) {\n\t\t\t\t\tpollutant = ctx.args[2]; // next try to use transfer\n\t\t\t\t} else if (\n\t\t\t\t\tctx.this &&\n\t\t\t\t\tPOLLUTANT in ctx.this &&\n\t\t\t\t\ttypeof ctx.this[POLLUTANT] === \"object\" &&\n\t\t\t\t\tctx.this[POLLUTANT] !== null\n\t\t\t\t) {\n\t\t\t\t\tpollutant = ctx.this[POLLUTANT]; // lastly try to use the object from $setrealm\n\t\t\t\t} else {\n\t\t\t\t\tpollutant = {}; // give up\n\t\t\t\t}\n\n\t\t\t\t// and now we can steal Function from the caller's realm\n\t\t\t\tconst {\n\t\t\t\t\tconstructor: { constructor: Function },\n\t\t\t\t} = pollutant;\n\n\t\t\t\t// invoking stolen function will give us the caller's globalThis, remember scramjet has already proxied it!!!\n\t\t\t\tconst callerGlobalThisProxied: Self = Function(\"return globalThis\")();\n\t\t\t\tconst callerClient = callerGlobalThisProxied[SCRAMJETCLIENT];\n\n\t\t\t\t// this WOULD be enough but the source argument of MessageEvent has to return the caller's window\n\t\t\t\t// and if we just call it normally it would be coming from here, which WILL NOT BE THE CALLER'S because the accessor is from the parent\n\t\t\t\t// so with the stolen function we wrap postmessage so the source will truly be the caller's window (remember that function is scramjet's!!!)\n\t\t\t\tconst wrappedPostMessage = Function(\"...args\", \"this(...args)\");\n\n\t\t\t\tctx.args[0] = {\n\t\t\t\t\t$scramjet$messagetype: \"window\",\n\t\t\t\t\t$scramjet$origin: callerClient.url.origin,\n\t\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t\t};\n\n\t\t\t\t// * origin because obviously\n\t\t\t\tif (typeof ctx.args[1] === \"string\") ctx.args[1] = \"*\";\n\t\t\t\tif (typeof ctx.args[1] === \"object\") ctx.args[1].targetOrigin = \"*\";\n\n\t\t\t\tctx.return(wrappedPostMessage.call(ctx.fn, ...ctx.args));\n\t\t\t},\n\t\t});\n\n\tconst toproxy = [\"MessagePort.prototype.postMessage\"];\n\n\tif (self.Worker) toproxy.push(\"Worker.prototype.postMessage\");\n\tif (!iswindow) toproxy.push(\"self.postMessage\"); // only do the generic version if we're in a worker\n\n\tclient.Proxy(toproxy, {\n\t\tapply(ctx) {\n\t\t\t// origin/source doesn't need to be preserved - it's null in the message event\n\n\t\t\tctx.args[0] = {\n\t\t\t\t$scramjet$messagetype: \"worker\",\n\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t};\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\n\nexport const POLLUTANT = Symbol.for(\"scramjet realm pollutant\");\n\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\t// object.$setrealm({}).postMessage(...)\n\t// the empty object is the \"pollutant\" which can reconstruct the real realm\n\t// i explain more in postmessage.ts\n\tObject.defineProperty(self.Object.prototype, config.globals.setrealmfn, {\n\t\tvalue(pollution: object) {\n\t\t\t// this is bad!! sites could detect this\n\t\t\tObject.defineProperty(this, POLLUTANT, {\n\t\t\t\tvalue: pollution,\n\t\t\t\twritable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\t\twritable: true,\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t});\n}\n","import { unrewriteUrl, rewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"EventSource\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n\n\tclient.Trap(\"EventSource.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tunrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","// ts throws an error if you dont do window.fetch\n\nimport { isemulatedsw } from \"../..\";\nimport { unrewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\nimport { rewriteUrl } from \"../../../shared\";\n\nexport default function (client: ScramjetClient, _self: typeof globalThis) {\n\tclient.Proxy(\"fetch\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\t\tif (isemulatedsw) ctx.args[0] += \"?from=swruntime\";\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Request\", {\n\t\tconstruct(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\t\tif (isemulatedsw) ctx.args[0] += \"?from=swruntime\";\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Response.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n\n\tclient.Trap(\"Request.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { type BareWebSocket } from \"@mercuryworkshop/bare-mux\";\nimport { ScramjetClient } from \"../../client\";\n\ntype FakeWebSocketState = {\n\textensions: string;\n\tprotocol: string;\n\turl: string;\n\tbinaryType: string;\n\tbarews: BareWebSocket;\n\n\tonclose?: (ev: CloseEvent) => any;\n\tonerror?: (ev: Event) => any;\n\tonmessage?: (ev: MessageEvent) => any;\n\tonopen?: (ev: Event) => any;\n};\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tconst socketmap: WeakMap = new WeakMap();\n\tclient.Proxy(\"WebSocket\", {\n\t\tconstruct(ctx) {\n\t\t\tconst fakeWebSocket = new EventTarget() as WebSocket;\n\t\t\tObject.setPrototypeOf(fakeWebSocket, ctx.fn.prototype);\n\t\t\tfakeWebSocket.constructor = ctx.fn;\n\n\t\t\tconst trustEvent = (ev: Event) =>\n\t\t\t\tnew Proxy(ev, {\n\t\t\t\t\tget(target, prop) {\n\t\t\t\t\t\tif (prop === \"isTrusted\") return true;\n\n\t\t\t\t\t\treturn Reflect.get(target, prop);\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\tconst barews = client.bare.createWebSocket(\n\t\t\t\tctx.args[0],\n\t\t\t\tctx.args[1],\n\t\t\t\tnull,\n\t\t\t\t{\n\t\t\t\t\t\"User-Agent\": self.navigator.userAgent,\n\t\t\t\t\tOrigin: client.url.origin,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconst state: FakeWebSocketState = {\n\t\t\t\textensions: \"\",\n\t\t\t\tprotocol: \"\",\n\t\t\t\turl: ctx.args[0],\n\t\t\t\tbinaryType: \"blob\",\n\t\t\t\tbarews,\n\n\t\t\t\tonclose: null,\n\t\t\t\tonerror: null,\n\t\t\t\tonmessage: null,\n\t\t\t\tonopen: null,\n\t\t\t};\n\n\t\t\tfunction fakeEventSend(fakeev: Event) {\n\t\t\t\tstate[\"on\" + fakeev.type]?.(trustEvent(fakeev));\n\t\t\t\tfakeWebSocket.dispatchEvent(fakeev);\n\t\t\t}\n\n\t\t\tbarews.addEventListener(\"open\", () => {\n\t\t\t\tfakeEventSend(new Event(\"open\"));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"close\", (ev) => {\n\t\t\t\tfakeEventSend(new CloseEvent(\"close\", ev));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"message\", async (ev) => {\n\t\t\t\tlet payload = ev.data;\n\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t// DO NOTHING\n\t\t\t\t} else if (\"byteLength\" in payload) {\n\t\t\t\t\t// arraybuffer, convert to blob if needed or set the proper prototype\n\t\t\t\t\tif (state.binaryType === \"blob\") {\n\t\t\t\t\t\tpayload = new Blob([payload]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t} else if (\"arrayBuffer\" in payload) {\n\t\t\t\t\t// blob, convert to arraybuffer if neccesary.\n\t\t\t\t\tif (state.binaryType === \"arraybuffer\") {\n\t\t\t\t\t\tpayload = await payload.arrayBuffer();\n\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst fakeev = new MessageEvent(\"message\", {\n\t\t\t\t\tdata: payload,\n\t\t\t\t\torigin: ev.origin,\n\t\t\t\t\tlastEventId: ev.lastEventId,\n\t\t\t\t\tsource: ev.source,\n\t\t\t\t\tports: ev.ports,\n\t\t\t\t});\n\n\t\t\t\tfakeEventSend(fakeev);\n\t\t\t});\n\t\t\tbarews.addEventListener(\"error\", () => {\n\t\t\t\tfakeEventSend(new Event(\"error\"));\n\t\t\t});\n\n\t\t\tsocketmap.set(fakeWebSocket, state);\n\t\t\tctx.return(fakeWebSocket);\n\t\t},\n\t});\n\tclient.Trap(\"WebSocket.prototype.binaryType\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.binaryType;\n\t\t},\n\t\tset(ctx, v: string) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (v === \"blob\" || v === \"arraybuffer\") ws.binaryType = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.bufferedAmount\", {\n\t\tget() {\n\t\t\treturn 0;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.extensions\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.extensions;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onclose\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onclose;\n\t\t},\n\t\tset(ctx, v: (ev: CloseEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onclose = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onerror\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onerror;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onerror = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onmessage\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onmessage;\n\t\t},\n\t\tset(ctx, v: (ev: MessageEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onmessage = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onopen\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onopen;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onopen = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.url;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.protocol\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.protocol;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.readyState\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.barews.readyState;\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\tctx.return(ws.barews.send(ctx.args[0]));\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.close\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (ctx.args[0] === undefined) ctx.args[0] = 1000;\n\t\t\tif (ctx.args[1] === undefined) ctx.args[1] = \"\";\n\t\t\tctx.return(ws.barews.close(ctx.args[0], ctx.args[1]));\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../../scramjet\";\nimport { config, unrewriteUrl, rewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tlet worker;\n\tif (self.Worker && flagEnabled(\"syncxhr\", client.url)) {\n\t\tworker = client.natives.construct(\"Worker\", config.files.sync);\n\t}\n\tconst ARGS = Symbol(\"xhr original args\");\n\tconst HEADERS = Symbol(\"xhr headers\");\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1]) ctx.args[1] = rewriteUrl(ctx.args[1], client.meta);\n\t\t\tif (ctx.args[2] === undefined) ctx.args[2] = true;\n\t\t\tctx.this[ARGS] = ctx.args;\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.setRequestHeader\", {\n\t\tapply(ctx) {\n\t\t\tconst headers = ctx.this[HEADERS] || (ctx.this[HEADERS] = {});\n\t\t\theaders[ctx.args[0]] = ctx.args[1];\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst args = ctx.this[ARGS];\n\t\t\tif (!args || args[2]) return;\n\n\t\t\tif (!flagEnabled(\"syncxhr\", client.url)) {\n\t\t\t\tconsole.warn(\"ignoring request - sync xhr disabled in flags\");\n\n\t\t\t\treturn ctx.return(undefined);\n\t\t\t}\n\n\t\t\t// it's a sync request\n\t\t\t// sync xhr to service worker is not supported\n\t\t\t// there's a nice way of polyfilling this though, we can spin on an atomic using sharedarraybuffer. this will maintain the sync behavior\n\n\t\t\t// @ts-expect-error maxbytelength not in types yet i guess\n\t\t\tconst sab = new SharedArrayBuffer(1024, { maxByteLength: 2147483647 });\n\t\t\tconst view = new DataView(sab);\n\n\t\t\tclient.natives.call(\"Worker.prototype.postMessage\", worker, {\n\t\t\t\tsab,\n\t\t\t\targs,\n\t\t\t\theaders: ctx.this[HEADERS],\n\t\t\t\tbody: ctx.args[0],\n\t\t\t});\n\n\t\t\tconst now = performance.now();\n\t\t\twhile (view.getUint8(0) === 0) {\n\t\t\t\tif (performance.now() - now > 1000) {\n\t\t\t\t\tthrow new Error(\"xhr timeout\");\n\t\t\t\t}\n\t\t\t\t/* spin */\n\t\t\t}\n\n\t\t\tconst status = view.getUint16(1);\n\t\t\tconst headersLength = view.getUint32(3);\n\n\t\t\tconst headersab = new Uint8Array(headersLength);\n\t\t\theadersab.set(new Uint8Array(sab.slice(7, 7 + headersLength)));\n\t\t\tconst headers = new TextDecoder().decode(headersab);\n\n\t\t\tconst bodyLength = view.getUint32(7 + headersLength);\n\t\t\tconst bodyab = new Uint8Array(bodyLength);\n\t\t\tbodyab.set(\n\t\t\t\tnew Uint8Array(\n\t\t\t\t\tsab.slice(11 + headersLength, 11 + headersLength + bodyLength)\n\t\t\t\t)\n\t\t\t);\n\t\t\tconst body = new TextDecoder().decode(bodyab);\n\n\t\t\t// these should be using proxies to not leak scram strings but who cares\n\t\t\tclient.RawTrap(ctx.this, \"status\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn status;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseText\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"response\", {\n\t\t\t\tget() {\n\t\t\t\t\tif (ctx.this.responseType === \"arraybuffer\") return bodyab.buffer;\n\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseXML\", {\n\t\t\t\tget() {\n\t\t\t\t\tconst parser = new DOMParser();\n\n\t\t\t\t\treturn parser.parseFromString(body, \"text/xml\");\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getAllResponseHeaders\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn () => headers;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getResponseHeader\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn (header: string) => {\n\t\t\t\t\t\tconst re = new RegExp(`^${header}: (.*)$`, \"m\");\n\t\t\t\t\t\tconst match = re.exec(headers);\n\n\t\t\t\t\t\treturn match ? match[1] : null;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// send has no return value right\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tclient.Trap(\"XMLHttpRequest.prototype.responseURL\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { $scramjet, flagEnabled } from \"../../scramjet\";\nimport { ScramjetClient } from \"../client\";\n\nenum RewriteType {\n\tInsert = 0,\n\tReplace = 1,\n}\n\ntype Rewrite =\n\t| {\n\t\t\ttype: RewriteType.Insert;\n\t\t\t// offset before this rewrite\n\t\t\toffset: number;\n\t\t\t// start of insertion\n\t\t\tstart: number;\n\t\t\t// size of insertion\n\t\t\tsize: number;\n\t }\n\t| {\n\t\t\ttype: RewriteType.Replace;\n\t\t\t// offset before this rewrite\n\t\t\toffset: number;\n\t\t\t// start of replacement\n\t\t\tstart: number;\n\t\t\t// end of replacement\n\t\t\tend: number;\n\t\t\t// old string\n\t\t\tstr: string;\n\t };\n\nconst sourcemaps: Record = {};\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"sourcemaps\", client.url);\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// every script will push a sourcemap\n\tObject.defineProperty(self, $scramjet.config.globals.pushsourcemapfn, {\n\t\tvalue: (buf: Array, tag: string) => {\n\t\t\tconst sourcemap = Uint8Array.from(buf);\n\t\t\tconst view = new DataView(sourcemap.buffer);\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\n\t\t\tconst rewrites = [];\n\n\t\t\tconst rewritelen = view.getUint32(0, true);\n\t\t\tlet cursor = 0;\n\t\t\tfor (let i = 0; i < rewritelen; i++) {\n\t\t\t\tconst type = view.getUint8(cursor) as RewriteType;\n\t\t\t\tcursor += 1;\n\n\t\t\t\tif (type == RewriteType.Insert) {\n\t\t\t\t\tconst offset = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst start = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst size = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\n\t\t\t\t\trewrites.push({ type, offset, start, size });\n\t\t\t\t} else if (type == RewriteType.Replace) {\n\t\t\t\t\tconst offset = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst start = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst end = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\n\t\t\t\t\tconst str = decoder.decode(sourcemap.subarray(start, end));\n\n\t\t\t\t\trewrites.push({ type, offset, start, end, str });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsourcemaps[tag] = rewrites;\n\t\t},\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\tconst scramtag_ident = \"/*scramtag \";\n\n\t// when we rewrite javascript it will make function.toString leak internals\n\t// this can lead to double rewrites which is bad\n\tclient.Proxy(\"Function.prototype.toString\", {\n\t\tapply(ctx) {\n\t\t\tlet stringified: string = ctx.fn.call(ctx.this);\n\t\t\tlet newString = \"\";\n\n\t\t\t// every function rewritten will have a scramtag comment\n\t\t\t// it will look like this:\n\t\t\t// function name() /*scramtag [index] [tag] */ { ... }\n\t\t\tconst scramtagstart = stringified.indexOf(\"/*s\");\n\n\t\t\tif (scramtagstart === -1) return ctx.return(stringified); // it's either a native function or something stolen from scramjet itself\n\n\t\t\tconst firstspace = stringified.indexOf(\n\t\t\t\t\" \",\n\t\t\t\tscramtagstart + scramtag_ident.length\n\t\t\t);\n\t\t\t// [index] holds the index of the first character in the scramtag (/)\n\t\t\tconst abstagindex = parseInt(\n\t\t\t\tstringified.substring(scramtagstart + scramtag_ident.length, firstspace)\n\t\t\t);\n\n\t\t\t// subtracting that from the index of the scramtag gives us the starting index of the function relative to the entire file\n\t\t\tconst absindex = abstagindex - scramtagstart;\n\n\t\t\tconst scramtagend = stringified.indexOf(\"*/\", scramtagstart);\n\t\t\tconst tag = stringified.substring(firstspace + 1, scramtagend);\n\n\t\t\t// delete all scramtags inside the function (and nested ones!!)\n\t\t\tstringified = stringified.replace(/\\/\\*scramtag.*?\\*\\//g, \"\");\n\n\t\t\tconst maps = sourcemaps[tag];\n\n\t\t\tlet i = 0;\n\t\t\tlet offset = 0;\n\n\t\t\tlet j = 0;\n\t\t\twhile (j < maps.length) {\n\t\t\t\t/* TODO\n\t\t\t\tconst [str, start, end] = maps[j];\n\t\t\t\tif (start < absindex) {\n\t\t\t\t\tj++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (start - absindex + offset > stringified.length) break;\n\n\t\t\t\t// ooh i should really document this before i forget how it works\n\t\t\t\tnewString += stringified.slice(i, start - absindex + offset);\n\t\t\t\tnewString += str;\n\t\t\t\toffset += end - start - str.length;\n\t\t\t\ti = start - absindex + offset + str.length;\n\n\t\t\t\tj++;\n\t\t\t\t*/\n\t\t\t}\n\n\t\t\tnewString += stringified.slice(i);\n\n\t\t\treturn ctx.return(newString);\n\t\t},\n\t});\n}\n","export default function (client, self) {\n\tdelete self.TrustedHTML;\n\tdelete self.TrustedScript;\n\tdelete self.TrustedScriptURL;\n\tdelete self.TrustedTypePolicy;\n\tdelete self.TrustedTypePolicyFactory;\n\tself.__defineGetter__(\"trustedTypes\", () => undefined);\n}\n","import { iswindow } from \"..\";\nimport { ProxyCtx, ScramjetClient } from \"../client\";\n\n// we don't want to end up overriding a property on window that's derived from a prototype until we've proxied the prototype\nexport const order = 3;\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\t// an automated approach to cleaning the documentProxy from dom functions\n\t// it will trigger an illegal invocation if you pass the proxy to c++ code, we gotta hotswap it out with the real one\n\t// admittedly this is pretty slow. worth investigating if there's ways to get back some of the lost performance\n\n\tfor (const target of [self]) {\n\t\tfor (const prop in target) {\n\t\t\ttry {\n\t\t\t\tif (typeof target[prop] === \"function\") {\n\t\t\t\t\tclient.RawProxy(target, prop, {\n\t\t\t\t\t\tapply(ctx) {\n\t\t\t\t\t\t\tunproxy(ctx, client);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tif (!iswindow) return;\n\n\tfor (const target of [\n\t\tself.Node.prototype,\n\t\tself.MutationObserver.prototype,\n\t\tself.document,\n\t\tself.MouseEvent.prototype,\n\t\tself.Range.prototype,\n\t]) {\n\t\tfor (const prop in target) {\n\t\t\ttry {\n\t\t\t\tif (typeof target[prop] === \"function\") {\n\t\t\t\t\tclient.RawProxy(target, prop, {\n\t\t\t\t\t\tapply(ctx) {\n\t\t\t\t\t\t\tunproxy(ctx, client);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tclient.Proxy(\"IntersectionObserver\", {\n\t\tconstruct(ctx) {\n\t\t\tif (ctx.args[1] && ctx.args[1].root) ctx.args[1].root = self.document;\n\t\t},\n\t});\n\n\t// this is probably not how stuff should be done but you cant run defineProperty on the window proxy so...\n\tclient.Proxy(\"Object.defineProperty\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Object.getOwnPropertyDescriptor\", {\n\t\tapply(ctx) {\n\t\t\tconst desc = ctx.call();\n\n\t\t\tif (!desc) return;\n\n\t\t\tif (desc.get) {\n\t\t\t\tclient.RawProxy(desc, \"get\", {\n\t\t\t\t\tapply(getCtx) {\n\t\t\t\t\t\t// value of this in the getter needs to be corrected\n\t\t\t\t\t\tunproxy(getCtx, client);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (desc.set) {\n\t\t\t\tclient.RawProxy(desc, \"set\", {\n\t\t\t\t\tapply(setCtx) {\n\t\t\t\t\t\tunproxy(setCtx, client);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// i don't think we have to care about value but it's worth looking into\n\n\t\t\tctx.return(desc);\n\t\t},\n\t});\n}\n\nexport function unproxy(ctx: ProxyCtx, client: ScramjetClient) {\n\tconst self = client.global;\n\tif (ctx.this === client.globalProxy) ctx.this = self;\n\tif (ctx.this === client.documentProxy) ctx.this = self.document;\n\n\tfor (const i in ctx.args) {\n\t\tif (ctx.args[i] === client.documentProxy) ctx.args[i] = self.document;\n\t\tif (ctx.args[i] === client.globalProxy) ctx.args[i] = self;\n\t}\n}\n","import { BareMuxConnection } from \"../../shared\";\nimport { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: typeof globalThis) {\n\tclient.Proxy(\"Worker\", {\n\t\tconstruct({ args, call }) {\n\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\tif (args[1] && args[1].type === \"module\") {\n\t\t\t\targs[0] += \"&type=module\";\n\t\t\t}\n\n\t\t\tconst worker = call();\n\t\t\tconst conn = new BareMuxConnection();\n\n\t\t\t(async () => {\n\t\t\t\tconst port = await conn.getInnerPort();\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Worker.prototype.postMessage\",\n\t\t\t\t\tworker,\n\t\t\t\t\t{\n\t\t\t\t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t\t\t\tport,\n\t\t\t\t\t},\n\t\t\t\t\t[port]\n\t\t\t\t);\n\t\t\t})();\n\t\t},\n\t});\n\n\t// sharedworkers can only be constructed from window\n\tclient.Proxy(\"SharedWorker\", {\n\t\tconstruct({ args, call }) {\n\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\tif (args[1] && typeof args[1] === \"string\")\n\t\t\t\targs[1] = `${client.url.origin}@${args[1]}`;\n\n\t\t\tif (args[1] && typeof args[1] === \"object\") {\n\t\t\t\tif (args[1].type === \"module\") {\n\t\t\t\t\targs[0] += \"&type=module\";\n\t\t\t\t}\n\n\t\t\t\tif (args[1].name) {\n\t\t\t\t\targs[1].name = `${client.url.origin}@${args[1].name}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst worker = call();\n\t\t\tconst conn = new BareMuxConnection();\n\n\t\t\t(async () => {\n\t\t\t\tconst port = await conn.getInnerPort();\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"MessagePort.prototype.postMessage\",\n\t\t\t\t\tworker.port,\n\t\t\t\t\t{\n\t\t\t\t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t\t\t\tport,\n\t\t\t\t\t},\n\t\t\t\t\t[port]\n\t\t\t\t);\n\t\t\t})();\n\t\t},\n\t});\n\n\tclient.Proxy(\"Worklet.prototype.addModule\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\n// import { argdbg } from \"./err\";\nimport { indirectEval } from \"./eval\";\n\nexport function createWrapFn(client: ScramjetClient, self: typeof globalThis) {\n\treturn function (identifier: any) {\n\t\tif (identifier === self) return client.globalProxy;\n\t\tif (identifier === self.location) return client.locationProxy;\n\t\tif (identifier === eval) return indirectEval.bind(client);\n\n\t\tif (iswindow) {\n\t\t\tif (identifier === self.parent) {\n\t\t\t\tif (SCRAMJETCLIENT in self.parent) {\n\t\t\t\t\t// ... then we're in a subframe, and the parent frame is also in a proxy context, so we should return its proxy\n\t\t\t\t\treturn self.parent[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t} else {\n\t\t\t\t\t// ... then we should pretend we aren't nested and return the current window\n\t\t\t\t\treturn client.globalProxy;\n\t\t\t\t}\n\t\t\t} else if (identifier === self.document) {\n\t\t\t\treturn client.documentProxy;\n\t\t\t} else if (identifier === self.top) {\n\t\t\t\t// instead of returning top, we need to return the uppermost parent that's inside a scramjet context\n\t\t\t\tlet current = self;\n\n\t\t\t\tfor (;;) {\n\t\t\t\t\tconst test = current.parent.self;\n\t\t\t\t\tif (test === current) break; // there is no parent, actual or emulated.\n\n\t\t\t\t\t// ... then `test` represents a window outside of the proxy context, and therefore `current` is the topmost window in the proxy context\n\t\t\t\t\tif (!(SCRAMJETCLIENT in test)) break;\n\n\t\t\t\t\t// test is also insde a proxy, so we should continue up the chain\n\t\t\t\t\tcurrent = test;\n\t\t\t\t}\n\n\t\t\t\treturn current[SCRAMJETCLIENT].globalProxy;\n\t\t\t}\n\t\t}\n\n\t\treturn identifier;\n\t};\n}\n\nexport const order = 4;\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\t// the main magic of the proxy. all attempts to access any \"banned objects\" will be redirected here, and instead served a proxy object\n\t// this contrasts from how other proxies will leave the root object alone and instead attempt to catch every member access\n\t// this presents some issues (see element.ts), but makes us a good bit faster at runtime!\n\tObject.defineProperty(self, config.globals.wrapfn, {\n\t\tvalue: client.wrapfn,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\tObject.defineProperty(self, config.globals.wrapthisfn, {\n\t\tvalue: function (i) {\n\t\t\tif (i === self) return client.globalProxy;\n\n\t\t\treturn i;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\tself.$scramitize = function (v) {\n\t\tif (typeof v === \"string\" && v.includes(\"scramjet\")) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (typeof v === \"string\" && v.includes(location.origin)) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (v === self && v?.$scramjet) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (iswindow && v instanceof Document && v.defaultView?.$scramjet) {\n\t\t\tdebugger;\n\t\t}\n\n\t\treturn v;\n\t};\n\n\t// location = \"...\" can't be rewritten as wrapfn(location) = ..., so instead it will actually be rewritten as\n\t// ((t)=>$scramjet$tryset(location,\"+=\",t)||location+=t)(...);\n\t// it has to be a discrete function because there's always the possibility that \"location\" is a local variable\n\t// we have to use an IIFE to avoid duplicating side-effects in the getter\n\tObject.defineProperty(self, config.globals.trysetfn, {\n\t\tvalue: function (lhs: any, op: string, rhs: any) {\n\t\t\tif (lhs instanceof Location) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tlocationProxy.href = rhs;\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n","import { ScramjetClient } from \"./client\";\nimport { unrewriteUrl } from \"../shared\";\n\nexport class ScramjetServiceWorkerRuntime {\n\trecvport: MessagePort;\n\tconstructor(public client: ScramjetClient) {\n\t\t// @ts-ignore\n\t\tself.onconnect = (cevent: MessageEvent) => {\n\t\t\tconst port = cevent.ports[0];\n\t\t\tdbg.log(\"sw\", \"connected\");\n\n\t\t\tport.addEventListener(\"message\", (event) => {\n\t\t\t\tconsole.log(\"sw\", event.data);\n\t\t\t\tif (\"scramjet$type\" in event.data) {\n\t\t\t\t\tif (event.data.scramjet$type === \"init\") {\n\t\t\t\t\t\tthis.recvport = event.data.scramjet$port;\n\t\t\t\t\t\tthis.recvport.postMessage({ scramjet$type: \"init\" });\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleMessage.call(this, client, event.data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tport.start();\n\t\t};\n\t}\n\n\thook() {\n\t\tthis.client.global.registration = {\n\t\t\t// TODO IMPLEMENT SCOPES\n\t\t\tscope: this.client.url.href,\n\t\t\tactive: {\n\t\t\t\tscriptURL: this.client.url.href,\n\t\t\t\tstate: \"activated\",\n\t\t\t\tonstatechange: null,\n\t\t\t\tonerror: null,\n\n\t\t\t\tpostMessage: () => {},\n\t\t\t\taddEventListener: () => {},\n\t\t\t\tremoveEventListener: () => {},\n\t\t\t\tdispatchEvent: (_e: Event) => {},\n\t\t\t},\n\t\t\tshowNotification: async () => {},\n\t\t\tunregister: async () => true,\n\t\t\tupdate: async () => {},\n\t\t\tinstalling: null,\n\t\t\twaiting: null,\n\t\t};\n\n\t\t// @ts-ignore\n\t\tthis.client.global.ServiceWorkerGlobalScope = this.client.global;\n\t}\n}\n\nfunction handleMessage(\n\tthis: ScramjetServiceWorkerRuntime,\n\tclient: ScramjetClient,\n\tdata: MessageW2R\n) {\n\tconst port = this.recvport;\n\tconst type = data.scramjet$type;\n\tconst token = data.scramjet$token;\n\tconst handlers = client.eventcallbacks.get(self);\n\n\tif (type === \"fetch\") {\n\t\tdbg.log(\"ee\", data);\n\t\tconst fetchhandlers = handlers.filter((event) => event.event === \"fetch\");\n\t\tif (!fetchhandlers) return;\n\n\t\tfor (const handler of fetchhandlers) {\n\t\t\tconst request = data.scramjet$request;\n\n\t\t\tconst Request = client.natives[\"Request\"];\n\t\t\tconst fakeRequest = new Request(unrewriteUrl(request.url), {\n\t\t\t\tbody: request.body,\n\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\tmethod: request.method,\n\t\t\t\tmode: \"same-origin\",\n\t\t\t});\n\n\t\t\tObject.defineProperty(fakeRequest, \"destination\", {\n\t\t\t\tvalue: request.destinitation,\n\t\t\t});\n\n\t\t\t// TODO: clean up, maybe put into a class\n\t\t\tconst fakeFetchEvent: any = new Event(\"fetch\");\n\t\t\tfakeFetchEvent.request = fakeRequest;\n\t\t\tlet responded = false;\n\t\t\tfakeFetchEvent.respondWith = (response: Response | Promise) => {\n\t\t\t\tresponded = true;\n\t\t\t\t(async () => {\n\t\t\t\t\tresponse = await response;\n\t\t\t\t\tconst message: MessageR2W = {\n\t\t\t\t\t\tscramjet$type: \"fetch\",\n\t\t\t\t\t\tscramjet$token: token,\n\t\t\t\t\t\tscramjet$response: {\n\t\t\t\t\t\t\tbody: response.body,\n\t\t\t\t\t\t\theaders: Array.from(response.headers.entries()),\n\t\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tdbg.log(\"sw\", \"responding\", message);\n\t\t\t\t\tport.postMessage(message, [response.body]);\n\t\t\t\t})();\n\t\t\t};\n\n\t\t\tdbg.log(\"to fn\", fakeFetchEvent);\n\t\t\thandler.proxiedCallback(trustEvent(fakeFetchEvent));\n\t\t\tif (!responded) {\n\t\t\t\tconsole.log(\"sw\", \"no response\");\n\t\t\t\tport.postMessage({\n\t\t\t\t\tscramjet$type: \"fetch\",\n\t\t\t\t\tscramjet$token: token,\n\t\t\t\t\tscramjet$response: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction trustEvent(event: Event): Event {\n\treturn new Proxy(event, {\n\t\tget(target, prop, _reciever) {\n\t\t\tif (prop === \"isTrusted\") return true;\n\n\t\t\treturn Reflect.get(target, prop);\n\t\t},\n\t});\n}\n\nexport type TransferrableResponse = {\n\tbody: ReadableStream;\n\theaders: [string, string][];\n\tstatus: number;\n\tstatusText: string;\n};\n\nexport type TransferrableRequest = {\n\tbody: ReadableStream;\n\theaders: [string, string][];\n\tdestinitation: RequestDestination;\n\tmethod: Request[\"method\"];\n\tmode: Request[\"mode\"];\n\turl: string;\n};\n\ntype FetchResponseMessage = {\n\tscramjet$type: \"fetch\";\n\tscramjet$response: TransferrableResponse;\n};\n\ntype FetchRequestMessage = {\n\tscramjet$type: \"fetch\";\n\tscramjet$request: TransferrableRequest;\n};\n\n// r2w = runtime to (service) worker\n\ntype MessageTypeR2W = FetchResponseMessage;\ntype MessageTypeW2R = FetchRequestMessage;\n\ntype MessageCommon = {\n\tscramjet$type: string;\n\tscramjet$token: number;\n};\n\nexport type MessageR2W = MessageCommon & MessageTypeR2W;\nexport type MessageW2R = MessageCommon &\n\tMessageTypeW2R & { scramjet$port?: MessagePort };\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"importScripts\", {\n\t\tapply(ctx) {\n\t\t\tfor (const i in ctx.args) {\n\t\t\t\tctx.args[i] = rewriteUrl(ctx.args[i], client.meta);\n\t\t\t}\n\t\t},\n\t});\n}\n","export default {\n\tfmt: function (severity: string, message: string, ...args: any[]) {\n\t\tconst old = Error.prepareStackTrace;\n\n\t\tError.prepareStackTrace = (_, stack) => {\n\t\t\tstack.shift(); // stack();\n\t\t\tstack.shift(); // fmt();\n\t\t\tstack.shift();\n\n\t\t\tlet fmt = \"\";\n\t\t\tfor (let i = 1; i < Math.min(2, stack.length); i++) {\n\t\t\t\tif (stack[i].getFunctionName()) {\n\t\t\t\t\t// const f = stack[i].getThis()?.constructor?.name;\n\t\t\t\t\t// if (f) fmt += `${f}.`\n\t\t\t\t\tfmt += `${stack[i].getFunctionName()} -> ` + fmt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt += stack[0].getFunctionName() || \"Anonymous\";\n\n\t\t\treturn fmt;\n\t\t};\n\n\t\tconst fmt = (function stack() {\n\t\t\ttry {\n\t\t\t\tthrow new Error();\n\t\t\t} catch (e) {\n\t\t\t\treturn e.stack;\n\t\t\t}\n\t\t})();\n\n\t\tError.prepareStackTrace = old;\n\n\t\tconst fn = console[severity] || console.log;\n\t\tconst bg = {\n\t\t\tlog: \"#000\",\n\t\t\twarn: \"#f80\",\n\t\t\terror: \"#f00\",\n\t\t\tdebug: \"transparent\",\n\t\t}[severity];\n\t\tconst fg = {\n\t\t\tlog: \"#fff\",\n\t\t\twarn: \"#fff\",\n\t\t\terror: \"#fff\",\n\t\t\tdebug: \"gray\",\n\t\t}[severity];\n\t\tconst padding = {\n\t\t\tlog: 2,\n\t\t\twarn: 4,\n\t\t\terror: 4,\n\t\t\tdebug: 0,\n\t\t}[severity];\n\n\t\tfn(\n\t\t\t`%c${fmt}%c ${message}`,\n\t\t\t`\n\t\tbackground-color: ${bg};\n\t\tcolor: ${fg};\n\t\tpadding: ${padding}px;\n\t\tfont-weight: bold;\n\t\tfont-family: monospace;\n\t\tfont-size: 0.9em;\n\t`,\n\t\t\t`${severity === \"debug\" ? \"color: gray\" : \"\"}`,\n\t\t\t...args\n\t\t);\n\t},\n\tlog: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"log\", message, ...args);\n\t},\n\twarn: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"warn\", message, ...args);\n\t},\n\terror: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"error\", message, ...args);\n\t},\n\tdebug: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"debug\", message, ...args);\n\t},\n};\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.config.siteFlags[regex];\n\t\tif (new RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\n","import { $scramjet } from \"./scramjet\";\n\nexport const {\n\tutil: { BareClient, ScramjetHeaders, BareMuxConnection },\n\turl: { rewriteUrl, unrewriteUrl, rewriteBlob, unrewriteBlob },\n\trewrite: {\n\t\trewriteCss,\n\t\tunrewriteCss,\n\t\trewriteHtml,\n\t\tunrewriteHtml,\n\t\trewriteSrcset,\n\t\trewriteJs,\n\t\trewriteHeaders,\n\t\trewriteWorkers,\n\t\thtmlRules,\n\t},\n\tCookieStore,\n} = $scramjet.shared;\n\nexport const config = $scramjet.config;\n","// see types.d.ts for what these mean\nexport const SCRAMJETCLIENT = Symbol.for(\"scramjet client global\");\nexport const SCRAMJETFRAME = Symbol.for(\"scramjet frame handle\");\n"],"names":["ScramjetClient","global","CookieStore","Map","SCRAMJETCLIENT","console","Error","iswindow","createDocumentProxy","createLocationProxy","createGlobalProxy","createWrapFn","BareClient","Promise","resolve","addEventListener","data","Proxy","target","prop","split","realProp","realTarget","a","b","original","Reflect","args","that","nativeGetOwnPropertyDescriptor","value","client","base","url","frag","undefined","URL","frame","sframe","SCRAMJETFRAME","currentwin","cookiestr","context","modules","key","module","aorder","unrewriteUrl","ev","NavigateEvent","rewriteUrl","name","handler","Array","n","h","constructor","argArray","newTarget","returnValue","earlyreturn","ctx","r","fn","thisArg","pst","err","s","location","config","Object","getOwnPropertyDescriptorHandler","descriptor","oldDescriptor","v","desc","self","newValue","_self","map","proxy","_receiver","namespace","NamedNodeMap","isNaN","Number","keys","controller","rewriteCss","unrewriteCss","style","t","p","CSSStyleDeclaration","rewriteHtml","encoder","TextEncoder","attrObject","urlinterfaces","originalhrefs","attr","element","i","href","attrib","cleaned","attrNames","ruleList","htmlRules","rule","_ctx","_namespace","newval","rewriteJs","btoa","byte","String","scriptSource","atob","unrewriteHtml","realwin","newclient","doc","scram","Document","UrlChangeEvent","f","win","order","enabled","flagEnabled","disabled","_client","Navigator","registrationmap","WeakMap","registration","fakeRegistration","EventTarget","handle","worker","state","index","realLocalStorage","property","attributes","localStorageProxy","sessionStorageProxy","Event","ScramjetContextInit","window","UNSAFE_GLOBALS","Window","isworker","issw","isdedicated","isshared","isemulatedsw","dbg","loadCodecs","runtime","ScramjetServiceWorkerRuntime","document","Location","fakeLocation","descriptorSource","native","nativeFunction","log","_v","rewriteBlob","unrewriteBlob","argdbg","arg","recurse","Symbol","ar","e","closure","error","stack","newstack","lines","line","l","_value","js","indirectEval","indirection","realOnEvent","handlers","wraplistener","listener","realEvent","type","_target","reciever","unproxy","origlistener","proxylistener","arr","targets","rewriteFunction","stringifiedFunction","content","addToExternrefTable0","obj","idx","handleError","cachedTextDecoder","TextDecoder","cachedUint8ArrayMemory0","getUint8ArrayMemory0","Uint8Array","getStringFromWasm0","ptr","len","WASM_VECTOR_LEN","cachedTextEncoder","encodeString","view","buf","passStringToWasm0","malloc","realloc","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","DataView","isLikeNone","x","takeFromExternrefTable0","__wbg_load","imports","Response","WebAssembly","bytes","instance","__wbg_get_imports","arg0","arg1","arg2","arg3","arguments","Function","ptr1","c","crypto","len1","globalThis","table","v0","getArrayU8FromWasm0","__wbg_init_memory","memory","__wbg_finalize_init","thread_stack_size","__wbg_init","module_or_path","Request","fetch","initSync","decoder","tryCanParseURL","origin","resolved","meta","text","rewriteJsNaiive","$scramjet","rewriteJsWrapper","input","out","before","performance","rewrite_js","script_url","scramjet","ptr0","len0","ptr2","len2","rewrite_js_from_arraybuffer","passArray8ToWasm0","err1","after","errors","duration","timespan","overhead","prefixed","realUrl","pollutant","POLLUTANT","callerClient","callerGlobalThisProxied","wrappedPostMessage","toproxy","pollution","socketmap","fakeWebSocket","trustEvent","barews","fakeEventSend","fakeev","CloseEvent","payload","Blob","ArrayBuffer","MessageEvent","ws","ARGS","HEADERS","headers","sab","SharedArrayBuffer","now","status","headersLength","headersab","bodyLength","bodyab","body","parser","DOMParser","header","match","re","RegExp","sourcemaps","tag","sourcemap","rewrites","rewritelen","cursor","start","size","end","str","scramtag_ident","stringified","newString","scramtagstart","firstspace","parseInt","scramtagend","maps","j","getCtx","setCtx","call","conn","BareMuxConnection","port","identifier","eval","current","test","lhs","op","rhs","locationProxy","cevent","event","handleMessage","_e","token","fetchhandlers","request","fakeRequest","Headers","fakeFetchEvent","responded","response","message","_reciever","severity","old","_","fmt","Math","COMMITHASH","VERSION","flag","regex","partialflags","ScramjetHeaders","rewriteSrcset","rewriteHeaders","rewriteWorkers"],"mappings":"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"} \ No newline at end of file diff --git a/views/scram/scramjet.controller.js b/views/scram/scramjet.controller.js new file mode 100644 index 00000000..2888d040 --- /dev/null +++ b/views/scram/scramjet.controller.js @@ -0,0 +1,11 @@ +(()=>{"use strict";var e={1762:function(e,r,t){t.d(r,{Z:function(){return o}});let o={fmt:function(e,r,...t){let o=Error.prepareStackTrace;Error.prepareStackTrace=(e,r)=>{r.shift(),r.shift(),r.shift();let t="";for(let e=1;e `+t);return t+=r[0].getFunctionName()||"Anonymous"};let n=function(){try{throw Error()}catch(e){return e.stack}}();Error.prepareStackTrace=o;let c=console[e]||console.log;c(`%c${n}%c ${r}`,` + background-color: ${{log:"#000",warn:"#f80",error:"#f00",debug:"transparent"}[e]}; + color: ${{log:"#fff",warn:"#fff",error:"#fff",debug:"gray"}[e]}; + padding: ${{log:2,warn:4,error:4,debug:0}[e]}px; + font-weight: bold; + font-family: monospace; + font-size: 0.9em; + `,`${"debug"===e?"color: gray":""}`,...t)},log:function(e,...r){this.fmt("log",e,...r)},warn:function(e,...r){this.fmt("warn",e,...r)},error:function(e,...r){this.fmt("error",e,...r)},debug:function(e,...r){this.fmt("debug",e,...r)}}}},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var c=r[o]={exports:{}};return e[o](c,c.exports,t),c.exports}t.d=function(e,r){for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)};let o=Symbol.for("scramjet client global"),n=Symbol.for("scramjet frame handle");var c=t(1762).Z;class s extends EventTarget{controller;frame;constructor(e,r){super(),this.controller=e,this.frame=r,r[n]=this}get client(){return this.frame.contentWindow.window[o]}get url(){return this.client.url}go(e){e instanceof URL&&(e=e.toString()),c.log("navigated to",e),this.frame.src=this.controller.encodeUrl(e)}back(){this.frame.contentWindow?.history.back()}forward(){this.frame.contentWindow?.history.forward()}reload(){this.frame.contentWindow?.location.reload()}}!("$scramjet"in self)&&(self.$scramjet={version:{build:"1efcf85",version:"1.0.2-dev"},codec:{},flagEnabled:function(e,r){let t=i.config.flags[e];for(let t in i.config.siteFlags){let o=i.config.siteFlags[t];if(new RegExp(t).test(r.href)&&e in o)return o[e]}return t}});let i=self.$scramjet,a=Function;function f(){i.codec.encode=a("url",i.config.codec.encode),i.codec.decode=a("url",i.config.codec.decode)}var l=t(1762).Z;window.ScramjetController=class e{db;constructor(e){let r={prefix:"/scramjet/",globals:{wrapfn:"$scramjet$wrap",wrapthisfn:"$scramjet$wrapthis",trysetfn:"$scramjet$tryset",importfn:"$scramjet$import",rewritefn:"$scramjet$rewrite",metafn:"$scramjet$meta",setrealmfn:"$scramjet$setrealm",pushsourcemapfn:"$scramjet$pushsourcemap"},files:{wasm:"/scramjet.wasm.js",shared:"/scramjet.shared.js",worker:"/scramjet.worker.js",client:"/scramjet.client.js",sync:"/scramjet.sync.js"},flags:{serviceworkers:!1,syncxhr:!1,naiiveRewriter:!1,strictRewrites:!0,rewriterLogs:!0,captureErrors:!0,cleanErrors:!1,scramitize:!1,sourcemaps:!1},siteFlags:{},codec:{encode:`if (!url) return url; + return encodeURIComponent(url);`,decode:`if (!url) return url; + return decodeURIComponent(url);`}},t=(e,r)=>{for(let o in r)r[o]instanceof Object&&o in e&&Object.assign(r[o],t(e[o],r[o]));return Object.assign(e||{},r)};i.config=t(r,e)}async init(e){f(),await this.openIDB();let r=await navigator.serviceWorker.register(e);return l.log("service worker registered"),r}createFrame(e){return!e&&(e=document.createElement("iframe")),new s(this,e)}encodeUrl(e){return e instanceof URL&&(e=e.toString()),i.config.prefix+i.codec.encode(e)}decodeUrl(e){return e instanceof URL&&(e=e.toString()),i.codec.decode(e)}async openIDB(){let e=indexedDB.open("$scramjet",1);return new Promise((r,t)=>{e.onsuccess=async()=>{this.db=e.result,await this.#e(),r(e.result)},e.onupgradeneeded=()=>{let r=e.result;!r.objectStoreNames.contains("config")&&r.createObjectStore("config"),!r.objectStoreNames.contains("cookies")&&r.createObjectStore("cookies")},e.onerror=()=>t(e.error)})}async #e(){if(!this.db){console.error("Store not ready!");return}let e=this.db.transaction("config","readwrite").objectStore("config").put(i.config,"config");return new Promise((r,t)=>{e.onsuccess=r,e.onerror=t})}async modifyConfig(e){i.config=Object.assign({},i.config,e),f(),await this.#e()}}})(); +//# sourceMappingURL=scramjet.controller.js.map \ No newline at end of file diff --git a/views/scram/scramjet.controller.js.map b/views/scram/scramjet.controller.js.map new file mode 100644 index 00000000..a7301eae --- /dev/null +++ b/views/scram/scramjet.controller.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scramjet.controller.js","sources":["webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/symbols.ts","webpack://@mercuryworkshop/scramjet/./src/controller/frame.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./src/controller/index.ts"],"sourcesContent":["export default {\n\tfmt: function (severity: string, message: string, ...args: any[]) {\n\t\tconst old = Error.prepareStackTrace;\n\n\t\tError.prepareStackTrace = (_, stack) => {\n\t\t\tstack.shift(); // stack();\n\t\t\tstack.shift(); // fmt();\n\t\t\tstack.shift();\n\n\t\t\tlet fmt = \"\";\n\t\t\tfor (let i = 1; i < Math.min(2, stack.length); i++) {\n\t\t\t\tif (stack[i].getFunctionName()) {\n\t\t\t\t\t// const f = stack[i].getThis()?.constructor?.name;\n\t\t\t\t\t// if (f) fmt += `${f}.`\n\t\t\t\t\tfmt += `${stack[i].getFunctionName()} -> ` + fmt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt += stack[0].getFunctionName() || \"Anonymous\";\n\n\t\t\treturn fmt;\n\t\t};\n\n\t\tconst fmt = (function stack() {\n\t\t\ttry {\n\t\t\t\tthrow new Error();\n\t\t\t} catch (e) {\n\t\t\t\treturn e.stack;\n\t\t\t}\n\t\t})();\n\n\t\tError.prepareStackTrace = old;\n\n\t\tconst fn = console[severity] || console.log;\n\t\tconst bg = {\n\t\t\tlog: \"#000\",\n\t\t\twarn: \"#f80\",\n\t\t\terror: \"#f00\",\n\t\t\tdebug: \"transparent\",\n\t\t}[severity];\n\t\tconst fg = {\n\t\t\tlog: \"#fff\",\n\t\t\twarn: \"#fff\",\n\t\t\terror: \"#fff\",\n\t\t\tdebug: \"gray\",\n\t\t}[severity];\n\t\tconst padding = {\n\t\t\tlog: 2,\n\t\t\twarn: 4,\n\t\t\terror: 4,\n\t\t\tdebug: 0,\n\t\t}[severity];\n\n\t\tfn(\n\t\t\t`%c${fmt}%c ${message}`,\n\t\t\t`\n\t\tbackground-color: ${bg};\n\t\tcolor: ${fg};\n\t\tpadding: ${padding}px;\n\t\tfont-weight: bold;\n\t\tfont-family: monospace;\n\t\tfont-size: 0.9em;\n\t`,\n\t\t\t`${severity === \"debug\" ? \"color: gray\" : \"\"}`,\n\t\t\t...args\n\t\t);\n\t},\n\tlog: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"log\", message, ...args);\n\t},\n\twarn: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"warn\", message, ...args);\n\t},\n\terror: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"error\", message, ...args);\n\t},\n\tdebug: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"debug\", message, ...args);\n\t},\n};\n","// see types.d.ts for what these mean\nexport const SCRAMJETCLIENT = Symbol.for(\"scramjet client global\");\nexport const SCRAMJETFRAME = Symbol.for(\"scramjet frame handle\");\n","import { ScramjetController } from \".\";\nimport type { ScramjetClient } from \"../client/client\";\nimport { SCRAMJETCLIENT, SCRAMJETFRAME } from \"../symbols\";\n\nexport class ScramjetFrame extends EventTarget {\n\tconstructor(\n\t\tprivate controller: ScramjetController,\n\t\tpublic frame: HTMLIFrameElement\n\t) {\n\t\tsuper();\n\t\tframe[SCRAMJETFRAME] = this;\n\t}\n\n\tget client(): ScramjetClient {\n\t\treturn this.frame.contentWindow.window[SCRAMJETCLIENT];\n\t}\n\n\tget url(): URL {\n\t\treturn this.client.url;\n\t}\n\n\tgo(url: string | URL) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\tdbg.log(\"navigated to\", url);\n\n\t\tthis.frame.src = this.controller.encodeUrl(url);\n\t}\n\n\tback() {\n\t\tthis.frame.contentWindow?.history.back();\n\t}\n\n\tforward() {\n\t\tthis.frame.contentWindow?.history.forward();\n\t}\n\n\treload() {\n\t\tthis.frame.contentWindow?.location.reload();\n\t}\n}\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.config.siteFlags[regex];\n\t\tif (new RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\n","import { ScramjetConfig } from \"../types\";\nimport { ScramjetFrame } from \"./frame\";\nimport { $scramjet, loadCodecs } from \"../scramjet\";\n\nexport class ScramjetController {\n\tprivate db: IDBDatabase;\n\n\tconstructor(config: Partial) {\n\t\t// sane ish defaults\n\t\tconst defaultConfig: ScramjetConfig = {\n\t\t\tprefix: \"/scramjet/\",\n\t\t\tglobals: {\n\t\t\t\twrapfn: \"$scramjet$wrap\",\n\t\t\t\twrapthisfn: \"$scramjet$wrapthis\",\n\t\t\t\ttrysetfn: \"$scramjet$tryset\",\n\t\t\t\timportfn: \"$scramjet$import\",\n\t\t\t\trewritefn: \"$scramjet$rewrite\",\n\t\t\t\tmetafn: \"$scramjet$meta\",\n\t\t\t\tsetrealmfn: \"$scramjet$setrealm\",\n\t\t\t\tpushsourcemapfn: \"$scramjet$pushsourcemap\",\n\t\t\t},\n\t\t\tfiles: {\n\t\t\t\twasm: \"/scramjet.wasm.js\",\n\t\t\t\tshared: \"/scramjet.shared.js\",\n\t\t\t\tworker: \"/scramjet.worker.js\",\n\t\t\t\tclient: \"/scramjet.client.js\",\n\t\t\t\tsync: \"/scramjet.sync.js\",\n\t\t\t},\n\t\t\tflags: {\n\t\t\t\tserviceworkers: false,\n\t\t\t\tsyncxhr: false,\n\t\t\t\tnaiiveRewriter: false,\n\t\t\t\tstrictRewrites: true,\n\t\t\t\trewriterLogs: true,\n\t\t\t\tcaptureErrors: true,\n\t\t\t\tcleanErrors: false,\n\t\t\t\tscramitize: false,\n\t\t\t\tsourcemaps: false,\n\t\t\t},\n\t\t\tsiteFlags: {},\n\t\t\tcodec: {\n\t\t\t\tencode: `if (!url) return url;\n\t\t\t\t\treturn encodeURIComponent(url);`,\n\t\t\t\tdecode: `if (!url) return url;\n\t\t\t\t\treturn decodeURIComponent(url);`,\n\t\t\t},\n\t\t};\n\n\t\tconst deepMerge = (target: any, source: any): any => {\n\t\t\tfor (const key in source) {\n\t\t\t\tif (source[key] instanceof Object && key in target) {\n\t\t\t\t\tObject.assign(source[key], deepMerge(target[key], source[key]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Object.assign(target || {}, source);\n\t\t};\n\n\t\t$scramjet.config = deepMerge(defaultConfig, config);\n\t}\n\n\tasync init(serviceWorkerPath: string): Promise {\n\t\tloadCodecs();\n\n\t\tawait this.openIDB();\n\n\t\tconst reg = await navigator.serviceWorker.register(serviceWorkerPath);\n\t\tdbg.log(\"service worker registered\");\n\n\t\treturn reg;\n\t}\n\n\tcreateFrame(frame?: HTMLIFrameElement): ScramjetFrame {\n\t\tif (!frame) {\n\t\t\tframe = document.createElement(\"iframe\");\n\t\t}\n\n\t\treturn new ScramjetFrame(this, frame);\n\t}\n\n\tencodeUrl(url: string | URL): string {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\treturn $scramjet.config.prefix + $scramjet.codec.encode(url);\n\t}\n\n\tdecodeUrl(url: string | URL) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\treturn $scramjet.codec.decode(url);\n\t}\n\n\tasync openIDB(): Promise {\n\t\tconst db = indexedDB.open(\"$scramjet\", 1);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tdb.onsuccess = async () => {\n\t\t\t\tthis.db = db.result;\n\t\t\t\tawait this.#saveConfig();\n\t\t\t\tresolve(db.result);\n\t\t\t};\n\t\t\tdb.onupgradeneeded = () => {\n\t\t\t\tconst res = db.result;\n\t\t\t\tif (!res.objectStoreNames.contains(\"config\")) {\n\t\t\t\t\tres.createObjectStore(\"config\");\n\t\t\t\t}\n\t\t\t\tif (!res.objectStoreNames.contains(\"cookies\")) {\n\t\t\t\t\tres.createObjectStore(\"cookies\");\n\t\t\t\t}\n\t\t\t};\n\t\t\tdb.onerror = () => reject(db.error);\n\t\t});\n\t}\n\n\tasync #saveConfig() {\n\t\tif (!this.db) {\n\t\t\tconsole.error(\"Store not ready!\");\n\n\t\t\treturn;\n\t\t}\n\t\tconst tx = this.db.transaction(\"config\", \"readwrite\");\n\t\tconst store = tx.objectStore(\"config\");\n\t\tconst req = store.put($scramjet.config, \"config\");\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\treq.onsuccess = resolve;\n\t\t\treq.onerror = reject;\n\t\t});\n\t}\n\n\tasync modifyConfig(config: ScramjetConfig) {\n\t\t$scramjet.config = Object.assign({}, $scramjet.config, config);\n\t\tloadCodecs();\n\n\t\tawait this.#saveConfig();\n\t}\n}\n\nwindow.ScramjetController = ScramjetController;\n"],"names":["severity","message","args","old","Error","_","stack","fmt","i","Math","e","fn","console","SCRAMJETCLIENT","Symbol","SCRAMJETFRAME","ScramjetFrame","EventTarget","controller","frame","url","URL","dbg","self","COMMITHASH","VERSION","flagEnabled","flag","value","$scramjet","regex","partialflags","RegExp","nativeFunction","Function","loadCodecs","window","ScramjetController","config","defaultConfig","deepMerge","target","source","key","Object","serviceWorkerPath","reg","navigator","document","db","indexedDB","Promise","resolve","reject","res","req","store","tx"],"mappings":"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"} \ No newline at end of file diff --git a/views/scram/scramjet.shared.js b/views/scram/scramjet.shared.js new file mode 100644 index 00000000..fe771e6b --- /dev/null +++ b/views/scram/scramjet.shared.js @@ -0,0 +1,30 @@ +(()=>{"use strict";let e,a,t;var i,s,o,n,r,c,l,u,d,m,h,g,p,b,k,f,y={799:function(e){var a={decodeValues:!0,map:!1,silent:!1};function t(e){return"string"==typeof e&&!!e.trim()}function i(e,i){var s=e.split(";").filter(t),o=function(e){var a="",t="",i=e.split("=");return i.length>1?(a=i.shift(),t=i.join("=")):t=e,{name:a,value:t}}(s.shift()),n=o.name,r=o.value;i=i?Object.assign({},a,i):a;try{r=i.decodeValues?decodeURIComponent(r):r}catch(e){console.error("set-cookie-parser encountered an error while decoding a cookie with value '"+r+"'. Set options.decodeValues to false to disable this feature.",e)}var c={name:n,value:r};return s.forEach(function(e){var a=e.split("="),t=a.shift().trimLeft().toLowerCase(),i=a.join("=");"expires"===t?c.expires=new Date(i):"max-age"===t?c.maxAge=parseInt(i,10):"secure"===t?c.secure=!0:"httponly"===t?c.httpOnly=!0:"samesite"===t?c.sameSite=i:"partitioned"===t?c.partitioned=!0:c[t]=i}),c}function s(e,s){if(s=s?Object.assign({},a,s):a,!e)return s.map?{}:[];if(e.headers){if("function"==typeof e.headers.getSetCookie)e=e.headers.getSetCookie();else if(e.headers["set-cookie"])e=e.headers["set-cookie"];else{var o=e.headers[Object.keys(e.headers).find(function(e){return"set-cookie"===e.toLowerCase()})];!o&&e.headers.cookie&&!s.silent&&console.warn("Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."),e=o}}return(!Array.isArray(e)&&(e=[e]),s.map)?e.filter(t).reduce(function(e,a){var t=i(a,s);return e[t.name]=t,e},{}):e.filter(t).map(function(e){return i(e,s)})}e.exports=s,e.exports.parse=s,e.exports.parseString=i,e.exports.splitCookiesString=function(e){if(Array.isArray(e))return e;if("string"!=typeof e)return[];var a,t,i,s,o,n=[],r=0;function c(){for(;r=e.length)&&n.push(e.substring(a,e.length))}return n}}},w={};function v(e){var a=w[e];if(void 0!==a)return a.exports;var t=w[e]={exports:{}};return y[e](t,t.exports,v),t.exports}v.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return v.d(a,{a:a}),a},v.d=function(e,a){for(var t in a)v.o(a,t)&&!v.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},v.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},!("$scramjet"in self)&&(self.$scramjet={version:{build:"1efcf85",version:"1.0.2-dev"},codec:{},flagEnabled:z});let x=self.$scramjet;function z(e,a){let t=x.config.flags[e];for(let t in x.config.siteFlags){let i=x.config.siteFlags[t];if(new RegExp(t).test(a.href)&&e in i)return i[e]}return t}function j(a){let t=e.__externref_table_alloc();return e.__wbindgen_export_2.set(t,a),t}function S(a,t){try{return a.apply(this,t)}catch(t){let a=j(t);e.__wbindgen_exn_store(a)}}let q="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&q.decode();let A=null;function E(){return(null===A||A.buffer!==e.memory.buffer)&&(A=new Uint8Array(e.memory.buffer)),A}function T(e,a){return e>>>=0,q.decode(E().slice(e,e+a))}let I=0,N="undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},C=function(e,a){let t=N.encode(e);return a.set(t),{read:e.length,written:t.length}};function _(e,a,t){if(void 0===t){let t=N.encode(e),i=a(t.length,1)>>>0;return E().subarray(i,i+t.length).set(t),I=t.length,i}let i=e.length,s=a(i,1)>>>0,o=E(),n=0;for(;n127)break;o[s+n]=a}if(n!==i){0!==n&&(e=e.slice(n)),s=t(s,i,i=n+3*e.length,1)>>>0;let a=C(e,E().subarray(s+n,s+i));n+=a.written,s=t(s,i,n,1)>>>0}return I=n,s}let L=null;function D(){return(null===L||L.buffer!==e.memory.buffer)&&(L=new DataView(e.memory.buffer)),L}function R(e){return null==e}function B(a){let t=e.__wbindgen_export_2.get(a);return e.__externref_table_dealloc(a),t}async function M(e,a){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,a)}catch(a){if("application/wasm"!=e.headers.get("Content-Type"))console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",a);else throw a}let t=await e.arrayBuffer();return await WebAssembly.instantiate(t,a)}{let t=await WebAssembly.instantiate(e,a);return t instanceof WebAssembly.Instance?{instance:t,module:e}:t}}function O(){let a={};return a.wbg={},a.wbg.__wbg_call_3b770f0d6eb4720e=function(){return S(function(e,a,t,i){return e.call(a,t,i)},arguments)},a.wbg.__wbg_call_500db948e69c7330=function(){return S(function(e,a,t){return e.call(a,t)},arguments)},a.wbg.__wbg_call_b0d8e36992d9900d=function(){return S(function(e,a){return e.call(a)},arguments)},a.wbg.__wbg_get_bbccf8970793c087=function(){return S(function(e,a){return Reflect.get(e,a)},arguments)},a.wbg.__wbg_new_17f755666e48d1d8=function(){return S(function(e,a){return new URL(T(e,a))},arguments)},a.wbg.__wbg_new_254fa9eac11932ae=function(){return[]},a.wbg.__wbg_new_688846f374351c92=function(){return{}},a.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d=function(e,a){return Function(T(e,a))},a.wbg.__wbg_newwithbase_aa2c471fe3eacc2b=function(){return S(function(e,a,t,i){return new URL(T(e,a),T(t,i))},arguments)},a.wbg.__wbg_now_62a101fe35b60230=function(e){return e.now()},a.wbg.__wbg_scramtag_bd98edaa0eaec45e=function(a){let t=_("10000000000".replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),e.__wbindgen_malloc,e.__wbindgen_realloc),i=I;D().setInt32(a+4,i,!0),D().setInt32(a+0,t,!0)},a.wbg.__wbg_set_4e647025551483bd=function(){return S(function(e,a,t){return Reflect.set(e,a,t)},arguments)},a.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3=function(){let e="undefined"==typeof global?null:global;return R(e)?0:j(e)},a.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb=function(){let e="undefined"==typeof globalThis?null:globalThis;return R(e)?0:j(e)},a.wbg.__wbg_static_accessor_SELF_1dc398a895c82351=function(){let e="undefined"==typeof self?null:self;return R(e)?0:j(e)},a.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a=function(){let e="undefined"==typeof window?null:window;return R(e)?0:j(e)},a.wbg.__wbg_toString_a491ccf7be1ca5c9=function(e){return e.toString()},a.wbg.__wbg_toString_cbcf95f260c441ae=function(e){return e.toString()},a.wbg.__wbindgen_boolean_get=function(e){return"boolean"==typeof e?e?1:0:2},a.wbg.__wbindgen_error_new=function(e,a){return Error(T(e,a))},a.wbg.__wbindgen_init_externref_table=function(){let a=e.__wbindgen_export_2,t=a.grow(4);a.set(0,void 0),a.set(t+0,void 0),a.set(t+1,null),a.set(t+2,!0),a.set(t+3,!1)},a.wbg.__wbindgen_is_function=function(e){return"function"==typeof e},a.wbg.__wbindgen_is_undefined=function(e){return void 0===e},a.wbg.__wbindgen_number_new=function(e){return e},a.wbg.__wbindgen_string_get=function(a,t){let i="string"==typeof t?t:void 0;var s=R(i)?0:_(i,e.__wbindgen_malloc,e.__wbindgen_realloc),o=I;D().setInt32(a+4,o,!0),D().setInt32(a+0,s,!0)},a.wbg.__wbindgen_string_new=function(e,a){return T(e,a)},a.wbg.__wbindgen_throw=function(e,a){throw Error(T(e,a))},a.wbg.__wbindgen_uint8_array_new=function(a,t){var i,s,o=(i=a,s=t,i>>>=0,E().subarray(i/1,i/1+s)).slice();return e.__wbindgen_free(a,1*t,1),o},a}function $(e,a){e.wbg.memory=a||new WebAssembly.Memory({initial:18,maximum:16384,shared:!0})}function U(a,t,i){if(e=a.exports,V.__wbindgen_wasm_module=t,L=null,A=null,void 0!==i&&("number"!=typeof i||0===i||i%65536!=0))throw"invalid stack size";return e.__wbindgen_start(i),e}async function V(a,t){let i;if(void 0!==e)return e;void 0!==a&&(Object.getPrototypeOf(a)===Object.prototype?{module_or_path:a,memory:t,thread_stack_size:i}=a:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===a&&(a=new URL("wasm_bg.wasm",""));let s=O();("string"==typeof a||"function"==typeof Request&&a instanceof Request||"function"==typeof URL&&a instanceof URL)&&(a=fetch(a)),$(s,t);let{instance:o,module:n}=await M(await a,s);return U(o,n,i)}!function(a,t){let i;if(void 0!==e)return;void 0!==a&&(Object.getPrototypeOf(a)===Object.prototype?{module:a,memory:t,thread_stack_size:i}=a:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let s=O();$(s,t),!(a instanceof WebAssembly.Module)&&(a=new WebAssembly.Module(a)),U(new WebAssembly.Instance(a,s),a,i)}({module:new WebAssembly.Module(Uint8Array.from(atob(self.WASM),e=>e.charCodeAt(0)))}),Error.stackTraceLimit=50;let P=new TextDecoder;function W(a,t,i){if(z("naiiveRewriter",i.origin)){let e="string"==typeof a?a:new TextDecoder().decode(a);return console.log("naiive"),function(e){return"string"!=typeof e&&(e=new TextDecoder().decode(e)),` + with (${x.config.globals.wrapfn}(globalThis)) { + + ${e} + + } + `}(e)}return a=function(a,t,i){let s;let o=performance.now();try{s="string"==typeof a?function(a,t,i,s){let o=_(a,e.__wbindgen_malloc,e.__wbindgen_realloc),n=I,r=_(t,e.__wbindgen_malloc,e.__wbindgen_realloc),c=I,l=_(i,e.__wbindgen_malloc,e.__wbindgen_realloc),u=I,d=e.rewrite_js(o,n,r,c,l,u,s);if(d[2])throw B(d[1]);return B(d[0])}(a,i.base.href,t||"(unknown)",x):function(a,t,i,s){let o=function(e,a){let t=a(1*e.length,1)>>>0;return E().set(e,t/1),I=e.length,t}(a,e.__wbindgen_malloc),n=I,r=_(t,e.__wbindgen_malloc,e.__wbindgen_realloc),c=I,l=_(i,e.__wbindgen_malloc,e.__wbindgen_realloc),u=I,d=e.rewrite_js_from_arraybuffer(o,n,r,c,l,u,s);if(d[2])throw B(d[1]);return B(d[0])}(new Uint8Array(a),i.base.href,t||"(unknown)",x)}catch(e){throw console.error("failed rewriting js for",t,e,a),e.message=`failed rewriting js for "${t}": ${e.message}`,e}let n=performance.now(),{js:r,errors:c,duration:l}=s;if(z("rewriterLogs",i.base))for(let e of c)console.error("oxc parse error",e);if(z("rewriterLogs",i.base)){let e;e=l<1n?"BLAZINGLY FAST":l<500n?"decent speed":"really slow";let a=(n-o-Number(l)).toFixed(2);console.log(`oxc rewrite for "${t||"(unknown)"}" was ${e} (${l}ms; ${a}ms overhead)`)}return"string"==typeof a?P.decode(r):r}(a,t,i)}function F(e,a){try{return new URL(e,a)}catch{return null}}function G(e){let a=new URL(e.substring(5));return"blob:"+location.origin+a.pathname}function H(e,a){if(e instanceof URL&&(e=e.toString()),e.startsWith("javascript:"))return"javascript:"+W(e.slice(11),"(javascript: url)",a);if(e.startsWith("blob:"))return location.origin+x.config.prefix+e;if(e.startsWith("data:"))return location.origin+x.config.prefix+e;else{if(e.startsWith("mailto:")||e.startsWith("about:"))return e;let t=a.base.href;t.startsWith("about:")&&(t=Q(self.location.href));let i=F(e,t);return i?location.origin+x.config.prefix+x.codec.encode(i.href):e}}function Q(e){e instanceof URL&&(e=e.toString());let a=location.origin+x.config.prefix;if(e.startsWith("javascript:"))return e;if(e.startsWith("blob:"))return e;if(e.startsWith(a+"blob:"))return e.substring(a.length);else if(e.startsWith(a+"data:"))return e.substring(a.length);else if(e.startsWith("mailto:")||e.startsWith("about:"))return e;else if(F(e))return x.codec.decode(e.slice((location.origin+x.config.prefix).length));else return e}function Z(e,a){return J("rewrite",e,a)}function J(e,a,t){return a=(a=(a=new String(a).toString()).replace(/url\(['"]?(.+?)['"]?\)/gm,(a,i)=>{let s="rewrite"===e?H(i.trim(),t):Q(i.trim());return a.replace(i,s)})).replace(/@import\s+(url\s*?\(.{0,9999}?\)|['"].{0,9999}?['"]|.{0,9999}?)($|\s|;)/gm,(a,i)=>a.replace(i,i.replace(/^(url\(['"]?|['"]|)(.+?)(['"]|['"]?\)|)$/gm,(a,i,s,o)=>{if(i.startsWith("url"))return a;let n="rewrite"===e?H(s.trim(),t):Q(s.trim());return`${i}${n}${o}`})))}let X=new Uint16Array('ᵁ<\xd5ıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig耻\xc6䃆P耻&䀦cute耻\xc1䃁reve;䄂Āiyx}rc耻\xc2䃂;䐐r;쀀\ud835\udd04rave耻\xc0䃀pha;䎑acr;䄀d;橓Āgp\x9d\xa1on;䄄f;쀀\ud835\udd38plyFunction;恡ing耻\xc5䃅Ācs\xbe\xc3r;쀀\ud835\udc9cign;扔ilde耻\xc3䃃ml耻\xc4䃄Ѐaceforsu\xe5\xfb\xfeėĜĢħĪĀcr\xea\xf2kslash;或Ŷ\xf6\xf8;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀\ud835\udd05pf;쀀\ud835\udd39eve;䋘c\xf2ēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻\xa9䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻\xc7䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷\xf2ſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀\ud835\udc9epĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀\ud835\udd07Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀\ud835\udd3bƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegra\xecȹoɴ͹\0\0ͻ\xbb͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔e\xe5ˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀\ud835\udc9frok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻\xd0䃐cute耻\xc9䃉ƀaiyӒӗӜron;䄚rc耻\xca䃊;䐭ot;䄖r;쀀\ud835\udd08rave耻\xc8䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀\ud835\udd3csilon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻\xcb䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀\ud835\udd09lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀\ud835\udd3dAll;戀riertrf;愱c\xf2׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀\ud835\udd0a;拙pf;쀀\ud835\udd3eeater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀\ud835\udca2;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅ\xf2کrok;䄦mpńېۘownHum\xf0įqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻\xcd䃍Āiyܓܘrc耻\xce䃎;䐘ot;䄰r;愑rave耻\xcc䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lie\xf3ϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀\ud835\udd40a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻\xcf䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀\ud835\udd0dpf;쀀\ud835\udd41ǣ߇\0ߌr;쀀\ud835\udca5rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀\ud835\udd0epf;쀀\ud835\udd42cr;쀀\ud835\udca6րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ight\xe1Μs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀\ud835\udd0fĀ;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊight\xe1οight\xe1ϊf;쀀\ud835\udd43erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂ\xf2ࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀\ud835\udd10nusPlus;戓pf;쀀\ud835\udd44c\xf2੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘\xeb૙eryThi\xee૙tedĀGL૸ଆreaterGreate\xf2ٳessLes\xf3ੈLine;䀊r;쀀\ud835\udd11ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀\ud835\udca9ilde耻\xd1䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻\xd3䃓Āiy෎ීrc耻\xd4䃔;䐞blac;䅐r;쀀\ud835\udd12rave耻\xd2䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀\ud835\udd46enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀\ud835\udcaaash耻\xd8䃘iŬื฼de耻\xd5䃕es;樷ml耻\xd6䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀\ud835\udd13i;䎦;䎠usMinus;䂱Āipຢອncareplan\xe5ڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀\ud835\udcab;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀\ud835\udd14pf;愚cr;쀀\ud835\udcac؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻\xae䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r\xbbཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀\ud835\udd16ortȀDLRUᄪᄴᄾᅉownArrow\xbbОeftArrow\xbb࢚ightArrow\xbb࿝pArrow;憑gma;䎣allCircle;战pf;쀀\ud835\udd4aɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀\ud835\udcaear;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Th\xe1ྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et\xbbሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻\xde䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀\ud835\udd17Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀\ud835\udd4bipleDot;惛Āctዖዛr;쀀\ud835\udcafrok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻\xda䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻\xdb䃛;䐣blac;䅰r;쀀\ud835\udd18rave耻\xd9䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀\ud835\udd4cЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥own\xe1ϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀\ud835\udcb0ilde;䅨ml耻\xdc䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀\ud835\udd19pf;쀀\ud835\udd4dcr;쀀\ud835\udcb1dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀\ud835\udd1apf;쀀\ud835\udd4ecr;쀀\ud835\udcb2Ȁfiosᓋᓐᓒᓘr;쀀\ud835\udd1b;䎞pf;쀀\ud835\udd4fcr;쀀\ud835\udcb3ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻\xdd䃝Āiyᔉᔍrc;䅶;䐫r;쀀\ud835\udd1cpf;쀀\ud835\udd50cr;쀀\ud835\udcb4ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidt\xe8૙a;䎖r;愨pf;愤cr;쀀\ud835\udcb5௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻\xe1䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻\xe2䃢te肻\xb4̆;䐰lig耻\xe6䃦Ā;r\xb2ᖺ;쀀\ud835\udd1erave耻\xe0䃠ĀepᗊᗖĀfpᗏᗔsym;愵\xe8ᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e\xbbᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢\xbb\xb9arr;捼Āgpᙣᙧon;䄅f;쀀\ud835\udd52΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒ\xf1ᚃing耻\xe5䃥ƀctyᚡᚦᚨr;쀀\ud835\udcb6;䀪mpĀ;e዁ᚯ\xf1ʈilde耻\xe3䃣ml耻\xe4䃤Āciᛂᛈonin\xf4ɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e\xbbᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰s\xe9ᜌno\xf5ēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀\ud835\udd1fg΀costuvwឍឝឳេ៕៛៞ƀaiuបពរ\xf0ݠrc;旯p\xbb፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄e\xe5ᑄ\xe5ᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀\ud835\udd53Ā;tᏋᡣom\xbbᏌtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻\xa6䂦Ȁceioᥑᥖᥚᥠr;쀀\ud835\udcb7mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t\xbb᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁\xeeړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻\xe7䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻\xb8ƭptyv;榲t脀\xa2;eᨭᨮ䂢r\xe4Ʋr;쀀\ud835\udd20ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark\xbbᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟\xbbཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it\xbb᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;q\xc7\xc6ɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁\xeeᅠeĀmx᫱᫶ent\xbb᫩e\xf3ɍǧ᫾\0ᬇĀ;dኻᬂot;橭n\xf4Ɇƀfryᬐᬔᬗ;쀀\ud835\udd54o\xe4ɔ脀\xa9;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀\ud835\udcb8Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒre\xe3᭳u\xe3᭵ee;拎edge;拏en耻\xa4䂤earrowĀlrᯮ᯳eft\xbbᮀight\xbbᮽe\xe4ᯝĀciᰁᰇonin\xf4Ƿnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍r\xf2΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸\xf2ᄳhĀ;vᱚᱛ怐\xbbऊūᱡᱧarow;椏a\xe3̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻\xb0䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀\ud835\udd21arĀlrᲳᲵ\xbbࣜ\xbbသʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀\xf7;o᳧ᳰntimes;拇n\xf8᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀\ud835\udd55ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedg\xe5\xfanƀadhᄮᵝᵧownarrow\xf3ᲃarpoonĀlrᵲᵶef\xf4Ჴigh\xf4ᲶŢᵿᶅkaro\xf7གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀\ud835\udcb9;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃r\xf2Щa\xf2ྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴo\xf4ᲉĀcsḎḔute耻\xe9䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻\xea䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀\ud835\udd22ƀ;rsṐṑṗ檚ave耻\xe8䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et\xbbẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀\ud835\udd56ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on\xbbớ;䏵ȀcsuvỪỳἋἣĀioữḱrc\xbbḮɩỹ\0\0ỻ\xedՈantĀglἂἆtr\xbbṝess\xbbṺƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯o\xf4͒ĀahὉὋ;䎷耻\xf0䃰Āmrὓὗl耻\xeb䃫o;悬ƀcipὡὤὧl;䀡s\xf4ծĀeoὬὴctatio\xeeՙnential\xe5չৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotse\xf1Ṅy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀\ud835\udd23lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀\ud835\udd57ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻\xbd䂽;慓耻\xbc䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻\xbe䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀\ud835\udcbbࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lan\xf4٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀\ud835\udd24Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox\xbbℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀\ud835\udd58Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎pro\xf8₞r;楸qĀlqؿ↖les\xf3₈i\xed٫Āen↣↭rtneqq;쀀≩︀\xc5↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽r\xf2ΠȀilmr⇐⇔⇗⇛rs\xf0ᒄf\xbb․il\xf4کĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it\xbb∊lip;怦con;抹r;쀀\ud835\udd25sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀\ud835\udd59bar;怕ƀclt≯≴≸r;쀀\ud835\udcbdas\xe8⇴rok;䄧Ābp⊂⊇ull;恃hen\xbbᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻\xed䃭ƀ;iyݱ⊰⊵rc耻\xee䃮;䐸Ācx⊼⊿y;䐵cl耻\xa1䂡ĀfrΟ⋉;쀀\ud835\udd26rave耻\xec䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓in\xe5ގar\xf4ܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝do\xf4⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙er\xf3ᕣ\xe3⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀\ud835\udd5aa;䎹uest耻\xbf䂿Āci⎊⎏r;쀀\ud835\udcbenʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻\xef䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀\ud835\udd27ath;䈷pf;쀀\ud835\udd5bǣ⏬\0⏱r;쀀\ud835\udcbfrcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀\ud835\udd28reen;䄸cy;䑅cy;䑜pf;쀀\ud835\udd5ccr;쀀\ud835\udcc0஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼r\xf2৆\xf2Εail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴ra\xeeࡌbda;䎻gƀ;dlࢎⓁⓃ;榑\xe5ࢎ;檅uo耻\xab䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝\xeb≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼\xecࢰ\xe2┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□a\xe9⓶arpoonĀdu▯▴own\xbbњp\xbb०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoon\xf3྘quigarro\xf7⇰hreetimes;拋ƀ;qs▋ও◺lan\xf4বʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋ppro\xf8Ⓠot;拖qĀgq♃♅\xf4উgt\xf2⒌\xf4ছi\xedলƀilr♕࣡♚sht;楼;쀀\ud835\udd29Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖r\xf2◁orne\xf2ᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che\xbb⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox\xbb⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽r\xebࣁgƀlmr⛿✍✔eftĀar০✇ight\xe1৲apsto;柼ight\xe1৽parrowĀlr✥✩ef\xf4⓭ight;憬ƀafl✶✹✽r;榅;쀀\ud835\udd5dus;樭imes;樴š❋❏st;戗\xe1ፎƀ;ef❗❘᠀旊nge\xbb❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇r\xf2ࢨorne\xf2ᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀\ud835\udcc1mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹re\xe5◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀\xc5⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻\xaf䂯Āet⡗⡙;時Ā;e⡞⡟朠se\xbb⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻ow\xeeҌef\xf4ए\xf0Ꮡker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle\xbbᘦr;쀀\ud835\udd2ao;愧ƀcdn⢯⢴⣉ro耻\xb5䂵Ȁ;acdᑤ⢽⣀⣄s\xf4ᚧir;櫰ot肻\xb7Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛\xf2−\xf0ઁĀdp⣩⣮els;抧f;쀀\ud835\udd5eĀct⣸⣽r;쀀\ud835\udcc2pos\xbbᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la\xbb˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉ro\xf8඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻\xa0ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸ui\xf6ୣĀei⩊⩎ar;椨\xed஘istĀ;s஠டr;쀀\ud835\udd2bȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lan\xf4௢i\xed௪Ā;rஶ⪁\xbbஷƀAap⪊⪍⪑r\xf2⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹r\xf2⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro\xf7⫁ightarro\xf7⪐ƀ;qs఻⪺⫪lan\xf4ౕĀ;sౕ⫴\xbbశi\xedౝĀ;rవ⫾iĀ;eచథi\xe4ඐĀpt⬌⬑f;쀀\ud835\udd5f膀\xac;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lle\xec୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳u\xe5ಥĀ;cಘ⭸Ā;eಒ⭽\xf1ಘȀAait⮈⮋⮝⮧r\xf2⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow\xbb⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉u\xe5൅;쀀\ud835\udcc3ortɭ⬅\0\0⯖ar\xe1⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭\xe5೸\xe5ഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗ\xf1സȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇ\xecௗlde耻\xf1䃱\xe7ృiangleĀlrⱒⱜeftĀ;eచⱚ\xf1దightĀ;eೋⱥ\xf1೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻\xf3䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻\xf4䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀\ud835\udd2cͯ⵹\0\0⵼\0ⶂn;䋛ave耻\xf2䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨr\xf2᪀Āir⶝ⶠr;榾oss;榻n\xe5๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀\ud835\udd60ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨r\xf2᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f\xbbⷿ耻\xaa䂪耻\xba䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧\xf2⸁ash耻\xf8䃸l;折iŬⸯ⸴de耻\xf5䃵esĀ;aǛ⸺s;樶ml耻\xf6䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀\xb6;l⹭⹮䂶le\xecЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀\ud835\udd2dƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕ma\xf4੶ne;明ƀ;tv⺿⻀⻈䏀chfork\xbb´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎\xf6⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻\xb1ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀\ud835\udd61nd耻\xa3䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷u\xe5໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾ppro\xf8⽃urlye\xf1໙\xf1໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨i\xedໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺\xf0⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴\xef໻rel;抰Āci⿀⿅r;쀀\ud835\udcc5;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀\ud835\udd2epf;쀀\ud835\udd62rime;恗cr;쀀\ud835\udcc6ƀaeo⿸〉〓tĀei⿾々rnion\xf3ڰnt;樖stĀ;e【】䀿\xf1Ἑ\xf4༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがr\xf2Ⴓ\xf2ϝail;検ar\xf2ᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕i\xe3ᅮmptyv;榳gȀ;del࿑らるろ;榒;榥\xe5࿑uo耻\xbb䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞\xeb≝\xf0✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶al\xf3༞ƀabrョリヮr\xf2៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗\xec࿲\xe2ヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜn\xe5Ⴛar\xf4ྩt;断ƀilrㅩဣㅮsht;楽;쀀\ud835\udd2fĀaoㅷㆆrĀduㅽㅿ\xbbѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭa\xe9トarpoonĀduㆻㆿow\xeeㅾp\xbb႒eftĀah㇊㇐rrow\xf3࿪arpoon\xf3Ցightarrows;應quigarro\xf7ニhreetimes;拌g;䋚ingdotse\xf1ἲƀahm㈍㈐㈓r\xf2࿪a\xf2Ց;怏oustĀ;a㈞㈟掱che\xbb㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾r\xebဃƀafl㉇㉊㉎r;榆;쀀\ud835\udd63us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒ar\xf2㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀\ud835\udcc7Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠re\xe5ㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛qu\xef➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡u\xe5ᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓i\xedሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒\xeb∨Ā;oਸ਼਴t耻\xa7䂧i;䀻war;椩mĀin㍩\xf0nu\xf3\xf1t;朶rĀ;o㍶⁕쀀\ud835\udd30Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜i\xe4ᑤara\xec⹯耻\xad䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲ar\xf2ᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetm\xe9㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀\ud835\udd64aĀdr㑍ЂesĀ;u㑔㑕晠it\xbb㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍\xf1ᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝\xf1ᆮƀ;afᅻ㒦ְrť㒫ֱ\xbbᅼar\xf2ᅈȀcemt㒹㒾㓂㓅r;쀀\ud835\udcc8tm\xee\xf1i\xec㐕ar\xe6ᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psilo\xeeỠh\xe9⺯s\xbb⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦ppro\xf8㋺urlye\xf1ᇾ\xf1ᇳƀaes㖂㖈㌛ppro\xf8㌚q\xf1㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻\xb9䂹耻\xb2䂲耻\xb3䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨\xeb∮Ā;oਫ਩war;椪lig耻\xdf䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄r\xeb๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀\ud835\udd31Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮ppro\xf8዁im\xbbኬs\xf0ኞĀas㚺㚮\xf0዁rn耻\xfe䃾Ǭ̟㛆⋧es膀\xd7;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀\xe1⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀\ud835\udd65rk;櫚\xe1㍢rime;怴ƀaip㜏㜒㝤d\xe5ቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own\xbbᶻeftĀ;e⠀㜾\xf1म;扜ightĀ;e㊪㝋\xf1ၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀\ud835\udcc9;䑆cy;䑛rok;䅧Āio㞋㞎x\xf4᝷headĀlr㞗㞠eftarro\xf7ࡏightarrow\xbbཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶r\xf2ϭar;楣Ācr㟜㟢ute耻\xfa䃺\xf2ᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻\xfb䃻;䑃ƀabh㠃㠆㠋r\xf2Ꭽlac;䅱a\xf2ᏃĀir㠓㠘sht;楾;쀀\ud835\udd32rave耻\xf9䃹š㠧㠱rĀlr㠬㠮\xbbॗ\xbbႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r\xbb㡆op;挏ri;旸Āal㡖㡚cr;䅫肻\xa8͉Āgp㡢㡦on;䅳f;쀀\ud835\udd66̀adhlsuᅋ㡸㡽፲㢑㢠own\xe1ᎳarpoonĀlr㢈㢌ef\xf4㠭igh\xf4㠯iƀ;hl㢙㢚㢜䏅\xbbᏺon\xbb㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r\xbb㢽op;挎ng;䅯ri;旹cr;쀀\ud835\udccaƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨\xbb᠓Āam㣯㣲r\xf2㢨l耻\xfc䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠r\xf2ϷarĀ;v㤦㤧櫨;櫩as\xe8ϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖app\xe1␕othin\xe7ẖƀhir㓫⻈㥙op\xf4⾵Ā;hᎷ㥢\xefㆍĀiu㥩㥭gm\xe1㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟et\xe1㚜iangleĀlr㦪㦯eft\xbbथight\xbbၑy;䐲ash\xbbံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨa\xf2ᑩr;쀀\ud835\udd33tr\xe9㦮suĀbp㧯㧱\xbbജ\xbb൙pf;쀀\ud835\udd67ro\xf0໻tr\xe9㦴Ācu㨆㨋r;쀀\ud835\udccbĀbp㨐㨘nĀEe㦀㨖\xbb㥾nĀEe㦒㨞\xbb㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀\ud835\udd34pf;쀀\ud835\udd68Ā;eᑹ㩦at\xe8ᑹcr;쀀\ud835\udcccૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tr\xe9៑r;쀀\ud835\udd35ĀAa㪔㪗r\xf2σr\xf2৶;䎾ĀAa㪡㪤r\xf2θr\xf2৫a\xf0✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀\ud835\udd69im\xe5ឲĀAa㫇㫊r\xf2ώr\xf2ਁĀcq㫒ីr;쀀\ud835\udccdĀpt៖㫜r\xe9។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻\xfd䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻\xa5䂥r;쀀\ud835\udd36cy;䑗pf;쀀\ud835\udd6acr;쀀\ud835\udcceĀcm㬦㬩y;䑎l耻\xff䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡tr\xe6ᕟa;䎶r;쀀\ud835\udd37cy;䐶grarr;懝pf;쀀\ud835\udd6bcr;쀀\ud835\udccfĀjn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),Y=new Uint16Array("Ȁaglq \x15\x18\x1bɭ\x0f\0\0\x12p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map(e=>e.charCodeAt(0))),K=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),ee=null!==(i=String.fromCodePoint)&&void 0!==i?i:function(e){let a="";return e>65535&&(e-=65536,a+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),a+=String.fromCharCode(e)};function ea(e){var a;return e>=55296&&e<=57343||e>1114111?65533:null!==(a=K.get(e))&&void 0!==a?a:e}!function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"}(s||(s={}));function et(e){return e>=s.ZERO&&e<=s.NINE}!function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={}));!function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"}(n||(n={})),!function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"}(r||(r={}));class ei{constructor(e,a,t){this.decodeTree=e,this.emitCodePoint=a,this.errors=t,this.state=n.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=r.Strict}startEntity(e){this.decodeMode=e,this.state=n.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(e,a){switch(this.state){case n.EntityStart:if(e.charCodeAt(a)===s.NUM)return this.state=n.NumericStart,this.consumed+=1,this.stateNumericStart(e,a+1);return this.state=n.NamedEntity,this.stateNamedEntity(e,a);case n.NumericStart:return this.stateNumericStart(e,a);case n.NumericDecimal:return this.stateNumericDecimal(e,a);case n.NumericHex:return this.stateNumericHex(e,a);case n.NamedEntity:return this.stateNamedEntity(e,a)}}stateNumericStart(e,a){return a>=e.length?-1:(32|e.charCodeAt(a))===s.LOWER_X?(this.state=n.NumericHex,this.consumed+=1,this.stateNumericHex(e,a+1)):(this.state=n.NumericDecimal,this.stateNumericDecimal(e,a))}addToNumericResult(e,a,t,i){if(a!==t){let s=t-a;this.result=this.result*Math.pow(i,s)+parseInt(e.substr(a,s),i),this.consumed+=s}}stateNumericHex(e,a){let t=a;for(;a=s.UPPER_A)||!(i<=s.UPPER_F))&&(!(i>=s.LOWER_A)||!(i<=s.LOWER_F)))return this.addToNumericResult(e,t,a,16),this.emitNumericEntity(o,3);a+=1}return this.addToNumericResult(e,t,a,16),-1}stateNumericDecimal(e,a){let t=a;for(;a>14;for(;a>7,n=a&o.JUMP_TABLE;if(0===s)return 0!==n&&i===n?t:-1;if(n){let a=i-n;return a<0||a>=s?-1:e[t+a]-1}let r=t,c=r+s-1;for(;r<=c;){let a=r+c>>>1,t=e[a];if(ti))return e[a+s];c=a-1}}return -1}(t,i,this.treeIndex+Math.max(1,n),c),this.treeIndex<0)return 0===this.result||this.decodeMode===r.Attribute&&(0===n||function(e){var a;return e===s.EQUALS||(a=e)>=s.UPPER_A&&a<=s.UPPER_Z||a>=s.LOWER_A&&a<=s.LOWER_Z||et(a)}(c))?0:this.emitNotTerminatedNamedEntity();if(0!=(n=((i=t[this.treeIndex])&o.VALUE_LENGTH)>>14)){if(c===s.SEMI)return this.emitNamedEntityData(this.treeIndex,n,this.consumed+this.excess);this.decodeMode!==r.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return -1}emitNotTerminatedNamedEntity(){var e;let{result:a,decodeTree:t}=this,i=(t[a]&o.VALUE_LENGTH)>>14;return this.emitNamedEntityData(a,i,this.consumed),null===(e=this.errors)||void 0===e||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,a,t){let{decodeTree:i}=this;return this.emitCodePoint(1===a?i[e]&~o.VALUE_LENGTH:i[e+1],t),3===a&&this.emitCodePoint(i[e+2],t),t}end(){var e;switch(this.state){case n.NamedEntity:return 0!==this.result&&(this.decodeMode!==r.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case n.NumericDecimal:return this.emitNumericEntity(0,2);case n.NumericHex:return this.emitNumericEntity(0,3);case n.NumericStart:return null===(e=this.errors)||void 0===e||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case n.EntityStart:return 0}}}function es(e){let a="",t=new ei(e,e=>a+=ee(e));return function(e,i){let s=0,o=0;for(;(o=e.indexOf("&",o))>=0;){a+=e.slice(s,o),t.startEntity(i);let n=t.write(e,o+1);if(n<0){s=o+t.end();break}s=o+n,o=0===n?s+1:s}let n=a+e.slice(s);return a="",n}}let eo=es(X),en=es(Y);function er(e){return e===c.Space||e===c.NewLine||e===c.Tab||e===c.FormFeed||e===c.CarriageReturn}function ec(e){return e===c.Slash||e===c.Gt||er(e)}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Number=35]="Number",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(c||(c={})),!function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.BeforeSpecialT=23]="BeforeSpecialT",e[e.SpecialStartSequence=24]="SpecialStartSequence",e[e.InSpecialTag=25]="InSpecialTag",e[e.InEntity=26]="InEntity"}(l||(l={}));!function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(u||(u={}));let el={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};class eu{constructor({xmlMode:e=!1,decodeEntities:a=!0},t){this.cbs=t,this.state=l.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=l.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=e,this.decodeEntities=a,this.entityDecoder=new ei(e?Y:X,(e,a)=>this.emitCodePoint(e,a))}reset(){this.state=l.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=l.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=l.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===c.Amp&&this.startEntity()}stateSpecialStartSequence(e){let a=this.sequenceIndex===this.currentSequence.length;if(a?ec(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!a){this.sequenceIndex++;return}}else this.isSpecial=!1;this.sequenceIndex=0,this.state=l.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===c.Gt||er(e)){let a=this.index-this.currentSequence.length;if(this.sectionStart=c.LowerA&&a<=c.LowerZ||a>=c.UpperA&&a<=c.UpperZ}startSpecial(e,a){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=a,this.state=l.SpecialStartSequence}stateBeforeTagName(e){if(e===c.ExclamationMark)this.state=l.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===c.Questionmark)this.state=l.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){let a=32|e;this.sectionStart=this.index,this.xmlMode?this.state=l.InTagName:a===el.ScriptEnd[2]?this.state=l.BeforeSpecialS:a===el.TitleEnd[2]?this.state=l.BeforeSpecialT:this.state=l.InTagName}else e===c.Slash?this.state=l.BeforeClosingTagName:(this.state=l.Text,this.stateText(e))}stateInTagName(e){ec(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){er(e)||(e===c.Gt?this.state=l.Text:(this.state=this.isTagStartChar(e)?l.InClosingTagName:l.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===c.Gt||er(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=l.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.state=l.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===c.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=l.InSpecialTag,this.sequenceIndex=0):this.state=l.Text,this.sectionStart=this.index+1):e===c.Slash?this.state=l.InSelfClosingTag:!er(e)&&(this.state=l.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===c.Gt?(this.cbs.onselfclosingtag(this.index),this.state=l.Text,this.sectionStart=this.index+1,this.isSpecial=!1):!er(e)&&(this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===c.Eq||ec(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=l.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===c.Eq?this.state=l.BeforeAttributeValue:e===c.Slash||e===c.Gt?(this.cbs.onattribend(u.NoValue,this.sectionStart),this.sectionStart=-1,this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e)):!er(e)&&(this.cbs.onattribend(u.NoValue,this.sectionStart),this.state=l.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===c.DoubleQuote?(this.state=l.InAttributeValueDq,this.sectionStart=this.index+1):e===c.SingleQuote?(this.state=l.InAttributeValueSq,this.sectionStart=this.index+1):!er(e)&&(this.sectionStart=this.index,this.state=l.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,a){e===a||!this.decodeEntities&&this.fastForwardTo(a)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(a===c.DoubleQuote?u.Double:u.Single,this.index+1),this.state=l.BeforeAttributeName):this.decodeEntities&&e===c.Amp&&this.startEntity()}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,c.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,c.SingleQuote)}stateInAttributeValueNoQuotes(e){er(e)||e===c.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(u.Unquoted,this.index),this.state=l.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===c.Amp&&this.startEntity()}stateBeforeDeclaration(e){e===c.OpeningSquareBracket?(this.state=l.CDATASequence,this.sequenceIndex=0):this.state=e===c.Dash?l.BeforeComment:l.InDeclaration}stateInDeclaration(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=l.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=l.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===c.Dash?(this.state=l.InCommentLike,this.currentSequence=el.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=l.InDeclaration}stateInSpecialComment(e){(e===c.Gt||this.fastForwardTo(c.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=l.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){let a=32|e;a===el.ScriptEnd[3]?this.startSpecial(el.ScriptEnd,4):a===el.StyleEnd[3]?this.startSpecial(el.StyleEnd,4):(this.state=l.InTagName,this.stateInTagName(e))}stateBeforeSpecialT(e){let a=32|e;a===el.TitleEnd[3]?this.startSpecial(el.TitleEnd,4):a===el.TextareaEnd[3]?this.startSpecial(el.TextareaEnd,4):(this.state=l.InTagName,this.stateInTagName(e))}startEntity(){this.baseState=this.state,this.state=l.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?r.Strict:this.baseState===l.Text||this.baseState===l.InSpecialTag?r.Legacy:r.Attribute)}stateInEntity(){let e=this.entityDecoder.write(this.buffer,this.index-this.offset);e>=0?(this.state=this.baseState,0===e&&(this.index=this.entityStart)):this.index=this.offset+this.buffer.length-1}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===l.Text||this.state===l.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===l.InAttributeValueDq||this.state===l.InAttributeValueSq||this.state===l.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index=e))this.state===l.InCommentLike?this.currentSequence===el.CdataEnd?this.cbs.oncdata(this.sectionStart,e,0):this.cbs.oncomment(this.sectionStart,e,0):this.state===l.InTagName||this.state===l.BeforeAttributeName||this.state===l.BeforeAttributeValue||this.state===l.AfterAttributeName||this.state===l.InAttributeName||this.state===l.InAttributeValueSq||this.state===l.InAttributeValueDq||this.state===l.InAttributeValueNq||this.state===l.InClosingTagName||this.cbs.ontext(this.sectionStart,e)}emitCodePoint(e,a){this.baseState!==l.Text&&this.baseState!==l.InSpecialTag?(this.sectionStart0&&o.has(this.stack[0]);){let e=this.stack.shift();null===(t=(a=this.cbs).onclosetag)||void 0===t||t.call(a,e,!0)}!this.isVoidElement(e)&&(this.stack.unshift(e),this.htmlMode&&(ef.has(e)?this.foreignContext.unshift(!0):ey.has(e)&&this.foreignContext.unshift(!1))),null===(s=(i=this.cbs).onopentagname)||void 0===s||s.call(i,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var a,t;this.startIndex=this.openTagStart,this.attribs&&(null===(t=(a=this.cbs).onopentag)||void 0===t||t.call(a,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,a){var t,i,s,o,n,r,c,l;this.endIndex=a;let u=this.getSlice(e,a);if(this.lowerCaseTagNames&&(u=u.toLowerCase()),this.htmlMode&&(ef.has(u)||ey.has(u))&&this.foreignContext.shift(),this.isVoidElement(u))this.htmlMode&&"br"===u&&(null===(o=(s=this.cbs).onopentagname)||void 0===o||o.call(s,"br"),null===(r=(n=this.cbs).onopentag)||void 0===r||r.call(n,"br",{},!0),null===(l=(c=this.cbs).onclosetag)||void 0===l||l.call(c,"br",!1));else{let e=this.stack.indexOf(u);if(-1!==e)for(let a=0;a<=e;a++){let s=this.stack.shift();null===(i=(t=this.cbs).onclosetag)||void 0===i||i.call(t,s,a!==e)}else this.htmlMode&&"p"===u&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=a+1}onselfclosingtag(e){this.endIndex=e,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var a,t;let i=this.tagname;this.endOpenTag(e),this.stack[0]===i&&(null===(t=(a=this.cbs).onclosetag)||void 0===t||t.call(a,i,!e),this.stack.shift())}onattribname(e,a){this.startIndex=e;let t=this.getSlice(e,a);this.attribname=this.lowerCaseAttributeNames?t.toLowerCase():t}onattribdata(e,a){this.attribvalue+=this.getSlice(e,a)}onattribentity(e){this.attribvalue+=ee(e)}onattribend(e,a){var t,i;this.endIndex=a,null===(i=(t=this.cbs).onattribute)||void 0===i||i.call(t,this.attribname,this.attribvalue,e===u.Double?'"':e===u.Single?"'":e===u.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){let a=e.search(ew),t=a<0?e:e.substr(0,a);return this.lowerCaseTagNames&&(t=t.toLowerCase()),t}ondeclaration(e,a){this.endIndex=a;let t=this.getSlice(e,a);if(this.cbs.onprocessinginstruction){let e=this.getInstructionName(t);this.cbs.onprocessinginstruction(`!${e}`,`!${t}`)}this.startIndex=a+1}onprocessinginstruction(e,a){this.endIndex=a;let t=this.getSlice(e,a);if(this.cbs.onprocessinginstruction){let e=this.getInstructionName(t);this.cbs.onprocessinginstruction(`?${e}`,`?${t}`)}this.startIndex=a+1}oncomment(e,a,t){var i,s,o,n;this.endIndex=a,null===(s=(i=this.cbs).oncomment)||void 0===s||s.call(i,this.getSlice(e,a-t)),null===(n=(o=this.cbs).oncommentend)||void 0===n||n.call(o),this.startIndex=a+1}oncdata(e,a,t){var i,s,o,n,r,c,l,u,d,m;this.endIndex=a;let h=this.getSlice(e,a-t);!this.htmlMode||this.options.recognizeCDATA?(null===(s=(i=this.cbs).oncdatastart)||void 0===s||s.call(i),null===(n=(o=this.cbs).ontext)||void 0===n||n.call(o,h),null===(c=(r=this.cbs).oncdataend)||void 0===c||c.call(r)):(null===(u=(l=this.cbs).oncomment)||void 0===u||u.call(l,`[CDATA[${h}]]`),null===(m=(d=this.cbs).oncommentend)||void 0===m||m.call(d)),this.startIndex=a+1}onend(){var e,a;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let e=0;e=this.buffers[0].length;)this.shiftBuffer();let t=this.buffers[0].slice(e-this.bufferOffset,a-this.bufferOffset);for(;a-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),t+=this.buffers[0].slice(0,a-this.bufferOffset);return t}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var a,t;if(this.ended){null===(t=(a=this.cbs).onerror)||void 0===t||t.call(a,Error(".write() after done!"));return}this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++)}end(e){var a,t;if(this.ended){null===(t=(a=this.cbs).onerror)||void 0===t||t.call(a,Error(".end() after done!"));return}e&&this.write(e),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(e){this.children=e}}class eB extends eR{constructor(){super(...arguments),this.type=d.CDATA}get nodeType(){return 4}}class eM extends eR{constructor(){super(...arguments),this.type=d.Root}get nodeType(){return 9}}class eO extends eR{constructor(e,a,t=[],i="script"===e?d.Script:"style"===e?d.Style:d.Tag){super(t),this.name=e,this.attribs=a,this.type=i}get nodeType(){return 1}get tagName(){return this.name}set tagName(e){this.name=e}get attributes(){return Object.keys(this.attribs).map(e=>{var a,t;return{name:e,value:this.attribs[e],namespace:null===(a=this["x-attribsNamespace"])||void 0===a?void 0:a[e],prefix:null===(t=this["x-attribsPrefix"])||void 0===t?void 0:t[e]}})}}function e$(e,a=!1){let t;if(e.type===d.Text)t=new e_(e.data);else if(e.type===d.Comment)t=new eL(e.data);else{var i;if((i=e).type===d.Tag||i.type===d.Script||i.type===d.Style){let i=a?eU(e.children):[],s=new eO(e.name,{...e.attribs},i);i.forEach(e=>e.parent=s),null!=e.namespace&&(s.namespace=e.namespace),e["x-attribsNamespace"]&&(s["x-attribsNamespace"]={...e["x-attribsNamespace"]}),e["x-attribsPrefix"]&&(s["x-attribsPrefix"]={...e["x-attribsPrefix"]}),t=s}else{if(e.type===d.CDATA){let i=a?eU(e.children):[],s=new eB(i);i.forEach(e=>e.parent=s),t=s}else if(e.type===d.Root){let i=a?eU(e.children):[],s=new eM(i);i.forEach(e=>e.parent=s),e["x-mode"]&&(s["x-mode"]=e["x-mode"]),t=s}else{if(e.type===d.Directive){let a=new eD(e.name,e.data);null!=e["x-name"]&&(a["x-name"]=e["x-name"],a["x-publicId"]=e["x-publicId"],a["x-systemId"]=e["x-systemId"]),t=a}else throw Error(`Not implemented yet: ${e.type}`)}}}return t.startIndex=e.startIndex,t.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(t.sourceCodeLocation=e.sourceCodeLocation),t}function eU(e){let a=e.map(e=>e$(e,!0));for(let e=1;e$\x80-\uFFFF]/g,eF=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),eG=null!=String.prototype.codePointAt?(e,a)=>e.codePointAt(a):(e,a)=>(64512&e.charCodeAt(a))==55296?(e.charCodeAt(a)-55296)*1024+e.charCodeAt(a+1)-56320+65536:e.charCodeAt(a);function eH(e){let a,t="",i=0;for(;null!==(a=eW.exec(e));){let s=a.index,o=e.charCodeAt(s),n=eF.get(o);void 0!==n?(t+=e.substring(i,s)+n,i=s+1):(t+=`${e.substring(i,s)}&#x${eG(e,s).toString(16)};`,i=eW.lastIndex+=Number((64512&o)==55296))}return t+e.substr(i)}function eQ(e,a){return function(t){let i;let s=0,o="";for(;i=e.exec(t);)s!==i.index&&(o+=t.substring(s,i.index)),o+=a.get(i[0].charCodeAt(0)),s=i.index+1;return o+t.substring(s)}}eQ(/[&<>'"]/g,eF);let eZ=eQ(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),eJ=eQ(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])),eX=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;function eY(e,a){let t,i="",s=0;for(;null!==(t=e.exec(a));){let o=t.index;i+=a.substring(s,o);let n=a.charCodeAt(o),r=htmlTrie.get(n);if("object"==typeof r){if(o+1[e.toLowerCase(),e])),e1=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),e0=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function e3(e){return e.replace(/"/g,""")}let e2=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function e5(e,a={}){let t="length"in e?e:[e],i="";for(let e=0;e`}(e);case eS:return function(e){return``}(e);case eT:return function(e){return``}(e);case eq:case eA:case eE:return function(e,a){var t;"foreign"===a.xmlMode&&(e.name=null!==(t=eK.get(e.name))&&void 0!==t?t:e.name,e.parent&&e8.has(e.parent.name)&&(a={...a,xmlMode:!1})),!a.xmlMode&&e4.has(e.name)&&(a={...a,xmlMode:"foreign"});let i=`<${e.name}`,s=function(e,a){var t;if(!e)return;let i=(null!==(t=a.encodeEntities)&&void 0!==t?t:a.decodeEntities)===!1?e3:a.xmlMode||"utf8"!==a.encodeEntities?eH:eZ;return Object.keys(e).map(t=>{var s,o;let n=null!==(s=e[t])&&void 0!==s?s:"";return("foreign"===a.xmlMode&&(t=null!==(o=e1.get(t))&&void 0!==o?o:t),a.emptyAttrs||a.xmlMode||""!==n)?`${t}="${i(n)}"`:t}).join(" ")}(e.attribs,a);return s&&(i+=` ${s}`),0===e.children.length&&(a.xmlMode?!1!==a.selfClosingTags:a.selfClosingTags&&e2.has(e.name))?(!a.xmlMode&&(i+=" "),i+="/>"):(i+=">",e.children.length>0&&(i+=e5(e.children,a)),(a.xmlMode||!e2.has(e.name))&&(i+=``)),i}(e,a);case ez:return function(e,a){var t;let i=e.data||"";return(null!==(t=a.encodeEntities)&&void 0!==t?t:a.decodeEntities)!==!1&&!(!a.xmlMode&&e.parent&&e0.has(e.parent.name))&&(i=a.xmlMode||"utf8"!==a.encodeEntities?eH(i):eJ(i)),i}(e,a)}}(t[e],a);return i}let e8=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),e4=new Set(["svg","math"]);function e6(e){return Array.isArray(e)?e.map(e6).join(""):isTag(e)?"br"===e.name?"\n":e6(e.children):isCDATA(e)?e6(e.children):isText(e)?e.data:""}function e9(e){return Array.isArray(e)?e.map(e9).join(""):hasChildren(e)&&!isComment(e)?e9(e.children):isText(e)?e.data:""}function e7(e){return Array.isArray(e)?e.map(e7).join(""):hasChildren(e)&&(e.type===ElementType.Tag||isCDATA(e))?e7(e.children):isText(e)?e.data:""}function ae(e,a){return"function"==typeof a?t=>isTag(t)&&a(t.attribs[e]):t=>isTag(t)&&t.attribs[e]===a}function aa(e,a){return t=>e(t)||a(t)}function at(e){let a=Object.keys(e).map(a=>{let t=e[a];return Object.prototype.hasOwnProperty.call(null,a)?null[a](t):ae(a,t)});return 0===a.length?null:a.reduce(aa)}!function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"}(g||(g={}));function ai(e){return getElementsByTagName("media:content",e).map(e=>{let{attribs:a}=e,t={medium:a.medium,isDefault:!!a.isDefault};for(let e of null)a[e]&&(t[e]=a[e]);for(let e of null)a[e]&&(t[e]=parseInt(a[e],10));return a.expression&&(t.expression=a.expression),t})}function as(e,a){return getElementsByTagName(e,a,!0,1)[0]}function ao(e,a,t=!1){return textContent(getElementsByTagName(e,a,t,1)).trim()}function an(e,a,t,i,s=!1){let o=ao(t,i,s);o&&(e[a]=o)}function ar(e){return"rss"===e||"feed"===e||"rdf:RDF"===e}let ac=new TextEncoder;function al(e,a,t,i=!1){let s=new eP((e,a)=>a),o=new ev(s);o.write(e),o.end(),function e(a,t,i){if("base"===a.name&&void 0!==a.attribs.href&&(i.base=new URL(a.attribs.href,i.origin)),a.attribs){for(let e of au)for(let s in e){let o=e[s.toLowerCase()];if("function"!=typeof o&&("*"===o||o.includes(a.name))&&void 0!==a.attribs[s]){let o=a.attribs[s],n=e.fn(o,i,t);null===n?delete a.attribs[s]:a.attribs[s]=n,a.attribs[`scramjet-attr-${s}`]=o}}for(let[e,t]of Object.entries(a.attribs))ah.includes(e)&&(a.attribs[`scramjet-attr-${e}`]=t,a.attribs[e]=W(t,`(inline ${e} on element)`,i))}if("style"===a.name&&void 0!==a.children[0]&&(a.children[0].data=Z(a.children[0].data,i)),"script"===a.name&&/(application|text)\/javascript|module|importmap|undefined/.test(a.attribs.type)&&void 0!==a.children[0]){let e=a.children[0].data;a.attribs["scramjet-attr-script-source-src"]=am(ac.encode(e));e=e.replace(//g,""),a.children[0].data=W(e,"(inline script element)",i)}if("meta"===a.name&&void 0!==a.attribs["http-equiv"]){if("content-security-policy"===a.attribs["http-equiv"].toLowerCase())a={};else if("refresh"===a.attribs["http-equiv"]&&a.attribs.content.includes("url")){let e=a.attribs.content.split("url=");e[1]&&(e[1]=H(e[1].trim(),i)),a.attribs.content=e.join("url=")}}if(a.childNodes)for(let s in a.childNodes)a.childNodes[s]=e(a.childNodes[s],t,i);return a}(s.root,a,t);if(i){let e=function e(a){if(a.type===eE&&"head"===a.name)return a;if(a.childNodes)for(let t of a.childNodes){let a=e(t);if(a)return a}return null}(s.root);!e&&(e=new eO("head",{},[]),s.root.children.unshift(e));let t=JSON.stringify(a.dump()),i=` + self.COOKIE = ${t}; + self.$scramjet.config = ${JSON.stringify(x.config)}; + if ("document" in self && document?.currentScript) { + document.currentScript.remove(); + } + `,o=e=>new eO("script",{src:e}),n=am(ac.encode(i));e.children.unshift(o(x.config.files.wasm),o(x.config.files.shared),o("data:application/javascript;base64,"+n),o(x.config.files.client))}return e5(s.root)}let au=[{fn:(e,a)=>H(e,a),src:["embed","script","img","iframe","frame","source","input","track"],href:["a","link","area","use","image"],data:["object"],action:["form"],formaction:["button","input","textarea","submit"],poster:["video"],"xlink:href":["image"]},{fn:(e,a)=>e.startsWith("blob:")?G(e):H(e,a),src:["video","audio"]},{fn:()=>"",integrity:["script","link"]},{fn:()=>null,nonce:"*",csp:["iframe"],credentialless:["iframe"]},{fn:(e,a)=>ad(e,a),srcset:["img","source"],imagesrcset:["link"]},{fn:(e,a,t)=>al(e,t,{origin:new URL(a.origin.origin),base:new URL(a.origin.origin)},!0),srcdoc:["iframe"]},{fn:(e,a)=>Z(e,a),style:"*"},{fn:e=>{if(["_parent","_top","_unfencedTop"].includes(e))return"_self"},target:["a","base"]}];function ad(e,a){return e.split(",").map(e=>e.trim()).map(e=>{let[t,...i]=e.split(/\s+/),s=H(t.trim(),a);return i.length>0?`${s} ${i.join(" ")}`:s}).join(", ")}function am(e){return btoa(Array.from(e,e=>String.fromCodePoint(e)).join(""))}let ah=["onbeforexrselect","onabort","onbeforeinput","onbeforematch","onbeforetoggle","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontentvisibilityautostatechange","oncontextlost","oncontextmenu","oncontextrestored","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","onformdata","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onresize","onscroll","onsecuritypolicyviolation","onseeked","onseeking","onselect","onslotchange","onstalled","onsubmit","onsuspend","ontimeupdate","ontoggle","onvolumechange","onwaiting","onwebkitanimationend","onwebkitanimationiteration","onwebkitanimationstart","onwebkittransitionend","onwheel","onauxclick","ongotpointercapture","onlostpointercapture","onpointerdown","onpointermove","onpointerrawupdate","onpointerup","onpointercancel","onpointerover","onpointerout","onpointerenter","onpointerleave","onselectstart","onselectionchange","onanimationend","onanimationiteration","onanimationstart","ontransitionrun","ontransitionstart","ontransitionend","ontransitioncancel","oncopy","oncut","onpaste","onscrollend","onscrollsnapchange","onscrollsnapchanging"],ag=["cross-origin-embedder-policy","cross-origin-opener-policy","cross-origin-resource-policy","content-security-policy","content-security-policy-report-only","expect-ct","feature-policy","origin-isolation","strict-transport-security","upgrade-insecure-requests","x-content-type-options","x-download-options","x-frame-options","x-permitted-cross-domain-policies","x-powered-by","x-xss-protection","clear-site-data"],ap=["location","content-location","referer"];function ab(e,a){return e.replace(/<(.*)>/gi,e=>H(e,a))}let ak=globalThis.fetch,af=globalThis.SharedWorker,ay=globalThis.localStorage,aw=globalThis.navigator.serviceWorker,av=MessagePort.prototype.postMessage,ax={prototype:{send:WebSocket.prototype.send},CLOSED:WebSocket.CLOSED,CLOSING:WebSocket.CLOSING,CONNECTING:WebSocket.CONNECTING,OPEN:WebSocket.OPEN};async function az(){let e=Promise.race([Promise.any((await self.clients.matchAll({type:"window",includeUncontrolled:!0})).map(async e=>{var a;let t;let i=await (a=e,t=new MessageChannel,new Promise(e=>{a.postMessage({type:"getPort",port:t.port2},[t.port2]),t.port1.onmessage=a=>{e(a.data)}}));return await aj(i),i})),new Promise((e,a)=>setTimeout(a,1e3,TypeError("timeout")))]);try{return await e}catch(e){if(e instanceof AggregateError)throw console.error("bare-mux: failed to get a bare-mux SharedWorker MessagePort as all clients returned an invalid MessagePort."),Error("All clients returned an invalid MessagePort.");return console.warn("bare-mux: failed to get a bare-mux SharedWorker MessagePort within 1s, retrying"),await az()}}function aj(e){let a=new MessageChannel,t=new Promise((e,t)=>{a.port1.onmessage=a=>{"pong"===a.data.type&&e()},setTimeout(t,1500)});return av.call(e,{message:{type:"ping"},port:a.port2},[a.port2]),t}function aS(e,a){let t=new af(e,"bare-mux-worker");return a&&aw.addEventListener("message",a=>{if("getPort"===a.data.type&&a.data.port){console.debug("bare-mux: recieved request for port from sw");let t=new af(e,"bare-mux-worker");av.call(a.data.port,t.port,[t.port])}}),t.port}let aq=null;class aA{constructor(e){this.channel=new BroadcastChannel("bare-mux"),e instanceof MessagePort||e instanceof Promise?this.port=e:this.createChannel(e,!0)}createChannel(e,a){if(self.clients)this.port=az(),this.channel.onmessage=e=>{"refreshPort"===e.data.type&&(this.port=az())};else if(e&&SharedWorker){if(!e.startsWith("/")&&!e.includes("://"))throw Error("Invalid URL. Must be absolute or start at the root.");this.port=aS(e,a),console.debug("bare-mux: setting localStorage bare-mux-path to",e),ay["bare-mux-path"]=e}else{if(!SharedWorker)throw Error("Unable to get a channel to the SharedWorker.");{let e=ay["bare-mux-path"];if(console.debug("bare-mux: got localStorage bare-mux-path:",e),!e)throw Error("Unable to get bare-mux workerPath from localStorage.");this.port=aS(e,a)}}}async sendMessage(e,a){this.port instanceof Promise&&(this.port=await this.port);try{await aj(this.port)}catch{return console.warn("bare-mux: Failed to get a ping response from the worker within 1.5s. Assuming port is dead."),this.createChannel(),await this.sendMessage(e,a)}let t=new MessageChannel,i=[t.port2,...a||[]],s=new Promise((e,a)=>{t.port1.onmessage=t=>{let i=t.data;"error"===i.type?a(i.error):e(i)}});return av.call(this.port,{message:e,port:t.port2},i),await s}}class aE extends EventTarget{constructor(e,a=[],t,i){super(),this.protocols=a,this.readyState=ax.CONNECTING,this.url=e.toString(),this.protocols=a;let s=e=>{this.protocols=e,this.readyState=ax.OPEN;let a=new Event("open");this.dispatchEvent(a)},o=async e=>{let a=new MessageEvent("message",{data:e});this.dispatchEvent(a)},n=(e,a)=>{this.readyState=ax.CLOSED;let t=new CloseEvent("close",{code:e,reason:a});this.dispatchEvent(t)},r=()=>{this.readyState=ax.CLOSED;let e=new Event("error");this.dispatchEvent(e)};this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{"open"===e.data.type?s(e.data.args[0]):"message"===e.data.type?o(e.data.args[0]):"close"===e.data.type?n(e.data.args[0],e.data.args[1]):"error"===e.data.type&&r()},t.sendMessage({type:"websocket",websocket:{url:e.toString(),protocols:a,requestHeaders:i,channel:this.channel.port2}},[this.channel.port2])}send(...e){if(this.readyState===ax.CONNECTING)throw new DOMException("Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.");let a=e[0];a.buffer&&(a=a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength)),av.call(this.channel.port1,{type:"data",data:a},a instanceof ArrayBuffer?[a]:[])}close(e,a){av.call(this.channel.port1,{type:"close",closeCode:e,closeReason:a})}}function aT(e,a,t){console.error(`error while processing '${t}': `,a),e.postMessage({type:"error",error:a})}let aI=["ws:","wss:"],aN=[101,204,205,304],aC=[301,302,303,307,308];console.debug("bare-mux: running v2.1.7 (build c56d286)");let a_=(e,a)=>{let t=e.slice(),i=[],s=a;for(;0!==t.length;){let e=t.pop(),a=e.toLowerCase();if(s.children.has("*")){if(s.children.has("!"+a))break;s=s.children.get("*")}else{if(!1===s.children.has(a))break;s=s.children.get(a)}i.unshift(e)}return i},aL="[a-fA-F\\d:]",aD=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${aL})|(?<=${aL})(?=\\s|$))`:"",aR="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",aB="[a-fA-F\\d]{1,4}",aM=` +(?: +(?:${aB}:){7}(?:${aB}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8 +(?:${aB}:){6}(?:${aR}|:${aB}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4 +(?:${aB}:){5}(?::${aR}|(?::${aB}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4 +(?:${aB}:){4}(?:(?::${aB}){0,1}:${aR}|(?::${aB}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4 +(?:${aB}:){3}(?:(?::${aB}){0,2}:${aR}|(?::${aB}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4 +(?:${aB}:){2}(?:(?::${aB}){0,3}:${aR}|(?::${aB}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4 +(?:${aB}:){1}(?:(?::${aB}){0,4}:${aR}|(?::${aB}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4 +(?::(?:(?::${aB}){0,5}:${aR}|(?::${aB}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4 +)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1 +`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),aO=RegExp(`(?:^${aR}$)|(?:^${aM}$)`),a$=RegExp(`^${aR}$`),aU=RegExp(`^${aM}$`),aV=e=>e&&e.exact?aO:RegExp(`(?:${aD(e)}${aR}${aD(e)})|(?:${aD(e)}${aM}${aD(e)})`,"g");aV.v4=e=>e&&e.exact?a$:RegExp(`${aD(e)}${aR}${aD(e)}`,"g"),aV.v6=e=>e&&e.exact?aU:RegExp(`${aD(e)}${aM}${aD(e)}`,"g");let{toString:aP}=Object.prototype,aW={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"},aF=e=>({match:e[0],index:e.index,groups:e.slice(1),namedGroups:e.groups??{},input:e.input});function aG(e,a,{timeout:t}={}){try{return(function(e){let a=(...a)=>e(...a);return Object.defineProperty(a,"name",{value:`functionTimeout(${e.name||""})`,configurable:!0}),a})(()=>(function(e,a={}){var t;if(t=e,"[object RegExp]"!==aP.call(t))throw TypeError("Expected a RegExp instance");let i=Object.keys(aW).map(t=>("boolean"==typeof a[t]?a[t]:e[t])?aW[t]:"").join(""),s=new RegExp(a.source||e.source,i);return s.lastIndex="number"==typeof a.lastIndex?a.lastIndex:e.lastIndex,s})(e).test(a),{timeout:t})()}catch(e){throw e}}let aH={timeout:400},aQ=new TextEncoder;!function(e){e.Lax="LAX",e.Strict="STRICT"}(p||(p={})),!function(e){e.NoHostname="NO_HOSTNAME",e.DomainMaxLength="DOMAIN_MAX_LENGTH",e.LabelMinLength="LABEL_MIN_LENGTH",e.LabelMaxLength="LABEL_MAX_LENGTH",e.LabelInvalidCharacter="LABEL_INVALID_CHARACTER",e.LastLabelInvalid="LAST_LABEL_INVALID"}(b||(b={})),!function(e){e.ValidIp="VALID_IP",e.ValidDomain="VALID_DOMAIN",e.Error="ERROR"}(k||(k={}));let aZ=e=>({type:b.NoHostname,message:`The given input ${String(e)} does not look like a hostname.`,column:1}),aJ=(e,a)=>({type:b.DomainMaxLength,message:`Domain "${e}" is too long. Domain is ${a} octets long but should not be longer than 253.`,column:a}),aX=(e,a)=>{let t=e.length;return{type:b.LabelMinLength,message:`Label "${e}" is too short. Label is ${t} octets long but should be at least 1.`,column:a}},aY=(e,a)=>{let t=e.length;return{type:b.LabelMaxLength,message:`Label "${e}" is too long. Label is ${t} octets long but should not be longer than 63.`,column:a}},aK=(e,a,t)=>({type:b.LabelInvalidCharacter,message:`Label "${e}" contains invalid character "${a}" at column ${t}.`,column:t}),a1=(e,a)=>({type:b.LabelInvalidCharacter,message:`Last label "${e}" must not be all-numeric.`,column:a}),a0=(e,a={})=>{if("string"!=typeof e)return{type:k.Error,errors:[aZ(e)]};if(""===e)return{type:k.ValidDomain,domain:e,labels:[]};let t=e.replace(/^\[|]$/g,""),i=function(e){var a,t;if(!((a=e).length>45)&&aG(aV.v6({exact:!0}),a,aH))return 6;if(!((t=e).length>15)&&aG(aV.v4({exact:!0}),t,aH))return 4}(t);if(void 0!==i)return{type:k.ValidIp,ip:t,ipVersion:i};let s="."===e.charAt(e.length-1)?e.slice(0,-1):e,o=new TextEncoder().encode(s);if(o.length>253)return{type:k.Error,errors:[aJ(e,o.length)]};let n=s.split("."),{validation:r=p.Strict}=a,c=a3[r](n);return c.length>0?{type:k.Error,errors:c}:{type:k.ValidDomain,domain:e,labels:n}},a3={[p.Lax]:e=>{let a=[],t=1;for(let i of e){let e=aQ.encode(i);e.length<1?a.push(aX(i,t)):e.length>63&&a.push(aY(i,t)),t+=i.length+1}return a},[p.Strict]:e=>{let a;let t=[],i=1;for(let s of e){let e=/[^\da-z-]/i.exec(s);e&&t.push(aK(s,e[0],e.index+1)),s.startsWith("-")?t.push(aK(s,"-",i)):s.endsWith("-")&&t.push(aK(s,"-",i+s.length-1)),s.length<1?t.push(aX(s,i)):s.length>63&&t.push(aY(s,i)),i+=s.length+1,a=s}return void 0!==a&&!1===/[a-z-]/iu.test(a)&&t.push(a1(a,i-a.length-1)),t}},a2=Symbol("ROOT"),a5=Symbol("CHILD"),a8=()=>({type:a2,children:new Map}),a4=(e,a)=>{let t=e.children.get(a);return void 0===t&&(t={type:a5,label:a,children:new Map,parent:e},e.children.set(a,t)),t},a6=e=>{let a=a8(),t="",i=a,s=a,o=()=>{s=a4(i,t),t=""};for(let n=0;n":o(),i=s;continue;case"|":o(),i=a;continue;case"<":if(i.type===a2)throw Error(`Error in serialized trie at position ${n}: Cannot go up, current parent node is already root`);o(),i=i.parent;continue}t+=r}return""!==t&&o(),a},a9=["localhost","local","example","invalid","test"];!function(e){e.Invalid="INVALID",e.Ip="IP",e.Reserved="RESERVED",e.NotListed="NOT_LISTED",e.Listed="LISTED"}(f||(f={}));let a7=(e,a)=>a>=0&&a({subDomains:e.slice(0,Math.max(0,a)),domain:a7(e,a),topLevelDomains:e.slice(a+1)});var ta=v("799"),tt=v.n(ta);x.shared={util:{parseDomain:(e,i)=>{let s=a0(e,i);if(s.type===k.Error)return{type:f.Invalid,hostname:e,errors:s.errors};if(s.type===k.ValidIp)return{type:f.Ip,hostname:s.ip,ipVersion:s.ipVersion};let{labels:o,domain:n}=s;if(""===e||a9.includes(o[o.length-1]))return{type:f.Reserved,hostname:n,labels:o};a=null!=a?a:a6("ac>com,edu,gov,net,mil,orgnomco,net,org,sch,ac,gov,milairline,airport,accident-investigation,accident-prevention,aerobatic,aeroclub,aerodrome,agents,air-surveillance,air-traffic-control,aircraft,airtraffic,ambulance,association,author,ballooning,broker,caa,cargo,catering,certification,championship,charter,civilaviation,club,conference,consultant,consulting,control,council,crew,design,dgca,educator,emergency,engine,engineer,entertainment,equipment,exchange,express,federation,flight,freight,fuel,gliding,government,groundhandling,group,hanggliding,homebuilt,insurance,journal,journalist,leasing,logistics,magazine,maintenance,marketplace,media,microlight,modelling,navigation,parachuting,paragliding,passenger-association,pilot,press,production,recreation,repbody,res,research,rotorcraft,safety,scientist,services,show,skydiving,software,student,taxi,trader,trading,trainer,union,workinggroup,worksgov,com,org,net,educom,org,net,co,nomoff,com,net,orgcom,edu,gov,mil,net,orgco,com,commune,net,orged,gv,og,co,pb,itbet,com,coop,edu,gob,gov,int,mil,musica,mutual,net,org,senasa,ture164,in-addr,ip6,iris,uri,urngovac>sthcom,net,org,edu>act,catholic,nsw>schoolsqld,sa,tas,vic,wacomcom,net,int,gov,org,edu,info,pp,mil,name,pro,bizcom,edu,gov,mil,net,orgbiz,co,com,edu,gov,info,net,org,store,tv*acgova,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9com,edu,net,org,govco,com,edu,or,orgafrica,agro,architectes,assur,avocats,co,com,eco,econo,edu,info,loisirs,money,net,org,ote,resto,restaurant,tourism,univcom,edu,gov,net,orgcom,edu,gov,net,orgcom,edu,gob,int,org,net,mil,tv,web,academia,agro,arte,blog,bolivia,ciencia,cooperativa,democracia,deporte,ecologia,economia,empresa,indigena,industria,info,medicina,movimiento,musica,natural,nombre,noticias,patria,politica,profesional,plurinacional,pueblo,revista,salud,tecnologia,tksat,transporte,wiki
9guacu,abc,adm,adv,agr,aju,am,anani,aparecida,app,arq,art,ato,b,barueri,belem,bhz,bib,bio,blog,bmd,boavista,bsb,campinagrande,campinas,caxias,cim,cng,cnt,com,contagem,coop,coz,cri,cuiaba,curitiba,def,des,det,dev,ecn,eco,edu,emp,enf,eng,esp,etc,eti,far,feira,flog,floripa,fm,fnd,fortal,fot,foz,fst,g12,geo,ggf,goiania,gov>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to*com,net,org,edu,govcom,edu,gov,net,orgco,orggov,mil,com,ofcom,net,org,edu,govab,bc,mb,nb,nf,nl,ns,nt,nu,on,pe,qc,sk,yk,gcgovorg,or,com,co,edu,ed,ac,net,go,asso,xn--aroport-bya,int,presse,md,gouv*,!wwwco,gob,gov,milco,com,gov,netac,com,edu,gov,net,org,mil,xn--55qx5d,xn--io0a7i,xn--od0alg,ah,bj,cq,fj,gd,gs,gz,gx,ha,hb,he,hi,hl,hn,jl,js,jx,ln,nm,nx,qh,sc,sd,sh,sn,sx,tj,xj,xz,yn,zj,hk,mo,twarts,com,edu,firm,gov,info,int,mil,net,nom,org,rec,webac,co,ed,fi,go,or,sacom,edu,org,net,gov,infcom,edu,int,nome,orgcom,edu,net,orggovac,biz,com,ekloges,gov,ltd,mil,net,org,press,pro,tmcom,net,org,edu,govart,com,edu,gob,gov,mil,net,org,sld,webart,asso,com,edu,gov,org,net,pol,soc,tmcom,info,net,fin,k12,med,pro,org,edu,gov,gob,miledu,gov,riik,lib,med,com,pri,aip,org,fiecom,edu,eun,gov,mil,name,net,org,sci*com,nom,org,gob,educom,gov,org,edu,biz,name,info,netalandac,biz,com,gov,info,mil,name,net,org,pro*com,edu,net,orgasso,com,gouv,nom,prd,tm,avoues,cci,greta,huissier-justiceedu,govcom,edu,gov,org,mil,net,pvtco,net,orgcom,edu,gov,org,milcom,ltd,gov,mod,edu,orgco,com,edu,net,orgac,com,edu,gov,org,netcom,net,mobi,edu,org,assocom,edu,net,org,govcom,edu,gob,ind,mil,net,orgcom,edu,gov,guam,info,net,org,webco,com,edu,gov,net,orgcom,edu,gov,idv,net,org,xn--55qx5d,xn--wcvs22d,xn--lcvr32d,xn--mxtq1m,xn--gmqw5a,xn--ciqpn,xn--gmq050i,xn--zf0avx,xn--io0a7i,xn--mk0axi,xn--od0alg,xn--od0aq3b,xn--tn0ag,xn--uc0atv,xn--uc0ay4acom,edu,org,net,mil,gob
iz,from,name,comcom,shop,firm,info,adult,net,pro,org,med,art,coop,pol,asso,edu,rel,gouv,persoco,info,org,priv,sport,tm,2000,agrar,bolt,casino,city,erotica,erotika,film,forum,games,hotel,ingatlan,jogasz,konyvelo,lakas,media,news,reklam,sex,shop,suli,szex,tozsde,utazas,videoac,biz,co,desa,go,mil,my,net,or,ponpes,sch,webgovac,co,gov,idf,k12,muni,net,orgxn--4dbgdty6c,xn--5dbhl8d,xn--8dbq2a,xn--hebda8bac,co>ltd,plc5g,6g,ac,ai,am,bihar,biz,business,ca,cn,co,com,coop,cs,delhi,dr,edu,er,firm,gen,gov,gujarat,ind,info,int,internet,io,me,mil,net,nic,org,pg,post,pro,res,travel,tv,uk,up,useucomgov,edu,mil,com,org,netac,co,gov,id,net,org,sch,xn--mgba3a4f16a,xn--mgba3a4franet,com,edu,gov,org,intgov,edu,abr,abruzzo,aosta-valley,aostavalley,bas,basilicata,cal,calabria,cam,campania,emilia-romagna,emiliaromagna,emr,friuli-v-giulia,friuli-ve-giulia,friuli-vegiulia,friuli-venezia-giulia,friuli-veneziagiulia,friuli-vgiulia,friuliv-giulia,friulive-giulia,friulivegiulia,friulivenezia-giulia,friuliveneziagiulia,friulivgiulia,fvg,laz,lazio,lig,liguria,lom,lombardia,lombardy,lucania,mar,marche,mol,molise,piedmont,piemonte,pmn,pug,puglia,sar,sardegna,sardinia,sic,sicilia,sicily,taa,tos,toscana,trentin-sud-tirol,xn--trentin-sd-tirol-rzb,trentin-sudtirol,xn--trentin-sdtirol-7vb,trentin-sued-tirol,trentin-suedtirol,trentino-a-adige,trentino-aadige,trentino-alto-adige,trentino-altoadige,trentino-s-tirol,trentino-stirol,trentino-sud-tirol,xn--trentino-sd-tirol-c3b,trentino-sudtirol,xn--trentino-sdtirol-szb,trentino-sued-tirol,trentino-suedtirol,trentino,trentinoa-adige,trentinoaadige,trentinoalto-adige,trentinoaltoadige,trentinos-tirol,trentinostirol,trentinosud-tirol,xn--trentinosd-tirol-rzb,trentinosudtirol,xn--trentinosdtirol-7vb,trentinosued-tirol,trentinosuedtirol,trentinsud-tirol,xn--trentinsd-tirol-6vb,trentinsudtirol,xn--trentinsdtirol-nsb,trentinsued-tirol,trentinsuedtirol,tuscany,umb,umbria,val-d-aosta,val-daosta,vald-aosta,valdaosta,valle-aosta,valle-d-aosta,valle-daosta,valleaosta,valled-aosta,valledaosta,vallee-aoste,xn--valle-aoste-ebb,vallee-d-aoste,xn--valle-d-aoste-ehb,valleeaoste,xn--valleaoste-e7a,valleedaoste,xn--valledaoste-ebb,vao,vda,ven,veneto,ag,agrigento,al,alessandria,alto-adige,altoadige,an,ancona,andria-barletta-trani,andria-trani-barletta,andriabarlettatrani,andriatranibarletta,ao,aosta,aoste,ap,aq,aquila,ar,arezzo,ascoli-piceno,ascolipiceno,asti,at,av,avellino,ba,balsan-sudtirol,xn--balsan-sdtirol-nsb,balsan-suedtirol,balsan,bari,barletta-trani-andria,barlettatraniandria,belluno,benevento,bergamo,bg,bi,biella,bl,bn,bo,bologna,bolzano-altoadige,bolzano,bozen-sudtirol,xn--bozen-sdtirol-2ob,bozen-suedtirol,bozen,br,brescia,brindisi,bs,bt,bulsan-sudtirol,xn--bulsan-sdtirol-nsb,bulsan-suedtirol,bulsan,bz,ca,cagliari,caltanissetta,campidano-medio,campidanomedio,campobasso,carbonia-iglesias,carboniaiglesias,carrara-massa,carraramassa,caserta,catania,catanzaro,cb,ce,cesena-forli,xn--cesena-forl-mcb,cesenaforli,xn--cesenaforl-i8a,ch,chieti,ci,cl,cn,co,como,cosenza,cr,cremona,crotone,cs,ct,cuneo,cz,dell-ogliastra,dellogliastra,en,enna,fc,fe,fermo,ferrara,fg,fi,firenze,florence,fm,foggia,forli-cesena,xn--forl-cesena-fcb,forlicesena,xn--forlcesena-c8a,fr,frosinone,ge,genoa,genova,go,gorizia,gr,grosseto,iglesias-carbonia,iglesiascarbonia,im,imperia,is,isernia,kr,la-spezia,laquila,laspezia,latina,lc,le,lecce,lecco,li,livorno,lo,lodi,lt,lu,lucca,macerata,mantova,massa-carrara,massacarrara,matera,mb,mc,me,medio-campidano,mediocampidano,messina,mi,milan,milano,mn,mo,modena,monza-brianza,monza-e-della-brianza,monza,monzabrianza,monzaebrianza,monzaedellabrianza,ms,mt,na,naples,napoli,no,novara,nu,nuoro,og,ogliastra,olbia-tempio,olbiatempio,or,oristano,ot,pa,padova,padua,palermo,parma,pavia,pc,pd,pe,perugia,pesaro-urbino,pesarourbino,pescara,pg,pi,piacenza,pisa,pistoia,pn,po,pordenone,potenza,pr,prato,pt,pu,pv,pz,ra,ragusa,ravenna,rc,re,reggio-calabria,reggio-emilia,reggiocalabria,reggioemilia,rg,ri,rieti,rimini,rm,rn,ro,roma,rome,rovigo,sa,salerno,sassari,savona,si,siena,siracusa,so,sondrio,sp,sr,ss,suedtirol,xn--sdtirol-n2a,sv,ta,taranto,te,tempio-olbia,tempioolbia,teramo,terni,tn,to,torino,tp,tr,trani-andria-barletta,trani-barletta-andria,traniandriabarletta,tranibarlettaandria,trapani,trento,treviso,trieste,ts,turin,tv,ud,udine,urbino-pesaro,urbinopesaro,va,varese,vb,vc,ve,venezia,venice,verbania,vercelli,verona,vi,vibo-valentia,vibovalentia,vicenza,viterbo,vr,vs,vt,vvco,net,org*com,org,net,edu,sch,gov,mil,nameac,ad,co,ed,go,gr,lg,ne,or,aichi>aisai,ama,anjo,asuke,chiryu,chita,fuso,gamagori,handa,hazu,hekinan,higashiura,ichinomiya,inazawa,inuyama,isshiki,iwakura,kanie,kariya,kasugai,kira,kiyosu,komaki,konan,kota,mihama,miyoshi,nishio,nisshin,obu,oguchi,oharu,okazaki,owariasahi,seto,shikatsu,shinshiro,shitara,tahara,takahama,tobishima,toei,togo,tokai,tokoname,toyoake,toyohashi,toyokawa,toyone,toyota,tsushima,yatomiakita,daisen,fujisato,gojome,hachirogata,happou,higashinaruse,honjo,honjyo,ikawa,kamikoani,kamioka,katagami,kazuno,kitaakita,kosaka,kyowa,misato,mitane,moriyoshi,nikaho,noshiro,odate,oga,ogata,semboku,yokote,yurihonjoaomori,gonohe,hachinohe,hashikami,hiranai,hirosaki,itayanagi,kuroishi,misawa,mutsu,nakadomari,noheji,oirase,owani,rokunohe,sannohe,shichinohe,shingo,takko,towada,tsugaru,tsurutaabiko,asahi,chonan,chosei,choshi,chuo,funabashi,futtsu,hanamigawa,ichihara,ichikawa,ichinomiya,inzai,isumi,kamagaya,kamogawa,kashiwa,katori,katsuura,kimitsu,kisarazu,kozaki,kujukuri,kyonan,matsudo,midori,mihama,minamiboso,mobara,mutsuzawa,nagara,nagareyama,narashino,narita,noda,oamishirasato,omigawa,onjuku,otaki,sakae,sakura,shimofusa,shirako,shiroi,shisui,sodegaura,sosa,tako,tateyama,togane,tohnosho,tomisato,urayasu,yachimata,yachiyo,yokaichiba,yokoshibahikari,yotsukaidoainan,honai,ikata,imabari,iyo,kamijima,kihoku,kumakogen,masaki,matsuno,matsuyama,namikata,niihama,ozu,saijo,seiyo,shikokuchuo,tobe,toon,uchiko,uwajima,yawatahamaechizen,eiheiji,fukui,ikeda,katsuyama,mihama,minamiechizen,obama,ohi,ono,sabae,sakai,takahama,tsuruga,wakasaashiya,buzen,chikugo,chikuho,chikujo,chikushino,chikuzen,chuo,dazaifu,fukuchi,hakata,higashi,hirokawa,hisayama,iizuka,inatsuki,kaho,kasuga,kasuya,kawara,keisen,koga,kurate,kurogi,kurume,minami,miyako,miyama,miyawaka,mizumaki,munakata,nakagawa,nakama,nishi,nogata,ogori,okagaki,okawa,oki,omuta,onga,onojo,oto,saigawa,sasaguri,shingu,shinyoshitomi,shonai,soeda,sue,tachiarai,tagawa,takata,toho,toyotsu,tsuiki,ukiha,umi,usui,yamada,yame,yanagawa,yukuhashiaizubange,aizumisato,aizuwakamatsu,asakawa,bandai,date,fukushima,furudono,futaba,hanawa,higashi,hirata,hirono,iitate,inawashiro,ishikawa,iwaki,izumizaki,kagamiishi,kaneyama,kawamata,kitakata,kitashiobara,koori,koriyama,kunimi,miharu,mishima,namie,nango,nishiaizu,nishigo,okuma,omotego,ono,otama,samegawa,shimogo,shirakawa,showa,soma,sukagawa,taishin,tamakawa,tanagura,tenei,yabuki,yamato,yamatsuri,yanaizu,yugawaanpachi,ena,gifu,ginan,godo,gujo,hashima,hichiso,hida,higashishirakawa,ibigawa,ikeda,kakamigahara,kani,kasahara,kasamatsu,kawaue,kitagata,mino,minokamo,mitake,mizunami,motosu,nakatsugawa,ogaki,sakahogi,seki,sekigahara,shirakawa,tajimi,takayama,tarui,toki,tomika,wanouchi,yamagata,yaotsu,yoroannaka,chiyoda,fujioka,higashiagatsuma,isesaki,itakura,kanna,kanra,katashina,kawaba,kiryu,kusatsu,maebashi,meiwa,midori,minakami,naganohara,nakanojo,nanmoku,numata,oizumi,ora,ota,shibukawa,shimonita,shinto,showa,takasaki,takayama,tamamura,tatebayashi,tomioka,tsukiyono,tsumagoi,ueno,yoshiokaasaminami,daiwa,etajima,fuchu,fukuyama,hatsukaichi,higashihiroshima,hongo,jinsekikogen,kaita,kui,kumano,kure,mihara,miyoshi,naka,onomichi,osakikamijima,otake,saka,sera,seranishi,shinichi,shobara,takeharaabashiri,abira,aibetsu,akabira,akkeshi,asahikawa,ashibetsu,ashoro,assabu,atsuma,bibai,biei,bifuka,bihoro,biratori,chippubetsu,chitose,date,ebetsu,embetsu,eniwa,erimo,esan,esashi,fukagawa,fukushima,furano,furubira,haboro,hakodate,hamatonbetsu,hidaka,higashikagura,higashikawa,hiroo,hokuryu,hokuto,honbetsu,horokanai,horonobe,ikeda,imakane,ishikari,iwamizawa,iwanai,kamifurano,kamikawa,kamishihoro,kamisunagawa,kamoenai,kayabe,kembuchi,kikonai,kimobetsu,kitahiroshima,kitami,kiyosato,koshimizu,kunneppu,kuriyama,kuromatsunai,kushiro,kutchan,kyowa,mashike,matsumae,mikasa,minamifurano,mombetsu,moseushi,mukawa,muroran,naie,nakagawa,nakasatsunai,nakatombetsu,nanae,nanporo,nayoro,nemuro,niikappu,niki,nishiokoppe,noboribetsu,numata,obihiro,obira,oketo,okoppe,otaru,otobe,otofuke,otoineppu,oumu,ozora,pippu,rankoshi,rebun,rikubetsu,rishiri,rishirifuji,saroma,sarufutsu,shakotan,shari,shibecha,shibetsu,shikabe,shikaoi,shimamaki,shimizu,shimokawa,shinshinotsu,shintoku,shiranuka,shiraoi,shiriuchi,sobetsu,sunagawa,taiki,takasu,takikawa,takinoue,teshikaga,tobetsu,tohma,tomakomai,tomari,toya,toyako,toyotomi,toyoura,tsubetsu,tsukigata,urakawa,urausu,uryu,utashinai,wakkanai,wassamu,yakumo,yoichiaioi,akashi,ako,amagasaki,aogaki,asago,ashiya,awaji,fukusaki,goshiki,harima,himeji,ichikawa,inagawa,itami,kakogawa,kamigori,kamikawa,kasai,kasuga,kawanishi,miki,minamiawaji,nishinomiya,nishiwaki,ono,sanda,sannan,sasayama,sayo,shingu,shinonsen,shiso,sumoto,taishi,taka,takarazuka,takasago,takino,tamba,tatsuno,toyooka,yabu,yashiro,yoka,yokawaami,asahi,bando,chikusei,daigo,fujishiro,hitachi,hitachinaka,hitachiomiya,hitachiota,ibaraki,ina,inashiki,itako,iwama,joso,kamisu,kasama,kashima,kasumigaura,koga,miho,mito,moriya,naka,namegata,oarai,ogawa,omitama,ryugasaki,sakai,sakuragawa,shimodate,shimotsuma,shirosato,sowa,suifu,takahagi,tamatsukuri,tokai,tomobe,tone,toride,tsuchiura,tsukuba,uchihara,ushiku,yachiyo,yamagata,yawara,yukianamizu,hakui,hakusan,kaga,kahoku,kanazawa,kawakita,komatsu,nakanoto,nanao,nomi,nonoichi,noto,shika,suzu,tsubata,tsurugi,uchinada,wajimafudai,fujisawa,hanamaki,hiraizumi,hirono,ichinohe,ichinoseki,iwaizumi,iwate,joboji,kamaishi,kanegasaki,karumai,kawai,kitakami,kuji,kunohe,kuzumaki,miyako,mizusawa,morioka,ninohe,noda,ofunato,oshu,otsuchi,rikuzentakata,shiwa,shizukuishi,sumita,tanohata,tono,yahaba,yamadaayagawa,higashikagawa,kanonji,kotohira,manno,marugame,mitoyo,naoshima,sanuki,tadotsu,takamatsu,tonosho,uchinomi,utazu,zentsujiakune,amami,hioki,isa,isen,izumi,kagoshima,kanoya,kawanabe,kinko,kouyama,makurazaki,matsumoto,minamitane,nakatane,nishinoomote,satsumasendai,soo,tarumizu,yusuiaikawa,atsugi,ayase,chigasaki,ebina,fujisawa,hadano,hakone,hiratsuka,isehara,kaisei,kamakura,kiyokawa,matsuda,minamiashigara,miura,nakai,ninomiya,odawara,oi,oiso,sagamihara,samukawa,tsukui,yamakita,yamato,yokosuka,yugawara,zama,zushiaki,geisei,hidaka,higashitsuno,ino,kagami,kami,kitagawa,kochi,mihara,motoyama,muroto,nahari,nakamura,nankoku,nishitosa,niyodogawa,ochi,okawa,otoyo,otsuki,sakawa,sukumo,susaki,tosa,tosashimizu,toyo,tsuno,umaji,yasuda,yusuharaamakusa,arao,aso,choyo,gyokuto,kamiamakusa,kikuchi,kumamoto,mashiki,mifune,minamata,minamioguni,nagasu,nishihara,oguni,ozu,sumoto,takamori,uki,uto,yamaga,yamato,yatsushiroayabe,fukuchiyama,higashiyama,ide,ine,joyo,kameoka,kamo,kita,kizu,kumiyama,kyotamba,kyotanabe,kyotango,maizuru,minami,minamiyamashiro,miyazu,muko,nagaokakyo,nakagyo,nantan,oyamazaki,sakyo,seika,tanabe,uji,ujitawara,wazuka,yamashina,yawataasahi,inabe,ise,kameyama,kawagoe,kiho,kisosaki,kiwa,komono,kumano,kuwana,matsusaka,meiwa,mihama,minamiise,misugi,miyama,nabari,shima,suzuka,tado,taiki,taki,tamaki,toba,tsu,udono,ureshino,watarai,yokkaichifurukawa,higashimatsushima,ishinomaki,iwanuma,kakuda,kami,kawasaki,marumori,matsushima,minamisanriku,misato,murata,natori,ogawara,ohira,onagawa,osaki,rifu,semine,shibata,shichikashuku,shikama,shiogama,shiroishi,tagajo,taiwa,tome,tomiya,wakuya,watari,yamamoto,zaoaya,ebino,gokase,hyuga,kadogawa,kawaminami,kijo,kitagawa,kitakata,kitaura,kobayashi,kunitomi,kushima,mimata,miyakonojo,miyazaki,morotsuka,nichinan,nishimera,nobeoka,saito,shiiba,shintomi,takaharu,takanabe,takazaki,tsunoachi,agematsu,anan,aoki,asahi,azumino,chikuhoku,chikuma,chino,fujimi,hakuba,hara,hiraya,iida,iijima,iiyama,iizuna,ikeda,ikusaka,ina,karuizawa,kawakami,kiso,kisofukushima,kitaaiki,komagane,komoro,matsukawa,matsumoto,miasa,minamiaiki,minamimaki,minamiminowa,minowa,miyada,miyota,mochizuki,nagano,nagawa,nagiso,nakagawa,nakano,nozawaonsen,obuse,ogawa,okaya,omachi,omi,ookuwa,ooshika,otaki,otari,sakae,sakaki,saku,sakuho,shimosuwa,shinanomachi,shiojiri,suwa,suzaka,takagi,takamori,takayama,tateshina,tatsuno,togakushi,togura,tomi,ueda,wada,yamagata,yamanouchi,yasaka,yasuokachijiwa,futsu,goto,hasami,hirado,iki,isahaya,kawatana,kuchinotsu,matsuura,nagasaki,obama,omura,oseto,saikai,sasebo,seihi,shimabara,shinkamigoto,togitsu,tsushima,unzenando,gose,heguri,higashiyoshino,ikaruga,ikoma,kamikitayama,kanmaki,kashiba,kashihara,katsuragi,kawai,kawakami,kawanishi,koryo,kurotaki,mitsue,miyake,nara,nosegawa,oji,ouda,oyodo,sakurai,sango,shimoichi,shimokitayama,shinjo,soni,takatori,tawaramoto,tenkawa,tenri,uda,yamatokoriyama,yamatotakada,yamazoe,yoshinoaga,agano,gosen,itoigawa,izumozaki,joetsu,kamo,kariwa,kashiwazaki,minamiuonuma,mitsuke,muika,murakami,myoko,nagaoka,niigata,ojiya,omi,sado,sanjo,seiro,seirou,sekikawa,shibata,tagami,tainai,tochio,tokamachi,tsubame,tsunan,uonuma,yahiko,yoita,yuzawabeppu,bungoono,bungotakada,hasama,hiji,himeshima,hita,kamitsue,kokonoe,kuju,kunisaki,kusu,oita,saiki,taketa,tsukumi,usa,usuki,yufuakaiwa,asakuchi,bizen,hayashima,ibara,kagamino,kasaoka,kibichuo,kumenan,kurashiki,maniwa,misaki,nagi,niimi,nishiawakura,okayama,satosho,setouchi,shinjo,shoo,soja,takahashi,tamano,tsuyama,wake,yakageaguni,ginowan,ginoza,gushikami,haebaru,higashi,hirara,iheya,ishigaki,ishikawa,itoman,izena,kadena,kin,kitadaito,kitanakagusuku,kumejima,kunigami,minamidaito,motobu,nago,naha,nakagusuku,nakijin,nanjo,nishihara,ogimi,okinawa,onna,shimoji,taketomi,tarama,tokashiki,tomigusuku,tonaki,urasoe,uruma,yaese,yomitan,yonabaru,yonaguni,zamamiabeno,chihayaakasaka,chuo,daito,fujiidera,habikino,hannan,higashiosaka,higashisumiyoshi,higashiyodogawa,hirakata,ibaraki,ikeda,izumi,izumiotsu,izumisano,kadoma,kaizuka,kanan,kashiwara,katano,kawachinagano,kishiwada,kita,kumatori,matsubara,minato,minoh,misaki,moriguchi,neyagawa,nishi,nose,osakasayama,sakai,sayama,sennan,settsu,shijonawate,shimamoto,suita,tadaoka,taishi,tajiri,takaishi,takatsuki,tondabayashi,toyonaka,toyono,yaoariake,arita,fukudomi,genkai,hamatama,hizen,imari,kamimine,kanzaki,karatsu,kashima,kitagata,kitahata,kiyama,kouhoku,kyuragi,nishiarita,ogi,omachi,ouchi,saga,shiroishi,taku,tara,tosu,yoshinogariarakawa,asaka,chichibu,fujimi,fujimino,fukaya,hanno,hanyu,hasuda,hatogaya,hatoyama,hidaka,higashichichibu,higashimatsuyama,honjo,ina,iruma,iwatsuki,kamiizumi,kamikawa,kamisato,kasukabe,kawagoe,kawaguchi,kawajima,kazo,kitamoto,koshigaya,kounosu,kuki,kumagaya,matsubushi,minano,misato,miyashiro,miyoshi,moroyama,nagatoro,namegawa,niiza,ogano,ogawa,ogose,okegawa,omiya,otaki,ranzan,ryokami,saitama,sakado,satte,sayama,shiki,shiraoka,soka,sugito,toda,tokigawa,tokorozawa,tsurugashima,urawa,warabi,yashio,yokoze,yono,yorii,yoshida,yoshikawa,yoshimiaisho,gamo,higashiomi,hikone,koka,konan,kosei,koto,kusatsu,maibara,moriyama,nagahama,nishiazai,notogawa,omihachiman,otsu,ritto,ryuoh,takashima,takatsuki,torahime,toyosato,yasuakagi,ama,gotsu,hamada,higashiizumo,hikawa,hikimi,izumo,kakinoki,masuda,matsue,misato,nishinoshima,ohda,okinoshima,okuizumo,shimane,tamayu,tsuwano,unnan,yakumo,yasugi,yatsukaarai,atami,fuji,fujieda,fujikawa,fujinomiya,fukuroi,gotemba,haibara,hamamatsu,higashiizu,ito,iwata,izu,izunokuni,kakegawa,kannami,kawanehon,kawazu,kikugawa,kosai,makinohara,matsuzaki,minamiizu,mishima,morimachi,nishiizu,numazu,omaezaki,shimada,shimizu,shimoda,shizuoka,susono,yaizu,yoshidaashikaga,bato,haga,ichikai,iwafune,kaminokawa,kanuma,karasuyama,kuroiso,mashiko,mibu,moka,motegi,nasu,nasushiobara,nikko,nishikata,nogi,ohira,ohtawara,oyama,sakura,sano,shimotsuke,shioya,takanezawa,tochigi,tsuga,ujiie,utsunomiya,yaitaaizumi,anan,ichiba,itano,kainan,komatsushima,matsushige,mima,minami,miyoshi,mugi,nakagawa,naruto,sanagochi,shishikui,tokushima,wajikiadachi,akiruno,akishima,aogashima,arakawa,bunkyo,chiyoda,chofu,chuo,edogawa,fuchu,fussa,hachijo,hachioji,hamura,higashikurume,higashimurayama,higashiyamato,hino,hinode,hinohara,inagi,itabashi,katsushika,kita,kiyose,kodaira,koganei,kokubunji,komae,koto,kouzushima,kunitachi,machida,meguro,minato,mitaka,mizuho,musashimurayama,musashino,nakano,nerima,ogasawara,okutama,ome,oshima,ota,setagaya,shibuya,shinagawa,shinjuku,suginami,sumida,tachikawa,taito,tama,toshimachizu,hino,kawahara,koge,kotoura,misasa,nanbu,nichinan,sakaiminato,tottori,wakasa,yazu,yonagoasahi,fuchu,fukumitsu,funahashi,himi,imizu,inami,johana,kamiichi,kurobe,nakaniikawa,namerikawa,nanto,nyuzen,oyabe,taira,takaoka,tateyama,toga,tonami,toyama,unazuki,uozu,yamadaarida,aridagawa,gobo,hashimoto,hidaka,hirogawa,inami,iwade,kainan,kamitonda,katsuragi,kimino,kinokawa,kitayama,koya,koza,kozagawa,kudoyama,kushimoto,mihama,misato,nachikatsuura,shingu,shirahama,taiji,tanabe,wakayama,yuasa,yuraasahi,funagata,higashine,iide,kahoku,kaminoyama,kaneyama,kawanishi,mamurogawa,mikawa,murayama,nagai,nakayama,nanyo,nishikawa,obanazawa,oe,oguni,ohkura,oishida,sagae,sakata,sakegawa,shinjo,shirataka,shonai,takahata,tendo,tozawa,tsuruoka,yamagata,yamanobe,yonezawa,yuzaabu,hagi,hikari,hofu,iwakuni,kudamatsu,mitou,nagato,oshima,shimonoseki,shunan,tabuse,tokuyama,toyota,ube,yuuchuo,doshi,fuefuki,fujikawa,fujikawaguchiko,fujiyoshida,hayakawa,hokuto,ichikawamisato,kai,kofu,koshu,kosuge,minami-alps,minobu,nakamichi,nanbu,narusawa,nirasaki,nishikatsura,oshino,otsuki,showa,tabayama,tsuru,uenohara,yamanakako,yamanashi*,!city*,!city*,!city*,!city*,!city*,!city*,!city<ac,co,go,info,me,mobi,ne,or,scorg,net,com,edu,gov,mil*edu,biz,net,org,gov,info,comorg,nom,gov,prd,tm,edu,mil,ass,com,coop,asso,presse,medecin,notaires,pharmaciens,veterinaire,gouvnet,org,edu,govcom,edu,gov,org,rep,traac,co,es,go,hs,kg,mil,ms,ne,or,pe,re,sc,busan,chungbuk,chungnam,daegu,daejeon,gangwon,gwangju,gyeongbuk,gyeonggi,gyeongnam,incheon,jeju,jeonbuk,jeonnam,seoul,ulsancom,edu,emb,gov,ind,net,orgcom,edu,net,orgorg,edu,net,gov,mil,comint,net,info,edu,gov,per,com,orgcom,edu,gov,net,orgcom,net,co,org,edu,govgov,sch,net,int,com,org,edu,ngo,soc,web,ltd,assn,grp,hotel,accom,edu,gov,org,netac,biz,co,edu,gov,info,net,org,scgovcom,edu,gov,org,mil,id,net,asn,confcom,net,gov,plc,edu,sch,med,org,idco,net,gov,org,ac,presstm,assoco,net,org,edu,ac,gov,its,privorg,nom,gov,prd,tm,edu,mil,com,cocom,org,net,edu,gov,inf,namecom,edu,gouv,gov,net,org,presse*gov,edu,orgcom,net,org,edu,govgovcom,edu,gov,net,orgcom,edu,net,orgcom,net,org,gov,ac,co,oraero,biz,com,coop,edu,gov,info,int,mil,museum,name,net,org,proac,biz,co,com,coop,edu,gov,int,museum,net,orgcom,org,gob,edu,netbiz,com,edu,gov,mil,name,net,orgac,adv,co,edu,gov,mil,net,orginfo,pro,name,school,or,dr,us,mx,ca,in,cc,tv,ws,mobi,co,com,orgasso,nomcom,net,per,rec,web,arts,firm,info,other,storecom,edu,gov,i,mil,mobi,name,net,org,schac,biz,co,com,edu,gob,in,info,int,mil,net,nom,org,webfhs,vgs,fylkesbibl,folkebibl,museum,idrett,priv,mil,stat,dep,kommune,herad,aa>gsgsgsgsgsgsgsgsgsgsgs
    gsgsgsgsgsgsgsgsgsgsbo,xn--b-5gabo,xn--b-5ga,heroy,xn--hery-iraheroy,sandexn--hery-ira,sandenesnesos,valer,xn--vler-qoaossandevalerxn--vler-qoa<*biz,info,gov,edu,org,net,comac,co,cri,geek,gen,govt,health,iwi,kiwi,maori,mil,xn--mori-qsa,net,org,parliament,schoolco,com,edu,gov,med,museum,net,org,proac,gob,com,org,sld,edu,net,ing,abo,med,nomedu,gob,nom,mil,org,com,netcom,org,edu*com,net,org,gov,edu,ngo,mil,iac,biz,com,edu,fam,gkp,gob,gog,gok,gon,gop,gos,gov,net,org,webcom,net,org,aid,agro,atm,auto,biz,edu,gmina,gsm,info,mail,miasta,media,mil,nieruchomosci,nom,pc,powiat,priv,realestate,rel,sex,shop,sklep,sos,szkola,targi,tm,tourism,travel,turystyka,gov>ap,griw,ic,is,kmpsp,konsulat,kppsp,kwp,kwpsp,mup,mw,oia,oirm,oke,oow,oschr,oum,pa,pinb,piw,po,pr,psp,psse,pup,rzgw,sa,sdn,sko,so,sr,starostwo,ug,ugim,um,umig,upow,uppo,us,uw,uzs,wif,wiih,winb,wios,witd,wiw,wkz,wsa,wskr,wsse,wuoz,wzmiuw,zp,zpisdngov,co,org,edu,netcom,net,org,gov,edu,isla,pro,biz,info,name,est,prof,acaaa,aca,acct,avocat,bar,cpa,eng,jur,law,med,rechtedu,gov,sec,plo,com,org,netnet,gov,org,edu,int,publ,com,nomeco,ne,or,ed,go,belaucom,coop,edu,gov,mil,net,orgcom,edu,gov,mil,name,net,org,schasso,com,nomarts,com,firm,info,nom,nt,org,rec,store,tm,wwwac,co,edu,gov,in,orgac,co,coop,gov,mil,net,orgcom,net,org,gov,med,pub,edu,schcom,edu,gov,net,orgcom,gov,net,org,educom,net,org,edu,med,tv,gov,infoa,ac,b,bd,brand,c,d,e,f,fh,fhsk,fhv,g,h,i,k,komforb,kommunalforbund,komvux,l,lanbib,m,n,naturbruksgymn,o,org,p,parti,pp,press,r,s,t,tm,u,w,x,y,zcom,net,org,gov,edu,percom,net,gov,org,milcom,net,edu,gov,orgart,com,edu,gouv,org,perso,univcom,edu,gov,me,net,orgbiz,com,edu,gov,me,net,org,schco,com,consulado,edu,embaixada,mil,net,org,principe,saotome,storecom,edu,gob,org,redgovedu,gov,net,mil,com,orgco,ac,orgac,co,go,in,mi,net,orac,biz,co,com,edu,go,gov,int,mil,name,net,nic,org,test,webgovcom,co,org,net,nom,gov,mil,educom,ens,fin,gov,ind,info,intl,mincom,nat,net,org,perso,tourismcom,gov,net,org,edu,milav,bbs,bel,biz,com,dr,edu,gen,gov,info,mil,k12,kep,name,net,org,pol,tel,tsk,tv,web,nc>gov<co,com,org,net,biz,info,pro,int,coop,jobs,mobi,travel,museum,aero,name,gov,eduedu,gov,mil,com,net,org,idv,game,ebiz,club,xn--zf0ao64a,xn--uc0atv,xn--czrw28bac,co,go,hotel,info,me,mil,mobi,ne,or,sc,tvcom,edu,gov,in,net,org,cherkassy,cherkasy,chernigov,chernihiv,chernivtsi,chernovtsy,ck,cn,cr,crimea,cv,dn,dnepropetrovsk,dnipropetrovsk,donetsk,dp,if,ivano-frankivsk,kh,kharkiv,kharkov,kherson,khmelnitskiy,khmelnytskyi,kiev,kirovograd,km,kr,kropyvnytskyi,krym,ks,kv,kyiv,lg,lt,lugansk,luhansk,lutsk,lv,lviv,mk,mykolaiv,nikolaev,od,odesa,odessa,pl,poltava,rivne,rovno,rv,sb,sebastopol,sevastopol,sm,sumy,te,ternopil,uz,uzhgorod,uzhhorod,vinnica,vinnytsia,vn,volyn,yalta,zakarpattia,zaporizhzhe,zaporizhzhia,zhitomir,zhytomyr,zp,ztco,or,ac,sc,go,ne,com,orgac,co,gov,ltd,me,net,nhs,org,plc,police,sch>*<dni,fed,isa,kids,nsn,ak>k12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libcck12,cc,libk12,cc,libk12,cc,libcc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12>pvt,chtr,parochk12,cc,libk12,cc,libk12,cc,lib,ann-arbor,cog,dst,eaton,gen,mus,tec,washtenawk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libcc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libcc,libk12,cc,libcc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libk12,cc,libcck12,cc,lib<com,edu,gub,mil,net,orgco,com,net,orgcom,net,org,gov,mil,eduarts,bib,co,com,e12,edu,firm,gob,gov,info,int,mil,net,nom,org,rar,rec,store,tec,webco,com,k12,net,orgac,ai,biz,com,edu,gov,health,id,info,int,io,name,net,org,pro,angiang,bacgiang,backan,baclieu,bacninh,baria-vungtau,bentre,binhdinh,binhduong,binhphuoc,binhthuan,camau,cantho,caobang,daklak,daknong,danang,dienbien,dongnai,dongthap,gialai,hagiang,haiduong,haiphong,hanam,hanoi,hatinh,haugiang,hoabinh,hungyen,khanhhoa,kiengiang,kontum,laichau,lamdong,langson,laocai,longan,namdinh,nghean,ninhbinh,ninhthuan,phutho,phuyen,quangbinh,quangnam,quangngai,quangninh,quangtri,soctrang,sonla,tayninh,thaibinh,thainguyen,thanhhoa,thanhphohochiminh,thuathienhue,tiengiang,travinh,tuyenquang,vinhlong,vinhphuc,yenbaicom,edu,net,orgcom,net,org,gov,eduxn--55qx5d,xn--wcvs22d,xn--mxtq1m,xn--gmqw5a,xn--od0alg,xn--uc0atvxn--o1ac,xn--c1avg,xn--90azh,xn--d1at,xn--o1ach,xn--80auxn--12c1fe0br,xn--12co0c3b4eva,xn--h3cuzk1di,xn--o3cyx2a,xn--m3ch0j3a,xn--12cfi8ixb8lcom,edu,gov,net,mil,orgac,agric,alt,co,edu,gov,grondar,law,mil,net,ngo,nic,nis,nom,org,school,tm,webac,biz,co,com,edu,gov,info,mil,net,org,schac,co,gov,mil,orgco,eduart,gliwice,krakow,poznan,wroc,zakopane,beep,ecommerce-shop,cfolks,dfirma,dkonto,you2,shoparena,homesklep,sdscloud,unicloud,krasnik,leczna,lubartow,lublin,poniatowa,swidnik,co,torun,simplesite,myspreadshop,gda,gdansk,gdynia,med,sopot,bielskode>libphxgh,gl12chars,panel,autocode,lcl>****relay*user>*<archer,bones,canary,global,hacker,id,janeway,kim,kira,kirk,odo,paris,picard,pike,prerelease,reed,riker,sisko,spock,staging,sulu,tarpit,teams,tucker,wesley,worfd>********<*<12chars,blogspot,ibxos,iliadboxos,neen>jcopen>jelastic>cloud<<<16-b,32-b,64-b,123homepage,myspreadshop,syncloud12chars,cloudns,dnstrace>bcicc,inf,ltd,cx,ie,biz,co,pp,v611,oya,x0,quickconnect>directa2hosted,cpserver,adobeaemcloud>dev>*<af-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointwebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-websiteexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointwebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointwebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointwebview-assetsvfs<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspointwebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fipswebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fipsexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fipsexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-websitewebview-assetsvfs,webview-assets<execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-websitewebview-assetsvfs,webview-assets<**af-south-1>*****************************<accesspoint>mrap<*<af-south-1>authauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauthauth,auth-fipsauth,auth-fipsauth-fipsauth,auth-fipsauth,auth-fips<*af-south-1,ap-east-1,ap-northeast-1,ap-northeast-2,ap-northeast-3,ap-south-1,ap-southeast-1,ap-southeast-2,ap-southeast-3,ca-central-1,eu-central-1,eu-north-1,eu-south-1,eu-west-1,eu-west-2,eu-west-3,il-central-1,me-south-1,sa-east-1,us-east-1,us-east-2,us-gov-east-1,us-gov-west-1,us-west-1,us-west-2services>*<*,oci>***<demo,instance*eu-1,eu-2,eu-3,eu-4,us-1,us-2,us-3,us-4*r>*<paasrag-cloud,rag-cloud-chjcloud,jcloud-ver-jpcdemopaasjed,lon,rydcns>*<members,nodebalancer>*<*ipappseucaracal,customer,fentiger,lynx,ocelot,oncilla,onza,sphinx,vs,x,yalicloud<4u,nfshost,ar,hu,kr,no,qc,uy,3utilities,blogsyte,ciscofreak,damnserver,ddnsking,ditchyourip,dnsiskinky,dynns,geekgalaxy,health-carereform,homesecuritymac,homesecuritypc,myactivedirectory,mysecuritycamera,myvnc,net-freaks,onthewifi,point2this,quicksytes,securitytactics,servebeer,servecounterstrike,serveexchange,serveftp,servegame,servehalflife,servehttp,servehumour,serveirc,servemp3,servep2p,servepics,servequake,servesarcasm,stufftoread,unusualperson,workisboring,001www,ddnslive,myiphost,observableusercontent>static*xeneu*app<180r,dojin,sakuratan,sakuraweb,x0,code>builder>***<platform>code-builder-stg>test>001>*<<<<alpha,betaapimediasitepro*pagesjsu2,u2-localaaaon-acorn>*app,backyards>*<s>*<uk0dyndnsid*paassekd1cloud-fr1*ap,au,eu,in,jp,sa,usstagemocksys>*<site**devicesclientapps**dev>cust,reservdcust,reservdcustcust,reservd<activetrail,cloudns,jozi,dyndns,for-better,for-more,for-some,for-the,selfip,webhop,orx,mmafan,myftp,no-ip,dscloudadaptable,beget>*previewrelaystaging*****id*,privatelink>*<previewaem,hlx,ewp>*<adobeaemcloud,adobeio-static,adobeioruntime,akadns,akamai,akamai-staging,akamaiedge,akamaiedge-staging,akamaihd,akamaihd-staging,akamaiorigin,akamaiorigin-staging,akamaized,akamaized-staging,edgekey,edgekey-staging,edgesuite,edgesuite-staging,alwaysdata,myamaze,cloudfront,appudo,atlassian-dev>prod>cdn<rcdncdncdncdn*ufreetls,map,prod>a,globala,b,global<mapfra1-de,west1-usjls-sto1,jls-sto2,jls-sto3paas>fr-1,lon-1,lon-2,ny-1,ny-2,sg-1<jelastic,nordeste-idcjjelastic1,2,3,4,5,6,7,centralus,eastasia,eastus2,westeurope,westus2core>blobsnhosting>**<jelastic>atl,njs,ric<soc,userbetac>*<pagesstorage,websiteaem,hlx,hlx3,translated,codeberg,prvcy,rocky,magnet,pdns,pleskairkitapps,mycd,cloudns,dogado>jelastic*barsy,awdev>*compute>*<alces>*altervista,pimienta,poivron,potager,sweetpepper,cdn77>c,rscorigin>ssl<go,homeal,asso,at,au,be,bg,ca,cd,ch,cn,cy,cz,de,dk,edu,ee,es,fi,fr,gr,hr,hu,ie,il,in,int,is,it,jp,kr,lt,lu,lv,mc,me,mk,mt,my,net,ng,nl,no,nz,paris,pl,pt,q-a,ro,ru,se,si,sk,tr,uk,uscloud,os>appos>app<<s3com>amazonaws>cn-north-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-websiteexecute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint*cn-north-1>**<cn-north-1,cn-northwest-1*<cn-north-1>notebook,studionotebook,studio<<my>*<asdirect<sagemaker>ap-northeast-1>labeling,notebook,studiolabeling,notebook,studiolabeling,notebook,studiolabeling,notebook,studiolabeling,notebook,studiolabeling,notebook,notebook-fips,studiolabeling,notebook,studiolabeling,notebook,studiolabeling,notebook,studiolabeling,notebook,notebook-fips,studiolabeling,notebook,notebook-fips,studiolabeling,notebook,notebook-fips,studionotebook,studionotebook,studionotebook,studionotebooknotebook,studionotebooknotebook,notebook-fipsnotebooknotebook,studionotebook,studionotebook,studionotebook,studionotebook,studionotebook,studionotebook,studionotebook,studionotebook,notebook-fips,studio,studio-fipsnotebook,notebook-fips,studio,studio-fipsnotebook,notebook-fips,studio*<private>*<<eero,eero-stage,websitebuilder,barsyf5,gitapp,gitpage,blogspotne>aseinet>userisk01>s3s3<rs,usergv>d<0e,mydnsparty>user<myfritz,cyon,nftstorage>ipfs*<advisor>*banzai>*eu*es-1viparuba>eur>it1<cstn,ukukca,uk,usch,de**baremetal>fr-par-1,fr-par-2,nl-ams-1cockpit,fnc>functionsnodespriv,pubcockpit,k8s>nodescockpit,k8s>nodesruns*base,officialbase,hoplix,barsy,barsyonlinepagesbnrbip,hashbang,platform>ent,eu,usofsquare7,cloudns,cloudscale>cust,lpg>objectsobjects<ae>alp1*,svc>*<<12hp,2ix,4lima,lima-citybplaced,square7,com,cosidns>dyndyn,dyndnsdyn*it>pages<customer*brendly>shopbrendly>shopradio,blogspotradio,user>*<co>bytemark>dh,vmjcustapi,campaign,serviceglug,lug,lugs,affinitylottery,raffleentry,weeklylotterycanva>my>*<***drr,feedback,formsuwu,framercarrd,crd,otap>*blogspot*ididjucontentproxy9>rsccloud>*cloud>flt,usr<<za,mydns,gsjcom,blogspot,conf,iopsys,123minsida,itcouldbewor,myspreadshopdiscoursediscourse,jelasticcleverapps,cloudns,ftpaccess,game-server,myphotos,scrapping,twmail,csx,fantasyleague,spawn>instances<cleverappscloudns,daemon,dixcloudns,webhosting,blogspot,interhostsolutions>cloudezproxy<123website,myspreadshop,transurl>*<cloudns,blogspotcloudns,jele,barsycloudns,ath,info,assessments,calculators,funnels,paynow,quizzes,researched,testscloudns,blogspot,barsy,web,supabasecloudns,dynamic-dns,barrel-of-knowledge,barrell-of-knowledge,dyndns,for-our,groks-the,groks-this,here-for-more,knowsitall,selfip,webhop,barsy,mayfirst,dvrcam,ilovecollege,no-ip,forumz,nsupdate,dnsupdate,v-infocloudns,co>blogspot<cloudnscloudns,x443c66,craft,daplie>localhostsitecloud66,hs,triton>*cloudaccess,freesite,easypanel,fastvps,myfast,tempurl,wpmudev,jele,mircloud,wp2,halfcnpyco,hosting-cluster,blogspot,gov,khplay,123website,myspreadshop,transurl>*co,blogspot,123hjemmeside,myspreadshopac,edu,gov,int,mil,test,eurodir,adygeya,bashkiria,bir,cbg,com,dagestan,grozny,kalmykia,kustanai,marine,mordovia,msk,mytis,nalchik,nov,pyatigorsk,spb,vladikavkaz,vladimir,blogspot,na4u,mircloud,regruhosting>jelastichosting>****<hbvpscrisp>onpp<biz,co,firm,reg,store,blogspot,123hjemmeside,myspreadshopdapps>*,bzz>*<<usmy>rss>*<blogspotdiher>*<online,shopdy,blogspot,xn--hkkinen-5wa,iki,cloudplatform>fidemo,paasher>forgotforgot<merseine,mine,shacknet,enterprisecloudbetter-than,dyndns,on-the-web,worse-than,from,sakuramyddns,stackit,lima-city,webspaceblogsite,localzone,crafting,zapto,telebit>*<onred>staging*com>mymaileremf>at<rtelementor,deen-root,fbx-os,fbxos,freebox-os,freeboxos,blogspot,goupile,123siteweb,on-web,chirurgiens-dentistes-en-france,dedibox,aeroport,avocat,chambagri,chirurgiens-dentistes,experts-comptables,medecin,notaires,pharmacien,port,veterinaire,myspreadshop,ynhabkhazia,adygeya,aktyubinsk,arkhangelsk,armenia,ashgabad,azerbaijan,balashov,bashkiria,bryansk,bukhara,chimkent,dagestan,east-kazakhstan,exnet,georgia,grozny,ivanovo,jambyl,kalmykia,kaluga,karacol,karaganda,karelia,khakassia,krasnodar,kurgan,kustanai,lenug,mangyshlak,mordovia,msk,murmansk,nalchik,navoi,north-kazakhstan,nov,obninsk,penza,pokrovsk,sochi,spb,tashkent,termez,togliatti,troitsk,tselinograd,tula,tuva,vladikavkaz,vladimir,vologdamyfast,heiyu,app-ionos,uber,xs4allframerframerframerframerfunkfeuer>wien*,ex>**<ex>**<blogspotlab,minisitecorpnetnog,ravendb,myforumco,shop,blogspot,barsygraphic,bssblogspotblogspotcom>blogspot<com>blogspot,cloudlets>melblogspot,rsblogspot,barsyblogspot
    com>blogspot,simplesiteac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to<com>blogspotblogspotblogspotcom>blogspot,scaleforce>j<<com>blogspot<com>blogspot<com>blogspot<123miweb,myspreadshopcloud,translate,usercontent>*<blogspot,barsy,simplesiteblogspot,secaas,inc,ltdblogspotblogspot,myspreadshopco>blogspot,ravpage,mytabit,tabitorder<blogspotco>blogspot<blogspot
  1. blogspot,caablogspotblogspot,123websiteblogspot,irblogspotblogspotcom>blogspot<blogspotblogspotcom>blogspotblogspotblogspot,123paginawebblogspotblogspot,canblogspot,enscaledblogspotblogspotblogspotcom>blogspot<blogspotcom>blogspot<blogspotco>blogspot<cloudapps>london<finhs,development,ravendb,servers,build>****express,webhelioho,kirara,nohoid>**bizedu,gov>service<sch,surveysjcloud,kazteleport>upaas<orangecloudkaas,stackit,panel>daemon<knightpointkoobin,colibp2pcococococoweloginlinebarsy,barsyonlinebarsy,dscloudbarsy,sellfy,shopware,storebasebarsyhranabu>ui<ngroknoticeablenow-dns,ntdll,wadl>*<nerdpolnycoblomgopencrafttechown,nameowo>*<oypley,sheezycoprequalifymecloudsiteaus,nzrit>git-pages<xn--90amc,xn--j1aef,xn--j1ael8b,xn--h1ahn,xn--j1adp,xn--c1avg,xn--80aaa0cvac,xn--h1aliz,xn--90a1af,xn--41aindstorj1337clanschbiz,schorgrouterofficialyboyboyboyboybo");let r=a_(o,a),c=a_(o,t);if(0===r.length&&0===c.length)return{type:f.NotListed,hostname:n,labels:o};let l=o.length-Math.max(c.length,r.length)-1,u=o.length-r.length-1;return Object.assign({type:f.Listed,hostname:n,labels:o,icann:te(o,u)},te(o,l))},BareClient:class e{constructor(e){this.worker=new aA(e)}createWebSocket(e,a=[],t,i){try{e=new URL(e)}catch(a){throw new DOMException(`Faiiled to construct 'WebSocket': The URL '${e}' is invalid.`)}if(!aI.includes(e.protocol))throw new DOMException(`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${e.protocol}' is not allowed.`);for(let e of(Array.isArray(a)||(a=[a]),a=a.map(String)))if(!function(e){for(let a=0;ae&&null!==a){n=new URL(a,n);continue}throw TypeError("Failed to fetch")}case"error":throw TypeError("Failed to fetch");case"manual":return r}}}},BareMuxConnection:class e{constructor(e){this.worker=new aA(e)}async getTransport(){return(await this.worker.sendMessage({type:"get"})).name}async setTransport(e,a,t){await this.setManualTransport(` + const { default: BareTransport } = await import("${e}"); + return [BareTransport, "${e}"]; + `,a,t)}async setManualTransport(e,a,t){if("bare-mux-remote"===e)throw Error("Use setRemoteTransport.");await this.worker.sendMessage({type:"set",client:{function:e,args:a}},t)}async setRemoteTransport(e,a){let t=new MessageChannel;t.port1.onmessage=async a=>{let t=a.data.port,i=a.data.message;if("fetch"===i.type)try{e.ready||await e.init(),await async function(e,a,t){let i=await t.request(new URL(e.fetch.remote),e.fetch.method,e.fetch.body,e.fetch.headers,null);if(!function(){if(null===aq){let e;let a=new MessageChannel,t=new ReadableStream;try{av.call(a.port1,t,[t]),e=!0}catch(a){e=!1}return aq=e,e}return aq}()&&i.body instanceof ReadableStream){let e=new Response(i.body);i.body=await e.arrayBuffer()}i.body instanceof ReadableStream||i.body instanceof ArrayBuffer?av.call(a,{type:"fetch",fetch:i},[i.body]):av.call(a,{type:"fetch",fetch:i})}(i,t,e)}catch(e){aT(t,e,"fetch")}else if("websocket"===i.type)try{e.ready||await e.init(),await async function(e,a,t){let[i,s]=t.connect(new URL(e.websocket.url),e.websocket.protocols,e.websocket.requestHeaders,a=>{av.call(e.websocket.channel,{type:"open",args:[a]})},a=>{a instanceof ArrayBuffer?av.call(e.websocket.channel,{type:"message",args:[a]},[a]):av.call(e.websocket.channel,{type:"message",args:[a]})},(a,t)=>{av.call(e.websocket.channel,{type:"close",args:[a,t]})},a=>{av.call(e.websocket.channel,{type:"error",args:[a]})});e.websocket.channel.onmessage=e=>{"data"===e.data.type?i(e.data.data):"close"===e.data.type&&s(e.data.closeCode,e.data.closeReason)},av.call(a,{type:"websocket"})}(i,t,e)}catch(e){aT(t,e,"websocket")}},await this.worker.sendMessage({type:"set",client:{function:"bare-mux-remote",args:[t.port2,a]}},[t.port2])}getInnerPort(){return this.worker.port}},ScramjetHeaders:class e{headers={};set(e,a){this.headers[e.toLowerCase()]=a}}},url:{rewriteUrl:H,unrewriteUrl:Q,rewriteBlob:function(e,a){let t=new URL(e.substring(5));return"blob:"+a.origin.origin+t.pathname},unrewriteBlob:G},rewrite:{rewriteCss:Z,unrewriteCss:function(e){return J("unrewrite",e)},rewriteHtml:al,unrewriteHtml:function(e){let a=new eP((e,a)=>a),t=new ev(a);return t.write(e),t.end(),!function e(a){if("attribs"in a)for(let e in a.attribs){if("scramjet-attr-script-source-src"==e){a.children[0]&&"data"in a.children[0]&&(a.children[0].data=atob(a.attribs[e]));continue}e.startsWith("scramjet-attr-")&&(a.attribs[e.slice("scramjet-attr-".length)]=a.attribs[e],delete a.attribs[e])}if("childNodes"in a)for(let t of a.childNodes)e(t)}(a.root),e5(a.root)},rewriteSrcset:ad,rewriteJs:W,rewriteHeaders:function(e,a){let t={};for(let a in e)t[a.toLowerCase()]=e[a];return ag.forEach(e=>{delete t[e]}),ap.forEach(e=>{t[e]&&(t[e]=H(t[e]?.toString(),a))}),"string"==typeof t.link?t.link=ab(t.link,a):Array.isArray(t.link)&&(t.link=t.link.map(e=>ab(e,a))),t},rewriteWorkers:function(e,a,t,i){let s="",o=e=>{"module"===a?s+=`import "${x.config.files[e]}" +`:s+=`importScripts("${x.config.files[e]}"); +`};o("wasm"),o("shared"),s+=`self.$scramjet.config = ${JSON.stringify(x.config)};`,o("client");let n=W(e,t,i);return n instanceof Uint8Array&&(n=new TextDecoder().decode(n)),s+=n},htmlRules:au},CookieStore:class e{cookies={};setCookies(e,a){for(let t of e){let e=tt()(t),i=e.domain,s={domain:i,sameSite:e.sameSite,...e[0]};!s.domain&&(s.domain="."+a.hostname),!s.domain.startsWith(".")&&(s.domain="."+s.domain),!s.path&&(s.path="/"),!s.sameSite&&(s.sameSite="lax"),s.expires&&(s.expires=s.expires.toString());let o=`${s.domain}@${s.path}@${s.name}`;this.cookies[o]=s}}getCookies(e,a){let t=new Date,i=Object.values(this.cookies),s=[];for(let o of i){if(o.expires&&new Date(o.expires)`${e.name}=${e.value}`).join("; ")}load(e){if("object"==typeof e)return e;this.cookies=JSON.parse(e)}dump(){return JSON.stringify(this.cookies)}}},"document"in self&&document?.currentScript&&document.currentScript.remove()})(); +//# sourceMappingURL=scramjet.shared.js.map \ No newline at end of file diff --git a/views/scram/scramjet.shared.js.map b/views/scram/scramjet.shared.js.map new file mode 100644 index 00000000..cc3bf815 --- /dev/null +++ b/views/scram/scramjet.shared.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scramjet.shared.js","sources":["webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/wasm.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/parse-domain.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Tokenizer.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/helpers.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/sanitize.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/set-cookie-parser@2.7.1/node_modules/set-cookie-parser/lib/set-cookie.js","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/snippets/wasm-4b0f351a8e6eeb46/inline0.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/js.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/url.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/css.ts","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Parser.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/encode.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/stringify.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/legacy.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/domutils@3.1.0/node_modules/domutils/lib/esm/feeds.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/html.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/headers.ts","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/@mercuryworkshop+bare-mux@2.1.7/node_modules/@mercuryworkshop/bare-mux/dist/index.mjs","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/look-up.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/characters.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/ip-regex@5.0.0/node_modules/ip-regex/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/is-regexp@3.1.0/node_modules/is-regexp/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/clone-regexp@3.0.0/node_modules/clone-regexp/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/super-regex@0.2.0/node_modules/super-regex/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/function-timeout@0.1.1/node_modules/function-timeout/browser.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/is-ip@5.0.1/node_modules/is-ip/index.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/nodes.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/build/trie/parse-trie.js","webpack://@mercuryworkshop/scramjet/./src/shared/index.ts","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/serialized-tries/icann.js","webpack://@mercuryworkshop/scramjet/./node_modules/.pnpm/parse-domain@8.2.2/node_modules/parse-domain/serialized-tries/private.js","webpack://@mercuryworkshop/scramjet/./src/shared/headers.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/worker.ts","webpack://@mercuryworkshop/scramjet/./src/shared/cookie.ts"],"sourcesContent":["import { scramtag } from './snippets/wasm-4b0f351a8e6eeb46/inline0.js';\n\nlet wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n * @param {string} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js(js, url, script_url, scramjet) {\n const ptr0 = passStringToWasm0(js, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * @param {Uint8Array} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js_from_arraybuffer(js, url, script_url, scramjet) {\n const ptr0 = passArray8ToWasm0(js, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js_from_arraybuffer(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_call_3b770f0d6eb4720e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_500db948e69c7330 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_b0d8e36992d9900d = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_bbccf8970793c087 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_17f755666e48d1d8 = function() { return handleError(function (arg0, arg1) {\n const ret = new URL(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_254fa9eac11932ae = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_688846f374351c92 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_newwithbase_aa2c471fe3eacc2b = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new URL(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_now_62a101fe35b60230 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_scramtag_bd98edaa0eaec45e = function(arg0) {\n const ret = scramtag();\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_set_4e647025551483bd = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_1dc398a895c82351 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_toString_a491ccf7be1ca5c9 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbg_toString_cbcf95f260c441ae = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_uint8_array_new = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n const ret = v0;\n return ret;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n imports.wbg.memory = memory || new WebAssembly.Memory({initial:18,maximum:16384,shared:true});\n}\n\nfunction __wbg_finalize_init(instance, module, thread_stack_size) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\n wasm.__wbindgen_start(thread_stack_size);\n return wasm;\n}\n\nfunction initSync(module, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module, memory, thread_stack_size} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports, memory);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nasync function __wbg_init(module_or_path, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path, memory, thread_stack_size} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('wasm_bg.wasm', \"\");\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports, memory);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import { icannTrie, privateTrie } from \"./serialized-tries.js\";\nimport { lookUpTldsInTrie } from \"./trie/look-up.js\";\nimport { sanitize, SanitizationResultType, } from \"./sanitize.js\";\nimport { parseTrie } from \"./trie/parse-trie.js\";\nexport const RESERVED_TOP_LEVEL_DOMAINS = [\n \"localhost\",\n \"local\",\n \"example\",\n \"invalid\",\n \"test\",\n];\nexport var ParseResultType;\n(function (ParseResultType) {\n /**\n * This parse result is returned in case the given hostname does not adhere to [RFC 1034](https://tools.ietf.org/html/rfc1034).\n */\n ParseResultType[\"Invalid\"] = \"INVALID\";\n /**\n * This parse result is returned if the given hostname was an IPv4 or IPv6.\n */\n ParseResultType[\"Ip\"] = \"IP\";\n /**\n * This parse result is returned when the given hostname\n * - is the root domain (the empty string `\"\"`)\n * - belongs to the top-level domain `localhost`, `local`, `example`, `invalid` or `test`\n */\n ParseResultType[\"Reserved\"] = \"RESERVED\";\n /**\n * This parse result is returned when the given hostname is valid and does not belong to a reserved top-level domain, but is not listed in the public suffix list.\n */\n ParseResultType[\"NotListed\"] = \"NOT_LISTED\";\n /**\n * This parse result is returned when the given hostname belongs to a top-level domain that is listed in the public suffix list.\n */\n ParseResultType[\"Listed\"] = \"LISTED\";\n})(ParseResultType || (ParseResultType = {}));\nconst getAtIndex = (array, index) => {\n return index >= 0 && index < array.length ? array[index] : undefined;\n};\nconst splitLabelsIntoDomains = (labels, index) => {\n return {\n subDomains: labels.slice(0, Math.max(0, index)),\n domain: getAtIndex(labels, index),\n topLevelDomains: labels.slice(index + 1),\n };\n};\nlet parsedIcannTrie;\nlet parsedPrivateTrie;\n/**\n * Splits the given hostname in topLevelDomains, a domain and subDomains.\n */\nexport const parseDomain = (hostname, options) => {\n const sanitizationResult = sanitize(hostname, options);\n if (sanitizationResult.type === SanitizationResultType.Error) {\n return {\n type: ParseResultType.Invalid,\n hostname,\n errors: sanitizationResult.errors,\n };\n }\n if (sanitizationResult.type === SanitizationResultType.ValidIp) {\n return {\n type: ParseResultType.Ip,\n hostname: sanitizationResult.ip,\n ipVersion: sanitizationResult.ipVersion,\n };\n }\n const { labels, domain } = sanitizationResult;\n if (hostname === \"\" ||\n RESERVED_TOP_LEVEL_DOMAINS.includes(labels[labels.length - 1])) {\n return {\n type: ParseResultType.Reserved,\n hostname: domain,\n labels,\n };\n }\n // Parse the serialized trie lazily\n parsedIcannTrie = parsedIcannTrie !== null && parsedIcannTrie !== void 0 ? parsedIcannTrie : parseTrie(icannTrie);\n parsedPrivateTrie = parsedPrivateTrie !== null && parsedPrivateTrie !== void 0 ? parsedPrivateTrie : parseTrie(privateTrie);\n const icannTlds = lookUpTldsInTrie(labels, parsedIcannTrie);\n const privateTlds = lookUpTldsInTrie(labels, parsedPrivateTrie);\n if (icannTlds.length === 0 && privateTlds.length === 0) {\n return {\n type: ParseResultType.NotListed,\n hostname: domain,\n labels,\n };\n }\n const indexOfPublicSuffixDomain = labels.length - Math.max(privateTlds.length, icannTlds.length) - 1;\n const indexOfIcannDomain = labels.length - icannTlds.length - 1;\n return Object.assign({ type: ParseResultType.Listed, hostname: domain, labels, icann: splitLabelsIntoDomains(labels, indexOfIcannDomain) }, splitLabelsIntoDomains(labels, indexOfPublicSuffixDomain));\n};\n//# sourceMappingURL=parse-domain.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // ` this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n }\n else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n }\n else if (lower === Sequences.TitleEnd[2]) {\n this.state = State.BeforeSpecialT;\n }\n else {\n this.state = State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 0x20;\n if (lower === Sequences.TitleEnd[3]) {\n this.startSpecial(Sequences.TitleEnd, 4);\n }\n else if (lower === Sequences.TextareaEnd[3]) {\n this.startSpecial(Sequences.TextareaEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { ipVersion } from \"is-ip\";\n// See https://en.wikipedia.org/wiki/Domain_name\n// See https://tools.ietf.org/html/rfc1034\nconst LABEL_SEPARATOR = \".\";\nconst LABEL_LENGTH_MIN = 1;\nconst LABEL_LENGTH_MAX = 63;\n/**\n * 255 octets - 2 octets if you remove the last dot\n * @see https://devblogs.microsoft.com/oldnewthing/20120412-00/?p=7873\n */\nconst DOMAIN_LENGTH_MAX = 253;\nconst textEncoder = new TextEncoder();\nexport var Validation;\n(function (Validation) {\n /**\n * Allows any octets as labels\n * but still restricts the length of labels and the overall domain.\n *\n * @see https://www.rfc-editor.org/rfc/rfc2181#section-11\n **/\n Validation[\"Lax\"] = \"LAX\";\n /**\n * Only allows ASCII letters, digits and hyphens (aka LDH),\n * forbids hyphens at the beginning or end of a label\n * and requires top-level domain names not to be all-numeric.\n *\n * This is the default if no validation is configured.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3696#section-2\n */\n Validation[\"Strict\"] = \"STRICT\";\n})(Validation || (Validation = {}));\nexport var ValidationErrorType;\n(function (ValidationErrorType) {\n ValidationErrorType[\"NoHostname\"] = \"NO_HOSTNAME\";\n ValidationErrorType[\"DomainMaxLength\"] = \"DOMAIN_MAX_LENGTH\";\n ValidationErrorType[\"LabelMinLength\"] = \"LABEL_MIN_LENGTH\";\n ValidationErrorType[\"LabelMaxLength\"] = \"LABEL_MAX_LENGTH\";\n ValidationErrorType[\"LabelInvalidCharacter\"] = \"LABEL_INVALID_CHARACTER\";\n ValidationErrorType[\"LastLabelInvalid\"] = \"LAST_LABEL_INVALID\";\n})(ValidationErrorType || (ValidationErrorType = {}));\nexport var SanitizationResultType;\n(function (SanitizationResultType) {\n SanitizationResultType[\"ValidIp\"] = \"VALID_IP\";\n SanitizationResultType[\"ValidDomain\"] = \"VALID_DOMAIN\";\n SanitizationResultType[\"Error\"] = \"ERROR\";\n})(SanitizationResultType || (SanitizationResultType = {}));\nconst createNoHostnameError = (input) => {\n return {\n type: ValidationErrorType.NoHostname,\n message: `The given input ${String(input)} does not look like a hostname.`,\n column: 1,\n };\n};\nconst createDomainMaxLengthError = (domain, length) => {\n return {\n type: ValidationErrorType.DomainMaxLength,\n message: `Domain \"${domain}\" is too long. Domain is ${length} octets long but should not be longer than ${DOMAIN_LENGTH_MAX}.`,\n column: length,\n };\n};\nconst createLabelMinLengthError = (label, column) => {\n const length = label.length;\n return {\n type: ValidationErrorType.LabelMinLength,\n message: `Label \"${label}\" is too short. Label is ${length} octets long but should be at least ${LABEL_LENGTH_MIN}.`,\n column,\n };\n};\nconst createLabelMaxLengthError = (label, column) => {\n const length = label.length;\n return {\n type: ValidationErrorType.LabelMaxLength,\n message: `Label \"${label}\" is too long. Label is ${length} octets long but should not be longer than ${LABEL_LENGTH_MAX}.`,\n column,\n };\n};\nconst createLabelInvalidCharacterError = (label, invalidCharacter, column) => {\n return {\n type: ValidationErrorType.LabelInvalidCharacter,\n message: `Label \"${label}\" contains invalid character \"${invalidCharacter}\" at column ${column}.`,\n column,\n };\n};\nconst createLastLabelInvalidError = (label, column) => {\n return {\n type: ValidationErrorType.LabelInvalidCharacter,\n message: `Last label \"${label}\" must not be all-numeric.`,\n column,\n };\n};\nexport const sanitize = (input, options = {}) => {\n // Extra check for non-TypeScript users\n if (typeof input !== \"string\") {\n return {\n type: SanitizationResultType.Error,\n errors: [createNoHostnameError(input)],\n };\n }\n if (input === \"\") {\n return {\n type: SanitizationResultType.ValidDomain,\n domain: input,\n labels: [],\n };\n }\n // IPv6 addresses are surrounded by square brackets in URLs\n // See https://tools.ietf.org/html/rfc3986#section-3.2.2\n const inputTrimmedAsIp = input.replace(/^\\[|]$/g, \"\");\n const ipVersionOfInput = ipVersion(inputTrimmedAsIp);\n if (ipVersionOfInput !== undefined) {\n return {\n type: SanitizationResultType.ValidIp,\n ip: inputTrimmedAsIp,\n ipVersion: ipVersionOfInput,\n };\n }\n const lastChar = input.charAt(input.length - 1);\n const canonicalInput = lastChar === LABEL_SEPARATOR ? input.slice(0, -1) : input;\n const octets = new TextEncoder().encode(canonicalInput);\n if (octets.length > DOMAIN_LENGTH_MAX) {\n return {\n type: SanitizationResultType.Error,\n errors: [createDomainMaxLengthError(input, octets.length)],\n };\n }\n const labels = canonicalInput.split(LABEL_SEPARATOR);\n const { validation = Validation.Strict } = options;\n const labelValidationErrors = validateLabels[validation](labels);\n if (labelValidationErrors.length > 0) {\n return {\n type: SanitizationResultType.Error,\n errors: labelValidationErrors,\n };\n }\n return {\n type: SanitizationResultType.ValidDomain,\n domain: input,\n labels,\n };\n};\nconst validateLabels = {\n [Validation.Lax]: (labels) => {\n const labelValidationErrors = [];\n let column = 1;\n for (const label of labels) {\n const octets = textEncoder.encode(label);\n if (octets.length < LABEL_LENGTH_MIN) {\n labelValidationErrors.push(createLabelMinLengthError(label, column));\n }\n else if (octets.length > LABEL_LENGTH_MAX) {\n labelValidationErrors.push(createLabelMaxLengthError(label, column));\n }\n column += label.length + LABEL_SEPARATOR.length;\n }\n return labelValidationErrors;\n },\n [Validation.Strict]: (labels) => {\n const labelValidationErrors = [];\n let column = 1;\n let lastLabel;\n for (const label of labels) {\n // According to https://tools.ietf.org/html/rfc6761 labels should\n // only contain ASCII letters, digits and hyphens (LDH).\n const invalidCharacter = /[^\\da-z-]/i.exec(label);\n if (invalidCharacter) {\n labelValidationErrors.push(createLabelInvalidCharacterError(label, invalidCharacter[0], invalidCharacter.index + 1));\n }\n if (label.startsWith(\"-\")) {\n labelValidationErrors.push(createLabelInvalidCharacterError(label, \"-\", column));\n }\n else if (label.endsWith(\"-\")) {\n labelValidationErrors.push(createLabelInvalidCharacterError(label, \"-\", column + label.length - 1));\n }\n if (\n // We can use .length here to check for the octet size because\n // label can only contain ASCII LDH characters at this point.\n label.length < LABEL_LENGTH_MIN) {\n labelValidationErrors.push(createLabelMinLengthError(label, column));\n }\n else if (label.length > LABEL_LENGTH_MAX) {\n labelValidationErrors.push(createLabelMaxLengthError(label, column));\n }\n column += label.length + LABEL_SEPARATOR.length;\n lastLabel = label;\n }\n if (lastLabel !== undefined && /[a-z-]/iu.test(lastLabel) === false) {\n labelValidationErrors.push(createLastLabelInvalidError(lastLabel, column - lastLabel.length - LABEL_SEPARATOR.length));\n }\n return labelValidationErrors;\n },\n};\n//# sourceMappingURL=sanitize.js.map","\"use strict\";\n\nvar defaultParseOptions = {\n decodeValues: true,\n map: false,\n silent: false,\n};\n\nfunction isNonEmptyString(str) {\n return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n var nameValuePairStr = parts.shift();\n var parsed = parseNameValuePair(nameValuePairStr);\n var name = parsed.name;\n var value = parsed.value;\n\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n try {\n value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n } catch (e) {\n console.error(\n \"set-cookie-parser encountered an error while decoding a cookie with value '\" +\n value +\n \"'. Set options.decodeValues to false to disable this feature.\",\n e\n );\n }\n\n var cookie = {\n name: name,\n value: value,\n };\n\n parts.forEach(function (part) {\n var sides = part.split(\"=\");\n var key = sides.shift().trimLeft().toLowerCase();\n var value = sides.join(\"=\");\n if (key === \"expires\") {\n cookie.expires = new Date(value);\n } else if (key === \"max-age\") {\n cookie.maxAge = parseInt(value, 10);\n } else if (key === \"secure\") {\n cookie.secure = true;\n } else if (key === \"httponly\") {\n cookie.httpOnly = true;\n } else if (key === \"samesite\") {\n cookie.sameSite = value;\n } else if (key === \"partitioned\") {\n cookie.partitioned = true;\n } else {\n cookie[key] = value;\n }\n });\n\n return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n // Parses name-value-pair according to rfc6265bis draft\n\n var name = \"\";\n var value = \"\";\n var nameValueArr = nameValuePairStr.split(\"=\");\n if (nameValueArr.length > 1) {\n name = nameValueArr.shift();\n value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n } else {\n value = nameValuePairStr;\n }\n\n return { name: name, value: value };\n}\n\nfunction parse(input, options) {\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n if (!input) {\n if (!options.map) {\n return [];\n } else {\n return {};\n }\n }\n\n if (input.headers) {\n if (typeof input.headers.getSetCookie === \"function\") {\n // for fetch responses - they combine headers of the same type in the headers array,\n // but getSetCookie returns an uncombined array\n input = input.headers.getSetCookie();\n } else if (input.headers[\"set-cookie\"]) {\n // fast-path for node.js (which automatically normalizes header names to lower-case\n input = input.headers[\"set-cookie\"];\n } else {\n // slow-path for other environments - see #25\n var sch =\n input.headers[\n Object.keys(input.headers).find(function (key) {\n return key.toLowerCase() === \"set-cookie\";\n })\n ];\n // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n if (!sch && input.headers.cookie && !options.silent) {\n console.warn(\n \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n );\n }\n input = sch;\n }\n }\n if (!Array.isArray(input)) {\n input = [input];\n }\n\n if (!options.map) {\n return input.filter(isNonEmptyString).map(function (str) {\n return parseString(str, options);\n });\n } else {\n var cookies = {};\n return input.filter(isNonEmptyString).reduce(function (cookies, str) {\n var cookie = parseString(str, options);\n cookies[cookie.name] = cookie;\n return cookies;\n }, cookies);\n }\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n\n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n if (Array.isArray(cookiesString)) {\n return cookiesString;\n }\n if (typeof cookiesString !== \"string\") {\n return [];\n }\n\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n\n skipWhitespace();\n nextStart = pos;\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n\n return cookiesStrings;\n}\n\nmodule.exports = parse;\nmodule.exports.parse = parse;\nmodule.exports.parseString = parseString;\nmodule.exports.splitCookiesString = splitCookiesString;\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.config.siteFlags[regex];\n\t\tif (new RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\n","\n// slightly modified https://github.com/ungap/random-uuid/blob/main/index.js\nexport function scramtag() {\n return (\"\"+1e10).replace(/[018]/g,\n c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { URLMeta } from \"./url\";\n\n// i am a cat. i like to be petted. i like to be fed. i like to be\nimport {\n\tinitSync,\n\trewrite_js,\n\trewrite_js_from_arraybuffer,\n\tRewriterOutput,\n} from \"../../../rewriter/wasm/out/wasm.js\";\nimport { $scramjet, flagEnabled } from \"../../scramjet\";\n\ninitSync({\n\tmodule: new WebAssembly.Module(\n\t\tUint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0))\n\t),\n});\n\nError.stackTraceLimit = 50;\n\nconst decoder = new TextDecoder();\n\nfunction rewriteJsWrapper(\n\tinput: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n): string | ArrayBuffer {\n\tlet out: RewriterOutput;\n\tconst before = performance.now();\n\ttry {\n\t\tif (typeof input === \"string\") {\n\t\t\tout = rewrite_js(input, meta.base.href, url || \"(unknown)\", $scramjet);\n\t\t} else {\n\t\t\tout = rewrite_js_from_arraybuffer(\n\t\t\t\tnew Uint8Array(input),\n\t\t\t\tmeta.base.href,\n\t\t\t\turl || \"(unknown)\",\n\t\t\t\t$scramjet\n\t\t\t);\n\t\t}\n\t} catch (err) {\n\t\tlet err1 = err as Error;\n\t\tconsole.error(\"failed rewriting js for\", url, err1, input);\n\t\terr1.message = `failed rewriting js for \"${url}\": ${err1.message}`;\n\t\tthrow err1;\n\t}\n\tconst after = performance.now();\n\tconst { js, errors, duration } = out;\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tfor (const error of errors) {\n\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t}\n\t}\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tlet timespan: string;\n\t\tif (duration < 1n) {\n\t\t\ttimespan = \"BLAZINGLY FAST\";\n\t\t} else if (duration < 500n) {\n\t\t\ttimespan = \"decent speed\";\n\t\t} else {\n\t\t\ttimespan = \"really slow\";\n\t\t}\n\t\tconst overhead = (after - before - Number(duration)).toFixed(2);\n\t\tconsole.log(\n\t\t\t`oxc rewrite for \"${url || \"(unknown)\"}\" was ${timespan} (${duration}ms; ${overhead}ms overhead)`\n\t\t);\n\t}\n\n\treturn typeof input === \"string\" ? decoder.decode(js) : js;\n}\n\nexport function rewriteJs(\n\tjs: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n) {\n\tif (flagEnabled(\"naiiveRewriter\", meta.origin)) {\n\t\tconst text = typeof js === \"string\" ? js : new TextDecoder().decode(js);\n\n\t\tconsole.log(\"naiive\");\n\n\t\treturn rewriteJsNaiive(text);\n\t}\n\n\tjs = rewriteJsWrapper(js, url, meta);\n\n\treturn js;\n}\n\n// 1. does not work with modules\n// 2. cannot proxy import()\n// 3. disables \"use strict\" optimizations\n// 4. i think the global state can get clobbered somehow\n//\n// if you can ensure all the preconditions are met this is faster than full rewrites\nexport function rewriteJsNaiive(js: string | ArrayBuffer) {\n\tif (typeof js !== \"string\") {\n\t\tjs = new TextDecoder().decode(js);\n\t}\n\n\treturn `\n\t\twith (${$scramjet.config.globals.wrapfn}(globalThis)) {\n\n\t\t\t${js}\n\n\t\t}\n\t`;\n}\n","import { $scramjet } from \"../../scramjet\";\nimport { rewriteJs } from \"./js\";\n\nexport type URLMeta = {\n\torigin: URL;\n\tbase: URL;\n};\n\nfunction tryCanParseURL(url: string, origin?: string | URL): URL | null {\n\ttry {\n\t\treturn new URL(url, origin);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function rewriteBlob(url: string, meta: URLMeta) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + meta.origin.origin + blob.pathname;\n}\n\nexport function unrewriteBlob(url: string) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + location.origin + blob.pathname;\n}\n\nexport function rewriteUrl(url: string | URL, meta: URLMeta) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" +\n\t\t\trewriteJs(url.slice(\"javascript:\".length), \"(javascript: url)\", meta)\n\t\t);\n\t} else if (url.startsWith(\"blob:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"data:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else {\n\t\tlet base = meta.base.href;\n\n\t\tif (base.startsWith(\"about:\")) base = unrewriteUrl(self.location.href); // jank!!!!! weird jank!!!\n\t\tconst realUrl = tryCanParseURL(url, base);\n\t\tif (!realUrl) return url;\n\n\t\treturn (\n\t\t\tlocation.origin +\n\t\t\t$scramjet.config.prefix +\n\t\t\t$scramjet.codec.encode(realUrl.href)\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tconst prefixed = location.origin + $scramjet.config.prefix;\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\t//TODO\n\t\treturn url;\n\t} else if (url.startsWith(\"blob:\")) {\n\t\t// realistically this shouldn't happen\n\t\treturn url;\n\t} else if (url.startsWith(prefixed + \"blob:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(prefixed + \"data:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else if (tryCanParseURL(url)) {\n\t\treturn $scramjet.codec.decode(\n\t\t\turl.slice((location.origin + $scramjet.config.prefix).length)\n\t\t);\n\t} else {\n\t\treturn url;\n\t}\n}\n","import { URLMeta, rewriteUrl, unrewriteUrl } from \"./url\";\n\nexport function rewriteCss(css: string, meta: URLMeta) {\n\treturn handleCss(\"rewrite\", css, meta);\n}\n\nexport function unrewriteCss(css: string) {\n\treturn handleCss(\"unrewrite\", css);\n}\n\nfunction handleCss(type: \"rewrite\" | \"unrewrite\", css: string, meta?: URLMeta) {\n\t// regex from vk6 (https://github.com/ading2210)\n\tconst urlRegex = /url\\(['\"]?(.+?)['\"]?\\)/gm;\n\tconst Atruleregex =\n\t\t/@import\\s+(url\\s*?\\(.{0,9999}?\\)|['\"].{0,9999}?['\"]|.{0,9999}?)($|\\s|;)/gm;\n\tcss = new String(css).toString();\n\tcss = css.replace(urlRegex, (match, url) => {\n\t\tconst encodedUrl =\n\t\t\ttype === \"rewrite\"\n\t\t\t\t? rewriteUrl(url.trim(), meta)\n\t\t\t\t: unrewriteUrl(url.trim());\n\n\t\treturn match.replace(url, encodedUrl);\n\t});\n\tcss = css.replace(Atruleregex, (match, importStatement) => {\n\t\treturn match.replace(\n\t\t\timportStatement,\n\t\t\timportStatement.replace(\n\t\t\t\t/^(url\\(['\"]?|['\"]|)(.+?)(['\"]|['\"]?\\)|)$/gm,\n\t\t\t\t(match, firstQuote, url, endQuote) => {\n\t\t\t\t\tif (firstQuote.startsWith(\"url\")) {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\t\t\t\t\tconst encodedUrl =\n\t\t\t\t\t\ttype === \"rewrite\"\n\t\t\t\t\t\t\t? rewriteUrl(url.trim(), meta)\n\t\t\t\t\t\t\t: unrewriteUrl(url.trim());\n\n\t\t\t\t\treturn `${firstQuote}${encodedUrl}${endQuote}`;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t});\n\n\treturn css;\n}\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.recognizeSelfClosing =\n (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import htmlTrie from \"./generated/encode-html.js\";\nimport { xmlReplacer, getCodePoint } from \"./escape.js\";\nconst htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\n/**\n * Encodes all characters in the input using HTML entities. This includes\n * characters that are valid ASCII characters in HTML documents, such as `#`.\n *\n * To get a more compact output, consider using the `encodeNonAsciiHTML`\n * function, which will only encode characters that are not valid in HTML\n * documents, as well as non-ASCII characters.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nexport function encodeHTML(data) {\n return encodeHTMLTrieRe(htmlReplacer, data);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities. This function will not encode characters that\n * are valid in HTML documents, such as `#`.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nexport function encodeNonAsciiHTML(data) {\n return encodeHTMLTrieRe(xmlReplacer, data);\n}\nfunction encodeHTMLTrieRe(regExp, str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = regExp.exec(str)) !== null) {\n const i = match.index;\n ret += str.substring(lastIdx, i);\n const char = str.charCodeAt(i);\n let next = htmlTrie.get(char);\n if (typeof next === \"object\") {\n // We are in a branch. Try to match the next char.\n if (i + 1 < str.length) {\n const nextChar = str.charCodeAt(i + 1);\n const value = typeof next.n === \"number\"\n ? next.n === nextChar\n ? next.o\n : undefined\n : next.n.get(nextChar);\n if (value !== undefined) {\n ret += value;\n lastIdx = regExp.lastIndex += 1;\n continue;\n }\n }\n next = next.v;\n }\n // We might have a tree node without a value; skip and use a numeric entity.\n if (next !== undefined) {\n ret += next;\n lastIdx = i + 1;\n }\n else {\n const cp = getCodePoint(str, i);\n ret += `&#x${cp.toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = regExp.lastIndex += Number(cp !== char);\n }\n }\n return ret + str.substr(lastIdx);\n}\n//# sourceMappingURL=encode.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { ElementType, Parser } from \"htmlparser2\";\nimport { ChildNode, DomHandler, Element } from \"domhandler\";\nimport render from \"dom-serializer\";\nimport { URLMeta, rewriteUrl } from \"./url\";\nimport { rewriteCss } from \"./css\";\nimport { rewriteJs } from \"./js\";\nimport { CookieStore } from \"../cookie\";\nimport { unrewriteBlob } from \"../../shared/rewriters/url\";\nimport { $scramjet } from \"../../scramjet\";\n\nconst encoder = new TextEncoder();\nexport function rewriteHtml(\n\thtml: string,\n\tcookieStore: CookieStore,\n\tmeta: URLMeta,\n\tfromTop: boolean = false\n) {\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler);\n\n\tparser.write(html);\n\tparser.end();\n\ttraverseParsedHtml(handler.root, cookieStore, meta);\n\n\tfunction findhead(node) {\n\t\tif (node.type === ElementType.Tag && node.name === \"head\") {\n\t\t\treturn node as Element;\n\t\t} else if (node.childNodes) {\n\t\t\tfor (const child of node.childNodes) {\n\t\t\t\tconst head = findhead(child);\n\t\t\t\tif (head) return head;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tif (fromTop) {\n\t\tlet head = findhead(handler.root);\n\t\tif (!head) {\n\t\t\thead = new Element(\"head\", {}, []);\n\t\t\thandler.root.children.unshift(head);\n\t\t}\n\n\t\tconst dump = JSON.stringify(cookieStore.dump());\n\t\tconst injected = `\n\t\t\tself.COOKIE = ${dump};\n\t\t\tself.$scramjet.config = ${JSON.stringify($scramjet.config)};\n\t\t\tif (\"document\" in self && document?.currentScript) {\n\t\t\t\tdocument.currentScript.remove();\n\t\t\t}\n\t\t`;\n\n\t\tconst script = (src) => new Element(\"script\", { src });\n\n\t\t// for compatibility purpose\n\t\tconst base64Injected = bytesToBase64(encoder.encode(injected));\n\n\t\thead.children.unshift(\n\t\t\tscript($scramjet.config.files.wasm),\n\t\t\tscript($scramjet.config.files.shared),\n\t\t\tscript(\"data:application/javascript;base64,\" + base64Injected),\n\t\t\tscript($scramjet.config.files.client)\n\t\t);\n\t}\n\n\treturn render(handler.root);\n}\n\n// type ParseState = {\n// \tbase: string;\n// \torigin?: URL;\n// };\n\nexport function unrewriteHtml(html: string) {\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler);\n\n\tparser.write(html);\n\tparser.end();\n\n\tfunction traverse(node: ChildNode) {\n\t\tif (\"attribs\" in node) {\n\t\t\tfor (const key in node.attribs) {\n\t\t\t\tif (key == \"scramjet-attr-script-source-src\") {\n\t\t\t\t\tif (node.children[0] && \"data\" in node.children[0])\n\t\t\t\t\t\tnode.children[0].data = atob(node.attribs[key]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (key.startsWith(\"scramjet-attr-\")) {\n\t\t\t\t\tnode.attribs[key.slice(\"scramjet-attr-\".length)] = node.attribs[key];\n\t\t\t\t\tdelete node.attribs[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\"childNodes\" in node) {\n\t\t\tfor (const child of node.childNodes) {\n\t\t\t\ttraverse(child);\n\t\t\t}\n\t\t}\n\t}\n\n\ttraverse(handler.root);\n\n\treturn render(handler.root);\n}\n\nexport const htmlRules: {\n\t[key: string]: \"*\" | string[] | ((...any: any[]) => string | null);\n\tfn: (value: string, meta: URLMeta, cookieStore: CookieStore) => string | null;\n}[] = [\n\t{\n\t\tfn: (value: string, meta: URLMeta) => {\n\t\t\treturn rewriteUrl(value, meta);\n\t\t},\n\n\t\t// url rewrites\n\t\tsrc: [\n\t\t\t\"embed\",\n\t\t\t\"script\",\n\t\t\t\"img\",\n\t\t\t\"iframe\",\n\t\t\t\"frame\",\n\t\t\t\"source\",\n\t\t\t\"input\",\n\t\t\t\"track\",\n\t\t],\n\t\thref: [\"a\", \"link\", \"area\", \"use\", \"image\"],\n\t\tdata: [\"object\"],\n\t\taction: [\"form\"],\n\t\tformaction: [\"button\", \"input\", \"textarea\", \"submit\"],\n\t\tposter: [\"video\"],\n\t\t\"xlink:href\": [\"image\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta) => {\n\t\t\tif (value.startsWith(\"blob:\")) {\n\t\t\t\t// for media elements specifically they must take the original blob\n\t\t\t\t// because they can't be fetch'd\n\t\t\t\treturn unrewriteBlob(value);\n\t\t\t}\n\n\t\t\treturn rewriteUrl(value, meta);\n\t\t},\n\t\tsrc: [\"video\", \"audio\"],\n\t},\n\t{\n\t\tfn: () => \"\",\n\n\t\tintegrity: [\"script\", \"link\"],\n\t},\n\t{\n\t\tfn: () => null,\n\n\t\t// csp stuff that must be deleted\n\t\tnonce: \"*\",\n\t\tcsp: [\"iframe\"],\n\t\tcredentialless: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta) => rewriteSrcset(value, meta),\n\n\t\t// srcset\n\t\tsrcset: [\"img\", \"source\"],\n\t\timagesrcset: [\"link\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta, cookieStore: CookieStore) =>\n\t\t\trewriteHtml(\n\t\t\t\tvalue,\n\t\t\t\tcookieStore,\n\t\t\t\t{\n\t\t\t\t\t// for srcdoc origin is the origin of the page that the iframe is on. base and path get dropped\n\t\t\t\t\torigin: new URL(meta.origin.origin),\n\t\t\t\t\tbase: new URL(meta.origin.origin),\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t),\n\n\t\t// srcdoc\n\t\tsrcdoc: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value: string, meta: URLMeta) => rewriteCss(value, meta),\n\t\tstyle: \"*\",\n\t},\n\t{\n\t\tfn: (value: string) => {\n\t\t\tif ([\"_parent\", \"_top\", \"_unfencedTop\"].includes(value)) return \"_self\";\n\t\t},\n\t\ttarget: [\"a\", \"base\"],\n\t},\n];\n\n// i need to add the attributes in during rewriting\n\nfunction traverseParsedHtml(\n\tnode: any,\n\tcookieStore: CookieStore,\n\tmeta: URLMeta\n) {\n\tif (node.name === \"base\" && node.attribs.href !== undefined) {\n\t\tmeta.base = new URL(node.attribs.href, meta.origin);\n\t}\n\n\tif (node.attribs) {\n\t\tfor (const rule of htmlRules) {\n\t\t\tfor (const attr in rule) {\n\t\t\t\tconst sel = rule[attr.toLowerCase()];\n\t\t\t\tif (typeof sel === \"function\") continue;\n\n\t\t\t\tif (sel === \"*\" || sel.includes(node.name)) {\n\t\t\t\t\tif (node.attribs[attr] !== undefined) {\n\t\t\t\t\t\tconst value = node.attribs[attr];\n\t\t\t\t\t\tconst v = rule.fn(value, meta, cookieStore);\n\n\t\t\t\t\t\tif (v === null) delete node.attribs[attr];\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.attribs[attr] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const [attr, value] of Object.entries(node.attribs)) {\n\t\t\tif (eventAttributes.includes(attr)) {\n\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\tnode.attribs[attr] = rewriteJs(\n\t\t\t\t\tvalue as string,\n\t\t\t\t\t`(inline ${attr} on element)`,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (node.name === \"style\" && node.children[0] !== undefined)\n\t\tnode.children[0].data = rewriteCss(node.children[0].data, meta);\n\n\tif (\n\t\tnode.name === \"script\" &&\n\t\t/(application|text)\\/javascript|module|importmap|undefined/.test(\n\t\t\tnode.attribs.type\n\t\t) &&\n\t\tnode.children[0] !== undefined\n\t) {\n\t\tlet js = node.children[0].data;\n\t\t// node.attribs[`scramjet-attr-script-source-src`] = btoa(js);\n\t\tnode.attribs[\"scramjet-attr-script-source-src\"] = bytesToBase64(\n\t\t\tencoder.encode(js)\n\t\t);\n\t\tconst htmlcomment = /<!--[\\s\\S]*?-->/g;\n\t\tjs = js.replace(htmlcomment, \"\");\n\t\tnode.children[0].data = rewriteJs(js, \"(inline script element)\", meta);\n\t}\n\n\tif (node.name === \"meta\" && node.attribs[\"http-equiv\"] !== undefined) {\n\t\tif (\n\t\t\tnode.attribs[\"http-equiv\"].toLowerCase() === \"content-security-policy\"\n\t\t) {\n\t\t\tnode = {};\n\t\t} else if (\n\t\t\tnode.attribs[\"http-equiv\"] === \"refresh\" &&\n\t\t\tnode.attribs.content.includes(\"url\")\n\t\t) {\n\t\t\tconst contentArray = node.attribs.content.split(\"url=\");\n\t\t\tif (contentArray[1])\n\t\t\t\tcontentArray[1] = rewriteUrl(contentArray[1].trim(), meta);\n\t\t\tnode.attribs.content = contentArray.join(\"url=\");\n\t\t}\n\t}\n\n\tif (node.childNodes) {\n\t\tfor (const childNode in node.childNodes) {\n\t\t\tnode.childNodes[childNode] = traverseParsedHtml(\n\t\t\t\tnode.childNodes[childNode],\n\t\t\t\tcookieStore,\n\t\t\t\tmeta\n\t\t\t);\n\t\t}\n\t}\n\n\treturn node;\n}\n\nexport function rewriteSrcset(srcset: string, meta: URLMeta) {\n\tconst sources = srcset.split(\",\").map((src) => src.trim());\n\tconst rewrittenSources = sources.map((source) => {\n\t\t// Split into URLs and descriptors (if any)\n\t\t// e.g. url0, url1 1.5x, url2 2x\n\t\tconst [url, ...descriptors] = source.split(/\\s+/);\n\n\t\t// Rewrite the URLs and keep the descriptors (if any)\n\t\tconst rewrittenUrl = rewriteUrl(url.trim(), meta);\n\n\t\treturn descriptors.length > 0\n\t\t\t? `${rewrittenUrl} ${descriptors.join(\" \")}`\n\t\t\t: rewrittenUrl;\n\t});\n\n\treturn rewrittenSources.join(\", \");\n}\n\n// function base64ToBytes(base64) {\n// \tconst binString = atob(base64);\n\n// \treturn Uint8Array.from(binString, (m) => m.codePointAt(0));\n// }\n\nfunction bytesToBase64(bytes: Uint8Array) {\n\tconst binString = Array.from(bytes, (byte) =>\n\t\tString.fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\nconst eventAttributes = [\n\t\"onbeforexrselect\",\n\t\"onabort\",\n\t\"onbeforeinput\",\n\t\"onbeforematch\",\n\t\"onbeforetoggle\",\n\t\"onblur\",\n\t\"oncancel\",\n\t\"oncanplay\",\n\t\"oncanplaythrough\",\n\t\"onchange\",\n\t\"onclick\",\n\t\"onclose\",\n\t\"oncontentvisibilityautostatechange\",\n\t\"oncontextlost\",\n\t\"oncontextmenu\",\n\t\"oncontextrestored\",\n\t\"oncuechange\",\n\t\"ondblclick\",\n\t\"ondrag\",\n\t\"ondragend\",\n\t\"ondragenter\",\n\t\"ondragleave\",\n\t\"ondragover\",\n\t\"ondragstart\",\n\t\"ondrop\",\n\t\"ondurationchange\",\n\t\"onemptied\",\n\t\"onended\",\n\t\"onerror\",\n\t\"onfocus\",\n\t\"onformdata\",\n\t\"oninput\",\n\t\"oninvalid\",\n\t\"onkeydown\",\n\t\"onkeypress\",\n\t\"onkeyup\",\n\t\"onload\",\n\t\"onloadeddata\",\n\t\"onloadedmetadata\",\n\t\"onloadstart\",\n\t\"onmousedown\",\n\t\"onmouseenter\",\n\t\"onmouseleave\",\n\t\"onmousemove\",\n\t\"onmouseout\",\n\t\"onmouseover\",\n\t\"onmouseup\",\n\t\"onmousewheel\",\n\t\"onpause\",\n\t\"onplay\",\n\t\"onplaying\",\n\t\"onprogress\",\n\t\"onratechange\",\n\t\"onreset\",\n\t\"onresize\",\n\t\"onscroll\",\n\t\"onsecuritypolicyviolation\",\n\t\"onseeked\",\n\t\"onseeking\",\n\t\"onselect\",\n\t\"onslotchange\",\n\t\"onstalled\",\n\t\"onsubmit\",\n\t\"onsuspend\",\n\t\"ontimeupdate\",\n\t\"ontoggle\",\n\t\"onvolumechange\",\n\t\"onwaiting\",\n\t\"onwebkitanimationend\",\n\t\"onwebkitanimationiteration\",\n\t\"onwebkitanimationstart\",\n\t\"onwebkittransitionend\",\n\t\"onwheel\",\n\t\"onauxclick\",\n\t\"ongotpointercapture\",\n\t\"onlostpointercapture\",\n\t\"onpointerdown\",\n\t\"onpointermove\",\n\t\"onpointerrawupdate\",\n\t\"onpointerup\",\n\t\"onpointercancel\",\n\t\"onpointerover\",\n\t\"onpointerout\",\n\t\"onpointerenter\",\n\t\"onpointerleave\",\n\t\"onselectstart\",\n\t\"onselectionchange\",\n\t\"onanimationend\",\n\t\"onanimationiteration\",\n\t\"onanimationstart\",\n\t\"ontransitionrun\",\n\t\"ontransitionstart\",\n\t\"ontransitionend\",\n\t\"ontransitioncancel\",\n\t\"oncopy\",\n\t\"oncut\",\n\t\"onpaste\",\n\t\"onscrollend\",\n\t\"onscrollsnapchange\",\n\t\"onscrollsnapchanging\",\n];\n","// TODO this whole file should be inlined and deleted it's a weird relic from ssd era\n\nimport { URLMeta, rewriteUrl } from \"./url\";\nimport { BareHeaders } from \"@mercuryworkshop/bare-mux\";\nconst cspHeaders = [\n\t\"cross-origin-embedder-policy\",\n\t\"cross-origin-opener-policy\",\n\t\"cross-origin-resource-policy\",\n\t\"content-security-policy\",\n\t\"content-security-policy-report-only\",\n\t\"expect-ct\",\n\t\"feature-policy\",\n\t\"origin-isolation\",\n\t\"strict-transport-security\",\n\t\"upgrade-insecure-requests\",\n\t\"x-content-type-options\",\n\t\"x-download-options\",\n\t\"x-frame-options\",\n\t\"x-permitted-cross-domain-policies\",\n\t\"x-powered-by\",\n\t\"x-xss-protection\",\n\t// This needs to be emulated, but for right now it isn't that important of a feature to be worried about\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data\n\t\"clear-site-data\",\n];\n\nconst urlHeaders = [\"location\", \"content-location\", \"referer\"];\n\nfunction rewriteLinkHeader(link: string, meta: URLMeta) {\n\treturn link.replace(/<(.*)>/gi, (match) => rewriteUrl(match, meta));\n}\n\nexport function rewriteHeaders(rawHeaders: BareHeaders, meta: URLMeta) {\n\tconst headers = {};\n\n\tfor (const key in rawHeaders) {\n\t\theaders[key.toLowerCase()] = rawHeaders[key];\n\t}\n\n\tcspHeaders.forEach((header) => {\n\t\tdelete headers[header];\n\t});\n\n\turlHeaders.forEach((header) => {\n\t\tif (headers[header])\n\t\t\theaders[header] = rewriteUrl(headers[header]?.toString() as string, meta);\n\t});\n\n\tif (typeof headers[\"link\"] === \"string\") {\n\t\theaders[\"link\"] = rewriteLinkHeader(headers[\"link\"], meta);\n\t} else if (Array.isArray(headers[\"link\"])) {\n\t\theaders[\"link\"] = headers[\"link\"].map((link) =>\n\t\t\trewriteLinkHeader(link, meta)\n\t\t);\n\t}\n\n\treturn headers;\n}\n","const e=20,t=globalThis.fetch,r=globalThis.SharedWorker,a=globalThis.localStorage,s=globalThis.navigator.serviceWorker,o=MessagePort.prototype.postMessage,n={prototype:{send:WebSocket.prototype.send},CLOSED:WebSocket.CLOSED,CLOSING:WebSocket.CLOSING,CONNECTING:WebSocket.CONNECTING,OPEN:WebSocket.OPEN};async function c(){const e=(await self.clients.matchAll({type:\"window\",includeUncontrolled:!0})).map((async e=>{const t=await function(e){let t=new MessageChannel;return new Promise((r=>{e.postMessage({type:\"getPort\",port:t.port2},[t.port2]),t.port1.onmessage=e=>{r(e.data)}}))}(e);return await i(t),t})),t=Promise.race([Promise.any(e),new Promise(((e,t)=>setTimeout(t,1e3,new TypeError(\"timeout\"))))]);try{return await t}catch(e){if(e instanceof AggregateError)throw console.error(\"bare-mux: failed to get a bare-mux SharedWorker MessagePort as all clients returned an invalid MessagePort.\"),new Error(\"All clients returned an invalid MessagePort.\");return console.warn(\"bare-mux: failed to get a bare-mux SharedWorker MessagePort within 1s, retrying\"),await c()}}function i(e){const t=new MessageChannel,r=new Promise(((e,r)=>{t.port1.onmessage=t=>{\"pong\"===t.data.type&&e()},setTimeout(r,1500)}));return o.call(e,{message:{type:\"ping\"},port:t.port2},[t.port2]),r}function l(e,t){const a=new r(e,\"bare-mux-worker\");return t&&s.addEventListener(\"message\",(t=>{if(\"getPort\"===t.data.type&&t.data.port){console.debug(\"bare-mux: recieved request for port from sw\");const a=new r(e,\"bare-mux-worker\");o.call(t.data.port,a.port,[a.port])}})),a.port}let h=null;function d(){if(null===h){const e=new MessageChannel,t=new ReadableStream;let r;try{o.call(e.port1,t,[t]),r=!0}catch(e){r=!1}return h=r,r}return h}class p{constructor(e){this.channel=new BroadcastChannel(\"bare-mux\"),e instanceof MessagePort||e instanceof Promise?this.port=e:this.createChannel(e,!0)}createChannel(e,t){if(self.clients)this.port=c(),this.channel.onmessage=e=>{\"refreshPort\"===e.data.type&&(this.port=c())};else if(e&&SharedWorker){if(!e.startsWith(\"/\")&&!e.includes(\"://\"))throw new Error(\"Invalid URL. Must be absolute or start at the root.\");this.port=l(e,t),console.debug(\"bare-mux: setting localStorage bare-mux-path to\",e),a[\"bare-mux-path\"]=e}else{if(!SharedWorker)throw new Error(\"Unable to get a channel to the SharedWorker.\");{const e=a[\"bare-mux-path\"];if(console.debug(\"bare-mux: got localStorage bare-mux-path:\",e),!e)throw new Error(\"Unable to get bare-mux workerPath from localStorage.\");this.port=l(e,t)}}}async sendMessage(e,t){this.port instanceof Promise&&(this.port=await this.port);try{await i(this.port)}catch{return console.warn(\"bare-mux: Failed to get a ping response from the worker within 1.5s. Assuming port is dead.\"),this.createChannel(),await this.sendMessage(e,t)}const r=new MessageChannel,a=[r.port2,...t||[]],s=new Promise(((e,t)=>{r.port1.onmessage=r=>{const a=r.data;\"error\"===a.type?t(a.error):e(a)}}));return o.call(this.port,{message:e,port:r.port2},a),await s}}class w extends EventTarget{constructor(e,t=[],r,a){super(),this.protocols=t,this.readyState=n.CONNECTING,this.url=e.toString(),this.protocols=t;const s=e=>{this.protocols=e,this.readyState=n.OPEN;const t=new Event(\"open\");this.dispatchEvent(t)},o=async e=>{const t=new MessageEvent(\"message\",{data:e});this.dispatchEvent(t)},c=(e,t)=>{this.readyState=n.CLOSED;const r=new CloseEvent(\"close\",{code:e,reason:t});this.dispatchEvent(r)},i=()=>{this.readyState=n.CLOSED;const e=new Event(\"error\");this.dispatchEvent(e)};this.channel=new MessageChannel,this.channel.port1.onmessage=e=>{\"open\"===e.data.type?s(e.data.args[0]):\"message\"===e.data.type?o(e.data.args[0]):\"close\"===e.data.type?c(e.data.args[0],e.data.args[1]):\"error\"===e.data.type&&i()},r.sendMessage({type:\"websocket\",websocket:{url:e.toString(),protocols:t,requestHeaders:a,channel:this.channel.port2}},[this.channel.port2])}send(...e){if(this.readyState===n.CONNECTING)throw new DOMException(\"Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.\");let t=e[0];t.buffer&&(t=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)),o.call(this.channel.port1,{type:\"data\",data:t},t instanceof ArrayBuffer?[t]:[])}close(e,t){o.call(this.channel.port1,{type:\"close\",closeCode:e,closeReason:t})}}function u(e,t,r){console.error(`error while processing '${r}': `,t),e.postMessage({type:\"error\",error:t})}function g(e){for(let t=0;t<e.length;t++){const r=e[t];if(!\"!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~\".includes(r))return!1}return!0}const f=[\"ws:\",\"wss:\"],y=[101,204,205,304],b=[301,302,303,307,308];class m{constructor(e){this.worker=new p(e)}async getTransport(){return(await this.worker.sendMessage({type:\"get\"})).name}async setTransport(e,t,r){await this.setManualTransport(`\\n\\t\\t\\tconst { default: BareTransport } = await import(\"${e}\");\\n\\t\\t\\treturn [BareTransport, \"${e}\"];\\n\\t\\t`,t,r)}async setManualTransport(e,t,r){if(\"bare-mux-remote\"===e)throw new Error(\"Use setRemoteTransport.\");await this.worker.sendMessage({type:\"set\",client:{function:e,args:t}},r)}async setRemoteTransport(e,t){const r=new MessageChannel;r.port1.onmessage=async t=>{const r=t.data.port,a=t.data.message;if(\"fetch\"===a.type)try{e.ready||await e.init(),await async function(e,t,r){const a=await r.request(new URL(e.fetch.remote),e.fetch.method,e.fetch.body,e.fetch.headers,null);if(!d()&&a.body instanceof ReadableStream){const e=new Response(a.body);a.body=await e.arrayBuffer()}a.body instanceof ReadableStream||a.body instanceof ArrayBuffer?o.call(t,{type:\"fetch\",fetch:a},[a.body]):o.call(t,{type:\"fetch\",fetch:a})}(a,r,e)}catch(e){u(r,e,\"fetch\")}else if(\"websocket\"===a.type)try{e.ready||await e.init(),await async function(e,t,r){const[a,s]=r.connect(new URL(e.websocket.url),e.websocket.protocols,e.websocket.requestHeaders,(t=>{o.call(e.websocket.channel,{type:\"open\",args:[t]})}),(t=>{t instanceof ArrayBuffer?o.call(e.websocket.channel,{type:\"message\",args:[t]},[t]):o.call(e.websocket.channel,{type:\"message\",args:[t]})}),((t,r)=>{o.call(e.websocket.channel,{type:\"close\",args:[t,r]})}),(t=>{o.call(e.websocket.channel,{type:\"error\",args:[t]})}));e.websocket.channel.onmessage=e=>{\"data\"===e.data.type?a(e.data.data):\"close\"===e.data.type&&s(e.data.closeCode,e.data.closeReason)},o.call(t,{type:\"websocket\"})}(a,r,e)}catch(e){u(r,e,\"websocket\")}},await this.worker.sendMessage({type:\"set\",client:{function:\"bare-mux-remote\",args:[r.port2,t]}},[r.port2])}getInnerPort(){return this.worker.port}}class k{constructor(e){this.worker=new p(e)}createWebSocket(e,t=[],r,a){try{e=new URL(e)}catch(t){throw new DOMException(`Faiiled to construct 'WebSocket': The URL '${e}' is invalid.`)}if(!f.includes(e.protocol))throw new DOMException(`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${e.protocol}' is not allowed.`);Array.isArray(t)||(t=[t]),t=t.map(String);for(const e of t)if(!g(e))throw new DOMException(`Failed to construct 'WebSocket': The subprotocol '${e}' is invalid.`);a=a||{};return new w(e,t,this.worker,a)}async fetch(e,r){const a=new Request(e,r),s=r?.headers||a.headers,o=s instanceof Headers?Object.fromEntries(s):s,n=a.body;let c=new URL(a.url);if(c.protocol.startsWith(\"blob:\")){const e=await t(c),r=new Response(e.body,e);return r.rawHeaders=Object.fromEntries(e.headers),r}for(let e=0;;e++){let t=(await this.worker.sendMessage({type:\"fetch\",fetch:{remote:c.toString(),method:a.method,headers:o,body:n||void 0}},n?[n]:[])).fetch,s=new Response(y.includes(t.status)?void 0:t.body,{headers:new Headers(t.headers),status:t.status,statusText:t.statusText});s.rawHeaders=t.headers,s.rawResponse=t,s.finalURL=c.toString();const i=r?.redirect||a.redirect;if(!b.includes(s.status))return s;switch(i){case\"follow\":{const t=s.headers.get(\"location\");if(20>e&&null!==t){c=new URL(t,c);continue}throw new TypeError(\"Failed to fetch\")}case\"error\":throw new TypeError(\"Failed to fetch\");case\"manual\":return s}}}}console.debug(\"bare-mux: running v2.1.7 (build c56d286)\");export{k as BareClient,m as BareMuxConnection,w as BareWebSocket,n as WebSocketFields,p as WorkerConnection,d as browserSupportsTransferringStreams,k as default,e as maxRedirects,g as validProtocol};\n//# sourceMappingURL=index.mjs.map\n","import * as characters from \"./characters.js\";\nexport const lookUpTldsInTrie = (labels, trie) => {\n const labelsToCheck = labels.slice();\n const tlds = [];\n let node = trie;\n while (labelsToCheck.length !== 0) {\n const label = labelsToCheck.pop();\n const labelLowerCase = label.toLowerCase();\n if (node.children.has(characters.WILDCARD)) {\n if (node.children.has(characters.EXCEPTION + labelLowerCase)) {\n break;\n }\n node = node.children.get(characters.WILDCARD);\n }\n else {\n if (node.children.has(labelLowerCase) === false) {\n break;\n }\n node = node.children.get(labelLowerCase);\n }\n tlds.unshift(label);\n }\n return tlds;\n};\n//# sourceMappingURL=look-up.js.map","// UP, SAME, DOWN, RESET should not be special regex characters in a character class.\nexport const UP = \"<\"; // one level up\nexport const SAME = \",\"; // same level\nexport const DOWN = \">\"; // one level down\nexport const RESET = \"|\"; // reset level index and start new\nexport const WILDCARD = \"*\"; // as defined by publicsuffix.org\nexport const EXCEPTION = \"!\"; // as defined by publicsuffix.org\n//# sourceMappingURL=characters.js.map","const word = '[a-fA-F\\\\d:]';\n\nconst boundry = options => options && options.includeBoundaries\n\t? `(?:(?<=\\\\s|^)(?=${word})|(?<=${word})(?=\\\\s|$))`\n\t: '';\n\nconst v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n\nconst v6segment = '[a-fA-F\\\\d]{1,4}';\n\nconst v6 = `\n(?:\n(?:${v6segment}:){7}(?:${v6segment}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${v6segment}:){6}(?:${v4}|:${v6segment}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${v6segment}:){5}(?::${v4}|(?::${v6segment}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${v6segment}:){4}(?:(?::${v6segment}){0,1}:${v4}|(?::${v6segment}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${v6segment}:){3}(?:(?::${v6segment}){0,2}:${v4}|(?::${v6segment}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${v6segment}:){2}(?:(?::${v6segment}){0,3}:${v4}|(?::${v6segment}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${v6segment}:){1}(?:(?::${v6segment}){0,4}:${v4}|(?::${v6segment}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${v6segment}){0,5}:${v4}|(?::${v6segment}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim();\n\n// Pre-compile only the exact regexes because adding a global flag make regexes stateful\nconst v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);\nconst v4exact = new RegExp(`^${v4}$`);\nconst v6exact = new RegExp(`^${v6}$`);\n\nconst ipRegex = options => options && options.exact\n\t? v46Exact\n\t: new RegExp(`(?:${boundry(options)}${v4}${boundry(options)})|(?:${boundry(options)}${v6}${boundry(options)})`, 'g');\n\nipRegex.v4 = options => options && options.exact ? v4exact : new RegExp(`${boundry(options)}${v4}${boundry(options)}`, 'g');\nipRegex.v6 = options => options && options.exact ? v6exact : new RegExp(`${boundry(options)}${v6}${boundry(options)}`, 'g');\n\nexport default ipRegex;\n","const {toString} = Object.prototype;\n\nexport default function isRegexp(value) {\n\treturn toString.call(value) === '[object RegExp]';\n}\n","import isRegexp from 'is-regexp';\n\nconst flagMap = {\n\tglobal: 'g',\n\tignoreCase: 'i',\n\tmultiline: 'm',\n\tdotAll: 's',\n\tsticky: 'y',\n\tunicode: 'u'\n};\n\nexport default function clonedRegexp(regexp, options = {}) {\n\tif (!isRegexp(regexp)) {\n\t\tthrow new TypeError('Expected a RegExp instance');\n\t}\n\n\tconst flags = Object.keys(flagMap).map(flag => (\n\t\t(typeof options[flag] === 'boolean' ? options[flag] : regexp[flag]) ? flagMap[flag] : ''\n\t)).join('');\n\n\tconst clonedRegexp = new RegExp(options.source || regexp.source, flags);\n\n\tclonedRegexp.lastIndex = typeof options.lastIndex === 'number' ?\n\t\toptions.lastIndex :\n\t\tregexp.lastIndex;\n\n\treturn clonedRegexp;\n}\n","import functionTimeout, {isTimeoutError} from 'function-timeout';\nimport timeSpan from 'time-span';\nimport cloneRegexp from 'clone-regexp'; // TODO: Use `structuredClone` instead when targeting Node.js 18.\n\nconst resultToMatch = result => ({\n\tmatch: result[0],\n\tindex: result.index,\n\tgroups: result.slice(1),\n\tnamedGroups: result.groups ?? {},\n\tinput: result.input,\n});\n\nexport function isMatch(regex, string, {timeout} = {}) {\n\ttry {\n\t\treturn functionTimeout(() => cloneRegexp(regex).test(string), {timeout})();\n\t} catch (error) {\n\t\tif (isTimeoutError(error)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nexport function firstMatch(regex, string, {timeout} = {}) {\n\ttry {\n\t\tconst result = functionTimeout(() => cloneRegexp(regex).exec(string), {timeout})();\n\n\t\tif (result === null) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn resultToMatch(result);\n\t} catch (error) {\n\t\tif (isTimeoutError(error)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\nexport function matches(regex, string, {timeout = Number.POSITIVE_INFINITY, matchTimeout = Number.POSITIVE_INFINITY} = {}) {\n\tif (!regex.global) {\n\t\tthrow new Error('The regex must have the global flag, otherwise, use `firstMatch()` instead');\n\t}\n\n\treturn {\n\t\t* [Symbol.iterator]() {\n\t\t\ttry {\n\t\t\t\tconst matches = string.matchAll(regex); // The regex is only executed when iterated over.\n\n\t\t\t\twhile (true) {\n\t\t\t\t\tconst nextMatch = functionTimeout(() => matches.next(), {timeout: (timeout !== Number.POSITIVE_INFINITY || matchTimeout !== Number.POSITIVE_INFINITY) ? Math.min(timeout, matchTimeout) : undefined}); // `matches.next` must be called within an arrow function so that it doesn't loose its context.\n\n\t\t\t\t\tconst end = timeSpan();\n\t\t\t\t\tconst {value, done} = nextMatch();\n\t\t\t\t\ttimeout -= Math.ceil(end());\n\n\t\t\t\t\tif (done) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tyield resultToMatch(value);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (!isTimeoutError(error)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t};\n}\n","// Even though the browser version is a no-op, we wrap it to ensure consistent behavior.\nexport default function functionTimeout(function_) {\n\tconst wrappedFunction = (...arguments_) => function_(...arguments_);\n\n\tObject.defineProperty(wrappedFunction, 'name', {\n\t\tvalue: `functionTimeout(${function_.name || '<anonymous>'})`,\n\t\tconfigurable: true,\n\t});\n\n\treturn wrappedFunction;\n}\n\nexport function isTimeoutError() {\n\treturn false;\n}\n","import ipRegex from 'ip-regex';\nimport {isMatch} from 'super-regex';\n\nconst maxIPv4Length = 15;\nconst maxIPv6Length = 45;\n\nconst options = {\n\ttimeout: 400,\n};\n\nexport function isIP(string) {\n\tif (string.length > maxIPv6Length) {\n\t\treturn false;\n\t}\n\n\treturn isMatch(ipRegex({exact: true}), string, options);\n}\n\nexport function isIPv6(string) {\n\tif (string.length > maxIPv6Length) {\n\t\treturn false;\n\t}\n\n\treturn isMatch(ipRegex.v6({exact: true}), string, options);\n}\n\nexport function isIPv4(string) {\n\tif (string.length > maxIPv4Length) {\n\t\treturn false;\n\t}\n\n\treturn isMatch(ipRegex.v4({exact: true}), string, options);\n}\n\nexport function ipVersion(string) {\n\tif (isIPv6(string)) {\n\t\treturn 6;\n\t}\n\n\tif (isIPv4(string)) {\n\t\treturn 4;\n\t}\n}\n","export const NODE_TYPE_ROOT = Symbol(\"ROOT\");\nexport const NODE_TYPE_CHILD = Symbol(\"CHILD\");\nexport const createRootNode = () => {\n return {\n type: NODE_TYPE_ROOT,\n children: new Map(),\n };\n};\nexport const createOrGetChild = (parent, label) => {\n let child = parent.children.get(label);\n if (child === undefined) {\n child = {\n type: NODE_TYPE_CHILD,\n label,\n children: new Map(),\n parent,\n };\n parent.children.set(label, child);\n }\n return child;\n};\n//# sourceMappingURL=nodes.js.map","import * as characters from \"./characters.js\";\nimport { createRootNode, createOrGetChild, NODE_TYPE_ROOT, } from \"./nodes.js\";\nexport const parseTrie = (serializedTrie) => {\n const rootNode = createRootNode();\n let domain = \"\";\n let parentNode = rootNode;\n // Type assertion necessary here due to a TypeScript unsoundness\n // https://github.com/microsoft/TypeScript/issues/9998#issuecomment-235963457\n let node = rootNode;\n const addDomain = () => {\n node = createOrGetChild(parentNode, domain);\n domain = \"\";\n };\n for (let i = 0; i < serializedTrie.length; i++) {\n const char = serializedTrie.charAt(i);\n switch (char) {\n case characters.SAME: {\n addDomain();\n continue;\n }\n case characters.DOWN: {\n addDomain();\n parentNode = node;\n continue;\n }\n case characters.RESET: {\n addDomain();\n parentNode = rootNode;\n continue;\n }\n case characters.UP: {\n if (parentNode.type === NODE_TYPE_ROOT) {\n throw new Error(`Error in serialized trie at position ${i}: Cannot go up, current parent node is already root`);\n }\n addDomain();\n parentNode = parentNode.parent;\n continue;\n }\n }\n domain += char;\n }\n if (domain !== \"\") {\n addDomain();\n }\n return rootNode;\n};\n//# sourceMappingURL=parse-trie.js.map","import {\n\trewriteUrl,\n\tunrewriteUrl,\n\trewriteBlob,\n\tunrewriteBlob,\n} from \"./rewriters/url\";\nimport { rewriteCss, unrewriteCss } from \"./rewriters/css\";\nimport { rewriteHtml, rewriteSrcset } from \"./rewriters/html\";\nimport { rewriteJs } from \"./rewriters/js\";\nimport { rewriteHeaders } from \"./rewriters/headers\";\nimport { rewriteWorkers } from \"./rewriters/worker\";\nimport { BareClient, BareMuxConnection } from \"@mercuryworkshop/bare-mux\";\nimport { parseDomain } from \"parse-domain\";\nimport { ScramjetHeaders } from \"./headers\";\nimport { CookieStore } from \"./cookie\";\nimport { htmlRules, unrewriteHtml } from \"./rewriters/html\";\nimport { $scramjet } from \"../scramjet\";\n\n$scramjet.shared = {\n\tutil: {\n\t\tparseDomain,\n\t\tBareClient,\n\t\tBareMuxConnection,\n\t\tScramjetHeaders,\n\t},\n\turl: {\n\t\trewriteUrl,\n\t\tunrewriteUrl,\n\t\trewriteBlob,\n\t\tunrewriteBlob,\n\t},\n\trewrite: {\n\t\trewriteCss,\n\t\tunrewriteCss,\n\t\trewriteHtml,\n\t\tunrewriteHtml,\n\t\trewriteSrcset,\n\t\trewriteJs,\n\t\trewriteHeaders,\n\t\trewriteWorkers,\n\t\thtmlRules,\n\t},\n\tCookieStore,\n};\n\nif (\"document\" in self && document?.currentScript) {\n\tdocument.currentScript.remove();\n}\n","export default \"ac>com,edu,gov,net,mil,org<ad>nom<ae>co,net,org,sch,ac,gov,mil<aero>airline,airport,accident-investigation,accident-prevention,aerobatic,aeroclub,aerodrome,agents,air-surveillance,air-traffic-control,aircraft,airtraffic,ambulance,association,author,ballooning,broker,caa,cargo,catering,certification,championship,charter,civilaviation,club,conference,consultant,consulting,control,council,crew,design,dgca,educator,emergency,engine,engineer,entertainment,equipment,exchange,express,federation,flight,freight,fuel,gliding,government,groundhandling,group,hanggliding,homebuilt,insurance,journal,journalist,leasing,logistics,magazine,maintenance,marketplace,media,microlight,modelling,navigation,parachuting,paragliding,passenger-association,pilot,press,production,recreation,repbody,res,research,rotorcraft,safety,scientist,services,show,skydiving,software,student,taxi,trader,trading,trainer,union,workinggroup,works<af>gov,com,org,net,edu<ag>com,org,net,co,nom<ai>off,com,net,org<al>com,edu,gov,mil,net,org<am>co,com,commune,net,org<ao>ed,gv,og,co,pb,it<aq,ar>bet,com,coop,edu,gob,gov,int,mil,musica,mutual,net,org,senasa,tur<arpa>e164,in-addr,ip6,iris,uri,urn<as>gov<asia,at>ac>sth<co,gv,or<au>com,net,org,edu>act,catholic,nsw>schools<nt,qld,sa,tas,vic,wa<gov>qld,sa,tas,vic,wa<asn,id,info,conf,oz,act,nsw,nt,qld,sa,tas,vic,wa<aw>com<ax,az>com,net,int,gov,org,edu,info,pp,mil,name,pro,biz<ba>com,edu,gov,mil,net,org<bb>biz,co,com,edu,gov,info,net,org,store,tv<bd>*<be>ac<bf>gov<bg>a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9<bh>com,edu,net,org,gov<bi>co,com,edu,or,org<biz,bj>africa,agro,architectes,assur,avocats,co,com,eco,econo,edu,info,loisirs,money,net,org,ote,resto,restaurant,tourism,univ<bm>com,edu,gov,net,org<bn>com,edu,gov,net,org<bo>com,edu,gob,int,org,net,mil,tv,web,academia,agro,arte,blog,bolivia,ciencia,cooperativa,democracia,deporte,ecologia,economia,empresa,indigena,industria,info,medicina,movimiento,musica,natural,nombre,noticias,patria,politica,profesional,plurinacional,pueblo,revista,salud,tecnologia,tksat,transporte,wiki<br>9guacu,abc,adm,adv,agr,aju,am,anani,aparecida,app,arq,art,ato,b,barueri,belem,bhz,bib,bio,blog,bmd,boavista,bsb,campinagrande,campinas,caxias,cim,cng,cnt,com,contagem,coop,coz,cri,cuiaba,curitiba,def,des,det,dev,ecn,eco,edu,emp,enf,eng,esp,etc,eti,far,feira,flog,floripa,fm,fnd,fortal,fot,foz,fst,g12,geo,ggf,goiania,gov>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to<gru,imb,ind,inf,jab,jampa,jdf,joinville,jor,jus,leg,lel,log,londrina,macapa,maceio,manaus,maringa,mat,med,mil,morena,mp,mus,natal,net,niteroi,nom>*<not,ntr,odo,ong,org,osasco,palmas,poa,ppg,pro,psc,psi,pvh,qsl,radio,rec,recife,rep,ribeirao,rio,riobranco,riopreto,salvador,sampa,santamaria,santoandre,saobernardo,saogonca,seg,sjc,slg,slz,sorocaba,srv,taxi,tc,tec,teo,the,tmp,trd,tur,tv,udi,vet,vix,vlog,wiki,zlg<bs>com,net,org,edu,gov<bt>com,edu,gov,net,org<bv,bw>co,org<by>gov,mil,com,of<bz>com,net,org,edu,gov<ca>ab,bc,mb,nb,nf,nl,ns,nt,nu,on,pe,qc,sk,yk,gc<cat,cc,cd>gov<cf,cg,ch,ci>org,or,com,co,edu,ed,ac,net,go,asso,xn--aroport-bya,int,presse,md,gouv<ck>*,!www<cl>co,gob,gov,mil<cm>co,com,gov,net<cn>ac,com,edu,gov,net,org,mil,xn--55qx5d,xn--io0a7i,xn--od0alg,ah,bj,cq,fj,gd,gs,gz,gx,ha,hb,he,hi,hl,hn,jl,js,jx,ln,nm,nx,qh,sc,sd,sh,sn,sx,tj,xj,xz,yn,zj,hk,mo,tw<co>arts,com,edu,firm,gov,info,int,mil,net,nom,org,rec,web<com,coop,cr>ac,co,ed,fi,go,or,sa<cu>com,edu,org,net,gov,inf<cv>com,edu,int,nome,org<cw>com,edu,net,org<cx>gov<cy>ac,biz,com,ekloges,gov,ltd,mil,net,org,press,pro,tm<cz,de,dj,dk,dm>com,net,org,edu,gov<do>art,com,edu,gob,gov,mil,net,org,sld,web<dz>art,asso,com,edu,gov,org,net,pol,soc,tm<ec>com,info,net,fin,k12,med,pro,org,edu,gov,gob,mil<edu,ee>edu,gov,riik,lib,med,com,pri,aip,org,fie<eg>com,edu,eun,gov,mil,name,net,org,sci<er>*<es>com,nom,org,gob,edu<et>com,gov,org,edu,biz,name,info,net<eu,fi>aland<fj>ac,biz,com,gov,info,mil,name,net,org,pro<fk>*<fm>com,edu,net,org<fo,fr>asso,com,gouv,nom,prd,tm,avoues,cci,greta,huissier-justice<ga,gb,gd>edu,gov<ge>com,edu,gov,org,mil,net,pvt<gf,gg>co,net,org<gh>com,edu,gov,org,mil<gi>com,ltd,gov,mod,edu,org<gl>co,com,edu,net,org<gm,gn>ac,com,edu,gov,org,net<gov,gp>com,net,mobi,edu,org,asso<gq,gr>com,edu,net,org,gov<gs,gt>com,edu,gob,ind,mil,net,org<gu>com,edu,gov,guam,info,net,org,web<gw,gy>co,com,edu,gov,net,org<hk>com,edu,gov,idv,net,org,xn--55qx5d,xn--wcvs22d,xn--lcvr32d,xn--mxtq1m,xn--gmqw5a,xn--ciqpn,xn--gmq050i,xn--zf0avx,xn--io0a7i,xn--mk0axi,xn--od0alg,xn--od0aq3b,xn--tn0ag,xn--uc0atv,xn--uc0ay4a<hm,hn>com,edu,org,net,mil,gob<hr>iz,from,name,com<ht>com,shop,firm,info,adult,net,pro,org,med,art,coop,pol,asso,edu,rel,gouv,perso<hu>co,info,org,priv,sport,tm,2000,agrar,bolt,casino,city,erotica,erotika,film,forum,games,hotel,ingatlan,jogasz,konyvelo,lakas,media,news,reklam,sex,shop,suli,szex,tozsde,utazas,video<id>ac,biz,co,desa,go,mil,my,net,or,ponpes,sch,web<ie>gov<il>ac,co,gov,idf,k12,muni,net,org<xn--4dbrk0ce>xn--4dbgdty6c,xn--5dbhl8d,xn--8dbq2a,xn--hebda8b<im>ac,co>ltd,plc<com,net,org,tt,tv<in>5g,6g,ac,ai,am,bihar,biz,business,ca,cn,co,com,coop,cs,delhi,dr,edu,er,firm,gen,gov,gujarat,ind,info,int,internet,io,me,mil,net,nic,org,pg,post,pro,res,travel,tv,uk,up,us<info,int>eu<io>com<iq>gov,edu,mil,com,org,net<ir>ac,co,gov,id,net,org,sch,xn--mgba3a4f16a,xn--mgba3a4fra<is>net,com,edu,gov,org,int<it>gov,edu,abr,abruzzo,aosta-valley,aostavalley,bas,basilicata,cal,calabria,cam,campania,emilia-romagna,emiliaromagna,emr,friuli-v-giulia,friuli-ve-giulia,friuli-vegiulia,friuli-venezia-giulia,friuli-veneziagiulia,friuli-vgiulia,friuliv-giulia,friulive-giulia,friulivegiulia,friulivenezia-giulia,friuliveneziagiulia,friulivgiulia,fvg,laz,lazio,lig,liguria,lom,lombardia,lombardy,lucania,mar,marche,mol,molise,piedmont,piemonte,pmn,pug,puglia,sar,sardegna,sardinia,sic,sicilia,sicily,taa,tos,toscana,trentin-sud-tirol,xn--trentin-sd-tirol-rzb,trentin-sudtirol,xn--trentin-sdtirol-7vb,trentin-sued-tirol,trentin-suedtirol,trentino-a-adige,trentino-aadige,trentino-alto-adige,trentino-altoadige,trentino-s-tirol,trentino-stirol,trentino-sud-tirol,xn--trentino-sd-tirol-c3b,trentino-sudtirol,xn--trentino-sdtirol-szb,trentino-sued-tirol,trentino-suedtirol,trentino,trentinoa-adige,trentinoaadige,trentinoalto-adige,trentinoaltoadige,trentinos-tirol,trentinostirol,trentinosud-tirol,xn--trentinosd-tirol-rzb,trentinosudtirol,xn--trentinosdtirol-7vb,trentinosued-tirol,trentinosuedtirol,trentinsud-tirol,xn--trentinsd-tirol-6vb,trentinsudtirol,xn--trentinsdtirol-nsb,trentinsued-tirol,trentinsuedtirol,tuscany,umb,umbria,val-d-aosta,val-daosta,vald-aosta,valdaosta,valle-aosta,valle-d-aosta,valle-daosta,valleaosta,valled-aosta,valledaosta,vallee-aoste,xn--valle-aoste-ebb,vallee-d-aoste,xn--valle-d-aoste-ehb,valleeaoste,xn--valleaoste-e7a,valleedaoste,xn--valledaoste-ebb,vao,vda,ven,veneto,ag,agrigento,al,alessandria,alto-adige,altoadige,an,ancona,andria-barletta-trani,andria-trani-barletta,andriabarlettatrani,andriatranibarletta,ao,aosta,aoste,ap,aq,aquila,ar,arezzo,ascoli-piceno,ascolipiceno,asti,at,av,avellino,ba,balsan-sudtirol,xn--balsan-sdtirol-nsb,balsan-suedtirol,balsan,bari,barletta-trani-andria,barlettatraniandria,belluno,benevento,bergamo,bg,bi,biella,bl,bn,bo,bologna,bolzano-altoadige,bolzano,bozen-sudtirol,xn--bozen-sdtirol-2ob,bozen-suedtirol,bozen,br,brescia,brindisi,bs,bt,bulsan-sudtirol,xn--bulsan-sdtirol-nsb,bulsan-suedtirol,bulsan,bz,ca,cagliari,caltanissetta,campidano-medio,campidanomedio,campobasso,carbonia-iglesias,carboniaiglesias,carrara-massa,carraramassa,caserta,catania,catanzaro,cb,ce,cesena-forli,xn--cesena-forl-mcb,cesenaforli,xn--cesenaforl-i8a,ch,chieti,ci,cl,cn,co,como,cosenza,cr,cremona,crotone,cs,ct,cuneo,cz,dell-ogliastra,dellogliastra,en,enna,fc,fe,fermo,ferrara,fg,fi,firenze,florence,fm,foggia,forli-cesena,xn--forl-cesena-fcb,forlicesena,xn--forlcesena-c8a,fr,frosinone,ge,genoa,genova,go,gorizia,gr,grosseto,iglesias-carbonia,iglesiascarbonia,im,imperia,is,isernia,kr,la-spezia,laquila,laspezia,latina,lc,le,lecce,lecco,li,livorno,lo,lodi,lt,lu,lucca,macerata,mantova,massa-carrara,massacarrara,matera,mb,mc,me,medio-campidano,mediocampidano,messina,mi,milan,milano,mn,mo,modena,monza-brianza,monza-e-della-brianza,monza,monzabrianza,monzaebrianza,monzaedellabrianza,ms,mt,na,naples,napoli,no,novara,nu,nuoro,og,ogliastra,olbia-tempio,olbiatempio,or,oristano,ot,pa,padova,padua,palermo,parma,pavia,pc,pd,pe,perugia,pesaro-urbino,pesarourbino,pescara,pg,pi,piacenza,pisa,pistoia,pn,po,pordenone,potenza,pr,prato,pt,pu,pv,pz,ra,ragusa,ravenna,rc,re,reggio-calabria,reggio-emilia,reggiocalabria,reggioemilia,rg,ri,rieti,rimini,rm,rn,ro,roma,rome,rovigo,sa,salerno,sassari,savona,si,siena,siracusa,so,sondrio,sp,sr,ss,suedtirol,xn--sdtirol-n2a,sv,ta,taranto,te,tempio-olbia,tempioolbia,teramo,terni,tn,to,torino,tp,tr,trani-andria-barletta,trani-barletta-andria,traniandriabarletta,tranibarlettaandria,trapani,trento,treviso,trieste,ts,turin,tv,ud,udine,urbino-pesaro,urbinopesaro,va,varese,vb,vc,ve,venezia,venice,verbania,vercelli,verona,vi,vibo-valentia,vibovalentia,vicenza,viterbo,vr,vs,vt,vv<je>co,net,org<jm>*<jo>com,org,net,edu,sch,gov,mil,name<jobs,jp>ac,ad,co,ed,go,gr,lg,ne,or,aichi>aisai,ama,anjo,asuke,chiryu,chita,fuso,gamagori,handa,hazu,hekinan,higashiura,ichinomiya,inazawa,inuyama,isshiki,iwakura,kanie,kariya,kasugai,kira,kiyosu,komaki,konan,kota,mihama,miyoshi,nishio,nisshin,obu,oguchi,oharu,okazaki,owariasahi,seto,shikatsu,shinshiro,shitara,tahara,takahama,tobishima,toei,togo,tokai,tokoname,toyoake,toyohashi,toyokawa,toyone,toyota,tsushima,yatomi<akita>akita,daisen,fujisato,gojome,hachirogata,happou,higashinaruse,honjo,honjyo,ikawa,kamikoani,kamioka,katagami,kazuno,kitaakita,kosaka,kyowa,misato,mitane,moriyoshi,nikaho,noshiro,odate,oga,ogata,semboku,yokote,yurihonjo<aomori>aomori,gonohe,hachinohe,hashikami,hiranai,hirosaki,itayanagi,kuroishi,misawa,mutsu,nakadomari,noheji,oirase,owani,rokunohe,sannohe,shichinohe,shingo,takko,towada,tsugaru,tsuruta<chiba>abiko,asahi,chonan,chosei,choshi,chuo,funabashi,futtsu,hanamigawa,ichihara,ichikawa,ichinomiya,inzai,isumi,kamagaya,kamogawa,kashiwa,katori,katsuura,kimitsu,kisarazu,kozaki,kujukuri,kyonan,matsudo,midori,mihama,minamiboso,mobara,mutsuzawa,nagara,nagareyama,narashino,narita,noda,oamishirasato,omigawa,onjuku,otaki,sakae,sakura,shimofusa,shirako,shiroi,shisui,sodegaura,sosa,tako,tateyama,togane,tohnosho,tomisato,urayasu,yachimata,yachiyo,yokaichiba,yokoshibahikari,yotsukaido<ehime>ainan,honai,ikata,imabari,iyo,kamijima,kihoku,kumakogen,masaki,matsuno,matsuyama,namikata,niihama,ozu,saijo,seiyo,shikokuchuo,tobe,toon,uchiko,uwajima,yawatahama<fukui>echizen,eiheiji,fukui,ikeda,katsuyama,mihama,minamiechizen,obama,ohi,ono,sabae,sakai,takahama,tsuruga,wakasa<fukuoka>ashiya,buzen,chikugo,chikuho,chikujo,chikushino,chikuzen,chuo,dazaifu,fukuchi,hakata,higashi,hirokawa,hisayama,iizuka,inatsuki,kaho,kasuga,kasuya,kawara,keisen,koga,kurate,kurogi,kurume,minami,miyako,miyama,miyawaka,mizumaki,munakata,nakagawa,nakama,nishi,nogata,ogori,okagaki,okawa,oki,omuta,onga,onojo,oto,saigawa,sasaguri,shingu,shinyoshitomi,shonai,soeda,sue,tachiarai,tagawa,takata,toho,toyotsu,tsuiki,ukiha,umi,usui,yamada,yame,yanagawa,yukuhashi<fukushima>aizubange,aizumisato,aizuwakamatsu,asakawa,bandai,date,fukushima,furudono,futaba,hanawa,higashi,hirata,hirono,iitate,inawashiro,ishikawa,iwaki,izumizaki,kagamiishi,kaneyama,kawamata,kitakata,kitashiobara,koori,koriyama,kunimi,miharu,mishima,namie,nango,nishiaizu,nishigo,okuma,omotego,ono,otama,samegawa,shimogo,shirakawa,showa,soma,sukagawa,taishin,tamakawa,tanagura,tenei,yabuki,yamato,yamatsuri,yanaizu,yugawa<gifu>anpachi,ena,gifu,ginan,godo,gujo,hashima,hichiso,hida,higashishirakawa,ibigawa,ikeda,kakamigahara,kani,kasahara,kasamatsu,kawaue,kitagata,mino,minokamo,mitake,mizunami,motosu,nakatsugawa,ogaki,sakahogi,seki,sekigahara,shirakawa,tajimi,takayama,tarui,toki,tomika,wanouchi,yamagata,yaotsu,yoro<gunma>annaka,chiyoda,fujioka,higashiagatsuma,isesaki,itakura,kanna,kanra,katashina,kawaba,kiryu,kusatsu,maebashi,meiwa,midori,minakami,naganohara,nakanojo,nanmoku,numata,oizumi,ora,ota,shibukawa,shimonita,shinto,showa,takasaki,takayama,tamamura,tatebayashi,tomioka,tsukiyono,tsumagoi,ueno,yoshioka<hiroshima>asaminami,daiwa,etajima,fuchu,fukuyama,hatsukaichi,higashihiroshima,hongo,jinsekikogen,kaita,kui,kumano,kure,mihara,miyoshi,naka,onomichi,osakikamijima,otake,saka,sera,seranishi,shinichi,shobara,takehara<hokkaido>abashiri,abira,aibetsu,akabira,akkeshi,asahikawa,ashibetsu,ashoro,assabu,atsuma,bibai,biei,bifuka,bihoro,biratori,chippubetsu,chitose,date,ebetsu,embetsu,eniwa,erimo,esan,esashi,fukagawa,fukushima,furano,furubira,haboro,hakodate,hamatonbetsu,hidaka,higashikagura,higashikawa,hiroo,hokuryu,hokuto,honbetsu,horokanai,horonobe,ikeda,imakane,ishikari,iwamizawa,iwanai,kamifurano,kamikawa,kamishihoro,kamisunagawa,kamoenai,kayabe,kembuchi,kikonai,kimobetsu,kitahiroshima,kitami,kiyosato,koshimizu,kunneppu,kuriyama,kuromatsunai,kushiro,kutchan,kyowa,mashike,matsumae,mikasa,minamifurano,mombetsu,moseushi,mukawa,muroran,naie,nakagawa,nakasatsunai,nakatombetsu,nanae,nanporo,nayoro,nemuro,niikappu,niki,nishiokoppe,noboribetsu,numata,obihiro,obira,oketo,okoppe,otaru,otobe,otofuke,otoineppu,oumu,ozora,pippu,rankoshi,rebun,rikubetsu,rishiri,rishirifuji,saroma,sarufutsu,shakotan,shari,shibecha,shibetsu,shikabe,shikaoi,shimamaki,shimizu,shimokawa,shinshinotsu,shintoku,shiranuka,shiraoi,shiriuchi,sobetsu,sunagawa,taiki,takasu,takikawa,takinoue,teshikaga,tobetsu,tohma,tomakomai,tomari,toya,toyako,toyotomi,toyoura,tsubetsu,tsukigata,urakawa,urausu,uryu,utashinai,wakkanai,wassamu,yakumo,yoichi<hyogo>aioi,akashi,ako,amagasaki,aogaki,asago,ashiya,awaji,fukusaki,goshiki,harima,himeji,ichikawa,inagawa,itami,kakogawa,kamigori,kamikawa,kasai,kasuga,kawanishi,miki,minamiawaji,nishinomiya,nishiwaki,ono,sanda,sannan,sasayama,sayo,shingu,shinonsen,shiso,sumoto,taishi,taka,takarazuka,takasago,takino,tamba,tatsuno,toyooka,yabu,yashiro,yoka,yokawa<ibaraki>ami,asahi,bando,chikusei,daigo,fujishiro,hitachi,hitachinaka,hitachiomiya,hitachiota,ibaraki,ina,inashiki,itako,iwama,joso,kamisu,kasama,kashima,kasumigaura,koga,miho,mito,moriya,naka,namegata,oarai,ogawa,omitama,ryugasaki,sakai,sakuragawa,shimodate,shimotsuma,shirosato,sowa,suifu,takahagi,tamatsukuri,tokai,tomobe,tone,toride,tsuchiura,tsukuba,uchihara,ushiku,yachiyo,yamagata,yawara,yuki<ishikawa>anamizu,hakui,hakusan,kaga,kahoku,kanazawa,kawakita,komatsu,nakanoto,nanao,nomi,nonoichi,noto,shika,suzu,tsubata,tsurugi,uchinada,wajima<iwate>fudai,fujisawa,hanamaki,hiraizumi,hirono,ichinohe,ichinoseki,iwaizumi,iwate,joboji,kamaishi,kanegasaki,karumai,kawai,kitakami,kuji,kunohe,kuzumaki,miyako,mizusawa,morioka,ninohe,noda,ofunato,oshu,otsuchi,rikuzentakata,shiwa,shizukuishi,sumita,tanohata,tono,yahaba,yamada<kagawa>ayagawa,higashikagawa,kanonji,kotohira,manno,marugame,mitoyo,naoshima,sanuki,tadotsu,takamatsu,tonosho,uchinomi,utazu,zentsuji<kagoshima>akune,amami,hioki,isa,isen,izumi,kagoshima,kanoya,kawanabe,kinko,kouyama,makurazaki,matsumoto,minamitane,nakatane,nishinoomote,satsumasendai,soo,tarumizu,yusui<kanagawa>aikawa,atsugi,ayase,chigasaki,ebina,fujisawa,hadano,hakone,hiratsuka,isehara,kaisei,kamakura,kiyokawa,matsuda,minamiashigara,miura,nakai,ninomiya,odawara,oi,oiso,sagamihara,samukawa,tsukui,yamakita,yamato,yokosuka,yugawara,zama,zushi<kochi>aki,geisei,hidaka,higashitsuno,ino,kagami,kami,kitagawa,kochi,mihara,motoyama,muroto,nahari,nakamura,nankoku,nishitosa,niyodogawa,ochi,okawa,otoyo,otsuki,sakawa,sukumo,susaki,tosa,tosashimizu,toyo,tsuno,umaji,yasuda,yusuhara<kumamoto>amakusa,arao,aso,choyo,gyokuto,kamiamakusa,kikuchi,kumamoto,mashiki,mifune,minamata,minamioguni,nagasu,nishihara,oguni,ozu,sumoto,takamori,uki,uto,yamaga,yamato,yatsushiro<kyoto>ayabe,fukuchiyama,higashiyama,ide,ine,joyo,kameoka,kamo,kita,kizu,kumiyama,kyotamba,kyotanabe,kyotango,maizuru,minami,minamiyamashiro,miyazu,muko,nagaokakyo,nakagyo,nantan,oyamazaki,sakyo,seika,tanabe,uji,ujitawara,wazuka,yamashina,yawata<mie>asahi,inabe,ise,kameyama,kawagoe,kiho,kisosaki,kiwa,komono,kumano,kuwana,matsusaka,meiwa,mihama,minamiise,misugi,miyama,nabari,shima,suzuka,tado,taiki,taki,tamaki,toba,tsu,udono,ureshino,watarai,yokkaichi<miyagi>furukawa,higashimatsushima,ishinomaki,iwanuma,kakuda,kami,kawasaki,marumori,matsushima,minamisanriku,misato,murata,natori,ogawara,ohira,onagawa,osaki,rifu,semine,shibata,shichikashuku,shikama,shiogama,shiroishi,tagajo,taiwa,tome,tomiya,wakuya,watari,yamamoto,zao<miyazaki>aya,ebino,gokase,hyuga,kadogawa,kawaminami,kijo,kitagawa,kitakata,kitaura,kobayashi,kunitomi,kushima,mimata,miyakonojo,miyazaki,morotsuka,nichinan,nishimera,nobeoka,saito,shiiba,shintomi,takaharu,takanabe,takazaki,tsuno<nagano>achi,agematsu,anan,aoki,asahi,azumino,chikuhoku,chikuma,chino,fujimi,hakuba,hara,hiraya,iida,iijima,iiyama,iizuna,ikeda,ikusaka,ina,karuizawa,kawakami,kiso,kisofukushima,kitaaiki,komagane,komoro,matsukawa,matsumoto,miasa,minamiaiki,minamimaki,minamiminowa,minowa,miyada,miyota,mochizuki,nagano,nagawa,nagiso,nakagawa,nakano,nozawaonsen,obuse,ogawa,okaya,omachi,omi,ookuwa,ooshika,otaki,otari,sakae,sakaki,saku,sakuho,shimosuwa,shinanomachi,shiojiri,suwa,suzaka,takagi,takamori,takayama,tateshina,tatsuno,togakushi,togura,tomi,ueda,wada,yamagata,yamanouchi,yasaka,yasuoka<nagasaki>chijiwa,futsu,goto,hasami,hirado,iki,isahaya,kawatana,kuchinotsu,matsuura,nagasaki,obama,omura,oseto,saikai,sasebo,seihi,shimabara,shinkamigoto,togitsu,tsushima,unzen<nara>ando,gose,heguri,higashiyoshino,ikaruga,ikoma,kamikitayama,kanmaki,kashiba,kashihara,katsuragi,kawai,kawakami,kawanishi,koryo,kurotaki,mitsue,miyake,nara,nosegawa,oji,ouda,oyodo,sakurai,sango,shimoichi,shimokitayama,shinjo,soni,takatori,tawaramoto,tenkawa,tenri,uda,yamatokoriyama,yamatotakada,yamazoe,yoshino<niigata>aga,agano,gosen,itoigawa,izumozaki,joetsu,kamo,kariwa,kashiwazaki,minamiuonuma,mitsuke,muika,murakami,myoko,nagaoka,niigata,ojiya,omi,sado,sanjo,seiro,seirou,sekikawa,shibata,tagami,tainai,tochio,tokamachi,tsubame,tsunan,uonuma,yahiko,yoita,yuzawa<oita>beppu,bungoono,bungotakada,hasama,hiji,himeshima,hita,kamitsue,kokonoe,kuju,kunisaki,kusu,oita,saiki,taketa,tsukumi,usa,usuki,yufu<okayama>akaiwa,asakuchi,bizen,hayashima,ibara,kagamino,kasaoka,kibichuo,kumenan,kurashiki,maniwa,misaki,nagi,niimi,nishiawakura,okayama,satosho,setouchi,shinjo,shoo,soja,takahashi,tamano,tsuyama,wake,yakage<okinawa>aguni,ginowan,ginoza,gushikami,haebaru,higashi,hirara,iheya,ishigaki,ishikawa,itoman,izena,kadena,kin,kitadaito,kitanakagusuku,kumejima,kunigami,minamidaito,motobu,nago,naha,nakagusuku,nakijin,nanjo,nishihara,ogimi,okinawa,onna,shimoji,taketomi,tarama,tokashiki,tomigusuku,tonaki,urasoe,uruma,yaese,yomitan,yonabaru,yonaguni,zamami<osaka>abeno,chihayaakasaka,chuo,daito,fujiidera,habikino,hannan,higashiosaka,higashisumiyoshi,higashiyodogawa,hirakata,ibaraki,ikeda,izumi,izumiotsu,izumisano,kadoma,kaizuka,kanan,kashiwara,katano,kawachinagano,kishiwada,kita,kumatori,matsubara,minato,minoh,misaki,moriguchi,neyagawa,nishi,nose,osakasayama,sakai,sayama,sennan,settsu,shijonawate,shimamoto,suita,tadaoka,taishi,tajiri,takaishi,takatsuki,tondabayashi,toyonaka,toyono,yao<saga>ariake,arita,fukudomi,genkai,hamatama,hizen,imari,kamimine,kanzaki,karatsu,kashima,kitagata,kitahata,kiyama,kouhoku,kyuragi,nishiarita,ogi,omachi,ouchi,saga,shiroishi,taku,tara,tosu,yoshinogari<saitama>arakawa,asaka,chichibu,fujimi,fujimino,fukaya,hanno,hanyu,hasuda,hatogaya,hatoyama,hidaka,higashichichibu,higashimatsuyama,honjo,ina,iruma,iwatsuki,kamiizumi,kamikawa,kamisato,kasukabe,kawagoe,kawaguchi,kawajima,kazo,kitamoto,koshigaya,kounosu,kuki,kumagaya,matsubushi,minano,misato,miyashiro,miyoshi,moroyama,nagatoro,namegawa,niiza,ogano,ogawa,ogose,okegawa,omiya,otaki,ranzan,ryokami,saitama,sakado,satte,sayama,shiki,shiraoka,soka,sugito,toda,tokigawa,tokorozawa,tsurugashima,urawa,warabi,yashio,yokoze,yono,yorii,yoshida,yoshikawa,yoshimi<shiga>aisho,gamo,higashiomi,hikone,koka,konan,kosei,koto,kusatsu,maibara,moriyama,nagahama,nishiazai,notogawa,omihachiman,otsu,ritto,ryuoh,takashima,takatsuki,torahime,toyosato,yasu<shimane>akagi,ama,gotsu,hamada,higashiizumo,hikawa,hikimi,izumo,kakinoki,masuda,matsue,misato,nishinoshima,ohda,okinoshima,okuizumo,shimane,tamayu,tsuwano,unnan,yakumo,yasugi,yatsuka<shizuoka>arai,atami,fuji,fujieda,fujikawa,fujinomiya,fukuroi,gotemba,haibara,hamamatsu,higashiizu,ito,iwata,izu,izunokuni,kakegawa,kannami,kawanehon,kawazu,kikugawa,kosai,makinohara,matsuzaki,minamiizu,mishima,morimachi,nishiizu,numazu,omaezaki,shimada,shimizu,shimoda,shizuoka,susono,yaizu,yoshida<tochigi>ashikaga,bato,haga,ichikai,iwafune,kaminokawa,kanuma,karasuyama,kuroiso,mashiko,mibu,moka,motegi,nasu,nasushiobara,nikko,nishikata,nogi,ohira,ohtawara,oyama,sakura,sano,shimotsuke,shioya,takanezawa,tochigi,tsuga,ujiie,utsunomiya,yaita<tokushima>aizumi,anan,ichiba,itano,kainan,komatsushima,matsushige,mima,minami,miyoshi,mugi,nakagawa,naruto,sanagochi,shishikui,tokushima,wajiki<tokyo>adachi,akiruno,akishima,aogashima,arakawa,bunkyo,chiyoda,chofu,chuo,edogawa,fuchu,fussa,hachijo,hachioji,hamura,higashikurume,higashimurayama,higashiyamato,hino,hinode,hinohara,inagi,itabashi,katsushika,kita,kiyose,kodaira,koganei,kokubunji,komae,koto,kouzushima,kunitachi,machida,meguro,minato,mitaka,mizuho,musashimurayama,musashino,nakano,nerima,ogasawara,okutama,ome,oshima,ota,setagaya,shibuya,shinagawa,shinjuku,suginami,sumida,tachikawa,taito,tama,toshima<tottori>chizu,hino,kawahara,koge,kotoura,misasa,nanbu,nichinan,sakaiminato,tottori,wakasa,yazu,yonago<toyama>asahi,fuchu,fukumitsu,funahashi,himi,imizu,inami,johana,kamiichi,kurobe,nakaniikawa,namerikawa,nanto,nyuzen,oyabe,taira,takaoka,tateyama,toga,tonami,toyama,unazuki,uozu,yamada<wakayama>arida,aridagawa,gobo,hashimoto,hidaka,hirogawa,inami,iwade,kainan,kamitonda,katsuragi,kimino,kinokawa,kitayama,koya,koza,kozagawa,kudoyama,kushimoto,mihama,misato,nachikatsuura,shingu,shirahama,taiji,tanabe,wakayama,yuasa,yura<yamagata>asahi,funagata,higashine,iide,kahoku,kaminoyama,kaneyama,kawanishi,mamurogawa,mikawa,murayama,nagai,nakayama,nanyo,nishikawa,obanazawa,oe,oguni,ohkura,oishida,sagae,sakata,sakegawa,shinjo,shirataka,shonai,takahata,tendo,tozawa,tsuruoka,yamagata,yamanobe,yonezawa,yuza<yamaguchi>abu,hagi,hikari,hofu,iwakuni,kudamatsu,mitou,nagato,oshima,shimonoseki,shunan,tabuse,tokuyama,toyota,ube,yuu<yamanashi>chuo,doshi,fuefuki,fujikawa,fujikawaguchiko,fujiyoshida,hayakawa,hokuto,ichikawamisato,kai,kofu,koshu,kosuge,minami-alps,minobu,nakamichi,nanbu,narusawa,nirasaki,nishikatsura,oshino,otsuki,showa,tabayama,tsuru,uenohara,yamanakako,yamanashi<xn--4pvxs,xn--vgu402c,xn--c3s14m,xn--f6qx53a,xn--8pvr4u,xn--uist22h,xn--djrs72d6uy,xn--mkru45i,xn--0trq7p7nn,xn--8ltr62k,xn--2m4a15e,xn--efvn9s,xn--32vp30h,xn--4it797k,xn--1lqs71d,xn--5rtp49c,xn--5js045d,xn--ehqz56n,xn--1lqs03n,xn--qqqt11m,xn--kbrq7o,xn--pssu33l,xn--ntsq17g,xn--uisz3g,xn--6btw5a,xn--1ctwo,xn--6orx2r,xn--rht61e,xn--rht27z,xn--djty4k,xn--nit225k,xn--rht3d,xn--klty5x,xn--kltx9a,xn--kltp7d,xn--uuwu58a,xn--zbx025d,xn--ntso0iqx3a,xn--elqq16h,xn--4it168d,xn--klt787d,xn--rny31h,xn--7t0a264c,xn--5rtq34k,xn--k7yn95e,xn--tor131o,xn--d5qv7z876c,kawasaki>*,!city<kitakyushu>*,!city<kobe>*,!city<nagoya>*,!city<sapporo>*,!city<sendai>*,!city<yokohama>*,!city<<ke>ac,co,go,info,me,mobi,ne,or,sc<kg>org,net,com,edu,gov,mil<kh>*<ki>edu,biz,net,org,gov,info,com<km>org,nom,gov,prd,tm,edu,mil,ass,com,coop,asso,presse,medecin,notaires,pharmaciens,veterinaire,gouv<kn>net,org,edu,gov<kp>com,edu,gov,org,rep,tra<kr>ac,co,es,go,hs,kg,mil,ms,ne,or,pe,re,sc,busan,chungbuk,chungnam,daegu,daejeon,gangwon,gwangju,gyeongbuk,gyeonggi,gyeongnam,incheon,jeju,jeonbuk,jeonnam,seoul,ulsan<kw>com,edu,emb,gov,ind,net,org<ky>com,edu,net,org<kz>org,edu,net,gov,mil,com<la>int,net,info,edu,gov,per,com,org<lb>com,edu,gov,net,org<lc>com,net,co,org,edu,gov<li,lk>gov,sch,net,int,com,org,edu,ngo,soc,web,ltd,assn,grp,hotel,ac<lr>com,edu,gov,org,net<ls>ac,biz,co,edu,gov,info,net,org,sc<lt>gov<lu,lv>com,edu,gov,org,mil,id,net,asn,conf<ly>com,net,gov,plc,edu,sch,med,org,id<ma>co,net,gov,org,ac,press<mc>tm,asso<md,me>co,net,org,edu,ac,gov,its,priv<mg>org,nom,gov,prd,tm,edu,mil,com,co<mh,mil,mk>com,org,net,edu,gov,inf,name<ml>com,edu,gouv,gov,net,org,presse<mm>*<mn>gov,edu,org<mo>com,net,org,edu,gov<mobi,mp,mq,mr>gov<ms>com,edu,gov,net,org<mt>com,edu,net,org<mu>com,net,org,gov,ac,co,or<museum,mv>aero,biz,com,coop,edu,gov,info,int,mil,museum,name,net,org,pro<mw>ac,biz,co,com,coop,edu,gov,int,museum,net,org<mx>com,org,gob,edu,net<my>biz,com,edu,gov,mil,name,net,org<mz>ac,adv,co,edu,gov,mil,net,org<na>info,pro,name,school,or,dr,us,mx,ca,in,cc,tv,ws,mobi,co,com,org<name,nc>asso,nom<ne,net,nf>com,net,per,rec,web,arts,firm,info,other,store<ng>com,edu,gov,i,mil,mobi,name,net,org,sch<ni>ac,biz,co,com,edu,gob,in,info,int,mil,net,nom,org,web<nl,no>fhs,vgs,fylkesbibl,folkebibl,museum,idrett,priv,mil,stat,dep,kommune,herad,aa>gs<ah>gs<bu>gs<fm>gs<hl>gs<hm>gs<jan-mayen>gs<mr>gs<nl>gs<nt>gs<of>gs<ol>gs<oslo>gs<rl>gs<sf>gs<st>gs<svalbard>gs<tm>gs<tr>gs<va>gs<vf>gs<akrehamn,xn--krehamn-dxa,algard,xn--lgrd-poac,arna,brumunddal,bryne,bronnoysund,xn--brnnysund-m8ac,drobak,xn--drbak-wua,egersund,fetsund,floro,xn--flor-jra,fredrikstad,hokksund,honefoss,xn--hnefoss-q1a,jessheim,jorpeland,xn--jrpeland-54a,kirkenes,kopervik,krokstadelva,langevag,xn--langevg-jxa,leirvik,mjondalen,xn--mjndalen-64a,mo-i-rana,mosjoen,xn--mosjen-eya,nesoddtangen,orkanger,osoyro,xn--osyro-wua,raholt,xn--rholt-mra,sandnessjoen,xn--sandnessjen-ogb,skedsmokorset,slattum,spjelkavik,stathelle,stavern,stjordalshalsen,xn--stjrdalshalsen-sqb,tananger,tranby,vossevangen,afjord,xn--fjord-lra,agdenes,al,xn--l-1fa,alesund,xn--lesund-hua,alstahaug,alta,xn--lt-liac,alaheadju,xn--laheadju-7ya,alvdal,amli,xn--mli-tla,amot,xn--mot-tla,andebu,andoy,xn--andy-ira,andasuolo,ardal,xn--rdal-poa,aremark,arendal,xn--s-1fa,aseral,xn--seral-lra,asker,askim,askvoll,askoy,xn--asky-ira,asnes,xn--snes-poa,audnedaln,aukra,aure,aurland,aurskog-holand,xn--aurskog-hland-jnb,austevoll,austrheim,averoy,xn--avery-yua,balestrand,ballangen,balat,xn--blt-elab,balsfjord,bahccavuotna,xn--bhccavuotna-k7a,bamble,bardu,beardu,beiarn,bajddar,xn--bjddar-pta,baidar,xn--bidr-5nac,berg,bergen,berlevag,xn--berlevg-jxa,bearalvahki,xn--bearalvhki-y4a,bindal,birkenes,bjarkoy,xn--bjarky-fya,bjerkreim,bjugn,bodo,xn--bod-2na,badaddja,xn--bdddj-mrabd,budejju,bokn,bremanger,bronnoy,xn--brnny-wuac,bygland,bykle,barum,xn--brum-voa,telemark>bo,xn--b-5ga<nordland>bo,xn--b-5ga,heroy,xn--hery-ira<bievat,xn--bievt-0qa,bomlo,xn--bmlo-gra,batsfjord,xn--btsfjord-9za,bahcavuotna,xn--bhcavuotna-s4a,dovre,drammen,drangedal,dyroy,xn--dyry-ira,donna,xn--dnna-gra,eid,eidfjord,eidsberg,eidskog,eidsvoll,eigersund,elverum,enebakk,engerdal,etne,etnedal,evenes,evenassi,xn--eveni-0qa01ga,evje-og-hornnes,farsund,fauske,fuossko,fuoisku,fedje,fet,finnoy,xn--finny-yua,fitjar,fjaler,fjell,flakstad,flatanger,flekkefjord,flesberg,flora,fla,xn--fl-zia,folldal,forsand,fosnes,frei,frogn,froland,frosta,frana,xn--frna-woa,froya,xn--frya-hra,fusa,fyresdal,forde,xn--frde-gra,gamvik,gangaviika,xn--ggaviika-8ya47h,gaular,gausdal,gildeskal,xn--gildeskl-g0a,giske,gjemnes,gjerdrum,gjerstad,gjesdal,gjovik,xn--gjvik-wua,gloppen,gol,gran,grane,granvin,gratangen,grimstad,grong,kraanghke,xn--kranghke-b0a,grue,gulen,hadsel,halden,halsa,hamar,hamaroy,habmer,xn--hbmer-xqa,hapmir,xn--hpmir-xqa,hammerfest,hammarfeasta,xn--hmmrfeasta-s4ac,haram,hareid,harstad,hasvik,aknoluokta,xn--koluokta-7ya57h,hattfjelldal,aarborte,haugesund,hemne,hemnes,hemsedal,more-og-romsdal>heroy,sande<xn--mre-og-romsdal-qqb>xn--hery-ira,sande<hitra,hjartdal,hjelmeland,hobol,xn--hobl-ira,hof,hol,hole,holmestrand,holtalen,xn--holtlen-hxa,hornindal,horten,hurdal,hurum,hvaler,hyllestad,hagebostad,xn--hgebostad-g3a,hoyanger,xn--hyanger-q1a,hoylandet,xn--hylandet-54a,ha,xn--h-2fa,ibestad,inderoy,xn--indery-fya,iveland,jevnaker,jondal,jolster,xn--jlster-bya,karasjok,karasjohka,xn--krjohka-hwab49j,karlsoy,galsa,xn--gls-elac,karmoy,xn--karmy-yua,kautokeino,guovdageaidnu,klepp,klabu,xn--klbu-woa,kongsberg,kongsvinger,kragero,xn--krager-gya,kristiansand,kristiansund,krodsherad,xn--krdsherad-m8a,kvalsund,rahkkeravju,xn--rhkkervju-01af,kvam,kvinesdal,kvinnherad,kviteseid,kvitsoy,xn--kvitsy-fya,kvafjord,xn--kvfjord-nxa,giehtavuoatna,kvanangen,xn--kvnangen-k0a,navuotna,xn--nvuotna-hwa,kafjord,xn--kfjord-iua,gaivuotna,xn--givuotna-8ya,larvik,lavangen,lavagis,loabat,xn--loabt-0qa,lebesby,davvesiida,leikanger,leirfjord,leka,leksvik,lenvik,leangaviika,xn--leagaviika-52b,lesja,levanger,lier,lierne,lillehammer,lillesand,lindesnes,lindas,xn--linds-pra,lom,loppa,lahppi,xn--lhppi-xqa,lund,lunner,luroy,xn--lury-ira,luster,lyngdal,lyngen,ivgu,lardal,lerdal,xn--lrdal-sra,lodingen,xn--ldingen-q1a,lorenskog,xn--lrenskog-54a,loten,xn--lten-gra,malvik,masoy,xn--msy-ula0h,muosat,xn--muost-0qa,mandal,marker,marnardal,masfjorden,meland,meldal,melhus,meloy,xn--mely-ira,meraker,xn--merker-kua,moareke,xn--moreke-jua,midsund,midtre-gauldal,modalen,modum,molde,moskenes,moss,mosvik,malselv,xn--mlselv-iua,malatvuopmi,xn--mlatvuopmi-s4a,namdalseid,aejrie,namsos,namsskogan,naamesjevuemie,xn--nmesjevuemie-tcba,laakesvuemie,nannestad,narvik,narviika,naustdal,nedre-eiker,akershus>nes<buskerud>nes<nesna,nesodden,nesseby,unjarga,xn--unjrga-rta,nesset,nissedal,nittedal,nord-aurdal,nord-fron,nord-odal,norddal,nordkapp,davvenjarga,xn--davvenjrga-y4a,nordre-land,nordreisa,raisa,xn--risa-5na,nore-og-uvdal,notodden,naroy,xn--nry-yla5g,notteroy,xn--nttery-byae,odda,oksnes,xn--ksnes-uua,oppdal,oppegard,xn--oppegrd-ixa,orkdal,orland,xn--rland-uua,orskog,xn--rskog-uua,orsta,xn--rsta-fra,hedmark>os,valer,xn--vler-qoa<hordaland>os<osen,osteroy,xn--ostery-fya,ostre-toten,xn--stre-toten-zcb,overhalla,ovre-eiker,xn--vre-eiker-k8a,oyer,xn--yer-zna,oygarden,xn--ygarden-p1a,oystre-slidre,xn--ystre-slidre-ujb,porsanger,porsangu,xn--porsgu-sta26f,porsgrunn,radoy,xn--rady-ira,rakkestad,rana,ruovat,randaberg,rauma,rendalen,rennebu,rennesoy,xn--rennesy-v1a,rindal,ringebu,ringerike,ringsaker,rissa,risor,xn--risr-ira,roan,rollag,rygge,ralingen,xn--rlingen-mxa,rodoy,xn--rdy-0nab,romskog,xn--rmskog-bya,roros,xn--rros-gra,rost,xn--rst-0na,royken,xn--ryken-vua,royrvik,xn--ryrvik-bya,rade,xn--rde-ula,salangen,siellak,saltdal,salat,xn--slt-elab,xn--slat-5na,samnanger,vestfold>sande<sandefjord,sandnes,sandoy,xn--sandy-yua,sarpsborg,sauda,sauherad,sel,selbu,selje,seljord,sigdal,siljan,sirdal,skaun,skedsmo,ski,skien,skiptvet,skjervoy,xn--skjervy-v1a,skierva,xn--skierv-uta,skjak,xn--skjk-soa,skodje,skanland,xn--sknland-fxa,skanit,xn--sknit-yqa,smola,xn--smla-hra,snillfjord,snasa,xn--snsa-roa,snoasa,snaase,xn--snase-nra,sogndal,sokndal,sola,solund,songdalen,sortland,spydeberg,stange,stavanger,steigen,steinkjer,stjordal,xn--stjrdal-s1a,stokke,stor-elvdal,stord,stordal,storfjord,omasvuotna,strand,stranda,stryn,sula,suldal,sund,sunndal,surnadal,sveio,svelvik,sykkylven,sogne,xn--sgne-gra,somna,xn--smna-gra,sondre-land,xn--sndre-land-0cb,sor-aurdal,xn--sr-aurdal-l8a,sor-fron,xn--sr-fron-q1a,sor-odal,xn--sr-odal-q1a,sor-varanger,xn--sr-varanger-ggb,matta-varjjat,xn--mtta-vrjjat-k7af,sorfold,xn--srfold-bya,sorreisa,xn--srreisa-q1a,sorum,xn--srum-gra,tana,deatnu,time,tingvoll,tinn,tjeldsund,dielddanuorri,tjome,xn--tjme-hra,tokke,tolga,torsken,tranoy,xn--trany-yua,tromso,xn--troms-zua,tromsa,romsa,trondheim,troandin,trysil,trana,xn--trna-woa,trogstad,xn--trgstad-r1a,tvedestrand,tydal,tynset,tysfjord,divtasvuodna,divttasvuotna,tysnes,tysvar,xn--tysvr-vra,tonsberg,xn--tnsberg-q1a,ullensaker,ullensvang,ulvik,utsira,vadso,xn--vads-jra,cahcesuolo,xn--hcesuolo-7ya35b,vaksdal,valle,vang,vanylven,vardo,xn--vard-jra,varggat,xn--vrggt-xqad,vefsn,vaapste,vega,vegarshei,xn--vegrshei-c0a,vennesla,verdal,verran,vestby,vestnes,vestre-slidre,vestre-toten,vestvagoy,xn--vestvgy-ixa6o,vevelstad,vik,vikna,vindafjord,volda,voss,varoy,xn--vry-yla5g,vagan,xn--vgan-qoa,voagat,vagsoy,xn--vgsy-qoa0j,vaga,xn--vg-yiab,ostfold>valer<xn--stfold-9xa>xn--vler-qoa<<np>*<nr>biz,info,gov,edu,org,net,com<nu,nz>ac,co,cri,geek,gen,govt,health,iwi,kiwi,maori,mil,xn--mori-qsa,net,org,parliament,school<om>co,com,edu,gov,med,museum,net,org,pro<onion,org,pa>ac,gob,com,org,sld,edu,net,ing,abo,med,nom<pe>edu,gob,nom,mil,org,com,net<pf>com,org,edu<pg>*<ph>com,net,org,gov,edu,ngo,mil,i<pk>ac,biz,com,edu,fam,gkp,gob,gog,gok,gon,gop,gos,gov,net,org,web<pl>com,net,org,aid,agro,atm,auto,biz,edu,gmina,gsm,info,mail,miasta,media,mil,nieruchomosci,nom,pc,powiat,priv,realestate,rel,sex,shop,sklep,sos,szkola,targi,tm,tourism,travel,turystyka,gov>ap,griw,ic,is,kmpsp,konsulat,kppsp,kwp,kwpsp,mup,mw,oia,oirm,oke,oow,oschr,oum,pa,pinb,piw,po,pr,psp,psse,pup,rzgw,sa,sdn,sko,so,sr,starostwo,ug,ugim,um,umig,upow,uppo,us,uw,uzs,wif,wiih,winb,wios,witd,wiw,wkz,wsa,wskr,wsse,wuoz,wzmiuw,zp,zpisdn<augustow,babia-gora,bedzin,beskidy,bialowieza,bialystok,bielawa,bieszczady,boleslawiec,bydgoszcz,bytom,cieszyn,czeladz,czest,dlugoleka,elblag,elk,glogow,gniezno,gorlice,grajewo,ilawa,jaworzno,jelenia-gora,jgora,kalisz,kazimierz-dolny,karpacz,kartuzy,kaszuby,katowice,kepno,ketrzyn,klodzko,kobierzyce,kolobrzeg,konin,konskowola,kutno,lapy,lebork,legnica,lezajsk,limanowa,lomza,lowicz,lubin,lukow,malbork,malopolska,mazowsze,mazury,mielec,mielno,mragowo,naklo,nowaruda,nysa,olawa,olecko,olkusz,olsztyn,opoczno,opole,ostroda,ostroleka,ostrowiec,ostrowwlkp,pila,pisz,podhale,podlasie,polkowice,pomorze,pomorskie,prochowice,pruszkow,przeworsk,pulawy,radom,rawa-maz,rybnik,rzeszow,sanok,sejny,slask,slupsk,sosnowiec,stalowa-wola,skoczow,starachowice,stargard,suwalki,swidnica,swiebodzin,swinoujscie,szczecin,szczytno,tarnobrzeg,tgory,turek,tychy,ustka,walbrzych,warmia,warszawa,waw,wegrow,wielun,wlocl,wloclawek,wodzislaw,wolomin,wroclaw,zachpomor,zagan,zarow,zgora,zgorzelec<pm,pn>gov,co,org,edu,net<post,pr>com,net,org,gov,edu,isla,pro,biz,info,name,est,prof,ac<pro>aaa,aca,acct,avocat,bar,cpa,eng,jur,law,med,recht<ps>edu,gov,sec,plo,com,org,net<pt>net,gov,org,edu,int,publ,com,nome<pw>co,ne,or,ed,go,belau<py>com,coop,edu,gov,mil,net,org<qa>com,edu,gov,mil,name,net,org,sch<re>asso,com,nom<ro>arts,com,firm,info,nom,nt,org,rec,store,tm,www<rs>ac,co,edu,gov,in,org<ru,rw>ac,co,coop,gov,mil,net,org<sa>com,net,org,gov,med,pub,edu,sch<sb>com,edu,gov,net,org<sc>com,gov,net,org,edu<sd>com,net,org,edu,med,tv,gov,info<se>a,ac,b,bd,brand,c,d,e,f,fh,fhsk,fhv,g,h,i,k,komforb,kommunalforbund,komvux,l,lanbib,m,n,naturbruksgymn,o,org,p,parti,pp,press,r,s,t,tm,u,w,x,y,z<sg>com,net,org,gov,edu,per<sh>com,net,gov,org,mil<si,sj,sk,sl>com,net,edu,gov,org<sm,sn>art,com,edu,gouv,org,perso,univ<so>com,edu,gov,me,net,org<sr,ss>biz,com,edu,gov,me,net,org,sch<st>co,com,consulado,edu,embaixada,mil,net,org,principe,saotome,store<su,sv>com,edu,gob,org,red<sx>gov<sy>edu,gov,net,mil,com,org<sz>co,ac,org<tc,td,tel,tf,tg,th>ac,co,go,in,mi,net,or<tj>ac,biz,co,com,edu,go,gov,int,mil,name,net,nic,org,test,web<tk,tl>gov<tm>com,co,org,net,nom,gov,mil,edu<tn>com,ens,fin,gov,ind,info,intl,mincom,nat,net,org,perso,tourism<to>com,gov,net,org,edu,mil<tr>av,bbs,bel,biz,com,dr,edu,gen,gov,info,mil,k12,kep,name,net,org,pol,tel,tsk,tv,web,nc>gov<<tt>co,com,org,net,biz,info,pro,int,coop,jobs,mobi,travel,museum,aero,name,gov,edu<tv,tw>edu,gov,mil,com,net,org,idv,game,ebiz,club,xn--zf0ao64a,xn--uc0atv,xn--czrw28b<tz>ac,co,go,hotel,info,me,mil,mobi,ne,or,sc,tv<ua>com,edu,gov,in,net,org,cherkassy,cherkasy,chernigov,chernihiv,chernivtsi,chernovtsy,ck,cn,cr,crimea,cv,dn,dnepropetrovsk,dnipropetrovsk,donetsk,dp,if,ivano-frankivsk,kh,kharkiv,kharkov,kherson,khmelnitskiy,khmelnytskyi,kiev,kirovograd,km,kr,kropyvnytskyi,krym,ks,kv,kyiv,lg,lt,lugansk,luhansk,lutsk,lv,lviv,mk,mykolaiv,nikolaev,od,odesa,odessa,pl,poltava,rivne,rovno,rv,sb,sebastopol,sevastopol,sm,sumy,te,ternopil,uz,uzhgorod,uzhhorod,vinnica,vinnytsia,vn,volyn,yalta,zakarpattia,zaporizhzhe,zaporizhzhia,zhitomir,zhytomyr,zp,zt<ug>co,or,ac,sc,go,ne,com,org<uk>ac,co,gov,ltd,me,net,nhs,org,plc,police,sch>*<<us>dni,fed,isa,kids,nsn,ak>k12,cc,lib<al>k12,cc,lib<ar>k12,cc,lib<as>k12,cc,lib<az>k12,cc,lib<ca>k12,cc,lib<co>k12,cc,lib<ct>k12,cc,lib<dc>k12,cc,lib<de>cc<fl>k12,cc,lib<ga>k12,cc,lib<gu>k12,cc,lib<hi>cc,lib<ia>k12,cc,lib<id>k12,cc,lib<il>k12,cc,lib<in>k12,cc,lib<ks>k12,cc,lib<ky>k12,cc,lib<la>k12,cc,lib<ma>k12>pvt,chtr,paroch<cc,lib<md>k12,cc,lib<me>k12,cc,lib<mi>k12,cc,lib,ann-arbor,cog,dst,eaton,gen,mus,tec,washtenaw<mn>k12,cc,lib<mo>k12,cc,lib<ms>k12,cc,lib<mt>k12,cc,lib<nc>k12,cc,lib<nd>cc,lib<ne>k12,cc,lib<nh>k12,cc,lib<nj>k12,cc,lib<nm>k12,cc,lib<nv>k12,cc,lib<ny>k12,cc,lib<oh>k12,cc,lib<ok>k12,cc,lib<or>k12,cc,lib<pa>k12,cc,lib<pr>k12,cc,lib<ri>cc,lib<sc>k12,cc,lib<sd>cc,lib<tn>k12,cc,lib<tx>k12,cc,lib<ut>k12,cc,lib<vi>k12,cc,lib<vt>k12,cc,lib<va>k12,cc,lib<wa>k12,cc,lib<wi>k12,cc,lib<wv>cc<wy>k12,cc,lib<<uy>com,edu,gub,mil,net,org<uz>co,com,net,org<va,vc>com,net,org,gov,mil,edu<ve>arts,bib,co,com,e12,edu,firm,gob,gov,info,int,mil,net,nom,org,rar,rec,store,tec,web<vg,vi>co,com,k12,net,org<vn>ac,ai,biz,com,edu,gov,health,id,info,int,io,name,net,org,pro,angiang,bacgiang,backan,baclieu,bacninh,baria-vungtau,bentre,binhdinh,binhduong,binhphuoc,binhthuan,camau,cantho,caobang,daklak,daknong,danang,dienbien,dongnai,dongthap,gialai,hagiang,haiduong,haiphong,hanam,hanoi,hatinh,haugiang,hoabinh,hungyen,khanhhoa,kiengiang,kontum,laichau,lamdong,langson,laocai,longan,namdinh,nghean,ninhbinh,ninhthuan,phutho,phuyen,quangbinh,quangnam,quangngai,quangninh,quangtri,soctrang,sonla,tayninh,thaibinh,thainguyen,thanhhoa,thanhphohochiminh,thuathienhue,tiengiang,travinh,tuyenquang,vinhlong,vinhphuc,yenbai<vu>com,edu,net,org<wf,ws>com,net,org,gov,edu<yt,xn--mgbaam7a8h,xn--y9a3aq,xn--54b7fta0cc,xn--90ae,xn--mgbcpq6gpa1a,xn--90ais,xn--fiqs8s,xn--fiqz9s,xn--lgbbat1ad8j,xn--wgbh1c,xn--e1a4c,xn--qxa6a,xn--mgbah1a3hjkrd,xn--node,xn--qxam,xn--j6w193g>xn--55qx5d,xn--wcvs22d,xn--mxtq1m,xn--gmqw5a,xn--od0alg,xn--uc0atv<xn--2scrj9c,xn--3hcrj9c,xn--45br5cyl,xn--h2breg3eve,xn--h2brj9c8c,xn--mgbgu82a,xn--rvc1e0am3e,xn--h2brj9c,xn--mgbbh1a,xn--mgbbh1a71e,xn--fpcrj9c3d,xn--gecrj9c,xn--s9brj9c,xn--45brj9c,xn--xkc2dl3a5ee0h,xn--mgba3a4f16a,xn--mgba3a4fra,xn--mgbtx2b,xn--mgbayh7gpa,xn--3e0b707e,xn--80ao21a,xn--q7ce6a,xn--fzc2c9e2c,xn--xkc2al3hye2a,xn--mgbc0a9azcg,xn--d1alf,xn--l1acc,xn--mix891f,xn--mix082f,xn--mgbx4cd0ab,xn--mgb9awbf,xn--mgbai9azgqp6j,xn--mgbai9a5eva00b,xn--ygbi2ammx,xn--90a3ac>xn--o1ac,xn--c1avg,xn--90azh,xn--d1at,xn--o1ach,xn--80au<xn--p1ai,xn--wgbl6a,xn--mgberp4a5d4ar,xn--mgberp4a5d4a87g,xn--mgbqly7c0a67fbc,xn--mgbqly7cvafr,xn--mgbpl2fh,xn--yfro4i67o,xn--clchc0ea0b2g2a9gcd,xn--ogbpf8fl,xn--mgbtf8fl,xn--o3cw4h>xn--12c1fe0br,xn--12co0c3b4eva,xn--h3cuzk1di,xn--o3cyx2a,xn--m3ch0j3a,xn--12cfi8ixb8l<xn--pgbs0dh,xn--kpry57d,xn--kprw13d,xn--nnx388a,xn--j1amh,xn--mgb2ddes,xxx,ye>com,edu,gov,net,mil,org<za>ac,agric,alt,co,edu,gov,grondar,law,mil,net,ngo,nic,nis,nom,org,school,tm,web<zm>ac,biz,co,com,edu,gov,info,mil,net,org,sch<zw>ac,co,gov,mil,org<aaa,aarp,abb,abbott,abbvie,abc,able,abogado,abudhabi,academy,accenture,accountant,accountants,aco,actor,ads,adult,aeg,aetna,afl,africa,agakhan,agency,aig,airbus,airforce,airtel,akdn,alibaba,alipay,allfinanz,allstate,ally,alsace,alstom,amazon,americanexpress,americanfamily,amex,amfam,amica,amsterdam,analytics,android,anquan,anz,aol,apartments,app,apple,aquarelle,arab,aramco,archi,army,art,arte,asda,associates,athleta,attorney,auction,audi,audible,audio,auspost,author,auto,autos,aws,axa,azure,baby,baidu,banamex,band,bank,bar,barcelona,barclaycard,barclays,barefoot,bargains,baseball,basketball,bauhaus,bayern,bbc,bbt,bbva,bcg,bcn,beats,beauty,beer,bentley,berlin,best,bestbuy,bet,bharti,bible,bid,bike,bing,bingo,bio,black,blackfriday,blockbuster,blog,bloomberg,blue,bms,bmw,bnpparibas,boats,boehringer,bofa,bom,bond,boo,book,booking,bosch,bostik,boston,bot,boutique,box,bradesco,bridgestone,broadway,broker,brother,brussels,build,builders,business,buy,buzz,bzh,cab,cafe,cal,call,calvinklein,cam,camera,camp,canon,capetown,capital,capitalone,car,caravan,cards,care,career,careers,cars,casa,case,cash,casino,catering,catholic,cba,cbn,cbre,center,ceo,cern,cfa,cfd,chanel,channel,charity,chase,chat,cheap,chintai,christmas,chrome,church,cipriani,circle,cisco,citadel,citi,citic,city,claims,cleaning,click,clinic,clinique,clothing,cloud,club,clubmed,coach,codes,coffee,college,cologne,commbank,community,company,compare,computer,comsec,condos,construction,consulting,contact,contractors,cooking,cool,corsica,country,coupon,coupons,courses,cpa,credit,creditcard,creditunion,cricket,crown,crs,cruise,cruises,cuisinella,cymru,cyou,dabur,dad,dance,data,date,dating,datsun,day,dclk,dds,deal,dealer,deals,degree,delivery,dell,deloitte,delta,democrat,dental,dentist,desi,design,dev,dhl,diamonds,diet,digital,direct,directory,discount,discover,dish,diy,dnp,docs,doctor,dog,domains,dot,download,drive,dtv,dubai,dunlop,dupont,durban,dvag,dvr,earth,eat,eco,edeka,education,email,emerck,energy,engineer,engineering,enterprises,epson,equipment,ericsson,erni,esq,estate,eurovision,eus,events,exchange,expert,exposed,express,extraspace,fage,fail,fairwinds,faith,family,fan,fans,farm,farmers,fashion,fast,fedex,feedback,ferrari,ferrero,fidelity,fido,film,final,finance,financial,fire,firestone,firmdale,fish,fishing,fit,fitness,flickr,flights,flir,florist,flowers,fly,foo,food,football,ford,forex,forsale,forum,foundation,fox,free,fresenius,frl,frogans,frontier,ftr,fujitsu,fun,fund,furniture,futbol,fyi,gal,gallery,gallo,gallup,game,games,gap,garden,gay,gbiz,gdn,gea,gent,genting,george,ggee,gift,gifts,gives,giving,glass,gle,global,globo,gmail,gmbh,gmo,gmx,godaddy,gold,goldpoint,golf,goo,goodyear,goog,google,gop,got,grainger,graphics,gratis,green,gripe,grocery,group,gucci,guge,guide,guitars,guru,hair,hamburg,hangout,haus,hbo,hdfc,hdfcbank,health,healthcare,help,helsinki,here,hermes,hiphop,hisamitsu,hitachi,hiv,hkt,hockey,holdings,holiday,homedepot,homegoods,homes,homesense,honda,horse,hospital,host,hosting,hot,hotels,hotmail,house,how,hsbc,hughes,hyatt,hyundai,ibm,icbc,ice,icu,ieee,ifm,ikano,imamat,imdb,immo,immobilien,inc,industries,infiniti,ing,ink,institute,insurance,insure,international,intuit,investments,ipiranga,irish,ismaili,ist,istanbul,itau,itv,jaguar,java,jcb,jeep,jetzt,jewelry,jio,jll,jmp,jnj,joburg,jot,joy,jpmorgan,jprs,juegos,juniper,kaufen,kddi,kerryhotels,kerrylogistics,kerryproperties,kfh,kia,kids,kim,kindle,kitchen,kiwi,koeln,komatsu,kosher,kpmg,kpn,krd,kred,kuokgroup,kyoto,lacaixa,lamborghini,lamer,lancaster,land,landrover,lanxess,lasalle,lat,latino,latrobe,law,lawyer,lds,lease,leclerc,lefrak,legal,lego,lexus,lgbt,lidl,life,lifeinsurance,lifestyle,lighting,like,lilly,limited,limo,lincoln,link,lipsy,live,living,llc,llp,loan,loans,locker,locus,lol,london,lotte,lotto,love,lpl,lplfinancial,ltd,ltda,lundbeck,luxe,luxury,madrid,maif,maison,makeup,man,management,mango,map,market,marketing,markets,marriott,marshalls,mattel,mba,mckinsey,med,media,meet,melbourne,meme,memorial,men,menu,merckmsd,miami,microsoft,mini,mint,mit,mitsubishi,mlb,mls,mma,mobile,moda,moe,moi,mom,monash,money,monster,mormon,mortgage,moscow,moto,motorcycles,mov,movie,msd,mtn,mtr,music,nab,nagoya,navy,nba,nec,netbank,netflix,network,neustar,new,news,next,nextdirect,nexus,nfl,ngo,nhk,nico,nike,nikon,ninja,nissan,nissay,nokia,norton,now,nowruz,nowtv,nra,nrw,ntt,nyc,obi,observer,office,okinawa,olayan,olayangroup,ollo,omega,one,ong,onl,online,ooo,open,oracle,orange,organic,origins,osaka,otsuka,ott,ovh,page,panasonic,paris,pars,partners,parts,party,pay,pccw,pet,pfizer,pharmacy,phd,philips,phone,photo,photography,photos,physio,pics,pictet,pictures,pid,pin,ping,pink,pioneer,pizza,place,play,playstation,plumbing,plus,pnc,pohl,poker,politie,porn,pramerica,praxi,press,prime,prod,productions,prof,progressive,promo,properties,property,protection,pru,prudential,pub,pwc,qpon,quebec,quest,racing,radio,read,realestate,realtor,realty,recipes,red,redstone,redumbrella,rehab,reise,reisen,reit,reliance,ren,rent,rentals,repair,report,republican,rest,restaurant,review,reviews,rexroth,rich,richardli,ricoh,ril,rio,rip,rocks,rodeo,rogers,room,rsvp,rugby,ruhr,run,rwe,ryukyu,saarland,safe,safety,sakura,sale,salon,samsclub,samsung,sandvik,sandvikcoromant,sanofi,sap,sarl,sas,save,saxo,sbi,sbs,scb,schaeffler,schmidt,scholarships,school,schule,schwarz,science,scot,search,seat,secure,security,seek,select,sener,services,seven,sew,sex,sexy,sfr,shangrila,sharp,shell,shia,shiksha,shoes,shop,shopping,shouji,show,silk,sina,singles,site,ski,skin,sky,skype,sling,smart,smile,sncf,soccer,social,softbank,software,sohu,solar,solutions,song,sony,soy,spa,space,sport,spot,srl,stada,staples,star,statebank,statefarm,stc,stcgroup,stockholm,storage,store,stream,studio,study,style,sucks,supplies,supply,support,surf,surgery,suzuki,swatch,swiss,sydney,systems,tab,taipei,talk,taobao,target,tatamotors,tatar,tattoo,tax,taxi,tci,tdk,team,tech,technology,temasek,tennis,teva,thd,theater,theatre,tiaa,tickets,tienda,tips,tires,tirol,tjmaxx,tjx,tkmaxx,tmall,today,tokyo,tools,top,toray,toshiba,total,tours,town,toyota,toys,trade,trading,training,travel,travelers,travelersinsurance,trust,trv,tube,tui,tunes,tushu,tvs,ubank,ubs,unicom,university,uno,uol,ups,vacations,vana,vanguard,vegas,ventures,verisign,versicherung,vet,viajes,video,vig,viking,villas,vin,vip,virgin,visa,vision,viva,vivo,vlaanderen,vodka,volvo,vote,voting,voto,voyage,wales,walmart,walter,wang,wanggou,watch,watches,weather,weatherchannel,webcam,weber,website,wed,wedding,weibo,weir,whoswho,wien,wiki,williamhill,win,windows,wine,winners,wme,wolterskluwer,woodside,work,works,world,wow,wtc,wtf,xbox,xerox,xihuan,xin,xn--11b4c3d,xn--1ck2e1b,xn--1qqw23a,xn--30rr7y,xn--3bst00m,xn--3ds443g,xn--3pxu8k,xn--42c2d9a,xn--45q11c,xn--4gbrim,xn--55qw42g,xn--55qx5d,xn--5su34j936bgsg,xn--5tzm5g,xn--6frz82g,xn--6qq986b3xl,xn--80adxhks,xn--80aqecdr1a,xn--80asehdb,xn--80aswg,xn--8y0a063a,xn--9dbq2a,xn--9et52u,xn--9krt00a,xn--b4w605ferd,xn--bck1b9a5dre4c,xn--c1avg,xn--c2br7g,xn--cck2b3b,xn--cckwcxetd,xn--cg4bki,xn--czr694b,xn--czrs0t,xn--czru2d,xn--d1acj3b,xn--eckvdtc9d,xn--efvy88h,xn--fct429k,xn--fhbei,xn--fiq228c5hs,xn--fiq64b,xn--fjq720a,xn--flw351e,xn--fzys8d69uvgm,xn--g2xx48c,xn--gckr3f0f,xn--gk3at1e,xn--hxt814e,xn--i1b6b1a6a2e,xn--imr513n,xn--io0a7i,xn--j1aef,xn--jlq480n2rg,xn--jvr189m,xn--kcrx77d1x4a,xn--kput3i,xn--mgba3a3ejt,xn--mgba7c0bbn0a,xn--mgbab2bd,xn--mgbca7dzdo,xn--mgbi4ecexp,xn--mgbt3dhd,xn--mk1bu44c,xn--mxtq1m,xn--ngbc5azd,xn--ngbe9e0a,xn--ngbrx,xn--nqv7f,xn--nqv7fs00ema,xn--nyqy26a,xn--otu796d,xn--p1acf,xn--pssy2u,xn--q9jyb4c,xn--qcka1pmc,xn--rhqv96g,xn--rovu88b,xn--ses554g,xn--t60b56a,xn--tckwe,xn--tiq49xqyj,xn--unup4y,xn--vermgensberater-ctb,xn--vermgensberatung-pwb,xn--vhquv,xn--vuq861b,xn--w4r85el8fhu5dnra,xn--w4rs40l,xn--xhq521b,xn--zfr164b,xyz,yachts,yahoo,yamaxun,yandex,yodobashi,yoga,yokohama,you,youtube,yun,zappos,zara,zero,zip,zone,zuerich\";","export default \"krd>co,edu<pl>art,gliwice,krakow,poznan,wroc,zakopane,beep,ecommerce-shop,cfolks,dfirma,dkonto,you2,shoparena,homesklep,sdscloud,unicloud,krasnik,leczna,lubartow,lublin,poniatowa,swidnik,co,torun,simplesite,myspreadshop,gda,gdansk,gdynia,med,sopot,bielsko<us>de>lib<cloudns,drud,is-by,land-4-sale,stuff-4-sale,heliohost,enscaled>phx<mircloud,ngo,golffan,noip,pointto,freeddns,srv>gh,gl<platterp,servername<dev>12chars,panel,autocode,lcl>*<lclstage>*<stg>*<stgstage>*<pages,r2,workers,curv,deno,deno-staging,deta,evervault>relay<fly,githubpreview,gateway>*<is-a,iserv,runcontainers,localcert>user>*<<loginline,barsy,mediatech,modx,ngrok,ngrok-free,is-cool,is-not-a,localplayer,xmit,platter-app,replit>archer,bones,canary,global,hacker,id,janeway,kim,kira,kirk,odo,paris,picard,pike,prerelease,reed,riker,sisko,spock,staging,sulu,tarpit,teams,tucker,wesley,worf<crm>d>*<w>*<wa>*<wb>*<wc>*<wd>*<we>*<wf>*<<vercel,webhare>*<<it>12chars,blogspot,ibxos,iliadboxos,neen>jc<tim>open>jelastic>cloud<<<16-b,32-b,64-b,123homepage,myspreadshop,syncloud<pro>12chars,cloudns,dnstrace>bci<barsy,ngrok<ua>cc,inf,ltd,cx,ie,biz,co,pp,v<to>611,oya,x0,quickconnect>direct<vpnplus<com>a2hosted,cpserver,adobeaemcloud>dev>*<<africa,airkitapps,airkitapps-au,aivencloud,kasserver,amazonaws>af-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-south-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ap-southeast-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-southeast-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-southeast-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ap-southeast-4>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ca-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ca-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<eu-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-central-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<eu-north-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-south-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<eu-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-deprecated,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-west-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-west-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<il-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs<<me-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<me-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<sa-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-east-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-gov-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website<us-gov-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website<us-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-west-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<compute>*<compute-1>*<airflow>af-south-1>*<ap-east-1>*<ap-northeast-1>*<ap-northeast-2>*<ap-northeast-3>*<ap-south-1>*<ap-south-2>*<ap-southeast-1>*<ap-southeast-2>*<ap-southeast-3>*<ap-southeast-4>*<ca-central-1>*<ca-west-1>*<eu-central-1>*<eu-central-2>*<eu-north-1>*<eu-south-1>*<eu-south-2>*<eu-west-1>*<eu-west-2>*<eu-west-3>*<il-central-1>*<me-central-1>*<me-south-1>*<sa-east-1>*<us-east-1>*<us-east-2>*<us-west-1>*<us-west-2>*<<s3,s3-1,s3-ap-east-1,s3-ap-northeast-1,s3-ap-northeast-2,s3-ap-northeast-3,s3-ap-south-1,s3-ap-southeast-1,s3-ap-southeast-2,s3-ca-central-1,s3-eu-central-1,s3-eu-north-1,s3-eu-west-1,s3-eu-west-2,s3-eu-west-3,s3-external-1,s3-fips-us-gov-east-1,s3-fips-us-gov-west-1,s3-global>accesspoint>mrap<<s3-me-south-1,s3-sa-east-1,s3-us-east-2,s3-us-gov-east-1,s3-us-gov-west-1,s3-us-west-1,s3-us-west-2,s3-website-ap-northeast-1,s3-website-ap-southeast-1,s3-website-ap-southeast-2,s3-website-eu-west-1,s3-website-sa-east-1,s3-website-us-east-1,s3-website-us-gov-west-1,s3-website-us-west-1,s3-website-us-west-2,elb>*<<amazoncognito>af-south-1>auth<ap-east-1>auth<ap-northeast-1>auth<ap-northeast-2>auth<ap-northeast-3>auth<ap-south-1>auth<ap-south-2>auth<ap-southeast-1>auth<ap-southeast-2>auth<ap-southeast-3>auth<ap-southeast-4>auth<ca-central-1>auth<ca-west-1>auth<eu-central-1>auth<eu-central-2>auth<eu-north-1>auth<eu-south-1>auth<eu-south-2>auth<eu-west-1>auth<eu-west-2>auth<eu-west-3>auth<il-central-1>auth<me-central-1>auth<me-south-1>auth<sa-east-1>auth<us-east-1>auth,auth-fips<us-east-2>auth,auth-fips<us-gov-west-1>auth-fips<us-west-1>auth,auth-fips<us-west-2>auth,auth-fips<<amplifyapp,awsapprunner>*<awsapps,elasticbeanstalk>af-south-1,ap-east-1,ap-northeast-1,ap-northeast-2,ap-northeast-3,ap-south-1,ap-southeast-1,ap-southeast-2,ap-southeast-3,ca-central-1,eu-central-1,eu-north-1,eu-south-1,eu-west-1,eu-west-2,eu-west-3,il-central-1,me-south-1,sa-east-1,us-east-1,us-east-2,us-gov-east-1,us-gov-west-1,us-west-1,us-west-2<awsglobalaccelerator,siiites,appspacehosted,appspaceusercontent,on-aptible,myasustor,balena-devices,betainabox,boutir,bplaced,cafjs,canva-apps,cdn77-storage,br,cn,de,eu,jpn,mex,ru,sa,uk,us,za,clever-cloud>services>*<<dnsabr,jdevcloud,wpdevcloud,cf-ipfs,cloudflare-ipfs,trycloudflare,co,customer-oci>*,oci>*<ocp>*<ocs>*<<builtwithdark,datadetect>demo,instance<dattolocal,dattorelay,dattoweb,mydatto,ddns5,digitaloceanspaces>*<discordsays,discordsez,drayddns,dreamhosters,durumis,mydrobo,blogdns,cechire,dnsalias,dnsdojo,doesntexist,dontexist,doomdns,dyn-o-saur,dynalias,dyndns-at-home,dyndns-at-work,dyndns-blog,dyndns-free,dyndns-home,dyndns-ip,dyndns-mail,dyndns-office,dyndns-pics,dyndns-remote,dyndns-server,dyndns-web,dyndns-wiki,dyndns-work,est-a-la-maison,est-a-la-masion,est-le-patron,est-mon-blogueur,from-ak,from-al,from-ar,from-ca,from-ct,from-dc,from-de,from-fl,from-ga,from-hi,from-ia,from-id,from-il,from-in,from-ks,from-ky,from-ma,from-md,from-mi,from-mn,from-mo,from-ms,from-mt,from-nc,from-nd,from-ne,from-nh,from-nj,from-nm,from-nv,from-oh,from-ok,from-or,from-pa,from-pr,from-ri,from-sc,from-sd,from-tn,from-tx,from-ut,from-va,from-vt,from-wa,from-wi,from-wv,from-wy,getmyip,gotdns,hobby-site,homelinux,homeunix,iamallama,is-a-anarchist,is-a-blogger,is-a-bookkeeper,is-a-bulls-fan,is-a-caterer,is-a-chef,is-a-conservative,is-a-cpa,is-a-cubicle-slave,is-a-democrat,is-a-designer,is-a-doctor,is-a-financialadvisor,is-a-geek,is-a-green,is-a-guru,is-a-hard-worker,is-a-hunter,is-a-landscaper,is-a-lawyer,is-a-liberal,is-a-libertarian,is-a-llama,is-a-musician,is-a-nascarfan,is-a-nurse,is-a-painter,is-a-personaltrainer,is-a-photographer,is-a-player,is-a-republican,is-a-rockstar,is-a-socialist,is-a-student,is-a-teacher,is-a-techie,is-a-therapist,is-an-accountant,is-an-actor,is-an-actress,is-an-anarchist,is-an-artist,is-an-engineer,is-an-entertainer,is-certified,is-gone,is-into-anime,is-into-cars,is-into-cartoons,is-into-games,is-leet,is-not-certified,is-slick,is-uberleet,is-with-theband,isa-geek,isa-hockeynut,issmarterthanyou,likes-pie,likescandy,neat-url,saves-the-whales,selfip,sells-for-less,sells-for-u,servebbs,simple-url,space-to-rent,teaches-yoga,writesthisblog,ddnsfree,ddnsgeek,giize,gleeze,kozow,loseyourip,ooguy,theworkpc,mytuleap,tuleap-partners,encoreapi,evennode>eu-1,eu-2,eu-3,eu-4,us-1,us-2,us-3,us-4<onfabrica,fastly-edge,fastly-terrarium,fastvps-server,mydobiss,firebaseapp,fldrv,forgeblocks,framercanvas,freebox-os,freeboxos,freemyip,aliases121,gentapps,gentlentapis,githubusercontent,0emm>*<appspot>r>*<<blogspot,codespot,googleapis,googlecode,pagespeedmobilizer,publishproxy,withgoogle,withyoutube,grayjayleagues,hatenablog,hatenadiary,herokuapp,herokussl,gr,smushcdn,wphostedmail,wpmucdn,pixolino,apps-1and1,live-website,amscompute,dopaas,hosted-by-previder>paas<hosteur>rag-cloud,rag-cloud-ch<ik-server>jcloud,jcloud-ver-jpc<jelastic>demo<kilatiron,massivegrid>paas<wafaicloud>jed,lon,ryd<webadorsite,joyent>cns>*<<ktistory,lpusercontent,linode>members,nodebalancer>*<<linodeobjects>*<linodeusercontent>ip<barsycenter,barsyonline,mazeplay,miniserver,atmeta,fbsbx>apps<meteorapp>eu<hostedpi,mythic-beasts>caracal,customer,fentiger,lynx,ocelot,oncilla,onza,sphinx,vs,x,yali<nospamproxy>cloud<4u,nfshost,ar,hu,kr,no,qc,uy,3utilities,blogsyte,ciscofreak,damnserver,ddnsking,ditchyourip,dnsiskinky,dynns,geekgalaxy,health-carereform,homesecuritymac,homesecuritypc,myactivedirectory,mysecuritycamera,myvnc,net-freaks,onthewifi,point2this,quicksytes,securitytactics,servebeer,servecounterstrike,serveexchange,serveftp,servegame,servehalflife,servehttp,servehumour,serveirc,servemp3,servep2p,servepics,servequake,servesarcasm,stufftoread,unusualperson,workisboring,001www,ddnslive,myiphost,observableusercontent>static<simplesite,orsites,operaunite,authgear-staging,authgearapps,skygearapp,outsystemscloud,ownprovider,pgfog,pagexl,gotpantheon,paywhirl>*<upsunapp,platter-app,postman-echo,prgmr>xen<pythonanywhere>eu<qa2,alpha-myqnapcloud,dev-myqnapcloud,mycloudnas,mynascloud,myqnapcloud,qualifioapp,ladesk,qbuser,quipelements>*<rackmaze,rhcloud,onrender,render>app<180r,dojin,sakuratan,sakuraweb,x0,code>builder>*<dev-builder>*<stg-builder>*<<salesforce>platform>code-builder-stg>test>001>*<<<<<logoip,scrysec,firewall-gateway,myshopblocks,myshopify,shopitsite,1kapp,appchizi,applinzi,sinaapp,vipsinaapp,bounty-full>alpha,beta<streamlitapp,try-snowplow,playstation-cloud,myspreadshop,w-corp-staticblitz,w-credentialless-staticblitz,w-staticblitz,stackhero-network,stdlib>api<strapiapp>media<streak-link,streaklinks,streakusercontent,temp-dns,dsmynas,familyds,mytabit,tb-hosting>site<reservd,thingdustdata,bloxcms,townnews-staging,typeform>pro<hk,it,vultrobjects>*<wafflecell,hotelwithflight,reserve-online,cprapid,pleskns,remotewd,wiardweb>pages<wixsite,wixstudio,messwithdns,woltlab-demo,wpenginepowered>js<xnbay>u2,u2-local<yolasite<vodka>aaa<io>on-acorn>*<apigee,b-data,banzaicloud>app,backyards>*<<beagleboard,bitbucket,bluebite,boxfuse,brave>s>*<<browsersafetymark,bigv>uk0<cleverapps,dappnode>dyndns<darklang,definima,dedyn,drud,fh-muenster,shw,forgerock>id<github,gitlab,lolipop,hasura-app,hostyhosting,hypernode,moonscale>*<beebyte>paas<beebyteapp>sekd1<jele,unispace>cloud-fr1<webthings,loginline,barsy,azurecontainer>*<ngrok>ap,au,eu,in,jp,sa,us<nodeart>stage<pantheonsite,dyn53,pstmn>mock<protonet,qcx>sys>*<<qoto,vaporcloud,myrdbx,rb-hosting>site<on-k3s>*<on-rio>*<readthedocs,resindevice,resinstaging>devices<hzc,sandcats,scrypted>client<shiftedit,mo-siemens,lair>apps<stolos>*<spacekit,musician,utwente,s5y>*<edugit,telebit,thingdust>dev>cust,reservd<disrec>cust,reservd<prod>cust<testing>cust,reservd<<tickets,upli,2038,webflow,webflowtest,editorx,wixstudio,basicserver,virtualserver<biz>activetrail,cloudns,jozi,dyndns,for-better,for-more,for-some,for-the,selfip,webhop,orx,mmafan,myftp,no-ip,dscloud<app>adaptable,beget>*<clerk,clerkstage,wnext,csb>preview<platform0,deta,ondigitalocean,easypanel,encr,evervault>relay<expo>staging<edgecompute,fireweb,flutterflow,framer,hosted>*<run>*<web,hasura,loginline,messerli,netfy,netlify,ngrok,ngrok-free,developer>*<noop,northflank>*<upsun>*<replit>id<snowflake>*,privatelink>*<<streamlit,storipress,telebit,typedream,vercel,bookonline,wdh>preview<zeabur<live>aem,hlx,ewp>*<<net>adobeaemcloud,adobeio-static,adobeioruntime,akadns,akamai,akamai-staging,akamaiedge,akamaiedge-staging,akamaihd,akamaihd-staging,akamaiorigin,akamaiorigin-staging,akamaized,akamaized-staging,edgekey,edgekey-staging,edgesuite,edgesuite-staging,alwaysdata,myamaze,cloudfront,appudo,atlassian-dev>prod>cdn<<myfritz,onavstack,shopselect,blackbaudcdn,boomla,bplaced,square7,cdn77>r<cdn77-ssl,gb,hu,jp,se,uk,clickrising,dns-cloud,dns-dynamic,cloudaccess,cloudflare>cdn<cloudflareanycast>cdn<cloudflarecn>cdn<cloudflareglobal>cdn<feste-ip,knx-server,static-access,cryptonomic>*<dattolocal,mydatto,debian,definima,at-band-camp,blogdns,broke-it,buyshouses,dnsalias,dnsdojo,does-it,dontexist,dynalias,dynathome,endofinternet,from-az,from-co,from-la,from-ny,gets-it,ham-radio-op,homeftp,homeip,homelinux,homeunix,in-the-band,is-a-chef,is-a-geek,isa-geek,kicks-ass,office-on-the,podzone,scrapper-site,selfip,sells-it,servebbs,serveftp,thruhere,webhop,casacam,dynu,dynv6,twmail,ru,channelsdvr>u<fastly>freetls,map,prod>a,global<ssl>a,b,global<<fastlylb>map<edgeapp,keyword-on,live-on,server-on,cdn-edges,localcert,localhostcert,heteml,cloudfunctions,iobb,moonscale,in-dsl,in-vpn,apps-1and1,ipifony,cloudjiffy>fra1-de,west1-us<elastx>jls-sto1,jls-sto2,jls-sto3<faststacks,massivegrid>paas>fr-1,lon-1,lon-2,ny-1,ny-2,sg-1<<saveincloud>jelastic,nordeste-idc<scaleforce>j<tsukaeru>jelastic<kinghost,uni5,krellian,ggff,barsy,memset,azure-api,azure-mobile,azureedge,azurefd,azurestaticapps>1,2,3,4,5,6,7,centralus,eastasia,eastus2,westeurope,westus2<azurewebsites,cloudapp,trafficmanager,windows>core>blob<servicebus<mynetname>sn<bounceme,ddns,eating-organic,mydissent,myeffect,mymediapc,mypsx,mysecuritycamera,nhlfan,no-ip,pgafan,privatizehealthinsurance,redirectme,serveblog,serveminecraft,sytes,dnsup,hicam,now-dns,ownip,vpndns,cloudycluster,ovh>hosting>*<webpaas>*<<rackmaze,myradweb,in,squares,schokokeks,firewall-gateway,seidat,senseering,siteleaf,mafelo,myspreadshop,vps-host>jelastic>atl,njs,ric<<srcf>soc,user<supabase,dsmynas,familyds,tailscale>beta<ts>c>*<<torproject>pages<reserve-online,community-pro,meinforum,yandexcloud>storage,website<za<page>aem,hlx,hlx3,translated,codeberg,prvcy,rocky,magnet,pdns,plesk<eu>airkitapps,mycd,cloudns,dogado>jelastic<barsy,wellbeingzone,spdns,transurl>*<diskstation<ca>barsy,awdev>*<co,blogspot,no-ip,myspreadshop,box<estate>compute>*<<network>alces>*<co,arvo,azimuth,tlon<org>altervista,pimienta,poivron,potager,sweetpepper,cdn77>c,rsc<cdn77-secure>origin>ssl<<ae,certmgr,cloudns,ddnss,duckdns,tunk,blogdns,blogsite,boldlygoingnowhere,dnsalias,dnsdojo,doesntexist,dontexist,doomdns,dvrdns,dynalias,dyndns>go,home<endofinternet,endoftheinternet,from-me,game-host,gotdns,hobby-site,homedns,homeftp,homelinux,homeunix,is-a-bruinsfan,is-a-candidate,is-a-celticsfan,is-a-chef,is-a-geek,is-a-knight,is-a-linux-user,is-a-patsfan,is-a-soxfan,is-found,is-lost,is-saved,is-very-bad,is-very-evil,is-very-good,is-very-nice,is-very-sweet,isa-geek,kicks-ass,misconfused,podzone,readmyblog,selfip,sellsyourhome,servebbs,serveftp,servegame,stuff-4-sale,webhop,accesscam,camdvr,freeddns,mywire,webredirect,twmail,eu>al,asso,at,au,be,bg,ca,cd,ch,cn,cy,cz,de,dk,edu,ee,es,fi,fr,gr,hr,hu,ie,il,in,int,is,it,jp,kr,lt,lu,lv,mc,me,mk,mt,my,net,ng,nl,no,nz,paris,pl,pt,q-a,ro,ru,se,si,sk,tr,uk,us<fedorainfracloud,fedorapeople,fedoraproject>cloud,os>app<stg>os>app<<<freedesktop,hatenadiary,hepforge,in-dsl,in-vpn,js,barsy,mayfirst,bmoattachments,cable-modem,collegefan,couchpotatofries,hopto,mlbfan,myftp,mysecuritycamera,nflfan,no-ip,read-books,ufcfan,zapto,dynserv,now-dns,is-local,httpbin,pubtls,jpn,my-firewall,myfirewall,spdns,small-web,dsmynas,familyds,teckids>s3<tuxfamily,diskstation,hk,us,toolforge,wmcloud,wmflabs,za<cn>com>amazonaws>cn-north-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-deprecated,s3-object-lambda,s3-website<cn-northwest-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<compute>*<airflow>cn-north-1>*<cn-northwest-1>*<<eb>cn-north-1,cn-northwest-1<elb>*<<sagemaker>cn-north-1>notebook,studio<cn-northwest-1>notebook,studio<<<canva-apps,canvasite>my>*<<myqnapcloud,sh>as<quickconnect>direct<<aws>sagemaker>ap-northeast-1>labeling,notebook,studio<ap-northeast-2>labeling,notebook,studio<ap-south-1>labeling,notebook,studio<ap-southeast-1>labeling,notebook,studio<ap-southeast-2>labeling,notebook,studio<ca-central-1>labeling,notebook,notebook-fips,studio<eu-central-1>labeling,notebook,studio<eu-west-1>labeling,notebook,studio<eu-west-2>labeling,notebook,studio<us-east-1>labeling,notebook,notebook-fips,studio<us-east-2>labeling,notebook,notebook-fips,studio<us-west-2>labeling,notebook,notebook-fips,studio<af-south-1>notebook,studio<ap-east-1>notebook,studio<ap-northeast-3>notebook,studio<ap-south-2>notebook<ap-southeast-3>notebook,studio<ap-southeast-4>notebook<ca-west-1>notebook,notebook-fips<eu-central-2>notebook<eu-north-1>notebook,studio<eu-south-1>notebook,studio<eu-south-2>notebook,studio<eu-west-3>notebook,studio<il-central-1>notebook,studio<me-central-1>notebook,studio<me-south-1>notebook,studio<sa-east-1>notebook,studio<us-gov-east-1>notebook,notebook-fips,studio,studio-fips<us-gov-west-1>notebook,notebook-fips,studio,studio-fips<us-west-1>notebook,notebook-fips,studio<experiments>*<<repost>private>*<<<online>eero,eero-stage,websitebuilder,barsy<si>f5,gitapp,gitpage,blogspot<jp>ne>aseinet>user<gehirn,ivory,mail-box,mints,mokuren,opal,sakura,sumomo,topaz<buyshop,fashionstore,handcrafted,kawaiishop,supersale,theshop,0am,0g0,0j0,0t0,mydns,pgw,wjg,usercontent,angry,babyblue,babymilk,backdrop,bambina,bitter,blush,boo,boy,boyfriend,but,candypop,capoo,catfood,cheap,chicappa,chillout,chips,chowder,chu,ciao,cocotte,coolblog,cranky,cutegirl,daa,deca,deci,digick,egoism,fakefur,fem,flier,floppy,fool,frenchkiss,girlfriend,girly,gloomy,gonna,greater,hacca,heavy,her,hiho,hippy,holy,hungry,icurus,itigo,jellybean,kikirara,kill,kilo,kuron,littlestar,lolipopmc,lolitapunk,lomo,lovepop,lovesick,main,mods,mond,mongolian,moo,namaste,nikita,nobushi,noor,oops,parallel,parasite,pecori,peewee,penne,pepper,perma,pigboat,pinoko,punyu,pupu,pussycat,pya,raindrop,readymade,sadist,schoolbus,secret,staba,stripper,sub,sunnyday,thick,tonkotsu,under,upper,velvet,verse,versus,vivian,watson,weblike,whitesnow,zombie,blogspot,hateblo,hatenablog,hatenadiary,2-d,bona,crap,daynight,eek,flop,halfmoon,jeez,matrix,mimoza,netgamers,nyanta,o0o0,rdy,rgr,rulez,sakurastorage>isk01>s3<isk02>s3<<saloon,sblo,skr,tank,uh-oh,undo,webaccel>rs,user<websozai,xii<vc>gv>d<0e,mydns<eus>party>user<<link>myfritz,cyon,nftstorage>ipfs<mypep,dweb>*<<ws>advisor>*<cloud66,dyndns,mypets<cloud>banzai>*<elementor,encoway>eu<statics>*<ravendb,axarnet>es-1<diadem,jelastic>vip<jele,jenv-aruba>aruba>eur>it1<<it1<keliweb>cs<oxa>tn,uk<primetel>uk<reclaim>ca,uk,us<trendhosting>ch,de<jotelulu,kuleuven,linkyard,magentosite>*<observablehq,perspecta,vapor,on-rancher>*<scw>baremetal>fr-par-1,fr-par-2,nl-ams-1<fr-par>cockpit,fnc>functions<k8s>nodes<s3,s3-website,whm<instances>priv,pub<k8s,nl-ams>cockpit,k8s>nodes<s3,s3-website,whm<pl-waw>cockpit,k8s>nodes<s3,s3-website<scalebook,smartlabeling<servebolt,onstackit>runs<sensiosite>*<trafficplex,unison-services,urown,voorloper,zap<ec>base,official<shop>base,hoplix,barsy,barsyonline<gay>pages<la>bnr<sh>bip,hashbang,platform>ent,eu,us<now<je>of<ch>square7,cloudns,cloudscale>cust,lpg>objects<rma>objects<<blogspot,flow>ae>alp1<appengine<linkyard-cloud,gotdns,dnsking,123website,myspreadshop,firenet>*,svc>*<<12hp,2ix,4lima,lima-city<de>bplaced,square7,com,cosidns>dyn<dnsupdater,dynamisches-dns,internet-dns,l-o-g-i-n,ddnss>dyn,dyndns<dyn-ip24,dyndns1,home-webserver>dyn<myhome-server,dnshome,fuettertdasnetz,isteingeek,istmein,lebtimnetz,leitungsen,traeumtgerade,frusky>*<goip,blogspot,xn--gnstigbestellen-zvb,xn--gnstigliefern-wob,hs-heilbronn>it>pages<<dyn-berlin,in-berlin,in-brb,in-butter,in-dsl,in-vpn,iservschule,mein-iserv,schulplattform,schulserver,test-iserv,keymachine,git-repos,lcube-server,svn-repos,barsy,123webseite,logoip,firewall-gateway,my-gateway,my-router,spdns,speedpartner>customer<myspreadshop,taifun-dns,12hp,2ix,4lima,lima-city,dd-dns,dray-dns,draydns,dyn-vpn,dynvpn,mein-vigor,my-vigor,my-wan,syno-ds,synology-diskstation,synology-ds,uberspace>*<virtual-user,virtualuser,community-pro,diskussionsbereich<hr>brendly>shop<blogspot,free<rs>brendly>shop<blogspot,ua,barsy,ox<am>radio,blogspot<fm>radio,user>*<<uk>co>bytemark>dh,vm<blogspot,layershift>j<barsy,barsyonline,retrosnub>cust<nh-serv,no-ip,wellbeingzone,adimo,myspreadshop<gov>api,campaign,service<conn,copro,hosp,independent-commission,independent-inquest,independent-inquiry,independent-panel,independent-review,public-inquiry,royal-commission,pymnt,org>glug,lug,lugs,affinitylottery,raffleentry,weeklylottery<barsy,nimsite<site>canva>my>*<<cloudera>*<convex,cyon,fnwk,folionetwork,fastvps,jele,jouwweb,lelux,loginline,barsy,notion,omniwe,opensocial,madethis,platformsh>*<tst>*<byen,srht,novecore,wpsquared<ac>drr,feedback,forms<ai>uwu,framer<co>carrd,crd,otap>*<com>blogspot<leadpages,lpages,mypi,n4t,xmit>*<firewalledreplit>id<repl>id<supabase<mp>ju<cz>contentproxy9>rsc<realm,e4,blogspot,co,metacentrum>cloud>*<custom<muni>cloud>flt,usr<<<bz>za,mydns,gsj<se>com,blogspot,conf,iopsys,123minsida,itcouldbewor,myspreadshop<group>discourse<team>discourse,jelastic<cc>cleverapps,cloudns,ftpaccess,game-server,myphotos,scrapping,twmail,csx,fantasyleague,spawn>instances<<tech>cleverapps<asia>cloudns,daemon,dix<be>cloudns,webhosting,blogspot,interhostsolutions>cloud<kuleuven>ezproxy<123website,myspreadshop,transurl>*<<cl>cloudns,blogspot<club>cloudns,jele,barsy<cx>cloudns,ath,info,assessments,calculators,funnels,paynow,quizzes,researched,tests<in>cloudns,blogspot,barsy,web,supabase<info>cloudns,dynamic-dns,barrel-of-knowledge,barrell-of-knowledge,dyndns,for-our,groks-the,groks-this,here-for-more,knowsitall,selfip,webhop,barsy,mayfirst,dvrcam,ilovecollege,no-ip,forumz,nsupdate,dnsupdate,v-info<nz>cloudns,co>blogspot<<ph>cloudns<pw>cloudns,x443<me>c66,craft,daplie>localhost<edgestack,filegear,glitch,filegear-sg,lohmus,barsy,mcdir,mcpe,brasilia,ddns,dnsfor,hopto,loginto,noip,webhop,soundcast,tcp4,vp4,diskstation,dscloud,i234,myds,synology,transip>site<yombo,nohost<zone>cloud66,hs,triton>*<stackit,lima<host>cloudaccess,freesite,easypanel,fastvps,myfast,tempurl,wpmudev,jele,mircloud,wp2,half<gdn>cnpy<nl>co,hosting-cluster,blogspot,gov,khplay,123website,myspreadshop,transurl>*<cistron,demon<no>co,blogspot,123hjemmeside,myspreadshop<ru>ac,edu,gov,int,mil,test,eurodir,adygeya,bashkiria,bir,cbg,com,dagestan,grozny,kalmykia,kustanai,marine,mordovia,msk,mytis,nalchik,nov,pyatigorsk,spb,vladikavkaz,vladimir,blogspot,na4u,mircloud,regruhosting>jelastic<myjino>hosting>*<landing>*<spectrum>*<vps>*<<cldmail>hb<mcdir>vps<mcpre,net,org,pp,lk3,ras<email>crisp>on<tawk>p<tawkto>p<<dk>biz,co,firm,reg,store,blogspot,123hjemmeside,myspreadshop<earth>dapps>*,bzz>*<<<kg>us<id>my>rss>*<<flap,co>blogspot<forte<solutions>diher>*<<th>online,shop<fi>dy,blogspot,xn--hkkinen-5wa,iki,cloudplatform>fi<datacenter>demo,paas<kapsi,123kotisivu,myspreadshop<name>her>forgot<his>forgot<<nu>merseine,mine,shacknet,enterprisecloud<tv>better-than,dyndns,on-the-web,worse-than,from,sakura<rocks>myddns,stackit,lima-city,webspace<xyz>blogsite,localzone,crafting,zapto,telebit>*<<one>onred>staging<kin>*<service,homelink<tw>com>mymailer<url,mydns,blogspot<camp>emf>at<<ht>rt<cool>elementor,de<fr>en-root,fbx-os,fbxos,freebox-os,freeboxos,blogspot,goupile,123siteweb,on-web,chirurgiens-dentistes-en-france,dedibox,aeroport,avocat,chambagri,chirurgiens-dentistes,experts-comptables,medecin,notaires,pharmacien,port,veterinaire,myspreadshop,ynh<su>abkhazia,adygeya,aktyubinsk,arkhangelsk,armenia,ashgabad,azerbaijan,balashov,bashkiria,bryansk,bukhara,chimkent,dagestan,east-kazakhstan,exnet,georgia,grozny,ivanovo,jambyl,kalmykia,kaluga,karacol,karaganda,karelia,khakassia,krasnodar,kurgan,kustanai,lenug,mangyshlak,mordovia,msk,murmansk,nalchik,navoi,north-kazakhstan,nov,obninsk,penza,pokrovsk,sochi,spb,tashkent,termez,togliatti,troitsk,tselinograd,tula,tuva,vladikavkaz,vladimir,vologda<space>myfast,heiyu,app-ionos,uber,xs4all<media>framer<photos>framer<website>framer<wiki>framer<at>funkfeuer>wien<futurecms>*,ex>*<in>*<<futurehosting,futuremailing,ortsinfo>ex>*<kunden>*<<co>blogspot<biz,info,123webseite,priv,myspreadshop,12hp,2ix,4lima,lima-city<ms>lab,minisite<work>corpnet<community>nog,ravendb,myforum<ro>co,shop,blogspot,barsy<design>graphic,bss<ae>blogspot<al>blogspot<ar>com>blogspot<<au>com>blogspot,cloudlets>mel<myspreadshop<<ba>blogspot,rs<bg>blogspot,barsy<bj>blogspot<br>com>blogspot,simplesite<leg>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to<<by>com>blogspot<mycloud,mediatech<cf>blogspot<cv>blogspot<cy>com>blogspot,scaleforce>j<<<ee>com>blogspot<<eg>com>blogspot<<es>com>blogspot<123miweb,myspreadshop<goog>cloud,translate,usercontent>*<<gr>blogspot,barsy,simplesite<hk>blogspot,secaas,inc,ltd<hu>blogspot<ie>blogspot,myspreadshop<il>co>blogspot,ravpage,mytabit,tabitorder<<is>blogspot<ke>co>blogspot<<kr>blogspot<li>blogspot,caa<lt>blogspot<lu>blogspot,123website<md>blogspot,ir<mk>blogspot<mr>blogspot<mt>com>blogspot<<mx>blogspot<my>blogspot<ng>com>blogspot<col,firm,gen,ltd,ngo<pe>blogspot<pt>blogspot,123paginaweb<qa>blogspot<re>blogspot,can<sg>blogspot,enscaled<sk>blogspot<sn>blogspot<td>blogspot<tr>com>blogspot<<ug>blogspot<uy>com>blogspot<<vn>blogspot<za>co>blogspot<<digital>cloudapps>london<<ci>fin<run>hs,development,ravendb,servers,build>*<code>*<database>*<migration>*<onporter,repl,stackit,val>express,web<wix<st>helioho,kirara,noho<pub>id>*<kin>*<barsy<gl>biz<scot>edu,gov>service<<so>sch,surveys<kz>jcloud,kazteleport>upaas<<tn>orangecloud<gg>kaas,stackit,panel>daemon<<systems>knightpoint<events>koobin,co<direct>libp2p<business>co<education>co<financial>co<place>co<technology>co<bs>we<services>loginline<menu>barsy,barsyonline<mobi>barsy,dscloud<store>barsy,sellfy,shopware,storebase<support>barsy<health>hra<casa>nabu>ui<<pizza>ngrok<news>noticeable<top>now-dns,ntdll,wadl>*<<ovh>nerdpol<mn>nyc<ong>obl<lol>omg<hosting>opencraft<orange>tech<pm>own,name<codes>owo>*<<lc>oy<games>pley,sheezy<bn>co<today>prequalifyme<builders>cloudsite<basketball>aus,nz<edu>rit>git-pages<<xn--p1acf>xn--90amc,xn--j1aef,xn--j1ael8b,xn--h1ahn,xn--j1adp,xn--c1avg,xn--80aaa0cvac,xn--h1aliz,xn--90a1af,xn--41a<mom>ind<farm>storj<pictures>1337<rip>clan<tf>sch<wf>biz,sch<yt>org<management>router<academy>official<faith>ybo<party>ybo<review>ybo<science>ybo<trade>ybo\";","export class ScramjetHeaders {\n\theaders = {};\n\n\tset(key: string, v: string) {\n\t\tthis.headers[key.toLowerCase()] = v;\n\t}\n}\n","import { $scramjet } from \"../../scramjet\";\nimport { rewriteJs } from \"./js\";\nimport { URLMeta } from \"./url\";\n\nexport function rewriteWorkers(\n\tjs: string | ArrayBuffer,\n\ttype: string,\n\turl: string,\n\tmeta: URLMeta\n) {\n\tlet str = \"\";\n\n\tconst script = (script) => {\n\t\tif (type === \"module\") {\n\t\t\tstr += `import \"${$scramjet.config.files[script]}\"\\n`;\n\t\t} else {\n\t\t\tstr += `importScripts(\"${$scramjet.config.files[script]}\");\\n`;\n\t\t}\n\t};\n\n\tscript(\"wasm\");\n\tscript(\"shared\");\n\tstr += `self.$scramjet.config = ${JSON.stringify($scramjet.config)};`;\n\tscript(\"client\");\n\n\tlet rewritten = rewriteJs(js, url, meta);\n\tif (rewritten instanceof Uint8Array) {\n\t\trewritten = new TextDecoder().decode(rewritten);\n\t}\n\n\tstr += rewritten;\n\n\t// dbg.log(\"Rewrite\", type, str);\n\n\treturn str;\n}\n","// thnank you node unblocker guy\nimport parse from \"set-cookie-parser\";\n\nexport type Cookie = {\n\tname: string;\n\tvalue: string;\n\tpath?: string;\n\texpires?: string;\n\tmaxAge?: number;\n\tdomain?: string;\n\tsecure?: boolean;\n\thttpOnly?: boolean;\n\tsameSite?: \"strict\" | \"lax\" | \"none\";\n};\n\nexport class CookieStore {\n\tprivate cookies: Record<string, Cookie> = {};\n\n\tsetCookies(cookies: string[], url: URL) {\n\t\tfor (const str of cookies) {\n\t\t\tconst parsed = parse(str);\n\t\t\tconst domain = parsed.domain;\n\t\t\tconst sameSite = parsed.sameSite;\n\t\t\tconst cookie: Cookie = {\n\t\t\t\tdomain,\n\t\t\t\tsameSite,\n\t\t\t\t...parsed[0],\n\t\t\t};\n\n\t\t\tif (!cookie.domain) cookie.domain = \".\" + url.hostname;\n\t\t\tif (!cookie.domain.startsWith(\".\")) cookie.domain = \".\" + cookie.domain;\n\t\t\tif (!cookie.path) cookie.path = \"/\";\n\t\t\tif (!cookie.sameSite) cookie.sameSite = \"lax\";\n\t\t\tif (cookie.expires) cookie.expires = cookie.expires.toString();\n\n\t\t\tconst id = `${cookie.domain}@${cookie.path}@${cookie.name}`;\n\t\t\tthis.cookies[id] = cookie;\n\t\t}\n\t}\n\n\tgetCookies(url: URL, fromJs: boolean): string {\n\t\tconst now = new Date();\n\t\tconst cookies = Object.values(this.cookies);\n\n\t\tconst validCookies: Cookie[] = [];\n\n\t\tfor (const cookie of cookies) {\n\t\t\tif (cookie.expires && new Date(cookie.expires) < now) {\n\t\t\t\tdelete this.cookies[`${cookie.domain}@${cookie.path}@${cookie.name}`];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (cookie.secure && url.protocol !== \"https:\") continue;\n\t\t\tif (cookie.httpOnly && fromJs) continue;\n\t\t\tif (!url.pathname.startsWith(cookie.path)) continue;\n\n\t\t\tif (cookie.domain.startsWith(\".\")) {\n\t\t\t\tif (!url.hostname.endsWith(cookie.domain.slice(1))) continue;\n\t\t\t}\n\n\t\t\tvalidCookies.push(cookie);\n\t\t}\n\n\t\treturn validCookies\n\t\t\t.map((cookie) => `${cookie.name}=${cookie.value}`)\n\t\t\t.join(\"; \");\n\t}\n\n\tload(cookies: string) {\n\t\tif (typeof cookies === \"object\") return cookies;\n\t\tthis.cookies = JSON.parse(cookies);\n\t}\n\n\tdump(): string {\n\t\treturn JSON.stringify(this.cookies);\n\t}\n}\n"],"names":["parsedIcannTrie","parsedPrivateTrie","defaultParseOptions","isNonEmptyString","str","parseString","setCookieValue","options","parts","parsed","parseNameValuePair","nameValuePairStr","name","value","nameValueArr","Object","decodeURIComponent","e","console","cookie","part","sides","key","Date","parseInt","parse","input","sch","Array","cookies","module","cookiesString","start","ch","lastComma","nextStart","cookiesSeparatorFound","cookiesStrings","pos","skipWhitespace","self","COMMITHASH","VERSION","flagEnabled","$scramjet","flag","url","regex","partialflags","RegExp","addToExternrefTable0","obj","idx","handleError","f","args","cachedTextDecoder","TextDecoder","Error","cachedUint8ArrayMemory0","getUint8ArrayMemory0","Uint8Array","getStringFromWasm0","ptr","len","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","arg","view","buf","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","DataView","isLikeNone","x","takeFromExternrefTable0","__wbg_load","imports","Response","WebAssembly","bytes","instance","__wbg_get_imports","arg0","arg1","arg2","arg3","arguments","Reflect","URL","Function","ptr1","c","crypto","len1","global","globalThis","window","v","table","v0","getArrayU8FromWasm0","__wbg_init_memory","memory","__wbg_finalize_init","thread_stack_size","__wbg_init","module_or_path","Request","fetch","initSync","atob","decoder","rewriteJs","js","meta","text","rewriteJsNaiive","rewriteJsWrapper","out","before","performance","rewrite_js","script_url","scramjet","ptr0","len0","ptr2","len2","rewrite_js_from_arraybuffer","passArray8ToWasm0","err","err1","after","errors","duration","error","timespan","overhead","Number","tryCanParseURL","origin","unrewriteBlob","blob","location","rewriteUrl","base","unrewriteUrl","realUrl","prefixed","rewriteCss","css","handleCss","type","String","match","encodedUrl","importStatement","firstQuote","endQuote","Uint16Array","decodeMap","Map","fromCodePoint","codePoint","output","replaceCodePoint","_a","CharCodes","isNumber","BinTrieFlags","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","decodeMode","end","digitCount","Math","startIdx","char","lastCp","expectedLength","current","valueLength","determineBranch","nodeIdx","branchCount","jumpOffset","lo","hi","mid","midVal","isEntityInAttributeInvalidEnd","result","consumed","getDecoder","lastIndex","htmlDecoder","xmlDecoder","isWhitespace","isEndOfTagSection","State","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","quote","length","endIndex","formTags","Set","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","_b","_c","_d","_e","_f","data","impliesClose","element","isImplied","_g","_h","index","isOpenImplied","_j","_k","slice","ElementType","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node","parent","prev","next","recursive","cloneNode","DataNode","ProcessingInstruction","NodeWithChildren","children","Document","Element","attribs","node","elem","cloneChildren","clone","child","instruction","childs","i","defaultOpts","callback","elementCB","parser","lastNode","previousSibling","xmlCodeMap","lastIdx","getEscaper","map","htmlReplacer","encodeHTMLTrieRe","regExp","htmlTrie","nextChar","getCodePoint","EntityLevel","EncodingMode","elementNames","val","attributeNames","unencodedElements","replaceQuotes","singleTag","render","nodes","renderNode","renderDirective","renderComment","renderCdata","renderTag","opts","foreignModeIntegrationPoints","foreignElements","tag","formatAttributes","attributes","encode","renderText","getText","isTag","isCDATA","isText","hasChildren","isComment","innerText","getAttribCheck","attrib","combineFuncs","a","b","compileTest","funcs","Checks","DocumentPosition","getMediaElements","where","getElementsByTagName","media","getOneElement","tagName","recurse","textContent","addConditionally","prop","isValidFeed","encoder","rewriteHtml","html","cookieStore","fromTop","handler","DomHandler","dom","Parser","traverseParsedHtml","rule","htmlRules","attr","sel","eventAttributes","bytesToBase64","contentArray","childNode","head","findhead","dump","JSON","injected","script","src","base64Injected","rewriteSrcset","srcset","rewrittenSources","sources","source","descriptors","rewrittenUrl","btoa","byte","cspHeaders","urlHeaders","rewriteLinkHeader","link","MessagePort","WebSocket","t","Promise","MessageChannel","r","setTimeout","TypeError","AggregateError","l","h","p","BroadcastChannel","SharedWorker","s","w","EventTarget","Event","o","MessageEvent","CloseEvent","DOMException","ArrayBuffer","u","y","lookUpTldsInTrie","labels","trie","labelsToCheck","tlds","label","labelLowerCase","word","boundry","v4","v6segment","v6","v46Exact","v4exact","v6exact","flagMap","resultToMatch","string","timeout","function_","wrappedFunction","arguments_","regexp","flags","clonedRegexp","textEncoder","Validation","ValidationErrorType","SanitizationResultType","createNoHostnameError","createDomainMaxLengthError","domain","createLabelMinLengthError","column","createLabelMaxLengthError","createLabelInvalidCharacterError","invalidCharacter","createLastLabelInvalidError","sanitize","inputTrimmedAsIp","ipVersionOfInput","ipVersion","canonicalInput","lastChar","octets","validation","labelValidationErrors","validateLabels","lastLabel","NODE_TYPE_ROOT","Symbol","NODE_TYPE_CHILD","createRootNode","createOrGetChild","parseTrie","serializedTrie","rootNode","parentNode","addDomain","RESERVED_TOP_LEVEL_DOMAINS","ParseResultType","getAtIndex","array","splitLabelsIntoDomains","parseDomain","hostname","sanitizationResult","icannTlds","privateTlds","indexOfPublicSuffixDomain","indexOfIcannDomain","BareClient","k","g","Headers","n","BareMuxConnection","m","d","ReadableStream","ScramjetHeaders","rewriteBlob","unrewriteCss","unrewriteHtml","traverse","rewriteHeaders","rawHeaders","headers","header","rewriteWorkers","rewritten","CookieStore","sameSite","id","fromJs","now","validCookies","document"],"mappings":"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A,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,WACH,CAAC,GAAG,CAAC,AAACuI,GAAQ,CAACA,EAAI,WAAW,GAAIA,EAAI,GAC1BC,GAAiB,IAAIxI,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,aACH,CAAC,GAAG,CAAC,AAACuI,GAAQ,CAACA,EAAI,WAAW,GAAIA,EAAI,GCvFjCE,GAAoB,IAAI9E,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,WACH,EACD,SAAS+E,GAAczS,CAAK,EACxB,OAAOA,EAAM,OAAO,CAAC,KAAM,SAC/B,CA+BA,IAAM0S,GAAY,IAAIhF,IAAI,CACtB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,MACH,EASM,SAASiF,GAAOhC,CAAI,CAAEjR,EAAU,CAAC,CAAC,EACrC,IAAMkT,EAAQ,WAAYjC,EAAOA,EAAO,CAACA,EAAK,CAC1CzG,EAAS,GACb,IAAK,IAAIgH,EAAI,EAAGA,EAAI0B,EAAM,MAAM,CAAE1B,IAC9BhH,GAAU2I,AAKlB,SAAoBlC,CAAI,CAAEjR,CAAO,EAC7B,OAAQiR,EAAK,IAAI,EACb,KAAK,GACD,OAAOgC,GAAOhC,EAAK,QAAQ,CAAEjR,EAEjC,MAAK,GACL,KAAK,GACD,OAAOoT,AAkE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oQ,EAAY,MAAM,CAAG,EACzB,CAAC,EAAEC,EAAa,CAAC,EAAED,EAAY,IAAI,CAAC,KAAK,CAAC,CAC1CC,CACJ,GAEwB,IAAI,CAAC,KAC9B,CAQA,SAASjB,GAAcvR,CAAiB,EAKvC,OAAOyS,KAJWvW,MAAM,IAAI,CAAC8D,EAAO,AAAC0S,GACpChO,OAAO,aAAa,CAACgO,IACpB,IAAI,CAAC,IAGR,CACA,IAAMpB,GAAkB,CACvB,mBACA,UACA,gBACA,gBACA,iBACA,SACA,WACA,YACA,mBACA,WACA,UACA,UACA,qCACA,gBACA,gBACA,oBACA,cACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,aACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,cACA,eACA,eACA,cACA,aACA,cACA,YACA,eACA,UACA,SACA,YACA,aACA,eACA,UACA,WACA,WACA,4BACA,WACA,YACA,WACA,eACA,YACA,WACA,YACA,eACA,WACA,iBACA,YACA,uBACA,6BACA,yBACA,wBACA,UACA,aACA,sBACA,uBACA,gBACA,gBACA,qBACA,cACA,kBACA,gBACA,eACA,iBACA,iBACA,gBACA,oBACA,iBACA,uBACA,mBACA,kBACA,oBACA,kBACA,qBACA,SACA,QACA,UACA,cACA,qBACA,uBACA,CChaKqB,GAAa,CAClB,+BACA,6BACA,+BACA,0BACA,sCACA,YACA,iBACA,mBACA,4BACA,4BACA,yBACA,qBACA,kBACA,oCACA,eACA,mBAGA,kBACA,CAEKC,GAAa,CAAC,WAAY,mBAAoB,UAAU,CAE9D,SAASC,GAAkBC,CAAY,CAAE3Q,CAAa,EACrD,OAAO2Q,EAAK,OAAO,CAAC,WAAY,AAACnO,GAAUV,EAAWU,EAAOxC,GAC9D,CC9BA,IAAW,GAAEnB,WAAW,KAAK,CAAC,GAAEA,WAAW,YAAY,CAAC,GAAEA,WAAW,YAAY,CAAC,GAAEA,WAAW,SAAS,CAAC,aAAa,CAAC,GAAE+R,YAAY,SAAS,CAAC,WAAW,CAAC,GAAE,CAAC,UAAU,CAA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"} \ No newline at end of file diff --git a/views/scram/scramjet.sw.js b/views/scram/scramjet.sw.js new file mode 100644 index 00000000..2336927b --- /dev/null +++ b/views/scram/scramjet.sw.js @@ -0,0 +1,26 @@ +importScripts( + "/scram/scramjet.wasm.js", + "/scram/scramjet.shared.js", + "/scram/scramjet.worker.js" +); +const scramjet = new ScramjetServiceWorker(); + +async function handleRequest(event) { + await scramjet.loadConfig(); + if (scramjet.route(event)) { + return scramjet.fetch(event); + } + + return fetch(event.request); +} + +self.addEventListener("fetch", (event) => { + event.respondWith(handleRequest(event)); +}); + +let playgroundData; +self.addEventListener("message", ({ data }) => { + if (data.type === "playgroundData") { + playgroundData = data; + } +}); \ No newline at end of file diff --git a/views/scram/scramjet.sync.js b/views/scram/scramjet.sync.js new file mode 100644 index 00000000..451d6434 --- /dev/null +++ b/views/scram/scramjet.sync.js @@ -0,0 +1,2 @@ +addEventListener("message",({data:{sab:e,args:[t,n,s,r,o],body:a,headers:g}})=>{let i=new DataView(e),l=new Uint8Array(e),d=new XMLHttpRequest;if(d.responseType="arraybuffer",d.open(t,n,!0,r,o),g)for(let[e,t]of Object.entries(g))d.setRequestHeader(e,t);d.send(a),d.onload=()=>{let t=1;i.setUint16(t,d.status),t+=2;let n=d.getAllResponseHeaders();i.setUint32(t,n.length),t+=4,e.byteLength<t+n.length&&e.grow(t+n.length),l.set(new TextEncoder().encode(n),t),t+=n.length,i.setUint32(t,d.response.byteLength),t+=4,e.byteLength<t+d.response.byteLength&&e.grow(t+d.response.byteLength),l.set(new Uint8Array(d.response),t),i.setUint8(0,1)},d.ontimeout=d.onerror=d.onabort=()=>{console.error("xhr failed"),i.setUint8(0,1)}}); +//# sourceMappingURL=scramjet.sync.js.map \ No newline at end of file diff --git a/views/scram/scramjet.sync.js.map b/views/scram/scramjet.sync.js.map new file mode 100644 index 00000000..aeb5c0f5 --- /dev/null +++ b/views/scram/scramjet.sync.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scramjet.sync.js","sources":["webpack://@mercuryworkshop/scramjet/./src/sync.ts"],"sourcesContent":["addEventListener(\n\t\"message\",\n\t({\n\t\tdata: {\n\t\t\tsab,\n\t\t\targs: [method, url, _, username, password],\n\t\t\tbody,\n\t\t\theaders,\n\t\t},\n\t}) => {\n\t\tconst view = new DataView(sab);\n\t\tconst u8view = new Uint8Array(sab);\n\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.responseType = \"arraybuffer\";\n\n\t\t// force async since we need it to resolve to the sw\n\t\txhr.open(method, url, true, username, password);\n\n\t\tif (headers)\n\t\t\tfor (const [k, v] of Object.entries(headers)) {\n\t\t\t\txhr.setRequestHeader(k, v as string);\n\t\t\t}\n\n\t\txhr.send(body);\n\n\t\txhr.onload = () => {\n\t\t\tlet cursor = 1; // first byte is the lock\n\n\t\t\tview.setUint16(cursor, xhr.status);\n\t\t\tcursor += 2;\n\n\t\t\t// next write the header string\n\t\t\tconst headers = xhr.getAllResponseHeaders();\n\t\t\tview.setUint32(cursor, headers.length);\n\t\t\tcursor += 4;\n\n\t\t\tif (sab.byteLength < cursor + headers.length)\n\t\t\t\tsab.grow(cursor + headers.length);\n\t\t\tu8view.set(new TextEncoder().encode(headers), cursor);\n\t\t\tcursor += headers.length;\n\n\t\t\tview.setUint32(cursor, xhr.response.byteLength);\n\t\t\tcursor += 4;\n\n\t\t\tif (sab.byteLength < cursor + xhr.response.byteLength)\n\t\t\t\tsab.grow(cursor + xhr.response.byteLength);\n\t\t\tu8view.set(new Uint8Array(xhr.response), cursor);\n\n\t\t\t// release the lock, main thread will stop spinning now\n\t\t\tview.setUint8(0, 1);\n\t\t};\n\t\txhr.ontimeout =\n\t\t\txhr.onerror =\n\t\t\txhr.onabort =\n\t\t\t\t() => {\n\t\t\t\t\tconsole.error(\"xhr failed\");\n\t\t\t\t\tview.setUint8(0, 1);\n\t\t\t\t};\n\t}\n);\n"],"names":["addEventListener","sab","method","url","_","username","password","body","headers","view","DataView","u8view","Uint8Array","xhr","XMLHttpRequest","k","v","Object","cursor","TextEncoder","console"],"mappings":"AAAAA,iBACC,UACA,CAAC,CACA,KAAM,CACLC,IAAAA,CAAG,CACH,KAAM,CAACC,EAAQC,EAAKC,EAAGC,EAAUC,EAAS,CAC1CC,KAAAA,CAAI,CACJC,QAAAA,CAAO,CACP,CACD,IACA,IAAMC,EAAO,IAAIC,SAAST,GACpBU,EAAS,IAAIC,WAAWX,GAExBY,EAAM,IAAIC,eAMhB,GALAD,EAAI,YAAY,CAAG,cAGnBA,EAAI,IAAI,CAACX,EAAQC,EAAK,GAAME,EAAUC,GAElCE,EACH,IAAK,GAAM,CAACO,EAAGC,EAAE,GAAIC,OAAO,OAAO,CAACT,GACnCK,EAAI,gBAAgB,CAACE,EAAGC,GAG1BH,EAAI,IAAI,CAACN,GAETM,EAAI,MAAM,CAAG,KACZ,IAAIK,EAAS,EAEbT,EAAK,SAAS,CAACS,EAAQL,EAAI,MAAM,EACjCK,GAAU,EAGV,IAAMV,EAAUK,EAAI,qBAAqB,GACzCJ,EAAK,SAAS,CAACS,EAAQV,EAAQ,MAAM,EACrCU,GAAU,EAENjB,EAAI,UAAU,CAAGiB,EAASV,EAAQ,MAAM,EAC3CP,EAAI,IAAI,CAACiB,EAASV,EAAQ,MAAM,EACjCG,EAAO,GAAG,CAAC,IAAIQ,cAAc,MAAM,CAACX,GAAUU,GAC9CA,GAAUV,EAAQ,MAAM,CAExBC,EAAK,SAAS,CAACS,EAAQL,EAAI,QAAQ,CAAC,UAAU,EAC9CK,GAAU,EAENjB,EAAI,UAAU,CAAGiB,EAASL,EAAI,QAAQ,CAAC,UAAU,EACpDZ,EAAI,IAAI,CAACiB,EAASL,EAAI,QAAQ,CAAC,UAAU,EAC1CF,EAAO,GAAG,CAAC,IAAIC,WAAWC,EAAI,QAAQ,EAAGK,GAGzCT,EAAK,QAAQ,CAAC,EAAG,EAClB,EACAI,EAAI,SAAS,CACZA,EAAI,OAAO,CACXA,EAAI,OAAO,CACV,KACCO,QAAQ,KAAK,CAAC,cACdX,EAAK,QAAQ,CAAC,EAAG,EAClB,CACH"} \ No newline at end of file diff --git a/views/scram/scramjet.wasm.js b/views/scram/scramjet.wasm.js new file mode 100644 index 00000000..03a08b86 --- /dev/null +++ b/views/scram/scramjet.wasm.js @@ -0,0 +1,4 @@ +if ("document" in self && document?.currentScript) { + document.currentScript.remove(); +} +self.WASM = 'AGFzbQEAAAAB3AM6YAJ/fwBgAX8Bf2ACf38Bf2ADf39/AGABfwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAR/f39/AX9gBn9/f39/fwBgA39/fwF+YAV/f39/fwF/YAABf2ACf38Bb2AHf39/f39/fwBgBH9/f34AYAADf39/YAFvAX9gB39/f39/f38Bf2ABbwFvYAABb2ACb28Bb2AAAGADf35+AGACf38BfmAHf39/f39/bwN/f39gBn9/f39/fwF/YAV/f39/fwF+YAJ/bwBgAW8BfGAEf39/fwFvYANvb28Bb2ADb29vAX9gBG9vb28Bb2ABfAFvYAN8fHwBfGAGf39/f35/AGAIf39/f39/f38AYAJ/fgBgBn9/f35/fwBgAX8BfmAFf35/fn8AYAt/f39/f39/f39/fwF/YAJ+fwF/YAN/f34Bf2ACf3wAYAJ/fwF8YAV/f3x/fwBgBH98f38AYAV/f31/fwBgBH99f38AYAV/f35/fwBgBH9+f38AYA1/f39/f39/f39/f39/AX9gF39/f39/f39/f39/f39/f39/f39/f39/AX9gCX9/f39/f39/fwF/YBN/f39/f39/f39/f39/f39/f39/AX9gEH9/f39/f39/f39/f39/f38BfwL4Bx0Dd2JnFV9fd2JpbmRnZW5fc3RyaW5nX2dldAAcA3diZxRfX3diaW5kZ2VuX2Vycm9yX25ldwANA3diZxpfX3diaW5kZ2VuX3VpbnQ4X2FycmF5X25ldwANA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcADQN3YmcaX193Ymdfbm93XzYyYTEwMWZlMzViNjAyMzAAHQN3YmciX193YmdfbmV3d2l0aGJhc2VfYWEyYzQ3MWZlM2VhY2MyYgAeA3diZx9fX3diZ190b1N0cmluZ19hNDkxY2NmN2JlMWNhNWM5ABMDd2JnG19fd2JnX2NhbGxfNTAwZGI5NDhlNjljNzMzMAAfA3diZx9fX3diZ190b1N0cmluZ19jYmNmOTVmMjYwYzQ0MWFlABMDd2JnGl9fd2JnX3NldF80ZTY0NzAyNTU1MTQ4M2JkACADd2JnGl9fd2JnX25ld18xN2Y3NTU2NjZlNDhkMWQ4AA0Dd2JnG19fd2JnX2NhbGxfM2I3NzBmMGQ2ZWI0NzIwZQAhA3diZxZfX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0ABEDd2JnH19fd2JnX3NjcmFtdGFnX2JkOThlZGFhMGVhZWM0NWUABAN3YmcaX193YmdfbmV3XzY4ODg0NmYzNzQzNTFjOTIAFAN3YmcaX193YmdfbmV3XzI1NGZhOWVhYzExOTMyYWUAFAN3YmcVX193YmluZGdlbl9udW1iZXJfbmV3ACIDd2JnFl9fd2JpbmRnZW5faXNfZnVuY3Rpb24AEQN3YmctX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF8wYmU3NDcyZTQ5MmFkM2UzAAwDd2JnMl9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9HTE9CQUxfVEhJU18xYTZlYjQ4MmQxMmM5YmZiAAwDd2JnLV9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9XSU5ET1dfYWUxYzgwYzdlZWE4ZDY0YQAMA3diZytfX3diZ19zdGF0aWNfYWNjZXNzb3JfU0VMRl8xZGMzOThhODk1YzgyMzUxAAwDd2JnGl9fd2JnX2dldF9iYmNjZjg5NzA3OTNjMDg3ABUDd2JnF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkABEDd2JnIF9fd2JnX25ld25vYXJnc19mZDllNGJmOGJlMmJjMTZkAA0Dd2JnG19fd2JnX2NhbGxfYjBkOGUzNjk5MmQ5OTAwZAAVA3diZxBfX3diaW5kZ2VuX3Rocm93AAADd2JnH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUAFgN3YmcGbWVtb3J5AgMSgIABA8EEvwQDBQMABwMABQMAAwMBAAACAAMDAwAFAAADAAAABwMjAwcDCQ4HAAAFAAASCAAkAQElAAABAAMFCQYJAAkGBQAADgAABgQDAxcFAAsOBQwGAAEACQcAGAkCJgABCQACBwAOAAIABQACAgQABAEDAwACBQcDAAABAQAABwYJACcCAAADAAQAAAEAAAEHDwgFAQEBAAACAAEAKAAFBQAAAQABAAIABQADBQEAKQwDAQEBAQEBAwIHAAMEAAkCAwACAwAAAQEBAAMFAwAFBwMBBQAqAAECAQEBAQADAgAAKwcBAQEAAAcJAwAAAwAEBAAAAQEAAQgCAQASAQEBBAMCAAEAAQAsAQYLLQMAAgQIAgICAwsBAQIAAQEIAQAEAwAAAwEA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B0EkaiADQfgBaigCADYCACADIAQ2AiwgAyAD/QADgAH9CwIwIAMgBTYCRCADIAMpA/ABNwJIIAlFBEACQCAOQcQAbCEVIAFB7ANqIRFBACEPA0AgDyAVRg0BAkACQAJAIA8gEGoiBEEIaiIFLQAAQQFrDgIHAAELIANB1ABqIAUQhQEgAykCWCEmIANB4ABqIARBJGoQhQEgBEEQaigCACEFIARBDGooAgAhByADKAJkIQQgAyADKAJoNgLsASADIAQ2AugBIAMgJjcC4AFB1JLBAEHFABDtAiEGIANBAzYCpAEgA0HMk8EANgKgASADQgI3AqwBIANBBDYCjAEgA0EENgKEASADIANBgAFqNgKoASADIANB6AFqNgKIASADIANB4AFqNgKAASADQfABaiIIIANBoAFqENMCIBEgBiAIEPICIAcgBRDvAhCoAyADKAJgIAQQjwQgAygCVCADKAJYEI8EDAELQQAhBwJAAkACQCAEQRRqIhIoAgAiBiAEQRhqIhMoAgAiCBArIgxB/wFxIg1BBWsOVAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQALIA1BkgFrQQNPDQELQQEhBwsCQCAHRQRAIAxB/wFxQdAAayIHQQJGIAdBB0tyDQELIANB1ABqIAUQhQEgAykCWCEmIANB4ABqIARBJGoQhQEgBEEQaigCACEGIARBDGooAgAhCCADKAJkIQcgAyADKAJoNgLsASADIAc2AugBIAMgJjcC4AFB5JPBAEHEABDtAiEMIANBAzYCpAEgA0HMk8EANgKgASADQgI3AqwBIANBBDYCjAEgA0EENgKEASADIANBgAFqNgKoASADIANB6AFqNgKIASADIANB4AFqNgKAASADQfABaiINIANBoAFqENMCIBEgDCANEPICIAggBhDvAhCoAyADKAJgIAcQjwQgAygCVCADKAJYEI8EIBMoAgAhCCASKAIAIQYLIARBEGoiBygCACEMIARBDGoiDSgCACEWIANBIGogBiAIIAEoArwDEKIDIAMoAiQhBiADKAIgIQggDSAWNgAAIAVBAToAACAHIAw2AAAgEiAINgAAIBMgBjYAACAEQRxqQQA2AAALIA9B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RwRAIAIgADYCBCACQQE2AgwgAkHAoMIANgIIIAJCATcCFCACQQM2AiQgAiACQSBqNgIQIAIgAkEEajYCIAUgAiAAQQRqNgIAIAIgAEEIajYCBCACQQM2AgwgAkHwoMIANgIIIAJCAjcCFCACQQY2AiwgAkEGNgIkIAIgAkEgajYCECACIAJBBGo2AiggAiACNgIgCyABKAIcIAEoAiAgAkEIahBUIAJBMGokAAvRAQECfyMAQUBqIgIkACACIAE2AgwgAkEANgAXIAJCADcDECACQcABOgAbIAJBATYCJCACQaj8wAA2AiAgAkIBNwIsIAJBATYCPCACIAJBOGo2AiggAiACQQxqNgI4IAJBEGoiASACQSBqEHkEQCABEIUEBQJAIAJBKGoiASACQRlqLwAAOwEAIAIgAikAETcDICACLQAbIgNB2gFGDQAgACACLQAQOgAAIAAgAikDIDcAASAAIAM6AAsgAEEJaiABLwEAOwAAIAJBQGskAA8LCwAL2AEBBH8gABCLBBogAEEBOgBdIAAoAggiAiAAKAIYSwRAAkAgACgCBCACQQR0akEBa0EBOgAAIAAtABwNACAAIAI2AhgLCyAAQQE6ABwgACgCLCEEIAAoAighAQJAA0AgASAETQRAQQAhAwNAIANBIEcEQCABIANqIgItAABBwLrBAGotAAANBCADQQFqIQMMAQsLIAEgA2ohAQwBCwsgACgCJCECA0ACQCABIAJPDQAgAS0AAEHAusEAai0AAA0AIAFBAWohAQwBCwsgASECCyAAIAI2AihBAgvZAQEDfyMAQRBrIgIkAAJAIAEoAigiAyABKAIkRwRAIAMtAABB+wBGBEAgASADQQFqNgIoIAJBCGogARCFAiACKAIIQQFGBEACQCACKAIMIQMDQAJAIAIgARCFAiACKAIAQQFHDQAgAigCBCADQQR0ciIDQf//wwBNDQEMAgsLIAEoAigiBCABKAIkRwRAIAQtAABB/QBGBEAgACADNgIEIABBATYCACABIARBAWo2AigMBgsLIABBAzYCAAwECwsgAEEDNgIADAILCyAAQQM2AgALIAJBEGokAAu1AQIBfgR/IAAoAgAiBQRAAkAgACgCBCICQQBIDQBCfyEBIAJBEksNACAAQQhqIQRCACEBA0AgAiADRwRAIAFCCn4hASADIAVJBEAgASAD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QRJBA0G7xcEAQRFBEEEDQbjFwQAQywQLLgAgAEEHQbzGwQBBzwBBAkG6xsEAQcAAQQVBtcbBAEHEAEErQQFB5sXBABDLBAsvACAAQQVB18bBAEHWAEEIQc/GwQBB1QBBBkHJxsEAQdQAQdMAQQZBw8bBABDLBAsvACAAQQZBvcfBAEHMAEEFQbjHwQBBygBBBEG0x8EAQcsAQckAQQhBrMfBABDLBAt0AQF/IAEoAjQiAgRAIAJBCGooAgAgAkEUaigCABCYAwsgASgCJCICBEAgACACQQhqEJQDCyABKAIoIgIEQCAAIAIQhgQLIAAgASgCLBC1AiABKAIwIgIEQCAAIAJBCGoQRQsgASgCNCIBBEAgACABENoCCwtpAQR/IwBBIGsiAyQAIANBEGoiBEEQIAEoAiggAmsiBUEBdCIGIAZBEE0bIAEoAvABEMEDIAQgAiAFENADIANBCGogASAEQQAQZCADKAIMIQEgACADKAIINgIAIAAgATYCBCADQSBqJAALcgECfyAAKAIAQQFGBEACQCABKAIIIgMoAhAiAkEUTwRAIAJBFGtBfHEiAiADKAIATwRAIAMgAjYCECACDQILCyABQQRBFBBYIgINAAALIAIgAEEEaiIA/QACAP0LAgAgAkEQaiAAQRBqKAIANgIACyACC3YBAn8gACABQQxqEEUgAS0AFEECRwRAIAAgAUEUahDMAwsgASgCHCICBEACQCACKAIkQSxsIQMgAigCGCECA0AgA0UNASAAIAJBJGoQMyADQSxrIQMgAkEsaiECDAALAAsLIAEoAiAiAQRAIAAgAUEIahCVAwsLeAEFfyABQQN0IQICQCABQf////8BSwR/QQghA0EEIQRBAQUgAkH9////B0lBAnQhBUEBIQFBBCEDIAJB/P///wdLBEAgBSECDAILQQghBCACIQYgBSECQQALIQEgACAEaiAGNgIACyAAIANqIAI2AgAgACABNgIAC2ACAn8BfiMAQSBrIgMkAEEVIQIDQCAAIgRCCoAhACACIANqQQpqIAQgAEIKfn2nQTByOgAAIAJBAWshAiAEQglWDQALIAFBAUEAIAIgA2pBC2pBFSACaxBmIANBIGokAAtkACADIARNBEACQCADBEAgAiADTQR/IAIgA0cFIAEgA2osAABBQEgLDQELIAQEQCACIARNBH8gAiAE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qANBAAsgAQF/IwBBEGsiASQAIAFBCGogABCBASABQRBqJABBBAsdACAAELUEIAAtAA1BAXEEf0EABSAALQAMEPMCCwsPACABIAJBBEEIQQMQ0wQLIgAgACgCACgCACgCACAAKAIEKAIAIAFBAnRrQQRrKAIARgtNAQF/IAEgA0YEfwJ/A0BBACABRQ0BGiABQQFrIQEgACIDQQFqIQAgAiIEQQFqIQIgBC0AACIEIAMtAAAiA0YNAAsgAyAEawsFQQELRQsgAANAQQBBAf5BAuiIQw0ACyAAEGBBAEEA/kEC6IhDGgsjAANAQQBBAf5BAuiIQw0ACyAAIAEQggFBAEEA/kEC6IhDGgsdACACIAAoAgAgAWtLBEAgACABIAJBBCADEKYBCwuJAwEGfyABIAAoAggiAyAAKAIMIgRrSwRAAkAgBCABIARqIgFNBEACQCADQQF0IgQgASABIARJGyICQQBIDQAgACEEAkAgAwRAIAAoAgQhBiAAKAIAIQEgAiADTQRAIAEgBigCCCIAKAIQIgVGBEAgAyACayIGIANBAWpBAXZPBEAgACAFIAZqIgA2AhAgACABIAL8CgAADAQLCyABIQAMAgsCQCAGKAIIIgUoAhAiByABRgRAAkAgAiADayIAQQBIDQUgACABSw0AIAcgAGsiACAFKAIASQ0AIAUgADYCECAADQIgBigCCCIFKAIQIQcLCyACIAdNBEAgByACayIAIAUoAgBPBEAgBSAANgIQIAANAgsLIAZBASACEFgiAEUNAwsgACABIAP8CgAABSACIAQoAgQiAygCCCIBKAIQIgBNBEAgACACayIAIAEoAgBPBEAgASAANgIQIAANAwsLIAMgAkF/c0EfdiACEFgiAEUNAgsLIAQgAjYCCCAEIAA2AgAMAgsLAAsLCyMAIABFBEBB1erAAEEyELYEAAsgACACIAMgBCABKAIQETAACyMAIABFBEBB1erAAEEyELYEAAsgACACIAMgBCABKAIQETIACyMAIABFBEBB1erAAEEyELYEAAsgACACIAMgBCABKAIQEQUACyMAIABFBEBB1erAAEEyELYEAAsgACACIAMgBCABKAIQETQACyMAIABFBEBB1erAAEEyELYEAAsgACACIAMgBCABKAIQEQgACxgAIAEgA08EfyACIAMgACADEOsDBUEACwsiAQF/IAAoAhAiAQRAIAAoAgwgASAAKAIEIAAoAggQiQMLCx4AIAEoAgAgAkEFdGtBIGsoAgBB3cvdnnlsQQ93rQseACABKAIAIAJBAnRrQQRrKAIAQd3L3Z55bEEPd60LGwEBfyAAKAJEIgFBCU8EQCABIAAoAggQjwQLCyEAIABFBEBB1erAAEEyELYEAAsgACACIAMgASgCEBEDAAuMAQEBfyAAEPwDBH8CQAJAAkAgAEH/AXEiAEEFaw5UAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAAsgAEGSAWtBA08NAQtBASEBCyABRQVBAAsLEwBBASAAELECIABB/wFxQQRGGwsVAEGkARDzAkEAIABB/wFxQaQBRhsLGgAgABD7AyAAQf8BcSIAQdgARnIgAEEFRnILHwAgABCLBBogACAAKAJQIAAoAiggACgCIGsQ/AJBAgtkACAAKAIAQQH+JQIAQQFGBEACQCAAKAIAIgAoAgggAEEMaigCABCPBCAAKAIUIABBGGooAgAQjwQgACgCICAAQSRqKAIAEJwEIABBf0YNACAAQQH+JQIEQQFHDQAgABDsAwsLCxIAIAAgACgCAEEBQQFBARCmAQsfACAARQRAQdXqwABBMhC2BAALIAAgAiABKAIQEQIACxIAIAAgACgCAEEBQQQgARCmAQsaACABQYACTwRAIAAgARCeAQUgACABELkCCwssAQF/IAAtAAtB2AFGBEAgACgCACIBQQRrIAEgACgCCEH////HfUYbEOwDCwsVACABKAIQIgEEQCAAIAFBCGoQRQsLFwAgAS0AAEEBRgRAIAAgAUEEahD3AgsLGAAgACABQQhqEDMgACABKAIQQQhqEJUDCx0BAX8gASUBEBEhAiAAIAE2AgQgACACQQFHNgIACxgAIAAtAAwgAUH/AXFGBEAgACABELcBCwsKACAAQSBqEJUCCxoAIAAoAgBBAUYEQCAAKAIEIAAoAggQjwQLCx0BAX8gACgCBCIBIAAoAggQ3QMgACgCACABEI8ECx0BAX8gACgCBCIBIAAoAggQzgMgACgCACABEI8ECwwAIAAEQCABEOwDCwsUACAAIAFBCGoQMyAAIAFBEGoQRQsYAQF/IAAoAgAgAEEENgIAIAAoAgQQ1gMLGAEBfyAAKAIAIABBAjYCACAAKAIEEKMECxkBAX8gACABEH4iAkUEQCAAIAEQtwELIAILEQAgAQRAIAAgAUEDdBCbBAsLFgAgACgCACAAQQRqKAIAIAEgAhDrAwsSACABBEAgACABQQxBCBCJAwsLEwAgAEH/AXFBBEYEQCABELYCCwsWAQFvIAAgARADIQIQaSIAIAImASAACxUAIAEgACgCACIAKAIEIAAoAggQagsXACAAKAIAIAAoAgQQjwQgACgCDBCiBAsMACABBEAgABDsAwsLFQAgAEGAgICAeEcEQCAAIAEQjwQLCxUAIABBgYCAgHhHBEAgACABEJwECwsNACAAQZSGwAAgARBUCxoAQZCWwQBBBEGUlsEAQS0QqgQgACABEO8CCwwAIAEEQCAAEOwDCwsTACABKAIcIAEoAiAgACgCABBUCxAAIABBhAFPBEAgABDTAQsLDwAgAEEBRgRAIAEQogQLCxIAIAAQiwQaIABBnwFBngEQXwsQACABIAAoAgAgACgCBBBqCxAAIAEgACgCBCAAKAIIEGoLEAAgACAAKAIIIAFBBBDuAwsPACAAKAIAIAEgAhA0QQALDAAgAARAIAEQogQLCxAAIAIgAxDtAiAAIAEQ6gILDwAgACABQaABakEBEIkBCwwAIAAEQCAAELYCCwsQAQF/EGkiASAAJQEmASABCw0AIAAgASACEOcCQQALDwAgACgCACAAKAIEEI8ECw4AIAEQ3AIgAEEEEOoCCwwAIAAoAgAgARCyBAsMACAANQIAIAEQ+AELDAAgADEAACABEPgBCwsAIAAgARCjAUEACwwAIAAgAC0ADBC3AQsJACAAIAEQGgALCwAgACgCACABEHkLCQAgAEECENoECwoAIABB6wAQ2gQLCgAgAEGCARDaBAsKACAAQeEAENoECwoAIABB4AAQ2gQLCgAgAEGDARDaBAsKACAAQf8AENoECwoAIABBpAEQ2gQLCgAgAEHpABDaBAsKACAAQYABENoECwoAIABB6gAQ2gQLCgAgAEGBARDaBAsKACAAQZABENoECwoAIAAgASUBEAALBwAgABDiAgsDAAALdQEBfyMAQTBrIgMkACADQQA2AgggA0KAgICAEDcCACADIAI2AiwgA0EDOgAkIANCIDcCHCAD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cIOTg7eD3IMCjCiMT4x3lJ+UyJTynBwFHAUcBRwFBQIFAQIFBgIFAwECBQEFBgIFBwgBAgUDCQAGAgUBCQUDAQIFCQcGBQYCBQQICAIIAQIFAgQEAQQABgIFAQICAAcAAwECBQYBAAMFAQUGAgUDAAUBBwUHCAECBQEFAgUIBwgJAAYCBQcGAgkDCQQFAwECBQMIAQQGCQcCBgUGAgUBCQAHAwQIBgMCCAECBQkFAwYHBAMBBgQABgIFBAcGCAMHAQUIAgADAQIFAgMIBAEIBQcJAQABBQYCBQEBCQIACQIICQUFAAcIAQIFBQkGAAQGBAQHBwUDCQAGAgUCCQgAAgMCAgMIBwYJBQMBAgUBBAkAAQEGAQEJAwgEBwYFBgIFBwQFAAUIAAUJBgkCAwgCCAECBQMHAgUCCQACCQgEBgEJAQQABgIFAQgGAgYEBQEECQIDAAkFBwADAQIFCQMBAwICBQcEBgEFBAcIBQEFBgIFBAYFBgYBAggHAwAHBwMJAgUHCAECBQIDAggDAAYEAwYFAwgGCQYCCAkABgIFAQEGBAEFAwIBCAIGCQMECAEEBAUDAQIFBQgCAAcGBgAJAQMEBgcEAAcCAgYFBgIFAgkBAAMIAwAEBQYHAwMHAAMGAQMCCAECBQEEBQUBCQEFAgIIAwYGCAUBCAAGBgQABgIFBwIHBQkFBwYBBAEIAwQCBQkAAwMCAAMBAgUDBgMHCQcICAAHAAkBBwECCQUBBgYAAQUGAgUBCAEICQgJBAADBQQFCAUGBAcFCAMAAAcIAQIFCQAJBAkEBwABBwcCCQIIAgMHCQEFAAMJAAYCBQQFBAcEBwMFAAgIBgQGBAEBCAkFBwUBCQUDAQIFAgIHAwcDBgcFBAQDAgMCAAUJBAcIBwUJBwYFBgIFAQEDBggGCAMHBwIBBgEGAAIJBwMJAwcJCAgCCAECBQUGCAQDBAEICAYACAAIAAEECAYJBggJCQQBBAAGAgUCCAQCAQcACQQDAAQABAAABwQDBAgEBAkHAAcAAwECBQEEAgEACAUEBwEFAgACAAADBwEHBAICBAgFAwUBBQYCBQcBAAUEAgcDBQcGAAEAAAEIBQgHAQECBAIGBwUHCAECBQMFBQIHAQMGBwgIAAAFAAAJAgkDBQUGAgEDAwcICQAGAgUBBwcGAwUGCAMJBAAAAgUABAYEBgcHCAEA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ZVNvdXJjZSBsZW5ndGggZXhjZWVkcyA0IEdpQiBsaW1pdEZsb3cgaXMgbm90IHN1cHBvcnRlZFVuZXhwZWN0ZWQgdG9rZW5FeHBlY3RlZCBgYCBidXQgZm91bmQgYAAAvz8QAAoAAADJPxAADQAAAF9lEAABAAAAYCBleHBlY3RlZAAAX2UQAAEAAADwPxAACgAAAEludmFsaWQgZXNjYXBlIHNlcXVlbmNlSW52YWxpZCBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZUludmFsaWQgQ2hhcmFjdGVyIGAAAABCQBAAEwAAAF9lEAABAAAASW52YWxpZCBjaGFyYWN0ZXJzIGFmdGVyIG51bWJlclVudGVybWluYXRlZCBtdWx0aWxpbmUgY29tbWVudFVudGVybWluYXRlZCBzdHJpbmdVbmV4cGVjdGVkIGZsYWcgIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsAAC4QBAAEAAAAMhAEAAeAAAARmxhZyAgaXMgbWVudGlvbmVkIHR3aWNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsAAD4QBAABQAAAP1AEAAxAAAAVW5leHBlY3RlZCBlbmQgb2YgZmlsZVVudGVybWluYXRlZCByZWd1bGFyIGV4cHJlc3Npb25JbnZhbGlkIE51bWJlciB1QRAADwAAAEtleXdvcmRzIGNhbm5vdCBjb250YWluIGVzY2FwZSBjaGFyYWN0ZXJzRXhwZWN0ZWQgYSBzZW1pY29sb24gb3IgYW4gaW1wbGljaXQgc2VtaWNvbG9uIGFmdGVyIGEgc3RhdGVtZW50LCBidXQgZm91bmQgbm9uZVRyeSBpbnNlcnQgYSBzZW1pY29sb24gaGVyZUxpbmUgdGVybWluYXRvciBub3QgcGVybWl0dGVkIGJlZm9yZSBhcnJvd01pc3NpbmcgaW5pdGlhbGl6ZXIgaW4gZGVzdHJ1Y3R1cmluZyBkZWNsYXJhdGlvbk1pc3NpbmcgaW5pdGlhbGl6ZXIgaW4gY29uc3QgZGVjbGFyYXRpb25MZXhpY2FsIGRlY2xhcmF0aW9uIGNhbm5vdCBhcHBlYXIgaW4gYSBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHRXcmFwIHRoaXMgZGVjbGFyYXRpb24gaW4gYSBibG9jayBzdGF0ZW1lbnRBc3luYyBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgYXQgdGhlIHRvcCBsZXZlbCBvciBpbnNpZGUgYSBibG9ja0dlbmVyYXRvcnMgY2FuIG9ubHkgYmUgZGVjbGFyZWQgYXQgdGhlIHRvcCBsZXZlbCBvciBpbnNpZGUgYSBibG9ja2Bhd2FpdGAgaXMgb25seSBhbGxvd2VkIHdpdGhpbiBhc3luYyBmdW5jdGlvbnMgYW5kIGF0IHRoZSB0b3AgbGV2ZWxzIG9mIG1vZHVsZXNBICd5aWVsZCcgZXhwcmVzc2lvbiBpcyBvbmx5IGFsbG93ZWQgaW4gYSBnZW5lcmF0b3IgYm9keS5JbnZhbGlkIGNsYXNzIGRlY2xhcmF0aW9uQ2xhc3NlcyBjYW4gb25seSBiZSBkZWNsYXJlZCBhdCB0b3AgbGV2ZWwgb3IgaW5zaWRlIGEgYmxvY2sxMjQ4QSBjbGFzcyBtZW1iZXIgY2Fubm90IGhhdmUgdGhlICdjb25zdCcga2V5d29yZC5EaWQgeW91IG1lYW4gYHJlYWRvbmx5YD9BIHJlc3QgZWxlbWVudCBtdXN0IGJlIGxhc3QgaW4gYSBkZXN0cnVjdHVyaW5nIHBhdHRlcm5BIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgbGFzdCBpbiBhIHBhcmFtZXRlciBsaXN0U3ByZWFkIG11c3QgYmUgbGFzdCBlbGVtZW50VW5leHBlY3RlZCB0cmFpbGluZyBjb21tYSBhZnRlciByZXN0IGVsZW1lbnRJbnZhbGlkIHJlc3QgZWxlbWVudEV4cGVjdGVkIGlkZW50aWZpZXIgaW4gcmVzdCBlbGVtZW50QSByZXN0IHBhcmFtZXRlciBjYW5ub3QgYmUgb3B0aW9uYWxDYW5ub3QgYXNzaWduIHRvIHRoaXMgZXhwcmVzc2lvbk9wdGlvbmFsIGNoYWluaW5nIGNhbm5vdCBhcHBlYXIgaW4gdGhlIGNhbGxlZSBvZiBuZXcgZXhwcmVzc2lvbnNUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYSBgZm9yLi4ub2ZgIHN0YXRlbWVudCBtYXkgbm90IGJlIGBhc3luY2Bhd2FpdCBjYW4gb25seSBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGZvci4uLm9mYCBzdGF0ZW1lbnRzQ2Fubm90IHVzZSBuZXcgd2l0aCBkeW5hbWljIGltcG9ydENsYXNzZXMgY2FuJ3QgaGF2ZSBhbiBlbGVtZW50IG5hbWVkICcjY29uc3RydWN0b3InQ2xhc3NlcyBtYXkgbm90IGhhdmUgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgcHJvdG90eXBlQ29uc3RydWN0b3IgY2FuJ3QgaGF2ZSBnZXQvc2V0IG1vZGlmaWVyQ29uc3RydWN0b3IgY2FuJ3QgYmUgYW4gYXN5bmMgbWV0aG9kMTI3NkFuICdhY2Nlc3NvcicgcHJvcGVydHkgY2Fubm90IGJlIGRlY2xhcmVkIG9wdGlvbmFsLkEgcHJvcGVydHkgY2Fubm90IGJlIGJvdGggb3B0aW9uYWwgYW5kIGRlZmluaXRlLlJlbW92ZSBlaXRoZXIgdGhlIGA/YCBvciB0aGUgYCFgQ2Fubm90IHVzZSBgYCBhcyBhbiBpZGVudGlmaWVyIGluIGFuIGFzeW5jIGNvbnRleHQA/UcQAAwAAAAJSBAAJgAAAGAgYXMgYW4gaWRlbnRpZmllciBpbiBhIGdlbmVyYXRvciBjb250ZXh0AAAA/UcQAAwAAABASBAAKQAAAElkZW50aWZpZXIgZXhwZWN0ZWQuICcnIGlzIGEgcmVzZXJ2ZWQgd29yZCB0aGF0IGNhbm5vdCBiZSB1c2VkIGhlcmUufEgQABYAAACSSBAALgAAAENvbnN0cnVjdG9yIGNhbid0IGJlIGEgZ2VuZXJhdG9yQ2xhc3NlcyBjYW4ndCBoYXZlIGEgZmllbGQgbmFtZWQgJ2NvbnN0cnVjdG9yJ0FuIGV4cG9ydCBuYW1lIGNhbm5vdCBpbmNsdWRlIGEgdW5pY29kZSBsb25lIHN1cnJvZ2F0ZUEgc3RyaW5nIGxpdGVyYWwgY2Fubm90IGJlIHVzZWQgYXMgYW4gZXhwb3J0ZWQgYmluZGluZyB3aXRob3V0IGBmcm9tYERpZCB5b3UgbWVhbiBgZXhwb3J0IHsgIGFzICB9IGZyb20gJ3NvbWUtbW9kdWxlJ2A/AJlJEAAXAAAAsEkQAAQAAAC0SRAAFwAAAEEgcmVzZXJ2ZWQgd29yZCBjYW5ub3QgYmUgdXNlZCBhcyBhbiBleHBvcnRlZCBiaW5kaW5nIHdpdGhvdXQgYGZyb21gQmFkIGVzY2FwZSBzZXF1ZW5jZSBpbiB1bnRhZ2dlZCB0ZW1wbGF0ZSBsaXRlcmFsRW1wdHkgcGFyZW50aGVzaXplZCBleHByZXNzaW9uSWxsZWdhbCBuZXdsaW5lIGFmdGVyIHZKEAAWAAAAIHN0YXJ0cyBoZXJlAQAAAAAAAACUShAADAAAAEEgbmV3bGluZSBpcyBub3QgZXhwZWN0ZWQgaGVyZVRhZ2dlZCB0ZW1wbGF0ZSBleHByZXNzaW9ucyBhcmUgbm90IHBlcm1pdHRlZCBpbiBhbiBvcHRpb25hbCBjaGFpbjI2ODFBIGNvbnN0cnVjdG9yIGNhbm5vdCBoYXZlIGEgYHRoaXNgIHBhcmFtZXRlci4yNzMwQW4gYXJyb3cgZnVuY3Rpb24gY2Fubm90IGhhdmUgYSBgdGhpc2AgcGFyYW1ldGVyLidzdXBlcicgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGZ1bmN0aW9uIGNhbGxzIG9yIGluIHByb3BlcnR5IGFjY2Vzc2VzcmVwbGFjZSB3aXRoIGBzdXBlcigpYCBvciBgc3VwZXIucHJvcGAgb3IgYHN1cGVyW3Byb3BdYEV4cGVjdGVkIGZ1bmN0aW9uIG5hbWVGdW5jdGlvbiBuYW1lIGlzIHJlcXVpcmVkIGluIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG9yIG5hbWVkIGV4cG9ydE1pc3NpbmcgY2F0Y2ggb3IgZmluYWxseSBjbGF1c2UxMDk1IEEgJ3NldCcgYWNjZXNzb3IgY2Fubm90IGhhdmUgYSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uLjExMDhBICdyZXR1cm4nIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhIGZ1bmN0aW9uIGJvZHkuMTgwMDdKU1ggZXhwcmVzc2lvbnMgbWF5IG5vdCB1c2UgdGhlIGNvbW1hIG9wZXJhdG9yRGlkIHlvdSBtZWFuIHRvIHdyaXRlIGFuIGFycmF5P0xpbmUgdGVybWluYXRvciBub3QgcGVybWl0dGVkIGJlZm9yZSB1c2luZyBkZWNsYXJhdGlvbi5Bd2FpdCBpcyBub3QgYWxsb3dlZCBpbiB1c2luZyBkZWNsYXJhdGlvbnMuVXNpbmcgZGVjbGFyYXRpb25zIG1heSBub3QgaGF2ZSBiaW5kaW5nIHBhdHRlcm5zLlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhIGZvci4uLmluIHN0YXRlbWVudCBjYW5ub3QgYmUgYW4gYXdhaXQgdXNpbmcgZGVjbGFyYXRpb24uVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGEgZm9yLi4uaW4gc3RhdGVtZW50IGNhbm5vdCBiZSBhbiB1c2luZyBkZWNsYXJhdGlvbi5Vc2luZyBkZWNsYXJhdGlvbnMgbXVzdCBoYXZlIGFuIGluaXRpYWxpemVyLjEwODlgc3RhdGljYCBtb2RpZmllciBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yICcnLgAAAM9OEAAsAAAA+04QAAIAAABJbnZhbGlkIGFzc2lnbm1lbnQgaW4gb2JqZWN0IGxpdGVyYWxEaWQgeW91IG1lYW4gdG8gdXNlIGEgJzonPyBBbiAnPScgY2FuIG9ubHkgZm9sbG93IGEgcHJvcGVydHkgbmFtZSB3aGVuIHRoZSBjb250YWluaW5nIG9iamVjdCBsaXRlcmFsIGlzIHBhcnQgb2YgYSBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uRHVwbGljYXRlZCBleHBvcnQgJwC8TxAAEwAAAKY+EAABAAAARXhwb3J0IGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWQgaGVyZUl0IGNhbm5vdCBiZSByZWRlY2xhcmVkIGhlcmVUaGUgb25seSB2YWxpZCBtZXRhIHByb3BlcnR5IGZvciBpbXBvcnQgaXMgaW1wb3J0Lm1ldGFUaGUgb25seSB2YWxpZCBtZXRhIHByb3BlcnR5IGZvciBuZXcgaXMgbmV3LnRhcmdldCcgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZS6mPhAAAQAAAIlQEAAfAAAAJyBtb2RpZmllciBhbHJlYWR5IHNlZW4uAQAAAAAAAAC4UBAAGAAAADEwMzBSZW1vdmUgdGhlIGR1cGxpY2F0ZSBtb2RpZmllci4nIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIG9uIGEgdHlwZSBwYXJhbWV0ZXIupj4QAAEAAAACURAALgAAADEyNzMnIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYSBwYXJhbWV0ZXIupj4QAAEAAABEURAAKAAAADEwOTAnIG1vZGlmaWVyIGNhbm5vdCBhcHBlYXIgb24gYW4gaW5kZXggc2lnbmF0dXJlLgCmPhAAAQAAAIBREAAvAAAAMTA3MTE4MDEwQW4gYWNjZXNzaWJpbGl0eSBtb2RpZmllciBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcHJpdmF0ZSBpZGVudGlmaWVyLjExNjRDb21wdXRlZCBwcm9wZXJ0eSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgaW4gZW51bXMuMjQ1MkFuIGVudW0gbWVtYmVyIGNhbm5vdCBoYXZlIGEgbnVtZXJpYyBuYW1lLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQAAAAAAAAAAAAABAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEAAQEAAAAAAAAAAAAAAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBYXNkb2lmaXNvZmFueWZvcmdldGxldG5ld3NldHRyeXZhcmNhc2VlbHNlZW51bWZyb21tZXRhbnVsbHRydWV0eXBldm9pZHdpdGhicmVha2NhdGNoY2xhc3NmYWxzZWluZmVya2V5b2ZuZXZlcnN1cGVydXNpbmd3aGlsZWRlZmVyYXNzZXJ0YmlnaW50ZGVsZXRlZ2xvYmFsaW1wb3J0bW9kdWxlbnVtYmVyb2JqZWN0cmV0dXJuc3RyaW5nc3dpdGNoc3ltYm9sdGFyZ2V0dHlwZW9mdW5pcXVlc291cmNlYXNzZXJ0c2Jvb2xlYW5leHRlbmRzZmluYWxseXBhY2thZ2VyZXF1aXJldW5rbm93bmNvbnRpbnVlZGVidWdnZXJmdW5jdGlvbmludGVyZmFjZWludHJpbnNpY25hbWVzcGFjZXNhdGlzZmllc3VuZGVmaW5lZGltcGxlbWVudHNpbnN0YW5jZW9mRU9GU2tpcHBlZCMhSWRlbnRpZmllcm5hbWFlc3BhY2UmJiYhXjosLi4uLj09PT49PFt7PD0tLS0hPT0lfHx8KysrPz8/Py4+XX08PD4+Pj4+LyoqKn49PmJpbmFyeW9jdGFsZmxvYXQvcmVnZXhwLyR7fSR7JHtleHByfSR9I2lkZW50aWZpZXJqc3hAaW52YWxpZCBmbG9hdGludmFsaWQgYmlnaW50IS0tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFAZmxvdwAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD8AAABAAAAAQQAAAEEAAABAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPwAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUgAAAFIAAABSAAAAUgAAAFIAAABSAAAAUgAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAARQAAAEUAAABFAAAARQAAAEUAAABFAAAARQAAAEUAAABFAAAARQAAAEUAAABFAAAARQAAAEUAAABFAAAARQAAAEUAAABFAAAARQAAAEUAAABFAAAARQAAAEUAAABFAAAARQAAAEUAAABaAAAAWwAAAFwAAABdAAAARQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAARQAAAGYAAABFAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAARQAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAEUAAABzAAAARQAAAHQAAAB1AAAAdgAAAHcAAAA+AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeQAAAHkAAAB5AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB4AAAAeAAAAHgAAAB3YWl0c3luY2JzdHJhY3RjY2Vzc29ybnlzc3NlcnRzc2VydHNyZWFrb29sZWFuaWdpbnRvbnN0bGFzc29udGludWVhdGNoYXNlb25zdHJ1Y3Rvcm9lbGV0ZWVjbGFyZWVmYXVsdGVidWdnZXJlZmVybHNlbnVteHBvcnR4dGVuZHN1bmN0aW9uYWxzZW9yaW5hbGx5cm9tZXRsb2JhbGZuc3RhbmNlb2ZubXBsZW1lbnRzbXBvcnRuZmVybnRlcmZhY2VudHJpbnNpY2V5b2ZldGFvZHVsZXVsbGV3dW1iZXJhbWVzcGFjZWV2ZXJiamVjdHV0dmVycmlkZWFja2FnZXJpdmF0ZXJvdGVjdGVkdWJsaWNldHVybmVxdWlyZWVhZG9ubHl1cGVyd2l0Y2h0YXRpY3ltYm9sdHJpbmdhdGlzZmllc291cmNlaGlzcnVlaHJvd3J5eXBlb2ZhcmdldHlwZW5kZWZpbmVkc2luZ25pcXVlbmtub3duYXJvaWRoaWxlaXRoaWVsZABHZW5lcmFsX0NhdGVnb3J5SW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246AORjEAAbAAAAIFVua25vd24gZmxhZzogYGAgZm91bmQAAQAAAAAAAAAIZBAAEAAAABhkEAAHAAAAIER1cGxpY2F0ZWQgZmxhZzogYAABAAAAAAAAADhkEAATAAAAGGQQAAcAAAAgSW52YWxpZCB1bmljb2RlIGZsYWdzIGNvbWJpbmF0aW9uIGB1YCBhbmQgYHZgAAABAAAAAAAAAGRkEAAuAAAAIER1cGxpY2F0ZWQgY2FwdHVyaW5nIGdyb3VwIG5hbWVzAAAAAQAAAAAAAACkZBAAIQAAACBUb28gbWFueSBjYXB0dXJpbmcgZ3JvdXBzAAABAAAAAAAAANhkEAAaAAAAIENvdWxkIG5vdCBwYXJzZSB0aGUgZW50aXJlIHBhdHRlcm4AAQAAAAAAAAAEZRAAIwAAACBMb25lIHF1YW50aWZpZXIgZm91bmQsIGV4cGVjdGVkIHdpdGggYGABAAAAAAAAADhlEAAnAAAAX2UQAAEAAAAgVW50ZXJtaW5hdGVkIAAAAQAAAAAAAAB4ZRAADgAAACBJbnZhbGlkIGV4dGVuZGVkIGF0b20gZXNjYXBlAAAAAQAAAAAAAACYZRAAHQAAACBJbnZhbGlkIGJyYWNlZCBxdWFudGlmaWVyAAABAAAAAAAAAMhlEAAaAAAAIEludmFsaWQgaW5kZXhlZCByZWZlcmVuY2UAAAEAAAAAAAAA9GUQABoAAAAgR3JvdXAgc3BlY2lmaWVyIGlzIGVtcHR5AAAAAQAAAAAAAAAgZhAAGQAAACBJbnZhbGlkIG5hbWVkIHJlZmVyZW5jZQEAAAAAAAAATGYQABgAAAAgSW52YWxpZCBwcm9wZXJ0eSBuYW1lIGBgKG5lZ2F0aXZlICsgcHJvcGVydHkgb2Ygc3RyaW5ncykAAAABAAAAAAAAAHRmEAAYAAAAjGYQACEAAAAgSW52YWxpZCBjaGFyYWN0ZXIgY2xhc3Mgd2l0aCBzdHJpbmdzIHVuaWNvZGUgcHJvcGVydHkAAAEAAAAAAAAAyGYQADYAAAAgQ2hhcmFjdGVyICByYW5nZSBvdXQgb2Ygb3JkZXIAAAEAAAAAAAAAEGcQAAsAAAAbZxAAEwAAACBDaGFyYWN0ZXIgY2xhc3MgcmFuZ2Ugd2l0aCBpbnZhbGlkIGF0b20BAAAAAAAAAEhnEAAoAAAAIEludmFsaWQgY2xhc3MgYXRvbQABAAAAAAAAAIBnEAATAAAAIEV4cGVjdGVkIG5vbmVtcHR5IGNsYXNzIHNldCBleHByZXNzaW9uAAEAAAAAAAAApGcQACcAAAAgVW5leHBlY3RlZCBgJmAgaW5zaWRlIG9mIGNsYXNzIGludGVyc2VjdGlvbgEAAAAAAAAA3GcQACwAAAAgVW5leHBlY3RlZCBjaGFyYWN0ZXIgaW5zaWRlIG9mIAEAAAAAAAAAGGgQACAAAAAgSW52YWxpZCBjbGFzcyBvcGVyYW5kcyBpbnNpZGUgb2YgY2hhcmFjdGVyIGNsYXNzIGNvbnRlbnRzAAABAAAAAAAAAEhoEAA6AAAAIE51bWJlciBpcyB0b28gbGFyZ2UgaW4gYnJhY2VkIHF1YW50aWZpZXIAAAABAAAAAAAAAJRoEAApAAAAIE51bWJlcnMgb3V0IG9mIG9yZGVyIGluIGJyYWNlZCBxdWFudGlmaWVyAAABAAAAAAAAANBoEAAqAAAAIE51bWJlciBpcyB0b28gbGFyZ2UgaW4gIGRpZ2l0cwABAAAAAAAAAAxpEAAYAAAAJGkQAAcAAAAgSW52YWxpZCB1bmljb2RlIHByb3BlcnR5IAAAAQAAAAAAAABEaRAAGgAAACBJbnZhbGlkIHVuaWNvZGUgcHJvcGVydHkgYAABAAAAAAAAAHBpEAAbAAAAX2UQAAEAAABFbmFibGUgYFVuaWNvZGVTZXRzTW9kZWAgdG8gdXNlIHRoaXMgcHJvcGVydHkgSW52YWxpZCB1bmljb2RlIGVzY2FwZSBzZXF1ZW5jZQAAAAEAAAAAAAAA0WkQACAAAAAgSW52YWxpZCBzdXJyb2dhdGUgcGFpcgABAAAAAAAAAARqEAAXAAAAIEludmFsaWQgbW9kaWZpZXJzAAABAAAAAAAAACxqEAASAAAAIFVua25vd24gbW9kaWZpZXJzAAABAAAAAAAAAFBqEAASAAAAKD86KQAAAAD//xAAAAAAAEV4dGVuZGVkQXRvbUF0b21sb29rYXJvdW5kIGFzc2VydGlvbnVuaWNvZGUgcHJvcGVydHkgZXNjYXBlY2hhcmFjdGVyIGNsYXNzY2xhc3MgYXRvbWNsYXNzIGludGVyc2VjdGlvbmNsYXNzIHN1YnRyYWN0aW9uY2xhc3Mgc2V0Y2xhc3Mgc3RyaW5nIGRpc2p1bmN0aW9ubmVzdGVkIGNsYXNzY2FwdHVyaW5nIGdyb3VwaWdub3JlIGdyb3VwZGVjaW1hbG5hbWVuYW1lIGFuZC9vciB2YWx1ZWNhcHR1cmluZyBncm91cCBuYW1laGV4Z2NTY3JpcHRzY1NjcmlwdF9FeHRlbnNpb25zc2N4EAAAAAAAAAABAAAABwAAACMAAAAvAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAARAAAADQAAADMAAAAAAAAACwAAAAAAAAAvAAAAAAAAAAAAAAAUAAAABQAAAAAAAAAJAAAABAAAAAcAAAACAAAALwAAAA0AAAA6AAAAAAAAAAAAAABDb21iaW5pbmdfTWFya09wZW5fUHVuY3R1YXRpb25Jbml0aWFsX1B1bmN0dWF0aW9uTENTb1pzTHRDb051bWJlclBzTG93ZXJjYXNlX0xldHRlclNObFBOb1NwYWNlX1NlcGFyYXRvckNsb3NlX1B1bmN0dWF0aW9uTGxDc2RpZ2l0TW9kaWZpZXJfTGV0dGVyUGFyYWdyYXBoX1NlcGFyYXRvclVwcGVyY2FzZV9MZXR0ZXJNY1N1cnJvZ2F0ZVN5bWJvbE1uT3RoZXJQZkZvcm1hdE1hcmtQZE1vZGlmaWVyX1N5bWJvbENvbnRyb2xPdGhlcl9QdW5jdHVhdGlvblVuYXNzaWduZWROZE1hdGhfU3ltYm9s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YXJiVGlyaFVnYXJpdGljQWRsYW1LaG1yQ2hvcmFzbWlhblNhbWFyaXRhbkRpdmVzX0FrdXJ1T2xkX0h1bmdhcmlhblNpZGRHdW5qYWxhX0dvbmRpQXJtbk9zYWdlU2lkZGhhbUNhcmlhblRvZGhyaUR1cGxveWFuT2xkX05vcnRoX0FyYWJpYW5TeWxvU2luZEJhc3NhX1ZhaFllemlkaU1vbmdvbGlhbk55aWFrZW5nX1B1YWNodWVfSG1vbmdIbHV3S2FpdGhpVml0aGt1cWlIdW5nTWFsYXlhbGFtTGFvb0dvbmdEc3J0VG9kclN1bnV3YXJBdnN0TWVuZGVfS2lrYWt1aUN5cHJpb3RPbGRfVXlnaHVyQ2Fuc1NveW9tYm9CYW11TWFrYU5zaHVUYWxlWWlEb2dyQ2hlckN1bmVpZm9ybU9sY2tLbmRhUGFsbVN5cmlhY0dyYW5PbGRfUGVyc2lhblZhaWlNaWFvTXVsdGFuaUNoYW1KYXZhTGVwY2hhS2F3aUVneXB0aWFuX0hpZXJvZ2x5cGhzR2Vvck5hbmRPdWdyTWVuZFRmbmdUYWdhbG9nVGFsdU1hc2FyYW1fR29uZGlCaGtzSGFub01hcmNoZW5HdXJtdWtoaU9sZF9QZXJtaWNLYWxpTXJvb1NhcmJXYXJhbmdfQ2l0aVVnYXJUZ2xnVGFnYmFud2FCdWhpZEd1amFyYXRpRGlha1RhaV9MZUVsYmFzYW5LaXRzU2luaFJvaGdUYW1pbFFhYWlBdmVzdGFuTGVwY0NhcmlDeXJsT2xfQ2hpa2lTeXJjS2F0YWthbmFfT3JfSGlyYWdhbmFNbHltVG5zYU9sX09uYWxCYXNzTWVyb0hhbmlHcmFudGhhVGVsdVppbmhWaXRoS2hvakJyYWhtaVBhaGF3aF9IbW9uZ0xpbmVhcl9CQ3Btbk9nYW1QZXJtTW9uZ01vZGlDeXJpbGxpY1N5bG90aV9OYWdyaU5hYmF0YWVhbkFyYWJpY015YW5tYXJNZWRmQnJhaVNvcmFfU29tcGVuZ0Rlc2VyZXRDb21tb25UYWlfVGhhbUhhbmlmaV9Sb2hpbmd5YUd1cnVuZ19LaGVtYUxhb1BoYWdzX1BhR2FyYXlEb2dyYUdyZWtPc2dlT2xkX1NvZ2RpYW5CdWdpbmVzZUJhdGFrTWFoYWphbmlUYW1sTnVzaHVIYW5FbGJhT2xkX0l0YWxpY1RoYWlQaGFnTHljaWFuUGxyZExpbWJ1QmVuZ0JhdGtJbnNjcmlwdGlvbmFsX1BhaGxhdmlDaHJzR3JlZWtCcmFpbGxlQnJhaEFob21MaXN1QmFsaUJvcG9tb2ZvTXltck1hbmRhaWNNdWx0S2h1ZGF3YWRpR3VydVRpYmV0YW5Tb2dkaWFuUGhscEJvcG9FbHltTWVldGVpX01heWVrSXRhbE1haGpPcnlhSW1wZXJpYWxfQXJhbWFpY0x5ZGlQc2FsdGVyX1BhaGxhdmlLYXlhaF9MaVRoYWFHdWpyU29nZFllemlDb3B0UnVuaWNPc21hbnlhTmtvT2doYW1LYW5hSGF0ck9ya2hLaG9qa2lCaGFpa3N1a2lNZXJvaXRpY19IaWVyb2dseXBoc0x5Y2lTYXVyVGFuZ3V0SGlyYUhpcmFnYW5hVGlmaW5hZ2hNYXJjTXJvTmFuZGluYWdhcmlDeXByb19NaW5vYW5Vbmtub3duT25hb0dvbm1Hb3RoaWNPbGRfU291dGhfQXJhYmlhbk9yaXlhSGVickphdmFuZXNlQW5hdG9saWFuX0hpZXJvZ2x5cGhzQmVuZ2FsaU1hbmlPbGRfVHVya2ljSHJrdEtoaXRhbl9TbWFsbF9TY3JpcHRFdGhpTWVkZWZhaWRyaW5CdWhkTWFrYXNhclhzdXhIbW5nTWFuZERldmFLaXJhdF9SYWlNYW5pY2hhZWFuU2F1cmFzaHRyYUhhbmd1bEVseW1haWNOYmF0VHVsdV9UaWdhbGFyaUNoZXJva2VlTHlkaWFuU29nb0NwcnRIYW51bm9vSGF0cmFuWnl5eUV0aGlvcGljQ2F1Y2FzaWFuX0FsYmFuaWFuTmtvb0htbnBXYW5jaG9LdGhpS3JhaVRpYnRTb3lvTGluZWFyX0FMYW5hR2xhZ29saXRpY1J1bnJYcGVvUGFsbXlyZW5lQ29wdGljQWdoYlZhaVBob2VuaWNpYW5HbGFnQWRsbVNhbXJTaGFyYWRhWmFuYldjaG9TaWduV3JpdGluZ0toYXJvc2h0aGlSam5nQXJtZW5pYW5TZ253U29yYUxpbmJBcm1pUGF1X0Npbl9IYXVUYXZ0Q2FuYWRpYW5fQWJvcmlnaW5hbFJlamFuZ0R1cGxaenp6S2FubmFkYVRoYWFu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N3sQAAYAAAA9exAABAAAAEF7EAAFAAAARnsQABYAAABcexAABwAAAGN7EAAEAAAA8HAQAEQAAABoexAAUgEAACfLPdvRgDezBAAAAAAAAAAEAAAAAAAAACfLPdvRgDezAAAAAFIAAAAAAAAAVwAAAAEAAAAkAAAAAAAAACEAAAAAAAAAAQAAAAQAAAATAAAAAQAAADoAAAAAAAAAPwAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAyAAAAAQAAAEQAAAAEAAAARgAAAAUAAAADAAAACAAAAE0AAAAAAAAAIwAAAAAAAAAJAAAACQAAADYAAAAGAAAAQwAAAElEX1N0YXJ0RW1vamlfUHJlc2VudGF0aW9uQ2hhbmdlc19XaGVuX05GS0NfQ2FzZWZvbGRlZEJpZGlfTWlycm9yZWRTb2Z0X0RvdHRlZFNUZXJtUklDV0tDRkNhc2VfSWdub3JhYmxlRGFzaEhleF9EaWdpdElEU0Vtb2ppX01vZGlmaWVyX0Jhc2VUZXJtQXNzaWduZWRKb2luX0NvbnRyb2xDV0xESUVtb2ppX0NvbXBvbmVudFZhcmlhdGlvbl9TZWxlY3RvckFTQ0lJX0hleF9EaWdpdEVNb2RYSURDWElEU0NJRVByZXNFbW9qaUlEQ0dyYXBoZW1lX0V4dGVuZFNEQmlkaV9Db250cm9sRUJhc2VNYXRoRW1vamlfTW9kaWZpZXJCaWRpX01MT0VCaWRpX0NBbnlJZGVvZ3JhcGhpY1F1b3RhdGlvbl9NYXJrUGF0X1N5bklEU19UcmluYXJ5X09wZXJhdG9yVlNBbHBoYWJldGljVGVybWluYWxfUHVuY3R1YXRpb25JRFNfQmluYXJ5X09wZXJhdG9yRXh0QVNDSUlDV1RKb2luX0NBSGV4Tm9uY2hhcmFjdGVyX0NvZGVfUG9pbnRMb3dlcldoaXRlX1NwYWNlRGlhRUNvbXBJRF9Db250aW51ZUNoYW5nZXNfV2hlbl9UaXRsZWNhc2VkVW5pZmllZF9JZGVvZ3JhcGhzcGFjZVFNYXJrQWxwaGFDaGFuZ2VzX1doZW5fQ2FzZWZvbGRlZFVwcGVyUmFkaWNhbElEU1RSZWdpb25hbF9JbmRpY2F0b3JEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50SURTQlNlbnRl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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////////////8/P/////8/P/+q////P////////99f3B/PD/8f3B8AAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAT//3////9///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgBP//f////3///////////////////////////////////////////////////////////////////////w8A//9/+P//////D////////////////////////////////8P/AwAfUAAAAAAAAAAAAAAAAAAAAADfvEDX///7////////////v//////////////////////////////////D/wMAH1AAAP//////////////////37zA1///+////////////7///////////////////////wP8///////////////////////////+////fwL//////wEAAAAAAAAAAP///4cHAP/////////////////////7/P///////////////////////////v///38C//////8B/v////+/tgD///+HBwAAAAAA//////8HAAAAwP7//////////////y8AYMAAnAAA/f///wAAAOD/////////////PwACAAD8////BzAEAAD/B////////////8P////////////////vn//9/58AAP/////////n////////////////AwD///////8/JP//PwQQAQAA////Af8H////fgAA//////8DAAAAAAAA8P///////yMAAAH/AwD+/+Gf+f///cUjAEAAsAMAAxD//////z8AAP///w//B////36A////////////+////////////////////8///v/vn/n///3F8595gLDP/wNQ4If5///9bQMAAABeAAAcAOC/+////e0jAAABAAMAAALgn/n///3tIwAAALADAAIA6Mc91hjH/wMAAAEAAAAAAO6H+f///W3ThzkCXsD/PwDuv/v///3t8787AQDP/wD+7p/5///97fOfOeCwz/8CAOzHPdYYx//Dxz2BAMD/AADg3/3///3/IwAAACcDAAAA4d/9///97yMAAABgAwAGAPDf/f////8nAEBwgAMAAPzg/3/8///7L38AAAAAAAAA/9/9///9//PfPWAnz/8AAO/f/f///e/z3z1gYM//DgD/3/3//////9998IDP/wD87v9//P//+y9/hF//wP8MAP7//////w0AfwAAAAAAAADW9///r/8NIF8AAPAAAAAAAQAAAAAAAAD//v///x8AAAAfAAAAAAAAAAAAAAAAAAD+////////B/9//wMAAAAA1vf//6///z9ff//zAAAAAAEAAAP/A6DC//7///8f/v/f///+////H0AAAAAAAAAA//////8HAIAAAD88YsDh/wNAAAD/////vyD///////f///////////////////////////////////////////////////8/AAD///////////z///////8AAAAAAP8P////////////A////////////z//////vyD///////f//////////////////////////////////////////////////38A//8/AP8AAAC////////9BwAAAAAAAAAA////////////PX89//////89/////z1/Pf9//////////z3//////////wcAAAAA//8AAP////////////8/P////////////z1/Pf//////Pf////89fz3/f/////////89///////////nAP4DAP//AAD/////////////Pz/+/////////////////////////////////////////////////////////////////////////////////////////////////////////////wMAAAAAAAAAAAAAAAD/////////////////n////v//B////////////8f/Af//A4D//wMA//8DAP/fAQD///////8PAAAAgBAAAAAA/////////////////5////7//wf////////////H/wH//z+A//8fAP//DwD/3w0A/////////////48w/wMAAAAAAAD//////////////wH//////wX//////////z8A////fwAAAAAAAP///z8fAP//////D////wMAAAAAAAAAuP8D//////////////8B//////8H//////////8/AP///3//D/8PwP////8/HwD//////w////8D/wcAAAAA//9/AP///////x8AAAAAAAAAAACAAAAAAAAAAAAAAADg//////8PAOAfAAAAAAAA+P///wHAAPz/////PwAAAP///w//////////f////5//A/8DgAD/v/9/AAAAAAAA////////////H/8DAPgPAP//////////////////DwD/////DwAAAADgAPz///8//wf//////+cAAAAAAN5vBP///////////////////////////////wAAAAAAAAAA/////////wD/4///////P/8H///////nAAD3/////wf///////////////////////////////////////////////////////////////////////////////////8HAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8/UP3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAwAAAAAACAAQAQAAAAAoAAAP8fAAAAAAAA/x/i/wEAhPwvP1D9//PgQwAA//////8BAAAAAAAAAAAAAAAAAAD/////////////////////////////////////H3gMAP////+/IP////////+AAAD//38Af39/f39/f38AAAAA/////////////////////////////////////x/4DwD/////vyD/////////gACA//9/AH9/f39/f39//////+AAAAD+Az4f/v///////////3/4/v/////////////34P///////v////////////9/AAD/////AAAAAAAA///gAAAA/v8+H/7///////////9//v7//////////////+D///////7/////////////fwAA/////wAAAAAAAP////////////////////////8fAAAAAAAAAAD//////z////////////////////////////////////////////////////////////////////////////////////8A/x///wAMAAD//////38AgP///z//////////////AAAAAID//P////////////////n/////////P+sfAAD8//8f////DwAA////////8L///////////////////wMAAACA//z////////////////5/////////z/rHwAA/P+79///BwAAAP///////w8A/P//////DwAAAAAAAAD8aAD8//8/AP//fwAAAP///x/w//////8HAACAAADf/wB8//////8QAAD///////8PAP//////////PwD/A////+j//////z//////DwD///8f//////////8BgP8D////f///////AQAA9w8AAP//f8T///////9iPgUAADj/BxwAfn5+AH9////////3/wP//////////////////wcAAAD///////9/AP8//wP//3/8//////////8HAAA4//98AH5+fgB/f///////9/8D////////////////////N/8D/////////////////z//////////////////AwAAAAB/APig//1/X9v/////////////////AwAAAPj///////////////////////8//////////////////wMAAAAAfwD44P/9f1/b/////////////////wMAAAD4//////8AAAAAAAAAAAAAAAAAAN//////////////////////HwAAAAD+//8H/v//B8D/////////////f/z8/BwAAAAA//8AAP//GAAA4AAAAADf/////////////////////x8AAP8D/v//h/7//wfg/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAD/7///f///t/8//z8AAAAA////////////////////BwAAAAAAAAAA////////HwAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAP///x////////8BAAAAAAD/////AOD///8H/////z8A////P/////8P/z4AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8f////////AQABAAAA/////wDg////B///////B////z//////D/8+AAAAAAD/////////////////////////PwAA/////w//////D///////AP///////w8A//f/97f/+//7G////////w8A/////////////////////////z//A/////8P/////w///////wD///////8PAP/3//e3//v/+xv///////8PAD/9/////7+R//8/AP//fwD///9/AAAAAAAAAAD//zcA//8/AP///wMAAAAAAAAAAP/////////AAAAAAAAAAAABAO/+//8/AAAAAAD///8f////HwAAAAD//v//HwAAAP///////z8A//8/AP//BwD//wMAAAAAAAAAAAAAAAAAb/Dv/v//P4cAAAAA////H////x8AAAAA//7//38AAAD///////8/AP//PwD//wcA//8DAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAD///////8HAP///////wcA/////w8AAAAA/P//P4D//z8AAAAAAAAAAAAAAAAAAAD///////////8BAAAAAAAA////////BwD///////8HAP//////AP8D/////z++//8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AwMAHAAAAAAAAAD///8fgAD//z8AAAAAAP//AwAAAAAA//8fAAAA//9/AAAAAAAAAAAAAAAAAAAAAAD//////xsDABwAAAAAAADw////H4AA/////wEAAAD//z8AAAAAAP//HwAAAP//fwD4////////AAAAAAAAACYA+P//////AAAAAP///wEAAPj///9/AAAAkAD/////RwD4//////8HAB4AABQAAAAA//////////9/AAAAwP8/gP////////8HBAD///8B/wP////////f//AA/////08A//////////8f3v8XAAAAAP//+///DwCAAQAAAAAAAAB/vf+//wH//////38AAAAA4J/5///97SMAAAHgAwAAAP9L/////78AAAAKAAAAAAD///v/////wAMAAAAAAAAAf73/v/8B/////////wf/A++f+f///e37nzmB4M8fHwD/S/////+//6X3DwAGAAAA////////HwCABwCAAwAAAP///////wAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////9/AAAAAAAPAAAAAP///////////wf/wwMAAAD//////////78A/wMAAAAAAAAAAAAAAAAAAAAAAAAAAP///////z//AQAAPwAAAAD///////8AABAAAAAAAAAA//////8HAAEAAAAAAAAAAP///wcAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8RAP8DAAAAAP////////8B/wP//w8AAAD////n/w//A38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////DwAAAAAAAAAAAAAAAAAA//////////8AAACAf/Jv////AIACAAAAAAAAAAAAAAD//P////8BAAoAAAD/////////BwAAAAAAAAAAAAAAAP///////////wMAgH/yb////7/5DwD/AwAAAAAAAAAA//z///////wbAAAAAfj/////BwQAAAHw//////8DACAAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AQAAAP////////9/gAD///////////8jAAD///////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEA/wP//f///38AAAEAAAAAAPz///8AAAAAAAAAAAAAAAAAAH/7/////wEAQAAAAL/9////AwABAAAAAAAAAAAAAAAA//3/////f/8BAP8DAAD8/////P///n8AAAAAAAAAAAB/+/////9/tP8A/wO//f///3/7Af8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wcA9P/9////DwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9/AP///f/////HBwD/BwAAAAAAAAAAAAABAAAAAAAAAAAA/////////////////38AAP///////////////////////////////w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AQD///////8AAH4AAAD//////////////////////////////////////////////////////////////////////////wcABAAAACcA8AD///////////////////////////////8AAP//PwD//////////////////////////////////////////////////////////////////////////////wP//////////////////////////////////////////38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wH///9/AAD///////////9/AAD///8/AAD///////8AAA8AAAD4///g//8AAAAAAAAAAAAAAAAAAP////////8B////f/8D////////////f/8D////Px8A////////fwAPAP8D+P//4P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////H/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAA////////////BwEAAAAAAAAA+P8AAAAAAAAAAAsAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAP///////////4f/////////gP//AAAAAAAAAAAbAAMA//////////////////////////////////8/AAAAAID/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA72//////////////////////////////////////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8///9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////B/8f/wH/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4OMH+OcPAAAAPAAAAAAAAAAAAAD/////////////////B/8f/wH/YwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////f+AHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9v/38AAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wP/////////////3///////////32Te/+vv/////////7/n39////97X/z9//////////////////////////////////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3DwAAAAAAAP//////////////////////////P/////3///f////3///f////3///f////3/////9/////f//98////////////////9/+P//////HyAAEAAA+P7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////AAAAAAAAAAD/////////PwAAAAAAAAAAAAAAAAAAAAAAAP//////H4A/AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///+dsH/////////z8AAACAAAAAAAAAAAAAAAAAAAD//////x//P/9DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8AAP//////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/AAD/////////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///z8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wf///////////////////////////////8fAAAAAAAAAP//////////DwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////HwB/AAAAAAD///////////8P/wMAAAAAAAAAAAAAAAAAAAAAAAAAAO////+W/vcKhOqWqpb3917/+/8P7vv/DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAP///////////////////////////////////////////////////////////////////////////////wEA//////8/////////////////////////////////////////////////////////////////////////////////////////////B////////////////////////////////////////////////////////wMA/////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAD//////////////z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAND4QADw+EABEPhAAST4QAE4+EADQjhAAVT4QAFs+EABdPhAAYz4QAGo+EABzPhAAez4QAIE+EACEPhAACAAAAAgAAAAFAAAABQAAAAcAAAAHAAAABgAAAAIAAAAGAAAABwAAAAkAAAAIAAAABgAAAAMAAAAIAAAAc1kQAHRZEABukBAA7z4QAHVZEAAOkBAAd1kQAHlZEAAUkBAAEZAQAHxZEAAHkBAAfVkQAH5ZEAALkBAABZAQAIBZEACBWRAA9lcQAPpXEAAZWBAAQ2sQAI5ZEACDWRAAiVkQAHNrEACOWRAAjlkQAHdYEACTWRAAm1kQAJ5ZEACgWRAAp1kQAKlZEAC0WRAAt1kQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAOnkQADp5EAA6eRAAK1kQAC5ZEAA1WRAAN1kQALs+EAAKWBAA4lcQAA9YEAAUWBAAST4QANJYEADaWBAA0I4QAE1YEADCVxAA5lcQAOpXEABVPhAAr1gQALZYEADNVxAA4lgQAMRXEABZWBAAWz4QACFZEADWVxAAcVgQAC1YEAB9WBAA6z4QAOY+EADcVxAAj1gQAN9XEAACWBAAN1gQAAZYEABEPhAA7lcQANBXEADyVxAAyFcQANlXEACJWBAAPD4QAJtYEAA8WBAAND4QAMBXEAChWBAAQVgQAMpXEACoWBAApz4QAE4+EAAeWBAA81gQAMZXEAAjWBAAX1gQAEFZEAAoWBAAgT4QAHM+EADEWBAAZVgQAGtYEAAFWRAAd1gQAINYEAD+VxAADlkQAJVYEAAyWBAAy1gQAFNYEABHWBAAhD4QABdZEADqWBAA01cQAL1YEABjPhAAaj4QAF0+EAB7PhAAwD4QAEtZEABMWRAAIZAQAByQEABOWRAAT1kQABqQEABQWRAAUVkQAFJZEABTWRAAAJAQADA+EABWWRAAWVkQAFtZEABcWRAAXVkQAOU+EABeWRAAYFkQAGFZEAADkBAAMj4QAGNZEABmWRAACZAQAGdZEABoWRAAHpAQABiQEABqWRAAa1kQAAGQEABtWRAAblkQACSQEABwWRAAclkQAAEAAAABAAAAAQAAAAEAAAACAAAAAwAAAAIAAAADAAAABAAAAAMAAAABAAAAAgAAAAEAAAACAAAAAwAAAAIAAAABAAAAAgAAAAQAAAAEAAAABQAAAAcAAAAFAAAABgAAAAUAAAADAAAABQAAAAUAAAAGAAAACAAAAAMAAAACAAAABwAAAAIAAAALAAAAAwAAAAEAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAMAAAAHAAAAAgAAAAoAAAAFAAAABQAAAAQAAAAFAAAABQAAAAUAAAAIAAAACAAAAAcAAAAGAAAAAgAAAAQAAAAEAAAABgAAAAcAAAAHAAAAAwAAAAgAAAACAAAABgAAAAIAAAAKAAAAAwAAAAYAAAAFAAAABgAAAAQAAAAFAAAAAwAAAAYAAAADAAAABAAAAAUAAAAEAAAABQAAAAQAAAADAAAABAAAAAIAAAADAAAABgAAAAgAAAAGAAAABQAAAAgAAAACAAAABwAAAAYAAAADAAAABwAAAAsAAAAHAAAABQAAAAkAAAACAAAABQAAAAYAAAAKAAAABQAAAAMAAAAIAAAABwAAAAYAAAAGAAAACQAAAAYAAAAGAAAABAAAAAkAAAAGAAAABQAAAAcAAAAGAAAABgAAAAgAAAAKAAAACQAAAAMAAAAHAAAABwAAAAkAAAAGAAAABgAAAAUAAAABAAAAAgAAAAMAAAACAAAAAQAAAAEAAAACAAAAAQAAAAEAAAABAAAAAwAAAAEAAAACAAAAAwAAAAIAAAABAAAAAQAAAAEAAAABAAAAAgAAAAEAAAACAAAAAgAAAAIAAAADAAAAAQAAAAIAAAABAAAAAgAAAAMAAAACAAAAAQAAAAIAAAACAAAAAQAAAAIAAAADAAAAAgAAAAEAAABAAABAAAEAAgEAACAAEAAECAACAAQAIAAQAAAIgAAAAAEAAAACAAAAAgAAAAEAAAAMAAAADAAAAAwAAAAMAAAACgAAAAwAAAANAAAACQAAAAsAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAAEAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAJAQAAGQEAADkBAABZAQAAeQEAAJkBAAC5AQAA6QEAARkBAAFJAQABiQEAAakBAAHJAQAB6QEAAhkBAAJJAQAAEYjMIQAAQAAAAYAAAAjMIQAIzCEAAAAAAAAJMBCXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQQFcnVzdGMlMS44NS4wLW5pZ2h0bHkgKDRiYTRhYzYxMiAyMDI0LTEyLTE4KQZ3YWxydXMGMC4yMy4zDHdhc20tYmluZGdlbhIwLjIuOTkgKDA0Y2E2ZjM0YSkJd2FzbS1zbmlwBTAuNC4wAHkPdGFyZ2V0X2ZlYXR1cmVzCCsHYXRvbWljcysPbXV0YWJsZS1nbG9iYWxzKwdzaW1kMTI4KwtidWxrLW1lbW9yeSsIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZSsPYnVsay1tZW1vcnktb3B0'; \ No newline at end of file diff --git a/views/scram/scramjet.worker.js b/views/scram/scramjet.worker.js new file mode 100644 index 00000000..df7dfa4e --- /dev/null +++ b/views/scram/scramjet.worker.js @@ -0,0 +1,179 @@ +(()=>{"use strict";var e={1762:function(e,t,r){r.d(t,{Z:function(){return o}});let o={fmt:function(e,t,...r){let o=Error.prepareStackTrace;Error.prepareStackTrace=(e,t)=>{t.shift(),t.shift(),t.shift();let r="";for(let e=1;e<Math.min(2,t.length);e++)t[e].getFunctionName()&&(r+=`${t[e].getFunctionName()} -> `+r);return r+=t[0].getFunctionName()||"Anonymous"};let s=function(){try{throw Error()}catch(e){return e.stack}}();Error.prepareStackTrace=o;let n=console[e]||console.log;n(`%c${s}%c ${t}`,` + background-color: ${{log:"#000",warn:"#f80",error:"#f00",debug:"transparent"}[e]}; + color: ${{log:"#fff",warn:"#fff",error:"#fff",debug:"gray"}[e]}; + padding: ${{log:2,warn:4,error:4,debug:0}[e]}px; + font-weight: bold; + font-family: monospace; + font-size: 0.9em; + `,`${"debug"===e?"color: gray":""}`,...r)},log:function(e,...t){this.fmt("log",e,...t)},warn:function(e,...t){this.fmt("warn",e,...t)},error:function(e,...t){this.fmt("error",e,...t)},debug:function(e,...t){this.fmt("debug",e,...t)}}}},t={};function r(o){var s=t[o];if(void 0!==s)return s.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};class o{handle;origin;syncToken;promises;messageChannel;connected;constructor(e,t){this.handle=e,this.origin=t,this.syncToken=0,this.promises={},this.messageChannel=new MessageChannel,this.connected=!1,this.messageChannel.port1.addEventListener("message",e=>{"scramjet$type"in e.data&&("init"===e.data.scramjet$type?this.connected=!0:this.handleMessage(e.data))}),this.messageChannel.port1.start(),this.handle.postMessage({scramjet$type:"init",scramjet$port:this.messageChannel.port2},[this.messageChannel.port2])}handleMessage(e){let t=this.promises[e.scramjet$token];t&&(t(e),delete this.promises[e.scramjet$token])}async fetch(e){let t=this.syncToken++,r={scramjet$type:"fetch",scramjet$token:t,scramjet$request:{url:e.url,body:e.body,headers:Array.from(e.headers.entries()),method:e.method,mode:e.mode,destinitation:e.destination}},o=e.body?[e.body]:[];this.handle.postMessage(r,o);let{scramjet$response:s}=await new Promise(e=>{this.promises[t]=e});return!!s&&new Response(s.body,{headers:s.headers,status:s.status,statusText:s.statusText})}}!("$scramjet"in self)&&(self.$scramjet={version:{build:"1efcf85",version:"1.0.2-dev"},codec:{},flagEnabled:function(e,t){let r=s.config.flags[e];for(let r in s.config.siteFlags){let o=s.config.siteFlags[r];if(new RegExp(r).test(t.href)&&e in o)return o[e]}return r}});let s=self.$scramjet,n=Function,{util:{BareClient:i,ScramjetHeaders:a,BareMuxConnection:c},url:{rewriteUrl:l,unrewriteUrl:d,rewriteBlob:u,unrewriteBlob:h},rewrite:{rewriteCss:p,unrewriteCss:f,rewriteHtml:m,unrewriteHtml:g,rewriteSrcset:y,rewriteJs:b,rewriteHeaders:w,rewriteWorkers:v,htmlRules:k},CookieStore:x}=s.shared;function R(e){return{origin:e,base:e}}async function S(e,t){let r=new URLSearchParams(new URL(e.url).search);if(r.has("url"))return Response.redirect(l(r.get("url"),R(new URL(r.get("url")))));try{let o=new URL(e.url),n="";if(o.searchParams.has("type")&&(n=o.searchParams.get("type"),o.searchParams.delete("type")),o.searchParams.has("dest")&&o.searchParams.delete("dest"),o.pathname.startsWith(this.config.prefix+"blob:")||o.pathname.startsWith(this.config.prefix+"data:")){let r,s=o.pathname.substring(this.config.prefix.length);s.startsWith("blob:")&&(s=h(s));let i=await fetch(s,{}),a=s.startsWith("blob:")?s:"(data url)";i.finalURL=a,i.body&&(r=await $(i,t?{base:new URL(new URL(t.url).origin),origin:new URL(new URL(t.url).origin)}:R(new URL(d(e.referrer))),e.destination,n,this.cookieStore));let c=Object.fromEntries(i.headers.entries());return crossOriginIsolated&&(c["Cross-Origin-Opener-Policy"]="same-origin",c["Cross-Origin-Embedder-Policy"]="require-corp"),new Response(r,{status:i.status,statusText:i.statusText,headers:c})}let i=new URL(d(o)),c=this.serviceWorkers.find(e=>e.origin===i.origin);if(c&&c.connected&&"swruntime"!==r.get("from")){let t=await c.fetch(e);if(t)return t}if(i.origin==new URL(e.url).origin)throw Error("attempted to fetch from same origin - this means the site has obtained a reference to the real origin, aborting");let l=new a;for(let[t,r]of e.headers.entries())l.set(t,r);if(t&&new URL(t.url).pathname.startsWith(s.config.prefix)){let e=new URL(d(t.url));e.toString().includes("youtube.com")||(l.set("Referer",e.toString()),l.set("Origin",e.origin?`${e.protocol}//${e.host}`:"null"))}let u=this.cookieStore.getCookies(i,!1);u.length&&l.set("Cookie",u),l.set("Sec-Fetch-Dest",e.destination),l.set("Sec-Fetch-Site","same-origin"),l.set("Sec-Fetch-Mode","cors"===e.mode?e.mode:"same-origin");let p=new E(i,e.body,e.method,e.destination,t,l.headers);this.dispatchEvent(p);let f=p.response||await this.client.fetch(p.url,{method:p.method,body:p.body,headers:p.requestHeaders,credentials:"omit",mode:"cors"===e.mode?e.mode:"same-origin",cache:e.cache,redirect:"manual",duplex:"half"});return await C(i,n,e.destination,f,this.cookieStore,t,this)}catch(r){let t={message:r.message,url:e.url,destination:e.destination,timestamp:new Date().toISOString()};if(r.stack&&(t.stack=r.stack),console.error("ERROR FROM SERVICE WORKER FETCH: ",t),!["document","iframe"].includes(e.destination))return new Response(void 0,{status:500});return function(e,t){let r={"content-type":"text/html"};return crossOriginIsolated&&(r["Cross-Origin-Embedder-Policy"]="require-corp"),new Response(function(e,t){let r=` + errorTrace.value = ${JSON.stringify(e)}; + fetchedURL.textContent = ${JSON.stringify(t)}; + for (const node of document.querySelectorAll("#hostname")) node.textContent = ${JSON.stringify(location.hostname)}; + reload.addEventListener("click", () => location.reload()); + version.textContent = ${JSON.stringify(s.version.version)}; + build.textContent = ${JSON.stringify(s.version.build)}; + + document.getElementById('copy-button').addEventListener('click', async () => { + const text = document.getElementById('errorTrace').value; + await navigator.clipboard.writeText(text); + const btn = document.getElementById('copy-button'); + btn.textContent = 'Copied!'; + setTimeout(() => btn.textContent = 'Copy', 2000); + }); + `;return`<!DOCTYPE html> + <html> + <head> + <meta charset="utf-8" /> + <title>Scramjet + + + +
    +
    +

    Uh oh!

    +

    There was an error loading

    + + +
    +
    + + +
    +
    +

    Try:

    +
      +
    • Checking your internet connection
    • +
    • Verifying you entered the correct address
    • +
    • Clearing the site data
    • +
    • Contacting 's administrator
    • +
    • Verify the server isn't censored
    • +
    +

    If you're the administrator of , try:

    +
      +
    • Restarting your server
    • +
    • Updating Scramjet
    • +
    • Troubleshooting the error on the GitHub repository
    • +
    +
    +
    +
    + +
    +

    Scramjet v (build )

    + + + + `}(String(e),t),{status:500,headers:r})}(Object.entries(t).map(([e,t])=>`${e.charAt(0).toUpperCase()+e.slice(1)}: ${t}`).join("\n\n"),d(e.url))}}async function C(e,t,r,o,s,n,i){let a;let c=w(o.rawHeaders,R(e)),l=c["set-cookie"]||[];for(let t in l)n&&n.postMessage({scramjet$type:"cookie",cookie:t,url:e.href});for(let t in await s.setCookies(l instanceof Array?l:[l],e),c)Array.isArray(c[t])&&(c[t]=c[t][0]);if(o.body&&(a=await $(o,R(e),r,t,s)),["document","iframe"].includes(r)){let e=c["content-disposition"];if(!/\s*?((inline|attachment);\s*?)filename=/i.test(e)){let t=/^\s*?attachment/i.test(e)?"attachment":"inline",[r]=new URL(o.finalURL).pathname.split("/").slice(-1);c["content-disposition"]=`${t}; filename=${JSON.stringify(r)}`}}"text/event-stream"===c.accept&&(c["content-type"]="text/event-stream"),delete c["permissions-policy"],crossOriginIsolated&&["document","iframe","worker","sharedworker","style","script"].includes(r)&&(c["Cross-Origin-Embedder-Policy"]="require-corp",c["Cross-Origin-Opener-Policy"]="same-origin");let d=new j(a,c,o.status,o.statusText,r,e,o,n);return i.dispatchEvent(d),new Response(d.responseBody,{headers:d.responseHeaders,status:d.status,statusText:d.statusText})}async function $(e,t,r,o,s){switch(r){case"iframe":case"document":if(e.headers.get("content-type")?.startsWith("text/html"))return m(await e.text(),s,t,!0);return e.body;case"script":return b(await e.arrayBuffer(),e.finalURL,t);case"style":return p(await e.text(),t);case"sharedworker":case"worker":return v(await e.arrayBuffer(),o,e.finalURL,t);default:return e.body}}s.config;class j extends Event{responseBody;responseHeaders;status;statusText;destination;url;rawResponse;client;constructor(e,t,r,o,s,n,i,a){super("handleResponse"),this.responseBody=e,this.responseHeaders=t,this.status=r,this.statusText=o,this.destination=s,this.url=n,this.rawResponse=i,this.client=a}}class E extends Event{url;body;method;destination;client;requestHeaders;constructor(e,t,r,o,s,n){super("request"),this.url=e,this.body=t,this.method=r,this.destination=o,this.client=s,this.requestHeaders=n}response}var T=r(1762).Z;class O extends EventTarget{client;config;syncPool={};synctoken=0;cookieStore=new s.shared.CookieStore;serviceWorkers=[];constructor(){super(),this.client=new s.shared.util.BareClient;let e=indexedDB.open("$scramjet",1);e.onsuccess=()=>{let t=e.result.transaction("cookies","readonly").objectStore("cookies").get("cookies");t.onsuccess=()=>{t.result&&(this.cookieStore.load(t.result),T.log("Loaded cookies from IDB!"))}},addEventListener("message",async({data:t})=>{if("scramjet$type"in t){if("registerServiceWorker"===t.scramjet$type){this.serviceWorkers.push(new o(t.port,t.origin));return}"cookie"===t.scramjet$type&&(this.cookieStore.setCookies([t.cookie],new URL(t.url)),e.result.transaction("cookies","readwrite").objectStore("cookies").put(JSON.parse(this.cookieStore.dump()),"cookies"))}})}async loadConfig(){if(this.config)return;let e=indexedDB.open("$scramjet",1);return new Promise((t,r)=>{e.onsuccess=async()=>{let o=e.result.transaction("config","readonly").objectStore("config").get("config");o.onsuccess=()=>{this.config=o.result,s.config=o.result,s.codec.encode=n("url",s.config.codec.encode),s.codec.decode=n("url",s.config.codec.decode),t()},o.onerror=()=>r(o.error)},e.onerror=()=>r(e.error)})}route({request:e}){return!!e.url.startsWith(location.origin+this.config.prefix)||!1}async fetch({request:e,clientId:t}){let r=await self.clients.get(t);return S.call(this,e,r)}}self.ScramjetServiceWorker=O})(); +//# sourceMappingURL=scramjet.worker.js.map \ No newline at end of file diff --git a/views/scram/scramjet.worker.js.map b/views/scram/scramjet.worker.js.map new file mode 100644 index 00000000..8fbb016e --- /dev/null +++ b/views/scram/scramjet.worker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scramjet.worker.js","sources":["webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/worker/fakesw.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./src/shared.ts","webpack://@mercuryworkshop/scramjet/./src/worker/fetch.ts","webpack://@mercuryworkshop/scramjet/./src/worker/error.ts","webpack://@mercuryworkshop/scramjet/./src/worker/index.ts"],"sourcesContent":["export default {\n\tfmt: function (severity: string, message: string, ...args: any[]) {\n\t\tconst old = Error.prepareStackTrace;\n\n\t\tError.prepareStackTrace = (_, stack) => {\n\t\t\tstack.shift(); // stack();\n\t\t\tstack.shift(); // fmt();\n\t\t\tstack.shift();\n\n\t\t\tlet fmt = \"\";\n\t\t\tfor (let i = 1; i < Math.min(2, stack.length); i++) {\n\t\t\t\tif (stack[i].getFunctionName()) {\n\t\t\t\t\t// const f = stack[i].getThis()?.constructor?.name;\n\t\t\t\t\t// if (f) fmt += `${f}.`\n\t\t\t\t\tfmt += `${stack[i].getFunctionName()} -> ` + fmt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt += stack[0].getFunctionName() || \"Anonymous\";\n\n\t\t\treturn fmt;\n\t\t};\n\n\t\tconst fmt = (function stack() {\n\t\t\ttry {\n\t\t\t\tthrow new Error();\n\t\t\t} catch (e) {\n\t\t\t\treturn e.stack;\n\t\t\t}\n\t\t})();\n\n\t\tError.prepareStackTrace = old;\n\n\t\tconst fn = console[severity] || console.log;\n\t\tconst bg = {\n\t\t\tlog: \"#000\",\n\t\t\twarn: \"#f80\",\n\t\t\terror: \"#f00\",\n\t\t\tdebug: \"transparent\",\n\t\t}[severity];\n\t\tconst fg = {\n\t\t\tlog: \"#fff\",\n\t\t\twarn: \"#fff\",\n\t\t\terror: \"#fff\",\n\t\t\tdebug: \"gray\",\n\t\t}[severity];\n\t\tconst padding = {\n\t\t\tlog: 2,\n\t\t\twarn: 4,\n\t\t\terror: 4,\n\t\t\tdebug: 0,\n\t\t}[severity];\n\n\t\tfn(\n\t\t\t`%c${fmt}%c ${message}`,\n\t\t\t`\n\t\tbackground-color: ${bg};\n\t\tcolor: ${fg};\n\t\tpadding: ${padding}px;\n\t\tfont-weight: bold;\n\t\tfont-family: monospace;\n\t\tfont-size: 0.9em;\n\t`,\n\t\t\t`${severity === \"debug\" ? \"color: gray\" : \"\"}`,\n\t\t\t...args\n\t\t);\n\t},\n\tlog: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"log\", message, ...args);\n\t},\n\twarn: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"warn\", message, ...args);\n\t},\n\terror: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"error\", message, ...args);\n\t},\n\tdebug: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"debug\", message, ...args);\n\t},\n};\n","import { type MessageW2R, type MessageR2W } from \"../client/swruntime\";\n\nexport class FakeServiceWorker {\n\tsyncToken = 0;\n\tpromises: Record void> = {};\n\tmessageChannel = new MessageChannel();\n\tconnected = false;\n\n\tconstructor(\n\t\tpublic handle: MessagePort,\n\t\tpublic origin: string\n\t) {\n\t\tthis.messageChannel.port1.addEventListener(\"message\", (event) => {\n\t\t\tif (\"scramjet$type\" in event.data) {\n\t\t\t\tif (event.data.scramjet$type === \"init\") {\n\t\t\t\t\tthis.connected = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleMessage(event.data);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.messageChannel.port1.start();\n\n\t\tthis.handle.postMessage(\n\t\t\t{\n\t\t\t\tscramjet$type: \"init\",\n\t\t\t\tscramjet$port: this.messageChannel.port2,\n\t\t\t},\n\t\t\t[this.messageChannel.port2]\n\t\t);\n\t}\n\n\thandleMessage(data: MessageR2W) {\n\t\tconst cb = this.promises[data.scramjet$token];\n\t\tif (cb) {\n\t\t\tcb(data);\n\t\t\tdelete this.promises[data.scramjet$token];\n\t\t}\n\t}\n\n\tasync fetch(request: Request): Promise {\n\t\tconst token = this.syncToken++;\n\n\t\tconst message: MessageW2R = {\n\t\t\tscramjet$type: \"fetch\",\n\t\t\tscramjet$token: token,\n\t\t\tscramjet$request: {\n\t\t\t\turl: request.url,\n\t\t\t\tbody: request.body,\n\t\t\t\theaders: Array.from(request.headers.entries()),\n\t\t\t\tmethod: request.method,\n\t\t\t\tmode: request.mode,\n\t\t\t\tdestinitation: request.destination,\n\t\t\t},\n\t\t};\n\n\t\tconst transfer = request.body ? [request.body] : [];\n\n\t\tthis.handle.postMessage(message, transfer);\n\n\t\tconst { scramjet$response: r } = (await new Promise((resolve) => {\n\t\t\tthis.promises[token] = resolve;\n\t\t})) as MessageR2W;\n\n\t\tif (!r) return false;\n\n\t\treturn new Response(r.body, {\n\t\t\theaders: r.headers,\n\t\t\tstatus: r.status,\n\t\t\tstatusText: r.statusText,\n\t\t});\n\t}\n}\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.config.siteFlags[regex];\n\t\tif (new RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\n","import { $scramjet } from \"./scramjet\";\n\nexport const {\n\tutil: { BareClient, ScramjetHeaders, BareMuxConnection },\n\turl: { rewriteUrl, unrewriteUrl, rewriteBlob, unrewriteBlob },\n\trewrite: {\n\t\trewriteCss,\n\t\tunrewriteCss,\n\t\trewriteHtml,\n\t\tunrewriteHtml,\n\t\trewriteSrcset,\n\t\trewriteJs,\n\t\trewriteHeaders,\n\t\trewriteWorkers,\n\t\thtmlRules,\n\t},\n\tCookieStore,\n} = $scramjet.shared;\n\nexport const config = $scramjet.config;\n","import { BareResponseFetch } from \"@mercuryworkshop/bare-mux\";\nimport { MessageW2C, ScramjetServiceWorker } from \".\";\nimport { renderError } from \"./error\";\nimport { FakeServiceWorker } from \"./fakesw\";\nimport { CookieStore } from \"../shared/cookie\";\nimport {\n\tScramjetHeaders,\n\tunrewriteUrl,\n\trewriteUrl,\n\trewriteCss,\n\trewriteHeaders,\n\trewriteHtml,\n\trewriteJs,\n\trewriteWorkers,\n\tunrewriteBlob,\n} from \"../shared\";\n\nimport type { URLMeta } from \"../shared/rewriters/url\";\nimport { $scramjet } from \"../scramjet\";\n\nfunction newmeta(url: URL): URLMeta {\n\treturn {\n\t\torigin: url,\n\t\tbase: url,\n\t};\n}\n\nexport async function handleFetch(\n\tthis: ScramjetServiceWorker,\n\trequest: Request,\n\tclient: Client | null\n) {\n\tconst urlParam = new URLSearchParams(new URL(request.url).search);\n\n\tif (urlParam.has(\"url\")) {\n\t\treturn Response.redirect(\n\t\t\trewriteUrl(urlParam.get(\"url\"), newmeta(new URL(urlParam.get(\"url\"))))\n\t\t);\n\t}\n\n\ttry {\n\t\tconst requesturl = new URL(request.url);\n\t\tlet workertype = \"\";\n\t\tif (requesturl.searchParams.has(\"type\")) {\n\t\t\tworkertype = requesturl.searchParams.get(\"type\") as string;\n\t\t\trequesturl.searchParams.delete(\"type\");\n\t\t}\n\t\tif (requesturl.searchParams.has(\"dest\")) {\n\t\t\trequesturl.searchParams.delete(\"dest\");\n\t\t}\n\n\t\tif (\n\t\t\trequesturl.pathname.startsWith(this.config.prefix + \"blob:\") ||\n\t\t\trequesturl.pathname.startsWith(this.config.prefix + \"data:\")\n\t\t) {\n\t\t\tlet dataurl = requesturl.pathname.substring(this.config.prefix.length);\n\t\t\tif (dataurl.startsWith(\"blob:\")) {\n\t\t\t\tdataurl = unrewriteBlob(dataurl);\n\t\t\t}\n\n\t\t\tconst response: Partial = await fetch(dataurl, {});\n\t\t\tconst url = dataurl.startsWith(\"blob:\") ? dataurl : \"(data url)\";\n\t\t\tresponse.finalURL = url;\n\t\t\tlet body: BodyType;\n\n\t\t\tif (response.body) {\n\t\t\t\tbody = await rewriteBody(\n\t\t\t\t\tresponse as BareResponseFetch,\n\t\t\t\t\tclient\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tbase: new URL(new URL(client.url).origin),\n\t\t\t\t\t\t\t\torigin: new URL(new URL(client.url).origin),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: newmeta(new URL(unrewriteUrl(request.referrer))),\n\t\t\t\t\trequest.destination,\n\t\t\t\t\tworkertype,\n\t\t\t\t\tthis.cookieStore\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst headers = Object.fromEntries(response.headers.entries());\n\n\t\t\tif (crossOriginIsolated) {\n\t\t\t\theaders[\"Cross-Origin-Opener-Policy\"] = \"same-origin\";\n\t\t\t\theaders[\"Cross-Origin-Embedder-Policy\"] = \"require-corp\";\n\t\t\t}\n\n\t\t\treturn new Response(body, {\n\t\t\t\tstatus: response.status,\n\t\t\t\tstatusText: response.statusText,\n\t\t\t\theaders: headers,\n\t\t\t});\n\t\t}\n\n\t\tconst url = new URL(unrewriteUrl(requesturl));\n\n\t\tconst activeWorker: FakeServiceWorker | null = this.serviceWorkers.find(\n\t\t\t(w) => w.origin === url.origin\n\t\t);\n\n\t\tif (\n\t\t\tactiveWorker &&\n\t\t\tactiveWorker.connected &&\n\t\t\turlParam.get(\"from\") !== \"swruntime\"\n\t\t) {\n\t\t\t// TODO: check scope\n\t\t\tconst r = await activeWorker.fetch(request);\n\t\t\tif (r) return r;\n\t\t}\n\t\tif (url.origin == new URL(request.url).origin) {\n\t\t\tthrow new Error(\n\t\t\t\t\"attempted to fetch from same origin - this means the site has obtained a reference to the real origin, aborting\"\n\t\t\t);\n\t\t}\n\n\t\tconst headers = new ScramjetHeaders();\n\t\tfor (const [key, value] of request.headers.entries()) {\n\t\t\theaders.set(key, value);\n\t\t}\n\n\t\tif (\n\t\t\tclient &&\n\t\t\tnew URL(client.url).pathname.startsWith($scramjet.config.prefix)\n\t\t) {\n\t\t\t// TODO: i was against cors emulation but we might actually break stuff if we send full origin/referrer always\n\t\t\tconst clientURL = new URL(unrewriteUrl(client.url));\n\t\t\tif (clientURL.toString().includes(\"youtube.com\")) {\n\t\t\t\t// console.log(headers);\n\t\t\t} else {\n\t\t\t\theaders.set(\"Referer\", clientURL.toString());\n\t\t\t\theaders.set(\n\t\t\t\t\t\"Origin\",\n\t\t\t\t\tclientURL.origin ? `${clientURL.protocol}//${clientURL.host}` : \"null\"\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cookies = this.cookieStore.getCookies(url, false);\n\n\t\tif (cookies.length) {\n\t\t\theaders.set(\"Cookie\", cookies);\n\t\t}\n\n\t\theaders.set(\"Sec-Fetch-Dest\", request.destination);\n\t\t//TODO: Emulate this later (like really)\n\t\theaders.set(\"Sec-Fetch-Site\", \"same-origin\");\n\t\theaders.set(\n\t\t\t\"Sec-Fetch-Mode\",\n\t\t\trequest.mode === \"cors\" ? request.mode : \"same-origin\"\n\t\t);\n\n\t\tconst ev = new ScramjetRequestEvent(\n\t\t\turl,\n\t\t\trequest.body,\n\t\t\trequest.method,\n\t\t\trequest.destination,\n\t\t\tclient,\n\t\t\theaders.headers\n\t\t);\n\t\tthis.dispatchEvent(ev);\n\n\t\tconst response: BareResponseFetch =\n\t\t\tev.response ||\n\t\t\t(await this.client.fetch(ev.url, {\n\t\t\t\tmethod: ev.method,\n\t\t\t\tbody: ev.body,\n\t\t\t\theaders: ev.requestHeaders,\n\t\t\t\tcredentials: \"omit\",\n\t\t\t\tmode: request.mode === \"cors\" ? request.mode : \"same-origin\",\n\t\t\t\tcache: request.cache,\n\t\t\t\tredirect: \"manual\",\n\t\t\t\t//@ts-ignore why the fuck is this not typed mircosoft\n\t\t\t\tduplex: \"half\",\n\t\t\t}));\n\n\t\treturn await handleResponse(\n\t\t\turl,\n\t\t\tworkertype,\n\t\t\trequest.destination,\n\t\t\tresponse,\n\t\t\tthis.cookieStore,\n\t\t\tclient,\n\t\t\tthis\n\t\t);\n\t} catch (err) {\n\t\tconst errorDetails = {\n\t\t\tmessage: err.message,\n\t\t\turl: request.url,\n\t\t\tdestination: request.destination,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\t\tif (err.stack) {\n\t\t\terrorDetails[\"stack\"] = err.stack;\n\t\t}\n\n\t\tconsole.error(\"ERROR FROM SERVICE WORKER FETCH: \", errorDetails);\n\n\t\tif (![\"document\", \"iframe\"].includes(request.destination))\n\t\t\treturn new Response(undefined, { status: 500 });\n\n\t\tconst formattedError = Object.entries(errorDetails)\n\t\t\t.map(\n\t\t\t\t([key, value]) =>\n\t\t\t\t\t`${key.charAt(0).toUpperCase() + key.slice(1)}: ${value}`\n\t\t\t)\n\t\t\t.join(\"\\n\\n\");\n\n\t\treturn renderError(formattedError, unrewriteUrl(request.url));\n\t}\n}\n\nasync function handleResponse(\n\turl: URL,\n\tworkertype: string,\n\tdestination: RequestDestination,\n\tresponse: BareResponseFetch,\n\tcookieStore: CookieStore,\n\tclient: Client,\n\tswtarget: ScramjetServiceWorker\n): Promise {\n\tlet responseBody: BodyType;\n\tconst responseHeaders = rewriteHeaders(response.rawHeaders, newmeta(url));\n\n\tconst maybeHeaders = responseHeaders[\"set-cookie\"] || [];\n\tfor (const cookie in maybeHeaders) {\n\t\tif (client)\n\t\t\tclient.postMessage({\n\t\t\t\tscramjet$type: \"cookie\",\n\t\t\t\tcookie,\n\t\t\t\turl: url.href,\n\t\t\t} as MessageW2C);\n\t}\n\n\tawait cookieStore.setCookies(\n\t\tmaybeHeaders instanceof Array ? maybeHeaders : [maybeHeaders],\n\t\turl\n\t);\n\n\tfor (const header in responseHeaders) {\n\t\t// flatten everything past here\n\t\tif (Array.isArray(responseHeaders[header]))\n\t\t\tresponseHeaders[header] = responseHeaders[header][0];\n\t}\n\n\tif (response.body) {\n\t\tresponseBody = await rewriteBody(\n\t\t\tresponse,\n\t\t\tnewmeta(url),\n\t\t\tdestination,\n\t\t\tworkertype,\n\t\t\tcookieStore\n\t\t);\n\t}\n\n\t// downloads\n\tif ([\"document\", \"iframe\"].includes(destination)) {\n\t\tconst header = responseHeaders[\"content-disposition\"];\n\n\t\t// validate header and test for filename\n\t\tif (!/\\s*?((inline|attachment);\\s*?)filename=/i.test(header)) {\n\t\t\t// if filename= wasn\"t specified then maybe the remote specified to download this as an attachment?\n\t\t\t// if it\"s invalid then we can still possibly test for the attachment/inline type\n\t\t\tconst type = /^\\s*?attachment/i.test(header) ? \"attachment\" : \"inline\";\n\n\t\t\t// set the filename\n\t\t\tconst [filename] = new URL(response.finalURL).pathname\n\t\t\t\t.split(\"/\")\n\t\t\t\t.slice(-1);\n\n\t\t\tresponseHeaders[\"content-disposition\"] =\n\t\t\t\t`${type}; filename=${JSON.stringify(filename)}`;\n\t\t}\n\t}\n\tif (responseHeaders[\"accept\"] === \"text/event-stream\") {\n\t\tresponseHeaders[\"content-type\"] = \"text/event-stream\";\n\t}\n\n\t// scramjet runtime can use features that permissions-policy blocks\n\tdelete responseHeaders[\"permissions-policy\"];\n\n\tif (\n\t\tcrossOriginIsolated &&\n\t\t[\n\t\t\t\"document\",\n\t\t\t\"iframe\",\n\t\t\t\"worker\",\n\t\t\t\"sharedworker\",\n\t\t\t\"style\",\n\t\t\t\"script\",\n\t\t].includes(destination)\n\t) {\n\t\tresponseHeaders[\"Cross-Origin-Embedder-Policy\"] = \"require-corp\";\n\t\tresponseHeaders[\"Cross-Origin-Opener-Policy\"] = \"same-origin\";\n\t}\n\n\tconst ev = new ScramjetHandleResponseEvent(\n\t\tresponseBody,\n\t\tresponseHeaders,\n\t\tresponse.status,\n\t\tresponse.statusText,\n\t\tdestination,\n\t\turl,\n\t\tresponse,\n\t\tclient\n\t);\n\tswtarget.dispatchEvent(ev);\n\n\treturn new Response(ev.responseBody, {\n\t\theaders: ev.responseHeaders as HeadersInit,\n\t\tstatus: ev.status,\n\t\tstatusText: ev.statusText,\n\t});\n}\n\nasync function rewriteBody(\n\tresponse: BareResponseFetch,\n\tmeta: URLMeta,\n\tdestination: RequestDestination,\n\tworkertype: string,\n\tcookieStore: CookieStore\n): Promise {\n\tswitch (destination) {\n\t\tcase \"iframe\":\n\t\tcase \"document\":\n\t\t\tif (response.headers.get(\"content-type\")?.startsWith(\"text/html\")) {\n\t\t\t\t// note from percs: i think this has the potential to be slow asf, but for right now its fine (we should probably look for a better solution)\n\t\t\t\t// another note from percs: regex seems to be broken, gonna comment this out\n\t\t\t\t/*\n\t\t\t\tconst buf = await response.arrayBuffer();\n\t\t\t\tconst decode = new TextDecoder(\"utf-8\").decode(buf);\n\t\t\t\tconst charsetHeader = response.headers.get(\"content-type\");\n\t\t\t\tconst charset =\n\t\t\t\t\tcharsetHeader?.split(\"charset=\")[1] ||\n\t\t\t\t\tdecode.match(/charset=([^\"]+)/)?.[1] ||\n\t\t\t\t\t\"utf-8\";\n\t\t\t\tconst htmlContent = charset\n\t\t\t\t\t? new TextDecoder(charset).decode(buf)\n\t\t\t\t\t: decode;\n\t\t\t\t*/\n\t\t\t\treturn rewriteHtml(await response.text(), cookieStore, meta, true);\n\t\t\t} else {\n\t\t\t\treturn response.body;\n\t\t\t}\n\t\tcase \"script\":\n\t\t\treturn rewriteJs(await response.arrayBuffer(), response.finalURL, meta);\n\t\tcase \"style\":\n\t\t\treturn rewriteCss(await response.text(), meta);\n\t\tcase \"sharedworker\":\n\t\tcase \"worker\":\n\t\t\treturn rewriteWorkers(\n\t\t\t\tawait response.arrayBuffer(),\n\t\t\t\tworkertype,\n\t\t\t\tresponse.finalURL,\n\t\t\t\tmeta\n\t\t\t);\n\t\tdefault:\n\t\t\treturn response.body;\n\t}\n}\n\ntype BodyType = string | ArrayBuffer | Blob | ReadableStream;\n\nexport class ScramjetHandleResponseEvent extends Event {\n\tconstructor(\n\t\tpublic responseBody: BodyType,\n\t\tpublic responseHeaders: Record,\n\t\tpublic status: number,\n\t\tpublic statusText: string,\n\t\tpublic destination: string,\n\t\tpublic url: URL,\n\t\tpublic rawResponse: BareResponseFetch,\n\t\tpublic client: Client\n\t) {\n\t\tsuper(\"handleResponse\");\n\t}\n}\n\nexport class ScramjetRequestEvent extends Event {\n\tconstructor(\n\t\tpublic url: URL,\n\t\tpublic body: BodyType,\n\t\tpublic method: string,\n\t\tpublic destination: string,\n\t\tpublic client: Client,\n\t\tpublic requestHeaders: Record\n\t) {\n\t\tsuper(\"request\");\n\t}\n\tpublic response?: BareResponseFetch;\n}\n","import { $scramjet } from \"../scramjet\";\n\nexport function errorTemplate(trace: string, fetchedURL: string) {\n\t// turn script into a data URI so we don\"t have to escape any HTML values\n\tconst script = `\n errorTrace.value = ${JSON.stringify(trace)};\n fetchedURL.textContent = ${JSON.stringify(fetchedURL)};\n for (const node of document.querySelectorAll(\"#hostname\")) node.textContent = ${JSON.stringify(location.hostname)};\n reload.addEventListener(\"click\", () => location.reload());\n version.textContent = ${JSON.stringify($scramjet.version.version)};\n build.textContent = ${JSON.stringify($scramjet.version.build)};\n \n document.getElementById('copy-button').addEventListener('click', async () => {\n const text = document.getElementById('errorTrace').value;\n await navigator.clipboard.writeText(text);\n const btn = document.getElementById('copy-button');\n btn.textContent = 'Copied!';\n setTimeout(() => btn.textContent = 'Copy', 2000);\n });\n `;\n\n\treturn `\n \n \n \n Scramjet\n \n \n \n
    \n
    \n

    Uh oh!

    \n

    There was an error loading

    \n \n\n
    \n
    \n \n \n
    \n
    \n

    Try:

    \n
      \n
    • Checking your internet connection
    • \n
    • Verifying you entered the correct address
    • \n
    • Clearing the site data
    • \n
    • Contacting 's administrator
    • \n
    • Verify the server isn't censored
    • \n
    \n

    If you're the administrator of , try:

    \n
      \n
    • Restarting your server
    • \n
    • Updating Scramjet
    • \n
    • Troubleshooting the error on the GitHub repository
    • \n
    \n
    \n
    \n
    \n \n
    \n

    Scramjet v (build )

    \n \n \n \n `;\n}\n\nexport function renderError(err: unknown, fetchedURL: string) {\n\tconst headers = {\n\t\t\"content-type\": \"text/html\",\n\t};\n\tif (crossOriginIsolated) {\n\t\theaders[\"Cross-Origin-Embedder-Policy\"] = \"require-corp\";\n\t}\n\n\treturn new Response(errorTemplate(String(err), fetchedURL), {\n\t\tstatus: 500,\n\t\theaders: headers,\n\t});\n}\n","import { FakeServiceWorker } from \"./fakesw\";\nimport { handleFetch } from \"./fetch\";\nimport type BareClient from \"@mercuryworkshop/bare-mux\";\nimport { ScramjetConfig } from \"../types\";\nimport { $scramjet, loadCodecs } from \"../scramjet\";\n\nexport class ScramjetServiceWorker extends EventTarget {\n\tclient: BareClient;\n\tconfig: ScramjetConfig;\n\n\tsyncPool: Record void> = {};\n\tsynctoken = 0;\n\n\tcookieStore = new $scramjet.shared.CookieStore();\n\n\tserviceWorkers: FakeServiceWorker[] = [];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.client = new $scramjet.shared.util.BareClient();\n\n\t\tconst db = indexedDB.open(\"$scramjet\", 1);\n\n\t\tdb.onsuccess = () => {\n\t\t\tconst res = db.result;\n\t\t\tconst tx = res.transaction(\"cookies\", \"readonly\");\n\t\t\tconst store = tx.objectStore(\"cookies\");\n\t\t\tconst cookies = store.get(\"cookies\");\n\n\t\t\tcookies.onsuccess = () => {\n\t\t\t\tif (cookies.result) {\n\t\t\t\t\tthis.cookieStore.load(cookies.result);\n\t\t\t\t\tdbg.log(\"Loaded cookies from IDB!\");\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\taddEventListener(\"message\", async ({ data }: { data: MessageC2W }) => {\n\t\t\tif (!(\"scramjet$type\" in data)) return;\n\n\t\t\tif (data.scramjet$type === \"registerServiceWorker\") {\n\t\t\t\tthis.serviceWorkers.push(new FakeServiceWorker(data.port, data.origin));\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (data.scramjet$type === \"cookie\") {\n\t\t\t\tthis.cookieStore.setCookies([data.cookie], new URL(data.url));\n\t\t\t\tconst res = db.result;\n\t\t\t\tconst tx = res.transaction(\"cookies\", \"readwrite\");\n\t\t\t\tconst store = tx.objectStore(\"cookies\");\n\t\t\t\tstore.put(JSON.parse(this.cookieStore.dump()), \"cookies\");\n\t\t\t}\n\t\t});\n\t}\n\n\tasync loadConfig() {\n\t\tif (this.config) return;\n\n\t\tconst request = indexedDB.open(\"$scramjet\", 1);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\trequest.onsuccess = async () => {\n\t\t\t\tconst db = request.result;\n\t\t\t\tconst tx = db.transaction(\"config\", \"readonly\");\n\t\t\t\tconst store = tx.objectStore(\"config\");\n\t\t\t\tconst config = store.get(\"config\");\n\n\t\t\t\tconfig.onsuccess = () => {\n\t\t\t\t\tthis.config = config.result;\n\t\t\t\t\t$scramjet.config = config.result;\n\n\t\t\t\t\tloadCodecs();\n\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tconfig.onerror = () => reject(config.error);\n\t\t\t};\n\n\t\t\trequest.onerror = () => reject(request.error);\n\t\t});\n\t}\n\n\troute({ request }: FetchEvent) {\n\t\tif (request.url.startsWith(location.origin + this.config.prefix))\n\t\t\treturn true;\n\t\telse return false;\n\t}\n\n\tasync fetch({ request, clientId }: FetchEvent) {\n\t\tconst client = await self.clients.get(clientId);\n\n\t\treturn handleFetch.call(this, request, client);\n\t}\n}\n\n// @ts-ignore\nself.ScramjetServiceWorker = ScramjetServiceWorker;\n\ntype RegisterServiceWorkerMessage = {\n\tscramjet$type: \"registerServiceWorker\";\n\tport: MessagePort;\n\torigin: string;\n};\n\ntype CookieMessage = {\n\tscramjet$type: \"cookie\";\n\tcookie: string;\n\turl: string;\n};\n\ntype MessageCommon = {\n\tscramjet$type: string;\n\tscramjet$token: number;\n};\n\ntype MessageTypeC2W = RegisterServiceWorkerMessage | CookieMessage;\ntype MessageTypeW2C = CookieMessage;\n\n// c2w: client to (service) worker\nexport type MessageC2W = MessageCommon & MessageTypeC2W;\nexport type MessageW2C = MessageCommon & MessageTypeW2C;\n"],"names":["severity","message","args","old","Error","_","stack","fmt","i","Math","e","fn","console","FakeServiceWorker","handle","origin","MessageChannel","event","data","cb","request","token","Array","transfer","r","Promise","resolve","Response","self","COMMITHASH","VERSION","flagEnabled","flag","url","value","$scramjet","regex","partialflags","RegExp","nativeFunction","Function","BareClient","ScramjetHeaders","BareMuxConnection","rewriteUrl","unrewriteUrl","rewriteBlob","unrewriteBlob","rewriteCss","unrewriteCss","rewriteHtml","unrewriteHtml","rewriteSrcset","rewriteJs","rewriteHeaders","rewriteWorkers","htmlRules","CookieStore","newmeta","handleFetch","client","urlParam","URLSearchParams","URL","requesturl","workertype","body","dataurl","response","fetch","rewriteBody","headers","Object","crossOriginIsolated","activeWorker","w","key","clientURL","cookies","ev","ScramjetRequestEvent","handleResponse","err","errorDetails","Date","undefined","renderError","fetchedURL","errorTemplate","trace","script","JSON","location","encodeURIComponent","String","destination","cookieStore","swtarget","responseBody","responseHeaders","maybeHeaders","cookie","header","type","filename","ScramjetHandleResponseEvent","meta","Event","status","statusText","rawResponse","method","requestHeaders","ScramjetServiceWorker","EventTarget","db","indexedDB","store","tx","res","dbg","addEventListener","reject","config","clientId"],"mappings":"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"} \ No newline at end of file