{"version":3,"file":"index-MkVSshrN.cjs","sources":["../../node_modules/@mux/upchunk/dist/upchunk.mjs","../../node_modules/@rrweb/record/dist/record.js","../../src/constants/sprigEvents.ts","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../src/helpers/BreadcrumbsLogger.ts","../../src/helpers/conflicting_widgets/intercom.ts","../../src/helpers/conflicting_widgets/index.ts","../../node_modules/strict-event-emitter/lib/index.mjs","../../src/helpers/eventEmitter.ts","../../src/helpers/general.ts","../../src/helpers/Deferred.ts","../../src/modules/moduleRegistry.ts","../../src/helpers/network.ts","../../src/controller/shared.ts","../../src/constants/css.ts","../../src/controller/iframe.ts","../../src/controller/constants.ts","../../src/controller/urlMatcher.ts","../../src/helpers/typeguards.ts","../../src/helpers/document.ts","../../src/controller/feedback.ts","../../src/controller/LaunchDarklyIntegration.ts","../../src/controller/OptimizelyIntegration.ts","../../src/controller/Queue.ts","../../src/helpers/metrics/performanceMetric.ts","../../src/helpers/metrics/metricsReporter.ts","../../src/helpers/metrics/domMetrics.ts","../../src/helpers/metrics/eventQueueLatencyMetric.ts","../../src/helpers/metrics/mutationMetrics.ts","../../src/helpers/metrics/index.ts","../../src/controller/controller.ts","../../sprig-browser/core.ts","../../node_modules/@rrweb/types/dist/types.js","../../node_modules/idb/build/index.js","../../src/modules/replay/iframeManager.ts","../../src/modules/replay/network.ts","../../src/modules/replay/semaphore.ts","../../src/modules/replay/getXPath.ts","../../src/modules/replay/utils.ts","../../src/modules/replay/userEventObserver.ts","../../src/modules/replay/replayStorageHelpers.ts","../../src/modules/replay/ReplayStorage.ts","../../src/modules/replay/alwaysOnController.ts","../../src/helpers/metrics/timedActionMetric.ts","../../src/modules/replay/replayController.ts","../../sprig-browser/replay.ts","../index.ts"],"sourcesContent":["var xe=Object.create;var q=Object.defineProperty;var Ue=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var Ne=Object.getPrototypeOf,De=Object.prototype.hasOwnProperty;var R=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Me=(t,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of Fe(e))!De.call(t,i)&&i!==n&&q(t,i,{get:()=>e[i],enumerable:!(r=Ue(e,i))||r.enumerable});return t};var Xe=(t,e,n)=>(n=t!=null?xe(Ne(t)):{},Me(e||!t||!t.__esModule?q(n,\"default\",{value:t,enumerable:!0}):n,t));var Ce=R((Rt,ye)=>{var T;typeof window!=\"undefined\"?T=window:typeof global!=\"undefined\"?T=global:typeof self!=\"undefined\"?T=self:T={};ye.exports=T});var Se=R((Tt,Ee)=>{Ee.exports=ut;var ot=Object.prototype.toString;function ut(t){if(!t)return!1;var e=ot.call(t);return e===\"[object Function]\"||typeof t==\"function\"&&e!==\"[object RegExp]\"||typeof window!=\"undefined\"&&(t===window.setTimeout||t===window.alert||t===window.confirm||t===window.prompt)}});var ve=R((zt,ke)=>{var M=function(t){return t.replace(/^\\s+|\\s+$/g,\"\")},lt=function(t){return Object.prototype.toString.call(t)===\"[object Array]\"};ke.exports=function(t){if(!t)return{};for(var e={},n=M(t).split(`\n`),r=0;r<n.length;r++){var i=n[r],a=i.indexOf(\":\"),o=M(i.slice(0,a)).toLowerCase(),s=M(i.slice(a+1));typeof e[o]==\"undefined\"?e[o]=s:lt(e[o])?e[o].push(s):e[o]=[e[o],s]}return e}});var Re=R((Pt,we)=>{we.exports=ht;var ct=Object.prototype.hasOwnProperty;function ht(){for(var t={},e=0;e<arguments.length;e++){var n=arguments[e];for(var r in n)ct.call(n,r)&&(t[r]=n[r])}return t}});var _e=R((_t,X)=>{\"use strict\";var Te=Ce(),pt=Se(),dt=ve(),ft=Re();X.exports=C;X.exports.default=C;C.XMLHttpRequest=Te.XMLHttpRequest||yt;C.XDomainRequest=\"withCredentials\"in new C.XMLHttpRequest?C.XMLHttpRequest:Te.XDomainRequest;mt([\"get\",\"put\",\"post\",\"patch\",\"head\",\"delete\"],function(t){C[t===\"delete\"?\"del\":t]=function(e,n,r){return n=ze(e,n,r),n.method=t.toUpperCase(),Pe(n)}});function mt(t,e){for(var n=0;n<t.length;n++)e(t[n])}function gt(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function ze(t,e,n){var r=t;return pt(e)?(n=e,typeof t==\"string\"&&(r={uri:t})):r=ft(e,{uri:t}),r.callback=n,r}function C(t,e,n){return e=ze(t,e,n),Pe(e)}function Pe(t){if(typeof t.callback==\"undefined\")throw new Error(\"callback argument missing\");var e=!1,n=function(S,P,Be){e||(e=!0,t.callback(S,P,Be))};function r(){s.readyState===4&&setTimeout(o,0)}function i(){var u=void 0;if(s.response?u=s.response:u=s.responseText||bt(s),$)try{u=JSON.parse(u)}catch{}return u}function a(u){return clearTimeout(L),u instanceof Error||(u=new Error(\"\"+(u||\"Unknown XMLHttpRequest Error\"))),u.statusCode=0,n(u,V)}function o(){if(!h){var u;clearTimeout(L),t.useXDR&&s.status===void 0?u=200:u=s.status===1223?204:s.status;var S=V,P=null;return u!==0?(S={body:i(),statusCode:u,method:d,headers:{},url:p,rawRequest:s},s.getAllResponseHeaders&&(S.headers=dt(s.getAllResponseHeaders()))):P=new Error(\"Internal XMLHttpRequest Error\"),n(P,S,S.body)}}var s=t.xhr||null;s||(t.cors||t.useXDR?s=new C.XDomainRequest:s=new C.XMLHttpRequest);var c,h,p=s.url=t.uri||t.url,d=s.method=t.method||\"GET\",y=t.body||t.data,f=s.headers=t.headers||{},I=!!t.sync,$=!1,L,V={body:void 0,headers:{},statusCode:0,method:d,url:p,rawRequest:s};if(\"json\"in t&&t.json!==!1&&($=!0,f.accept||f.Accept||(f.Accept=\"application/json\"),d!==\"GET\"&&d!==\"HEAD\"&&(f[\"content-type\"]||f[\"Content-Type\"]||(f[\"Content-Type\"]=\"application/json\"),y=JSON.stringify(t.json===!0?y:t.json))),s.onreadystatechange=r,s.onload=o,s.onerror=a,s.onprogress=function(){},s.onabort=function(){h=!0},s.ontimeout=a,s.open(d,p,!I,t.username,t.password),I||(s.withCredentials=!!t.withCredentials),!I&&t.timeout>0&&(L=setTimeout(function(){if(!h){h=!0,s.abort(\"timeout\");var u=new Error(\"XMLHttpRequest timeout\");u.code=\"ETIMEDOUT\",a(u)}},t.timeout)),s.setRequestHeader)for(c in f)f.hasOwnProperty(c)&&s.setRequestHeader(c,f[c]);else if(t.headers&&!gt(t.headers))throw new Error(\"Headers cannot be set on an XDomainRequest object\");return\"responseType\"in t&&(s.responseType=t.responseType),\"beforeSend\"in t&&typeof t.beforeSend==\"function\"&&t.beforeSend(s),s.send(y||null),s}function bt(t){try{if(t.responseType===\"document\")return t.responseXML;var e=t.responseXML&&t.responseXML.documentElement.nodeName===\"parsererror\";if(t.responseType===\"\"&&!e)return t.responseXML}catch{}return null}function yt(){}});function D(t,e,...n){if(!t)throw new TypeError(ie(e,n))}function ie(t,e){let n=0;return t.replace(/%[os]/gu,()=>se(e[n++]))}function se(t){return typeof t!=\"object\"||t===null?String(t):Object.prototype.toString.call(t)}var G;function He(t){try{let e=t instanceof Error?t:new Error(se(t));if(G){G(e);return}if(typeof dispatchEvent==\"function\"&&typeof ErrorEvent==\"function\")dispatchEvent(new ErrorEvent(\"error\",{error:e,message:e.message}));else if(typeof process!=\"undefined\"&&typeof process.emit==\"function\"){process.emit(\"uncaughtException\",e);return}console.error(e)}catch{}}var m=typeof window!=\"undefined\"?window:typeof self!=\"undefined\"?self:typeof global!=\"undefined\"?global:typeof globalThis!=\"undefined\"?globalThis:void 0,Y;var g=class{constructor(e,n){this.code=e,this.message=n}warn(...e){var n;try{if(Y){Y({...this,args:e});return}let r=((n=new Error().stack)!==null&&n!==void 0?n:\"\").replace(/^(?:.+?\\n){2}/gu,`\n`);console.warn(this.message,...e,r)}catch{}}},je=new g(\"W01\",\"Unable to initialize event under dispatching.\"),We=new g(\"W02\",\"Assigning any falsy value to 'cancelBubble' property has no effect.\"),$e=new g(\"W03\",\"Assigning any truthy value to 'returnValue' property has no effect.\"),Ve=new g(\"W04\",\"Unable to preventDefault on non-cancelable events.\"),qe=new g(\"W05\",\"Unable to preventDefault inside passive event listener invocation.\"),Ge=new g(\"W06\",\"An event listener wasn't added because it has been added already: %o, %o\"),B=new g(\"W07\",\"The %o option value was abandoned because the event listener wasn't added as duplicated.\"),K=new g(\"W08\",\"The 'callback' argument must be a function or an object that has 'handleEvent' method: %o\"),vt=new g(\"W09\",\"Event attribute handler must be a function: %o\"),b=class{static get NONE(){return Z}static get CAPTURING_PHASE(){return J}static get AT_TARGET(){return Q}static get BUBBLING_PHASE(){return ee}constructor(e,n){Object.defineProperty(this,\"isTrusted\",{value:!1,enumerable:!0});let r=n!=null?n:{};N.set(this,{type:String(e),bubbles:Boolean(r.bubbles),cancelable:Boolean(r.cancelable),composed:Boolean(r.composed),target:null,currentTarget:null,stopPropagationFlag:!1,stopImmediatePropagationFlag:!1,canceledFlag:!1,inPassiveListenerFlag:!1,dispatchFlag:!1,timeStamp:Date.now()})}get type(){return l(this).type}get target(){return l(this).target}get srcElement(){return l(this).target}get currentTarget(){return l(this).currentTarget}composedPath(){let e=l(this).currentTarget;return e?[e]:[]}get NONE(){return Z}get CAPTURING_PHASE(){return J}get AT_TARGET(){return Q}get BUBBLING_PHASE(){return ee}get eventPhase(){return l(this).dispatchFlag?2:0}stopPropagation(){l(this).stopPropagationFlag=!0}get cancelBubble(){return l(this).stopPropagationFlag}set cancelBubble(e){e?l(this).stopPropagationFlag=!0:We.warn()}stopImmediatePropagation(){let e=l(this);e.stopPropagationFlag=e.stopImmediatePropagationFlag=!0}get bubbles(){return l(this).bubbles}get cancelable(){return l(this).cancelable}get returnValue(){return!l(this).canceledFlag}set returnValue(e){e?$e.warn():te(l(this))}preventDefault(){te(l(this))}get defaultPrevented(){return l(this).canceledFlag}get composed(){return l(this).composed}get isTrusted(){return!1}get timeStamp(){return l(this).timeStamp}initEvent(e,n=!1,r=!1){let i=l(this);if(i.dispatchFlag){je.warn();return}N.set(this,{...i,type:String(e),bubbles:Boolean(n),cancelable:Boolean(r),target:null,currentTarget:null,stopPropagationFlag:!1,stopImmediatePropagationFlag:!1,canceledFlag:!1})}},Z=0,J=1,Q=2,ee=3,N=new WeakMap;function l(t,e=\"this\"){let n=N.get(t);return D(n!=null,\"'%s' must be an object that Event constructor created, but got another one: %o\",e,t),n}function te(t){if(t.inPassiveListenerFlag){qe.warn();return}if(!t.cancelable){Ve.warn();return}t.canceledFlag=!0}Object.defineProperty(b,\"NONE\",{enumerable:!0});Object.defineProperty(b,\"CAPTURING_PHASE\",{enumerable:!0});Object.defineProperty(b,\"AT_TARGET\",{enumerable:!0});Object.defineProperty(b,\"BUBBLING_PHASE\",{enumerable:!0});var x=Object.getOwnPropertyNames(b.prototype);for(let t=0;t<x.length;++t)x[t]!==\"constructor\"&&Object.defineProperty(b.prototype,x[t],{enumerable:!0});typeof m!=\"undefined\"&&typeof m.Event!=\"undefined\"&&Object.setPrototypeOf(b.prototype,m.Event.prototype);function Ye(t){return m.DOMException?new m.DOMException(t,\"InvalidStateError\"):(v==null&&(v=class ae extends Error{constructor(n){super(n),Error.captureStackTrace&&Error.captureStackTrace(this,ae)}get code(){return 11}get name(){return\"InvalidStateError\"}},Object.defineProperties(v.prototype,{code:{enumerable:!0},name:{enumerable:!0}}),re(v),re(v.prototype)),new v(t))}var v,ne={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};function re(t){let e=Object.keys(ne);for(let n=0;n<e.length;++n){let r=e[n],i=ne[r];Object.defineProperty(t,r,{get(){return i},configurable:!0,enumerable:!0})}}var w=class extends b{static wrap(e){return new(ue(e))(e)}constructor(e){super(e.type,{bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed}),e.cancelBubble&&super.stopPropagation(),e.defaultPrevented&&super.preventDefault(),oe.set(this,{original:e});let n=Object.keys(e);for(let r=0;r<n.length;++r){let i=n[r];i in this||Object.defineProperty(this,i,le(e,i))}}stopPropagation(){super.stopPropagation();let{original:e}=E(this);\"stopPropagation\"in e&&e.stopPropagation()}get cancelBubble(){return super.cancelBubble}set cancelBubble(e){super.cancelBubble=e;let{original:n}=E(this);\"cancelBubble\"in n&&(n.cancelBubble=e)}stopImmediatePropagation(){super.stopImmediatePropagation();let{original:e}=E(this);\"stopImmediatePropagation\"in e&&e.stopImmediatePropagation()}get returnValue(){return super.returnValue}set returnValue(e){super.returnValue=e;let{original:n}=E(this);\"returnValue\"in n&&(n.returnValue=e)}preventDefault(){super.preventDefault();let{original:e}=E(this);\"preventDefault\"in e&&e.preventDefault()}get timeStamp(){let{original:e}=E(this);return\"timeStamp\"in e?e.timeStamp:super.timeStamp}},oe=new WeakMap;function E(t){let e=oe.get(t);return D(e!=null,\"'this' is expected an Event object, but got\",t),e}var _=new WeakMap;_.set(Object.prototype,w);typeof m!=\"undefined\"&&typeof m.Event!=\"undefined\"&&_.set(m.Event.prototype,w);function ue(t){let e=Object.getPrototypeOf(t);if(e==null)return w;let n=_.get(e);return n==null&&(n=Ke(ue(e),e),_.set(e,n)),n}function Ke(t,e){class n extends t{}let r=Object.keys(e);for(let i=0;i<r.length;++i)Object.defineProperty(n.prototype,r[i],le(e,r[i]));return n}function le(t,e){let n=Object.getOwnPropertyDescriptor(t,e);return{get(){let r=E(this).original,i=r[e];return typeof i==\"function\"?i.bind(r):i},set(r){let i=E(this).original;i[e]=r},configurable:n.configurable,enumerable:n.enumerable}}function Ze(t,e,n,r,i,a){return{callback:t,flags:(e?1:0)|(n?2:0)|(r?4:0),signal:i,signalListener:a}}function Je(t){t.flags|=8}function ce(t){return(t.flags&1)===1}function he(t){return(t.flags&2)===2}function pe(t){return(t.flags&4)===4}function Qe(t){return(t.flags&8)===8}function et({callback:t},e,n){try{typeof t==\"function\"?t.call(e,n):typeof t.handleEvent==\"function\"&&t.handleEvent(n)}catch(r){He(r)}}function de({listeners:t},e,n){for(let r=0;r<t.length;++r)if(t[r].callback===e&&ce(t[r])===n)return r;return-1}function tt(t,e,n,r,i,a){let o;a&&(o=fe.bind(null,t,e,n),a.addEventListener(\"abort\",o));let s=Ze(e,n,r,i,a,o);return t.cow?(t.cow=!1,t.listeners=[...t.listeners,s]):t.listeners.push(s),s}function fe(t,e,n){let r=de(t,e,n);return r!==-1?me(t,r):!1}function me(t,e,n=!1){let r=t.listeners[e];return Je(r),r.signal&&r.signal.removeEventListener(\"abort\",r.signalListener),t.cow&&!n?(t.cow=!1,t.listeners=t.listeners.filter((i,a)=>a!==e),!1):(t.listeners.splice(e,1),!0)}function nt(){return Object.create(null)}function rt(t,e){var n;return(n=t[e])!==null&&n!==void 0?n:t[e]={attrCallback:void 0,attrListener:void 0,cow:!1,listeners:[]}}var k=class{constructor(){ge.set(this,nt())}addEventListener(e,n,r){let i=U(this),{callback:a,capture:o,once:s,passive:c,signal:h,type:p}=it(e,n,r);if(a==null||(h==null?void 0:h.aborted))return;let d=rt(i,p),y=de(d,a,o);if(y!==-1){at(d.listeners[y],c,s,h);return}tt(d,a,o,c,s,h)}removeEventListener(e,n,r){let i=U(this),{callback:a,capture:o,type:s}=st(e,n,r),c=i[s];a!=null&&c&&fe(c,a,o)}dispatchEvent(e){let n=U(this)[String(e.type)];if(n==null)return!0;let r=e instanceof b?e:w.wrap(e),i=l(r,\"event\");if(i.dispatchFlag)throw Ye(\"This event has been in dispatching.\");if(i.dispatchFlag=!0,i.target=i.currentTarget=this,!i.stopPropagationFlag){let{cow:a,listeners:o}=n;n.cow=!0;for(let s=0;s<o.length;++s){let c=o[s];if(!Qe(c)&&(pe(c)&&me(n,s,!a)&&(s-=1),i.inPassiveListenerFlag=he(c),et(c,this,r),i.inPassiveListenerFlag=!1,i.stopImmediatePropagationFlag))break}a||(n.cow=!1)}return i.target=null,i.currentTarget=null,i.stopImmediatePropagationFlag=!1,i.stopPropagationFlag=!1,i.dispatchFlag=!1,!i.canceledFlag}},ge=new WeakMap;function U(t,e=\"this\"){let n=ge.get(t);return D(n!=null,\"'%s' must be an object that EventTarget constructor created, but got another one: %o\",e,t),n}function it(t,e,n){var r;return be(e),typeof n==\"object\"&&n!==null?{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n.capture),passive:Boolean(n.passive),once:Boolean(n.once),signal:(r=n.signal)!==null&&r!==void 0?r:void 0}:{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n),passive:!1,once:!1,signal:void 0}}function st(t,e,n){return be(e),typeof n==\"object\"&&n!==null?{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n.capture)}:{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n)}}function be(t){if(!(typeof t==\"function\"||typeof t==\"object\"&&t!==null&&typeof t.handleEvent==\"function\")){if(t==null||typeof t==\"object\"){K.warn(t);return}throw new TypeError(ie(K.message,[t]))}}function at(t,e,n,r){Ge.warn(ce(t)?\"capture\":\"bubble\",t.callback),he(t)!==e&&B.warn(\"passive\"),pe(t)!==n&&B.warn(\"once\"),t.signal!==r&&B.warn(\"signal\")}var F=Object.getOwnPropertyNames(k.prototype);for(let t=0;t<F.length;++t)F[t]!==\"constructor\"&&Object.defineProperty(k.prototype,F[t],{enumerable:!0});typeof m!=\"undefined\"&&typeof m.EventTarget!=\"undefined\"&&Object.setPrototypeOf(k.prototype,m.EventTarget.prototype);var Ae=Xe(_e()),Oe=30720,A=512e3,O=256,H=(t,{minChunkSize:e=O,maxChunkSize:n=A}={})=>t==null||typeof t==\"number\"&&t>=256&&t%256===0&&t>=e&&t<=n,j=(t,{minChunkSize:e=O,maxChunkSize:n=A}={})=>new TypeError(`chunkSize ${t} must be a positive number in multiples of 256, between ${e} and ${n}`),W=class{constructor(e,n={}){this.readableStream=e;var r,i,a;if(!H(n.defaultChunkSize,n))throw j(n.defaultChunkSize,n);this.defaultChunkSize=(r=n.defaultChunkSize)!=null?r:Oe,this.minChunkSize=(i=n.minChunkSize)!=null?i:O,this.maxChunkSize=(a=n.maxChunkSize)!=null?a:A}get chunkSize(){var e;return(e=this._chunkSize)!=null?e:this.defaultChunkSize}set chunkSize(e){if(!H(e,this))throw j(e,this);this._chunkSize=e}get chunkByteSize(){return this.chunkSize*1024}async*[Symbol.asyncIterator](){let e,n=this.readableStream.getReader();try{for(;;){let{done:r,value:i}=await n.read();if(r){if(e){let o=e;e=void 0,yield o}break}let a=i instanceof Uint8Array?new Blob([i],{type:\"application/octet-stream\"}):i;for(e=e?new Blob([e,a]):a;e;)if(e.size===this.chunkByteSize){let o=e;e=void 0,yield o;break}else{if(e.size<this.chunkByteSize)break;{let o=e.slice(0,this.chunkByteSize);e=e.slice(this.chunkByteSize),yield o}}}}finally{if(e){let r=e;e=void 0,yield r}n.releaseLock();return}}},Ct=[200,201,202,204,308],Ie=[408,502,503,504],Le=(t,e)=>!!t&&Ct.includes(t.statusCode),Et=(t,{retryCodes:e=Ie})=>!t||e.includes(t.statusCode),St=(t,e)=>e.attemptCount>=e.attempts||!(Le(t)||Et(t,e)),z=class{static createUpload(e){return new z(e)}constructor(e){this.endpoint=e.endpoint,this.file=e.file,this.headers=e.headers||{},this.method=e.method||\"PUT\",this.attempts=e.attempts||5,this.delayBeforeAttempt=e.delayBeforeAttempt||1,this.retryCodes=e.retryCodes||Ie,this.dynamicChunkSize=e.dynamicChunkSize||!1,this.maxFileBytes=(e.maxFileSize||0)*1024,this.chunkCount=0,this.attemptCount=0,this.offline=!1,this._paused=!1,this.success=!1,this.nextChunkRangeStart=0,this.chunkedStreamIterable=new W(this.file.stream(),{...e,defaultChunkSize:e.chunkSize}),this.chunkedStreamIterator=this.chunkedStreamIterable[Symbol.asyncIterator](),this.totalChunks=Math.ceil(this.file.size/this.chunkByteSize),this.eventTarget=new k,this.validateOptions(),this.getEndpoint().then(()=>this.sendChunks()),typeof window!=\"undefined\"&&(window.addEventListener(\"online\",()=>{!this.offline||(this.offline=!1,this.dispatch(\"online\"),this.sendChunks())}),window.addEventListener(\"offline\",()=>{this.offline=!0,this.dispatch(\"offline\")}))}get maxChunkSize(){var e,n;return(n=(e=this.chunkedStreamIterable)==null?void 0:e.maxChunkSize)!=null?n:A}get minChunkSize(){var e,n;return(n=(e=this.chunkedStreamIterable)==null?void 0:e.minChunkSize)!=null?n:O}get chunkSize(){var e,n;return(n=(e=this.chunkedStreamIterable)==null?void 0:e.chunkSize)!=null?n:Oe}set chunkSize(e){this.chunkedStreamIterable.chunkSize=e}get chunkByteSize(){return this.chunkedStreamIterable.chunkByteSize}get totalChunkSize(){return Math.ceil(this.file.size/this.chunkByteSize)}on(e,n){this.eventTarget.addEventListener(e,n)}once(e,n){this.eventTarget.addEventListener(e,n,{once:!0})}off(e,n){this.eventTarget.removeEventListener(e,n)}get paused(){return this._paused}abort(){var e;this.pause(),(e=this.currentXhr)==null||e.abort()}pause(){this._paused=!0}resume(){this._paused&&(this._paused=!1,this.sendChunks())}dispatch(e,n){let r=new CustomEvent(e,{detail:n});this.eventTarget.dispatchEvent(r)}validateOptions(){if(!this.endpoint||typeof this.endpoint!=\"function\"&&typeof this.endpoint!=\"string\")throw new TypeError(\"endpoint must be defined as a string or a function that returns a promise\");if(!(this.file instanceof File))throw new TypeError(\"file must be a File object\");if(this.headers&&typeof this.headers!=\"function\"&&typeof this.headers!=\"object\")throw new TypeError(\"headers must be null, an object, or a function that returns an object or a promise\");if(!H(this.chunkSize,{maxChunkSize:this.maxChunkSize,minChunkSize:this.minChunkSize}))throw j(this.chunkSize,{maxChunkSize:this.maxChunkSize,minChunkSize:this.minChunkSize});if(this.maxChunkSize&&(typeof this.maxChunkSize!=\"number\"||this.maxChunkSize<256||this.maxChunkSize%256!==0||this.maxChunkSize<this.chunkSize||this.maxChunkSize<this.minChunkSize))throw new TypeError(`maxChunkSize must be a positive number in multiples of 256, and larger than or equal to both ${this.minChunkSize} and ${this.chunkSize}`);if(this.minChunkSize&&(typeof this.minChunkSize!=\"number\"||this.minChunkSize<256||this.minChunkSize%256!==0||this.minChunkSize>this.chunkSize||this.minChunkSize>this.maxChunkSize))throw new TypeError(`minChunkSize must be a positive number in multiples of 256, and smaller than ${this.chunkSize} and ${this.maxChunkSize}`);if(this.maxFileBytes>0&&this.maxFileBytes<this.file.size)throw new Error(`file size exceeds maximum (${this.file.size} > ${this.maxFileBytes})`);if(this.attempts&&(typeof this.attempts!=\"number\"||this.attempts<=0))throw new TypeError(\"retries must be a positive number\");if(this.delayBeforeAttempt&&(typeof this.delayBeforeAttempt!=\"number\"||this.delayBeforeAttempt<0))throw new TypeError(\"delayBeforeAttempt must be a positive number\")}getEndpoint(){return typeof this.endpoint==\"string\"?(this.endpointValue=this.endpoint,Promise.resolve(this.endpoint)):this.endpoint(this.file).then(e=>(this.endpointValue=e,this.endpointValue))}xhrPromise(e){let n=r=>{r.upload.onprogress=i=>{var p;let a=this.totalChunks-this.chunkCount,o=(this.file.size-this.nextChunkRangeStart)/this.file.size/a,s=this.nextChunkRangeStart/this.file.size,h=i.loaded/((p=i.total)!=null?p:this.chunkByteSize)*o;this.dispatch(\"progress\",Math.min((s+h)*100,100))}};return new Promise((r,i)=>{this.currentXhr=(0,Ae.default)({...e,beforeSend:n},(a,o)=>(this.currentXhr=void 0,a?i(a):r(o)))})}async sendChunk(e){let n=this.nextChunkRangeStart,r=n+e.size-1,a={...await(typeof this.headers==\"function\"?this.headers():this.headers),\"Content-Type\":this.file.type,\"Content-Range\":`bytes ${n}-${r}/${this.file.size}`};return this.dispatch(\"attempt\",{chunkNumber:this.chunkCount,totalChunks:this.totalChunks,chunkSize:this.chunkSize}),this.xhrPromise({headers:a,url:this.endpointValue,method:this.method,body:e})}async sendChunkWithRetries(e){let n=async(s,c)=>{var d;let p=(new Date().getTime()-this.lastChunkStart.getTime())/1e3;if(this.dispatch(\"chunkSuccess\",{chunk:this.chunkCount,chunkSize:this.chunkSize,attempts:this.attemptCount,timeInterval:p,response:s}),this.attemptCount=0,this.chunkCount=((d=this.chunkCount)!=null?d:0)+1,this.nextChunkRangeStart=this.nextChunkRangeStart+this.chunkByteSize,this.dynamicChunkSize){let y=this.chunkSize;p<10?y=Math.min(this.chunkSize*2,this.maxChunkSize):p>30&&(y=Math.max(this.chunkSize/2,this.minChunkSize)),this.chunkSize=Math.ceil(y/256)*256;let f=(this.file.size-this.nextChunkRangeStart)/this.chunkByteSize;this.totalChunks=Math.ceil(this.chunkCount+f)}return!0},r=async(s,c)=>(this.dispatch(\"error\",{message:`Server responded with ${s.statusCode}. Stopping upload.`,chunk:this.chunkCount,attempts:this.attemptCount}),!1),i=async(s,c)=>(this.dispatch(\"attemptFailure\",{message:`An error occured uploading chunk ${this.chunkCount}. ${this.attempts-this.attemptCount} retries left.`,chunkNumber:this.chunkCount,attemptsLeft:this.attempts-this.attemptCount}),new Promise(h=>{setTimeout(async()=>{if(this._paused||this.offline){this.pendingChunk=e,h(!1);return}let p=await this.sendChunkWithRetries(e);h(p)},this.delayBeforeAttempt*1e3)})),a;try{this.attemptCount=this.attemptCount+1,this.lastChunkStart=new Date,a=await this.sendChunk(e)}catch{}let o={retryCodes:this.retryCodes,attemptCount:this.attemptCount,attempts:this.attempts};return Le(a,o)?n(a,e):St(a,o)?r(a,e):i(a,e)}async sendChunks(){if(this.pendingChunk&&!(this._paused||this.offline)){let e=this.pendingChunk;this.pendingChunk=void 0;let n=await this.sendChunkWithRetries(e);this.success&&n&&this.dispatch(\"success\")}for(;!(this.success||this._paused||this.offline);){let{value:e,done:n}=await this.chunkedStreamIterator.next(),r=!e&&n;if(e&&(r=await this.sendChunkWithRetries(e)),this.success=!!n,this.success&&r&&this.dispatch(\"success\"),!r)return}}},It=z.createUpload;export{W as ChunkedStreamIterable,z as UpChunk,It as createUpload,j as getChunkSizeError,H as isValidChunkSize};\n//# sourceMappingURL=upchunk.mjs.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$2 = /* @__PURE__ */ ((NodeType2) => {\n  NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n  NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n  NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n  NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n  NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n  NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n  return NodeType2;\n})(NodeType$2 || {});\nconst testableAccessors$1 = {\n  Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n  ShadowRoot: [\"host\", \"styleSheets\"],\n  Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n  MutationObserver: []\n};\nconst testableMethods$1 = {\n  Node: [\"contains\", \"getRootNode\"],\n  ShadowRoot: [\"getSelection\"],\n  Element: [],\n  MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nfunction getUntaintedPrototype$1(key) {\n  if (untaintedBasePrototype$1[key])\n    return untaintedBasePrototype$1[key];\n  const defaultObj = globalThis[key];\n  const defaultPrototype = defaultObj.prototype;\n  const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n  const isUntaintedAccessors = Boolean(\n    accessorNames && // @ts-expect-error 2345\n    accessorNames.every(\n      (accessor) => {\n        var _a2, _b;\n        return Boolean(\n          (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n        );\n      }\n    )\n  );\n  const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n  const isUntaintedMethods = Boolean(\n    methodNames && methodNames.every(\n      // @ts-expect-error 2345\n      (method) => {\n        var _a2;\n        return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n      }\n    )\n  );\n  if (isUntaintedAccessors && isUntaintedMethods) {\n    untaintedBasePrototype$1[key] = defaultObj.prototype;\n    return defaultObj.prototype;\n  }\n  try {\n    const iframeEl = document.createElement(\"iframe\");\n    document.body.appendChild(iframeEl);\n    const win = iframeEl.contentWindow;\n    if (!win) return defaultObj.prototype;\n    const untaintedObject = win[key].prototype;\n    document.body.removeChild(iframeEl);\n    if (!untaintedObject) return defaultPrototype;\n    return untaintedBasePrototype$1[key] = untaintedObject;\n  } catch {\n    return defaultPrototype;\n  }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n  var _a2;\n  const cacheKey = `${key}.${String(accessor)}`;\n  if (untaintedAccessorCache$1[cacheKey])\n    return untaintedAccessorCache$1[cacheKey].call(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype$1(key);\n  const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n    untaintedPrototype,\n    accessor\n  )) == null ? void 0 : _a2.get;\n  if (!untaintedAccessor) return instance[accessor];\n  untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n  return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n  const cacheKey = `${key}.${String(method)}`;\n  if (untaintedMethodCache$1[cacheKey])\n    return untaintedMethodCache$1[cacheKey].bind(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype$1(key);\n  const untaintedMethod = untaintedPrototype[method];\n  if (typeof untaintedMethod !== \"function\") return instance[method];\n  untaintedMethodCache$1[cacheKey] = untaintedMethod;\n  return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n  return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n  return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n  return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n  if (!n2 || !(\"host\" in n2)) return null;\n  return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n  return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n  if (!n2 || !(\"shadowRoot\" in n2)) return null;\n  return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n  return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n  return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n  return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nconst index$1 = {\n  childNodes: childNodes$1,\n  parentNode: parentNode$1,\n  parentElement: parentElement$1,\n  textContent: textContent$1,\n  contains: contains$1,\n  getRootNode: getRootNode$1,\n  host: host$1,\n  styleSheets: styleSheets$1,\n  shadowRoot: shadowRoot$1,\n  querySelector: querySelector$1,\n  querySelectorAll: querySelectorAll$1,\n  mutationObserver: mutationObserverCtor$1\n};\nfunction isElement(n2) {\n  return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n  const hostEl = (\n    // anchor and textarea elements also have a `host` property\n    // but only shadow roots have a `mode` property\n    n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n  );\n  return Boolean(\n    hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n  );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n  return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n  if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n    cssText = cssText.replace(\n      /\\sbackground-clip:\\s*text;/g,\n      \" -webkit-background-clip: text; background-clip: text;\"\n    );\n  }\n  return cssText;\n}\nfunction escapeImportStatement(rule2) {\n  const { cssText } = rule2;\n  if (cssText.split('\"').length < 3) return cssText;\n  const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n  if (rule2.layerName === \"\") {\n    statement.push(`layer`);\n  } else if (rule2.layerName) {\n    statement.push(`layer(${rule2.layerName})`);\n  }\n  if (rule2.supportsText) {\n    statement.push(`supports(${rule2.supportsText})`);\n  }\n  if (rule2.media.length) {\n    statement.push(rule2.media.mediaText);\n  }\n  return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n  try {\n    const rules2 = s2.rules || s2.cssRules;\n    if (!rules2) {\n      return null;\n    }\n    const stringifiedRules = Array.from(\n      rules2,\n      (rule2) => stringifyRule(rule2, s2.href)\n    ).join(\"\");\n    return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n  } catch (error) {\n    return null;\n  }\n}\nfunction stringifyRule(rule2, sheetHref) {\n  if (isCSSImportRule(rule2)) {\n    let importStringified;\n    try {\n      importStringified = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      escapeImportStatement(rule2);\n    } catch (error) {\n      importStringified = rule2.cssText;\n    }\n    if (rule2.styleSheet.href) {\n      return absolutifyURLs(importStringified, rule2.styleSheet.href);\n    }\n    return importStringified;\n  } else {\n    let ruleStringified = rule2.cssText;\n    if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n      ruleStringified = fixSafariColons(ruleStringified);\n    }\n    if (sheetHref) {\n      return absolutifyURLs(ruleStringified, sheetHref);\n    }\n    return ruleStringified;\n  }\n}\nfunction fixSafariColons(cssStringified) {\n  const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n  return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n  return \"selectorText\" in rule2;\n}\nclass Mirror {\n  constructor() {\n    __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n2) {\n    var _a2;\n    if (!n2) return -1;\n    const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n    return id ?? -1;\n  }\n  getNode(id) {\n    return this.idNodeMap.get(id) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(n2) {\n    return this.nodeMetaMap.get(n2) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n2) {\n    const id = this.getId(n2);\n    this.idNodeMap.delete(id);\n    if (n2.childNodes) {\n      n2.childNodes.forEach(\n        (childNode) => this.removeNodeFromMap(childNode)\n      );\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node2) {\n    return this.nodeMetaMap.has(node2);\n  }\n  add(n2, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n2);\n    this.nodeMetaMap.set(n2, meta);\n  }\n  replace(id, n2) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n2, meta);\n    }\n    this.idNodeMap.set(id, n2);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction createMirror$2() {\n  return new Mirror();\n}\nfunction maskInputValue({\n  element,\n  maskInputOptions,\n  tagName,\n  type,\n  value,\n  maskInputFn\n}) {\n  let text = value || \"\";\n  const actualType = type && toLowerCase(type);\n  if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n    if (maskInputFn) {\n      text = maskInputFn(text, element);\n    } else {\n      text = \"*\".repeat(text.length);\n    }\n  }\n  return text;\n}\nfunction toLowerCase(str) {\n  return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n  const ctx = canvas.getContext(\"2d\");\n  if (!ctx) return true;\n  const chunkSize = 50;\n  for (let x2 = 0; x2 < canvas.width; x2 += chunkSize) {\n    for (let y = 0; y < canvas.height; y += chunkSize) {\n      const getImageData = ctx.getImageData;\n      const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n      const pixelBuffer = new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        originalGetImageData.call(\n          ctx,\n          x2,\n          y,\n          Math.min(chunkSize, canvas.width - x2),\n          Math.min(chunkSize, canvas.height - y)\n        ).data.buffer\n      );\n      if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n    }\n  }\n  return true;\n}\nfunction getInputType(element) {\n  const type = element.type;\n  return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    toLowerCase(type)\n  ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n  let url;\n  try {\n    url = new URL(path, baseURL ?? window.location.href);\n  } catch (err) {\n    return null;\n  }\n  const regex = /\\.([0-9a-z]+)(?:$)/i;\n  const match = url.pathname.match(regex);\n  return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n  let origin = \"\";\n  if (url.indexOf(\"//\") > -1) {\n    origin = url.split(\"/\").slice(0, 3).join(\"/\");\n  } else {\n    origin = url.split(\"/\")[0];\n  }\n  origin = origin.split(\"?\")[0];\n  return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n  return (cssText || \"\").replace(\n    URL_IN_CSS_REF,\n    (origin, quote1, path1, quote2, path2, path3) => {\n      const filePath = path1 || path2 || path3;\n      const maybeQuote = quote1 || quote2 || \"\";\n      if (!filePath) {\n        return origin;\n      }\n      if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (DATA_URI.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (filePath[0] === \"/\") {\n        return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n      }\n      const stack = href.split(\"/\");\n      const parts = filePath.split(\"/\");\n      stack.pop();\n      for (const part of parts) {\n        if (part === \".\") {\n          continue;\n        } else if (part === \"..\") {\n          stack.pop();\n        } else {\n          stack.push(part);\n        }\n      }\n      return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n    }\n  );\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n  return _id++;\n}\nfunction getValidTagName$1(element) {\n  if (element instanceof HTMLFormElement) {\n    return \"form\";\n  }\n  const processedTagName = toLowerCase(element.tagName);\n  if (tagNameRegex.test(processedTagName)) {\n    return \"div\";\n  }\n  return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n  if (attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  let pos = 0;\n  function collectCharacters(regEx) {\n    let chars2;\n    const match = regEx.exec(attributeValue.substring(pos));\n    if (match) {\n      chars2 = match[0];\n      pos += chars2.length;\n      return chars2;\n    }\n    return \"\";\n  }\n  const output = [];\n  while (true) {\n    collectCharacters(SRCSET_COMMAS_OR_SPACES);\n    if (pos >= attributeValue.length) {\n      break;\n    }\n    let url = collectCharacters(SRCSET_NOT_SPACES);\n    if (url.slice(-1) === \",\") {\n      url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n      output.push(url);\n    } else {\n      let descriptorsStr = \"\";\n      url = absoluteToDoc(doc, url);\n      let inParens = false;\n      while (true) {\n        const c2 = attributeValue.charAt(pos);\n        if (c2 === \"\") {\n          output.push((url + descriptorsStr).trim());\n          break;\n        } else if (!inParens) {\n          if (c2 === \",\") {\n            pos += 1;\n            output.push((url + descriptorsStr).trim());\n            break;\n          } else if (c2 === \"(\") {\n            inParens = true;\n          }\n        } else {\n          if (c2 === \")\") {\n            inParens = false;\n          }\n        }\n        descriptorsStr += c2;\n        pos += 1;\n      }\n    }\n  }\n  return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n  if (!attributeValue || attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n  return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n  let a2 = cachedDocument.get(doc);\n  if (!a2) {\n    a2 = doc.createElement(\"a\");\n    cachedDocument.set(doc, a2);\n  }\n  if (!customHref) {\n    customHref = \"\";\n  } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n    return customHref;\n  }\n  a2.setAttribute(\"href\", customHref);\n  return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n  if (!value) {\n    return value;\n  }\n  if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"srcset\") {\n    return getAbsoluteSrcsetString(doc, value);\n  } else if (name === \"style\") {\n    return absolutifyURLs(value, getHref(doc));\n  } else if (tagName === \"object\" && name === \"data\") {\n    return absoluteToDoc(doc, value);\n  }\n  return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n  return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n  try {\n    if (typeof blockClass === \"string\") {\n      if (element.classList.contains(blockClass)) {\n        return true;\n      }\n    } else {\n      for (let eIndex = element.classList.length; eIndex--; ) {\n        const className = element.classList[eIndex];\n        if (blockClass.test(className)) {\n          return true;\n        }\n      }\n    }\n    if (blockSelector) {\n      return element.matches(blockSelector);\n    }\n  } catch (e2) {\n  }\n  return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n  if (!node2) return false;\n  if (node2.nodeType !== node2.ELEMENT_NODE) {\n    if (!checkAncestors) return false;\n    return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n  }\n  for (let eIndex = node2.classList.length; eIndex--; ) {\n    const className = node2.classList[eIndex];\n    if (regex.test(className)) {\n      return true;\n    }\n  }\n  if (!checkAncestors) return false;\n  return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n  let el;\n  if (isElement(node2)) {\n    el = node2;\n    if (!index$1.childNodes(el).length) {\n      return false;\n    }\n  } else if (index$1.parentElement(node2) === null) {\n    return false;\n  } else {\n    el = index$1.parentElement(node2);\n  }\n  try {\n    if (typeof maskTextClass === \"string\") {\n      if (checkAncestors) {\n        if (el.closest(`.${maskTextClass}`)) return true;\n      } else {\n        if (el.classList.contains(maskTextClass)) return true;\n      }\n    } else {\n      if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n    }\n    if (maskTextSelector) {\n      if (checkAncestors) {\n        if (el.closest(maskTextSelector)) return true;\n      } else {\n        if (el.matches(maskTextSelector)) return true;\n      }\n    }\n  } catch (e2) {\n  }\n  return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n  const win = iframeEl.contentWindow;\n  if (!win) {\n    return;\n  }\n  let fired = false;\n  let readyState;\n  try {\n    readyState = win.document.readyState;\n  } catch (error) {\n    return;\n  }\n  if (readyState !== \"complete\") {\n    const timer = setTimeout(() => {\n      if (!fired) {\n        listener();\n        fired = true;\n      }\n    }, iframeLoadTimeout);\n    iframeEl.addEventListener(\"load\", () => {\n      clearTimeout(timer);\n      fired = true;\n      listener();\n    });\n    return;\n  }\n  const blankUrl = \"about:blank\";\n  if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n    setTimeout(listener, 0);\n    return iframeEl.addEventListener(\"load\", listener);\n  }\n  iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n  let fired = false;\n  let styleSheetLoaded;\n  try {\n    styleSheetLoaded = link.sheet;\n  } catch (error) {\n    return;\n  }\n  if (styleSheetLoaded) return;\n  const timer = setTimeout(() => {\n    if (!fired) {\n      listener();\n      fired = true;\n    }\n  }, styleSheetLoadTimeout);\n  link.addEventListener(\"load\", () => {\n    clearTimeout(timer);\n    fired = true;\n    listener();\n  });\n}\nfunction serializeNode(n2, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false\n  } = options;\n  const rootId = getRootId(doc, mirror2);\n  switch (n2.nodeType) {\n    case n2.DOCUMENT_NODE:\n      if (n2.compatMode !== \"CSS1Compat\") {\n        return {\n          type: NodeType$2.Document,\n          childNodes: [],\n          compatMode: n2.compatMode\n          // probably \"BackCompat\"\n        };\n      } else {\n        return {\n          type: NodeType$2.Document,\n          childNodes: []\n        };\n      }\n    case n2.DOCUMENT_TYPE_NODE:\n      return {\n        type: NodeType$2.DocumentType,\n        name: n2.name,\n        publicId: n2.publicId,\n        systemId: n2.systemId,\n        rootId\n      };\n    case n2.ELEMENT_NODE:\n      return serializeElementNode(n2, {\n        doc,\n        blockClass,\n        blockSelector,\n        inlineStylesheet,\n        maskInputOptions,\n        maskInputFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n        newlyAddedElement,\n        rootId\n      });\n    case n2.TEXT_NODE:\n      return serializeTextNode(n2, {\n        doc,\n        needsMask,\n        maskTextFn,\n        rootId\n      });\n    case n2.CDATA_SECTION_NODE:\n      return {\n        type: NodeType$2.CDATA,\n        textContent: \"\",\n        rootId\n      };\n    case n2.COMMENT_NODE:\n      return {\n        type: NodeType$2.Comment,\n        textContent: index$1.textContent(n2) || \"\",\n        rootId\n      };\n    default:\n      return false;\n  }\n}\nfunction getRootId(doc, mirror2) {\n  if (!mirror2.hasNode(doc)) return void 0;\n  const docId = mirror2.getId(doc);\n  return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n  var _a2;\n  const { needsMask, maskTextFn, rootId } = options;\n  const parent = index$1.parentNode(n2);\n  const parentTagName = parent && parent.tagName;\n  let text = index$1.textContent(n2);\n  const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n  const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n  if (isStyle && text) {\n    try {\n      if (n2.nextSibling || n2.previousSibling) {\n      } else if ((_a2 = parent.sheet) == null ? void 0 : _a2.cssRules) {\n        text = stringifyStylesheet(parent.sheet);\n      }\n    } catch (err) {\n      console.warn(\n        `Cannot get CSS styles from text's parentNode. Error: ${err}`,\n        n2\n      );\n    }\n    text = absolutifyURLs(text, getHref(options.doc));\n  }\n  if (isScript) {\n    text = \"SCRIPT_PLACEHOLDER\";\n  }\n  if (!isStyle && !isScript && text && needsMask) {\n    text = maskTextFn ? maskTextFn(text, index$1.parentElement(n2)) : text.replace(/[\\S]/g, \"*\");\n  }\n  return {\n    type: NodeType$2.Text,\n    textContent: text || \"\",\n    isStyle,\n    rootId\n  };\n}\nfunction serializeElementNode(n2, options) {\n  const {\n    doc,\n    blockClass,\n    blockSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    rootId\n  } = options;\n  const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n  const tagName = getValidTagName$1(n2);\n  let attributes = {};\n  const len = n2.attributes.length;\n  for (let i2 = 0; i2 < len; i2++) {\n    const attr = n2.attributes[i2];\n    if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n      attributes[attr.name] = transformAttribute(\n        doc,\n        tagName,\n        toLowerCase(attr.name),\n        attr.value\n      );\n    }\n  }\n  if (tagName === \"link\" && inlineStylesheet) {\n    const stylesheet = Array.from(doc.styleSheets).find((s2) => {\n      return s2.href === n2.href;\n    });\n    let cssText = null;\n    if (stylesheet) {\n      cssText = stringifyStylesheet(stylesheet);\n    }\n    if (cssText) {\n      delete attributes.rel;\n      delete attributes.href;\n      attributes._cssText = cssText;\n    }\n  }\n  if (tagName === \"style\" && n2.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n  !(n2.innerText || index$1.textContent(n2) || \"\").trim().length) {\n    const cssText = stringifyStylesheet(\n      n2.sheet\n    );\n    if (cssText) {\n      attributes._cssText = cssText;\n    }\n  }\n  if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n    const value = n2.value;\n    const checked = n2.checked;\n    if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n      attributes.value = maskInputValue({\n        element: n2,\n        type: getInputType(n2),\n        tagName,\n        value,\n        maskInputOptions,\n        maskInputFn\n      });\n    } else if (checked) {\n      attributes.checked = checked;\n    }\n  }\n  if (tagName === \"option\") {\n    if (n2.selected && !maskInputOptions[\"select\"]) {\n      attributes.selected = true;\n    } else {\n      delete attributes.selected;\n    }\n  }\n  if (tagName === \"dialog\" && n2.open) {\n    attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n  }\n  if (tagName === \"canvas\" && recordCanvas) {\n    if (n2.__context === \"2d\") {\n      if (!is2DCanvasBlank(n2)) {\n        attributes.rr_dataURL = n2.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      }\n    } else if (!(\"__context\" in n2)) {\n      const canvasDataURL = n2.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      const blankCanvas = doc.createElement(\"canvas\");\n      blankCanvas.width = n2.width;\n      blankCanvas.height = n2.height;\n      const blankCanvasDataURL = blankCanvas.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      if (canvasDataURL !== blankCanvasDataURL) {\n        attributes.rr_dataURL = canvasDataURL;\n      }\n    }\n  }\n  if (tagName === \"img\" && inlineImages) {\n    if (!canvasService) {\n      canvasService = doc.createElement(\"canvas\");\n      canvasCtx = canvasService.getContext(\"2d\");\n    }\n    const image = n2;\n    const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n    const priorCrossOrigin = image.crossOrigin;\n    const recordInlineImage = () => {\n      image.removeEventListener(\"load\", recordInlineImage);\n      try {\n        canvasService.width = image.naturalWidth;\n        canvasService.height = image.naturalHeight;\n        canvasCtx.drawImage(image, 0, 0);\n        attributes.rr_dataURL = canvasService.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      } catch (err) {\n        if (image.crossOrigin !== \"anonymous\") {\n          image.crossOrigin = \"anonymous\";\n          if (image.complete && image.naturalWidth !== 0)\n            recordInlineImage();\n          else image.addEventListener(\"load\", recordInlineImage);\n          return;\n        } else {\n          console.warn(\n            `Cannot inline img src=${imageSrc}! Error: ${err}`\n          );\n        }\n      }\n      if (image.crossOrigin === \"anonymous\") {\n        priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n      }\n    };\n    if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n    else image.addEventListener(\"load\", recordInlineImage);\n  }\n  if (tagName === \"audio\" || tagName === \"video\") {\n    const mediaAttributes = attributes;\n    mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n    mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n    mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n    mediaAttributes.rr_mediaMuted = n2.muted;\n    mediaAttributes.rr_mediaLoop = n2.loop;\n    mediaAttributes.rr_mediaVolume = n2.volume;\n  }\n  if (!newlyAddedElement) {\n    if (n2.scrollLeft) {\n      attributes.rr_scrollLeft = n2.scrollLeft;\n    }\n    if (n2.scrollTop) {\n      attributes.rr_scrollTop = n2.scrollTop;\n    }\n  }\n  if (needBlock) {\n    const { width, height } = n2.getBoundingClientRect();\n    attributes = {\n      class: attributes.class,\n      rr_width: `${width}px`,\n      rr_height: `${height}px`\n    };\n  }\n  if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n    if (!n2.contentDocument) {\n      attributes.rr_src = attributes.src;\n    }\n    delete attributes.src;\n  }\n  let isCustomElement;\n  try {\n    if (customElements.get(tagName)) isCustomElement = true;\n  } catch (e2) {\n  }\n  return {\n    type: NodeType$2.Element,\n    tagName,\n    attributes,\n    childNodes: [],\n    isSVG: isSVGElement(n2) || void 0,\n    needBlock,\n    rootId,\n    isCustom: isCustomElement\n  };\n}\nfunction lowerIfExists(maybeAttr) {\n  if (maybeAttr === void 0 || maybeAttr === null) {\n    return \"\";\n  } else {\n    return maybeAttr.toLowerCase();\n  }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n  if (slimDOMOptions.comment && sn.type === NodeType$2.Comment) {\n    return true;\n  } else if (sn.type === NodeType$2.Element) {\n    if (slimDOMOptions.script && // script tag\n    (sn.tagName === \"script\" || // (module)preload link\n    sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") && sn.attributes.as === \"script\" || // prefetch link\n    sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n      return true;\n    } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n      return true;\n    } else if (sn.tagName === \"meta\") {\n      if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n        return true;\n      } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n        return true;\n      } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n        return true;\n      } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction serializeNodeWithId(n2, options) {\n  const {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    maskTextClass,\n    maskTextSelector,\n    skipChild = false,\n    inlineStylesheet = true,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions = {},\n    inlineImages = false,\n    recordCanvas = false,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout = 5e3,\n    onStylesheetLoad,\n    stylesheetLoadTimeout = 5e3,\n    keepIframeSrcFn = () => false,\n    newlyAddedElement = false\n  } = options;\n  let { needsMask } = options;\n  let { preserveWhiteSpace = true } = options;\n  if (!needsMask) {\n    const checkAncestors = needsMask === void 0;\n    needsMask = needMaskingText(\n      n2,\n      maskTextClass,\n      maskTextSelector,\n      checkAncestors\n    );\n  }\n  const _serializedNode = serializeNode(n2, {\n    doc,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    needsMask,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement\n  });\n  if (!_serializedNode) {\n    console.warn(n2, \"not serialized\");\n    return null;\n  }\n  let id;\n  if (mirror2.hasNode(n2)) {\n    id = mirror2.getId(n2);\n  } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$2.Text && !_serializedNode.isStyle && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n    id = IGNORED_NODE;\n  } else {\n    id = genId();\n  }\n  const serializedNode = Object.assign(_serializedNode, { id });\n  mirror2.add(n2, serializedNode);\n  if (id === IGNORED_NODE) {\n    return null;\n  }\n  if (onSerialize) {\n    onSerialize(n2);\n  }\n  let recordChild = !skipChild;\n  if (serializedNode.type === NodeType$2.Element) {\n    recordChild = recordChild && !serializedNode.needBlock;\n    delete serializedNode.needBlock;\n    const shadowRootEl = index$1.shadowRoot(n2);\n    if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n      serializedNode.isShadowHost = true;\n  }\n  if ((serializedNode.type === NodeType$2.Document || serializedNode.type === NodeType$2.Element) && recordChild) {\n    if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$2.Element && serializedNode.tagName === \"head\") {\n      preserveWhiteSpace = false;\n    }\n    const bypassOptions = {\n      doc,\n      mirror: mirror2,\n      blockClass,\n      blockSelector,\n      needsMask,\n      maskTextClass,\n      maskTextSelector,\n      skipChild,\n      inlineStylesheet,\n      maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOMOptions,\n      dataURLOptions,\n      inlineImages,\n      recordCanvas,\n      preserveWhiteSpace,\n      onSerialize,\n      onIframeLoad,\n      iframeLoadTimeout,\n      onStylesheetLoad,\n      stylesheetLoadTimeout,\n      keepIframeSrcFn\n    };\n    if (serializedNode.type === NodeType$2.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n    else {\n      for (const childN of Array.from(index$1.childNodes(n2))) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          serializedNode.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n    let shadowRootEl = null;\n    if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n      for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n          serializedNode.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n  }\n  const parent = index$1.parentNode(n2);\n  if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n    serializedNode.isShadow = true;\n  }\n  if (serializedNode.type === NodeType$2.Element && serializedNode.tagName === \"iframe\") {\n    onceIframeLoaded(\n      n2,\n      () => {\n        const iframeDoc = n2.contentDocument;\n        if (iframeDoc && onIframeLoad) {\n          const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n            doc: iframeDoc,\n            mirror: mirror2,\n            blockClass,\n            blockSelector,\n            needsMask,\n            maskTextClass,\n            maskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn\n          });\n          if (serializedIframeNode) {\n            onIframeLoad(\n              n2,\n              serializedIframeNode\n            );\n          }\n        }\n      },\n      iframeLoadTimeout\n    );\n  }\n  if (serializedNode.type === NodeType$2.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n    onceStylesheetLoaded(\n      n2,\n      () => {\n        if (onStylesheetLoad) {\n          const serializedLinkNode = serializeNodeWithId(n2, {\n            doc,\n            mirror: mirror2,\n            blockClass,\n            blockSelector,\n            needsMask,\n            maskTextClass,\n            maskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn\n          });\n          if (serializedLinkNode) {\n            onStylesheetLoad(\n              n2,\n              serializedLinkNode\n            );\n          }\n        }\n      },\n      stylesheetLoadTimeout\n    );\n  }\n  return serializedNode;\n}\nfunction snapshot(n2, options) {\n  const {\n    mirror: mirror2 = new Mirror(),\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    inlineImages = false,\n    recordCanvas = false,\n    maskAllInputs = false,\n    maskTextFn,\n    maskInputFn,\n    slimDOM = false,\n    dataURLOptions,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn = () => false\n  } = options || {};\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true,\n    password: true\n  } : maskAllInputs === false ? {\n    password: true\n  } : maskAllInputs;\n  const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n    // if true: set of sensible options that should not throw away any information\n    {\n      script: true,\n      comment: true,\n      headFavicon: true,\n      headWhitespace: true,\n      headMetaDescKeywords: slimDOM === \"all\",\n      // destructive\n      headMetaSocial: true,\n      headMetaRobots: true,\n      headMetaHttpEquiv: true,\n      headMetaAuthorship: true,\n      headMetaVerification: true\n    }\n  ) : slimDOM === false ? {} : slimDOM;\n  return serializeNodeWithId(n2, {\n    doc: n2,\n    mirror: mirror2,\n    blockClass,\n    blockSelector,\n    maskTextClass,\n    maskTextSelector,\n    skipChild: false,\n    inlineStylesheet,\n    maskInputOptions,\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn,\n    newlyAddedElement: false\n  });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n  if (n2.__esModule) return n2;\n  var f2 = n2.default;\n  if (typeof f2 == \"function\") {\n    var a2 = function a22() {\n      if (this instanceof a22) {\n        return Reflect.construct(f2, arguments, this.constructor);\n      }\n      return f2.apply(this, arguments);\n    };\n    a2.prototype = f2.prototype;\n  } else a2 = {};\n  Object.defineProperty(a2, \"__esModule\", { value: true });\n  Object.keys(n2).forEach(function(k) {\n    var d = Object.getOwnPropertyDescriptor(n2, k);\n    Object.defineProperty(a2, k, d.get ? d : {\n      enumerable: true,\n      get: function() {\n        return n2[k];\n      }\n    });\n  });\n  return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar x$1 = String;\nvar create$1 = function() {\n  return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nlet pico$1 = picocolors_browserExports$1;\nlet terminalHighlight$1$1 = require$$2$1;\nlet CssSyntaxError$3$1 = class CssSyntaxError extends Error {\n  constructor(message, line, column, source, file, plugin22) {\n    super(message);\n    this.name = \"CssSyntaxError\";\n    this.reason = message;\n    if (file) {\n      this.file = file;\n    }\n    if (source) {\n      this.source = source;\n    }\n    if (plugin22) {\n      this.plugin = plugin22;\n    }\n    if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n      if (typeof line === \"number\") {\n        this.line = line;\n        this.column = column;\n      } else {\n        this.line = line.line;\n        this.column = line.column;\n        this.endLine = column.line;\n        this.endColumn = column.column;\n      }\n    }\n    this.setMessage();\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError);\n    }\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\";\n    this.message += this.file ? this.file : \"<css input>\";\n    if (typeof this.line !== \"undefined\") {\n      this.message += \":\" + this.line + \":\" + this.column;\n    }\n    this.message += \": \" + this.reason;\n  }\n  showSourceCode(color) {\n    if (!this.source) return \"\";\n    let css = this.source;\n    if (color == null) color = pico$1.isColorSupported;\n    if (terminalHighlight$1$1) {\n      if (color) css = terminalHighlight$1$1(css);\n    }\n    let lines = css.split(/\\r?\\n/);\n    let start = Math.max(this.line - 3, 0);\n    let end = Math.min(this.line + 2, lines.length);\n    let maxWidth = String(end).length;\n    let mark, aside;\n    if (color) {\n      let { bold, gray, red } = pico$1.createColors(true);\n      mark = (text) => bold(red(text));\n      aside = (text) => gray(text);\n    } else {\n      mark = aside = (str) => str;\n    }\n    return lines.slice(start, end).map((line, index2) => {\n      let number = start + 1 + index2;\n      let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n      if (number === this.line) {\n        let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n      }\n      return \" \" + aside(gutter) + line;\n    }).join(\"\\n\");\n  }\n  toString() {\n    let code = this.showSourceCode();\n    if (code) {\n      code = \"\\n\\n\" + code + \"\\n\";\n    }\n    return this.name + \": \" + this.message + code;\n  }\n};\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nconst DEFAULT_RAW$1 = {\n  after: \"\\n\",\n  beforeClose: \"\\n\",\n  beforeComment: \"\\n\",\n  beforeDecl: \"\\n\",\n  beforeOpen: \" \",\n  beforeRule: \"\\n\",\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: false\n};\nfunction capitalize$1(str) {\n  return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2$1 = class Stringifier {\n  constructor(builder) {\n    this.builder = builder;\n  }\n  atrule(node2, semicolon) {\n    let name = \"@\" + node2.name;\n    let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n    if (typeof node2.raws.afterName !== \"undefined\") {\n      name += node2.raws.afterName;\n    } else if (params) {\n      name += \" \";\n    }\n    if (node2.nodes) {\n      this.block(node2, name + params);\n    } else {\n      let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n      this.builder(name + params + end, node2);\n    }\n  }\n  beforeAfter(node2, detect) {\n    let value;\n    if (node2.type === \"decl\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (node2.type === \"comment\") {\n      value = this.raw(node2, null, \"beforeComment\");\n    } else if (detect === \"before\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else {\n      value = this.raw(node2, null, \"beforeClose\");\n    }\n    let buf = node2.parent;\n    let depth = 0;\n    while (buf && buf.type !== \"root\") {\n      depth += 1;\n      buf = buf.parent;\n    }\n    if (value.includes(\"\\n\")) {\n      let indent = this.raw(node2, null, \"indent\");\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent;\n      }\n    }\n    return value;\n  }\n  block(node2, start) {\n    let between = this.raw(node2, \"between\", \"beforeOpen\");\n    this.builder(start + between + \"{\", node2, \"start\");\n    let after;\n    if (node2.nodes && node2.nodes.length) {\n      this.body(node2);\n      after = this.raw(node2, \"after\");\n    } else {\n      after = this.raw(node2, \"after\", \"emptyBody\");\n    }\n    if (after) this.builder(after);\n    this.builder(\"}\", node2, \"end\");\n  }\n  body(node2) {\n    let last = node2.nodes.length - 1;\n    while (last > 0) {\n      if (node2.nodes[last].type !== \"comment\") break;\n      last -= 1;\n    }\n    let semicolon = this.raw(node2, \"semicolon\");\n    for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n      let child = node2.nodes[i2];\n      let before = this.raw(child, \"before\");\n      if (before) this.builder(before);\n      this.stringify(child, last !== i2 || semicolon);\n    }\n  }\n  comment(node2) {\n    let left = this.raw(node2, \"left\", \"commentLeft\");\n    let right = this.raw(node2, \"right\", \"commentRight\");\n    this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n  }\n  decl(node2, semicolon) {\n    let between = this.raw(node2, \"between\", \"colon\");\n    let string = node2.prop + between + this.rawValue(node2, \"value\");\n    if (node2.important) {\n      string += node2.raws.important || \" !important\";\n    }\n    if (semicolon) string += \";\";\n    this.builder(string, node2);\n  }\n  document(node2) {\n    this.body(node2);\n  }\n  raw(node2, own, detect) {\n    let value;\n    if (!detect) detect = own;\n    if (own) {\n      value = node2.raws[own];\n      if (typeof value !== \"undefined\") return value;\n    }\n    let parent = node2.parent;\n    if (detect === \"before\") {\n      if (!parent || parent.type === \"root\" && parent.first === node2) {\n        return \"\";\n      }\n      if (parent && parent.type === \"document\") {\n        return \"\";\n      }\n    }\n    if (!parent) return DEFAULT_RAW$1[detect];\n    let root2 = node2.root();\n    if (!root2.rawCache) root2.rawCache = {};\n    if (typeof root2.rawCache[detect] !== \"undefined\") {\n      return root2.rawCache[detect];\n    }\n    if (detect === \"before\" || detect === \"after\") {\n      return this.beforeAfter(node2, detect);\n    } else {\n      let method = \"raw\" + capitalize$1(detect);\n      if (this[method]) {\n        value = this[method](root2, node2);\n      } else {\n        root2.walk((i2) => {\n          value = i2.raws[own];\n          if (typeof value !== \"undefined\") return false;\n        });\n      }\n    }\n    if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n    root2.rawCache[detect] = value;\n    return value;\n  }\n  rawBeforeClose(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length > 0) {\n        if (typeof i2.raws.after !== \"undefined\") {\n          value = i2.raws.after;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawBeforeComment(root2, node2) {\n    let value;\n    root2.walkComments((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeDecl(root2, node2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeOpen(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.type !== \"decl\") {\n        value = i2.raws.between;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawBeforeRule(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawColon(root2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.between !== \"undefined\") {\n        value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n        return false;\n      }\n    });\n    return value;\n  }\n  rawEmptyBody(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length === 0) {\n        value = i2.raws.after;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawIndent(root2) {\n    if (root2.raws.indent) return root2.raws.indent;\n    let value;\n    root2.walk((i2) => {\n      let p = i2.parent;\n      if (p && p !== root2 && p.parent && p.parent === root2) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          let parts = i2.raws.before.split(\"\\n\");\n          value = parts[parts.length - 1];\n          value = value.replace(/\\S/g, \"\");\n          return false;\n        }\n      }\n    });\n    return value;\n  }\n  rawSemicolon(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n        value = i2.raws.semicolon;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawValue(node2, prop) {\n    let value = node2[prop];\n    let raw = node2.raws[prop];\n    if (raw && raw.value === value) {\n      return raw.raw;\n    }\n    return value;\n  }\n  root(node2) {\n    this.body(node2);\n    if (node2.raws.after) this.builder(node2.raws.after);\n  }\n  rule(node2) {\n    this.block(node2, this.rawValue(node2, \"selector\"));\n    if (node2.raws.ownSemicolon) {\n      this.builder(node2.raws.ownSemicolon, node2, \"end\");\n    }\n  }\n  stringify(node2, semicolon) {\n    if (!this[node2.type]) {\n      throw new Error(\n        \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    }\n    this[node2.type](node2, semicolon);\n  }\n};\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nlet Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n  let str = new Stringifier$1$1(builder);\n  str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nlet { isClean: isClean$2$1, my: my$2$1 } = symbols$1;\nlet CssSyntaxError$2$1 = cssSyntaxError$1;\nlet Stringifier2$1 = stringifier$1;\nlet stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n  let cloned = new obj.constructor();\n  for (let i2 in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n      continue;\n    }\n    if (i2 === \"proxyCache\") continue;\n    let value = obj[i2];\n    let type = typeof value;\n    if (i2 === \"parent\" && type === \"object\") {\n      if (parent) cloned[i2] = parent;\n    } else if (i2 === \"source\") {\n      cloned[i2] = value;\n    } else if (Array.isArray(value)) {\n      cloned[i2] = value.map((j) => cloneNode$1(j, cloned));\n    } else {\n      if (type === \"object\" && value !== null) value = cloneNode$1(value);\n      cloned[i2] = value;\n    }\n  }\n  return cloned;\n}\nlet Node$4$1 = class Node2 {\n  constructor(defaults = {}) {\n    this.raws = {};\n    this[isClean$2$1] = false;\n    this[my$2$1] = true;\n    for (let name in defaults) {\n      if (name === \"nodes\") {\n        this.nodes = [];\n        for (let node2 of defaults[name]) {\n          if (typeof node2.clone === \"function\") {\n            this.append(node2.clone());\n          } else {\n            this.append(node2);\n          }\n        }\n      } else {\n        this[name] = defaults[name];\n      }\n    }\n  }\n  addToError(error) {\n    error.postcssNode = this;\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s2 = this.source;\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n      );\n    }\n    return error;\n  }\n  after(add) {\n    this.parent.insertAfter(this, add);\n    return this;\n  }\n  assign(overrides = {}) {\n    for (let name in overrides) {\n      this[name] = overrides[name];\n    }\n    return this;\n  }\n  before(add) {\n    this.parent.insertBefore(this, add);\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    delete this.raws.before;\n    delete this.raws.after;\n    if (!keepBetween) delete this.raws.between;\n  }\n  clone(overrides = {}) {\n    let cloned = cloneNode$1(this);\n    for (let name in overrides) {\n      cloned[name] = overrides[name];\n    }\n    return cloned;\n  }\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertAfter(this, cloned);\n    return cloned;\n  }\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertBefore(this, cloned);\n    return cloned;\n  }\n  error(message, opts = {}) {\n    if (this.source) {\n      let { end, start } = this.rangeBy(opts);\n      return this.source.input.error(\n        message,\n        { column: start.column, line: start.line },\n        { column: end.column, line: end.line },\n        opts\n      );\n    }\n    return new CssSyntaxError$2$1(message);\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n        prop === \"text\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  markDirty() {\n    if (this[isClean$2$1]) {\n      this[isClean$2$1] = false;\n      let next = this;\n      while (next = next.parent) {\n        next[isClean$2$1] = false;\n      }\n    }\n  }\n  next() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 + 1];\n  }\n  positionBy(opts, stringRepresentation) {\n    let pos = this.source.start;\n    if (opts.index) {\n      pos = this.positionInside(opts.index, stringRepresentation);\n    } else if (opts.word) {\n      stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n    }\n    return pos;\n  }\n  positionInside(index2, stringRepresentation) {\n    let string = stringRepresentation || this.toString();\n    let column = this.source.start.column;\n    let line = this.source.start.line;\n    for (let i2 = 0; i2 < index2; i2++) {\n      if (string[i2] === \"\\n\") {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n    return { column, line };\n  }\n  prev() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 - 1];\n  }\n  rangeBy(opts) {\n    let start = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    };\n    let end = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: start.column + 1,\n      line: start.line\n    };\n    if (opts.word) {\n      let stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) {\n        start = this.positionInside(index2, stringRepresentation);\n        end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n      }\n    } else {\n      if (opts.start) {\n        start = {\n          column: opts.start.column,\n          line: opts.start.line\n        };\n      } else if (opts.index) {\n        start = this.positionInside(opts.index);\n      }\n      if (opts.end) {\n        end = {\n          column: opts.end.column,\n          line: opts.end.line\n        };\n      } else if (typeof opts.endIndex === \"number\") {\n        end = this.positionInside(opts.endIndex);\n      } else if (opts.index) {\n        end = this.positionInside(opts.index + 1);\n      }\n    }\n    if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n      end = { column: start.column + 1, line: start.line };\n    }\n    return { end, start };\n  }\n  raw(prop, defaultType) {\n    let str = new Stringifier2$1();\n    return str.raw(this, prop, defaultType);\n  }\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n    this.parent = void 0;\n    return this;\n  }\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this;\n      let foundSelf = false;\n      for (let node2 of nodes) {\n        if (node2 === this) {\n          foundSelf = true;\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node2);\n          bookmark = node2;\n        } else {\n          this.parent.insertBefore(bookmark, node2);\n        }\n      }\n      if (!foundSelf) {\n        this.remove();\n      }\n    }\n    return this;\n  }\n  root() {\n    let result2 = this;\n    while (result2.parent && result2.parent.type !== \"document\") {\n      result2 = result2.parent;\n    }\n    return result2;\n  }\n  toJSON(_, inputs) {\n    let fixed = {};\n    let emitInputs = inputs == null;\n    inputs = inputs || /* @__PURE__ */ new Map();\n    let inputsNextIndex = 0;\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        continue;\n      }\n      if (name === \"parent\" || name === \"proxyCache\") continue;\n      let value = this[name];\n      if (Array.isArray(value)) {\n        fixed[name] = value.map((i2) => {\n          if (typeof i2 === \"object\" && i2.toJSON) {\n            return i2.toJSON(null, inputs);\n          } else {\n            return i2;\n          }\n        });\n      } else if (typeof value === \"object\" && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs);\n      } else if (name === \"source\") {\n        let inputId = inputs.get(value.input);\n        if (inputId == null) {\n          inputId = inputsNextIndex;\n          inputs.set(value.input, inputsNextIndex);\n          inputsNextIndex++;\n        }\n        fixed[name] = {\n          end: value.end,\n          inputId,\n          start: value.start\n        };\n      } else {\n        fixed[name] = value;\n      }\n    }\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n    }\n    return fixed;\n  }\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor());\n    }\n    return this.proxyCache;\n  }\n  toString(stringifier2 = stringify$3$1) {\n    if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n    let result2 = \"\";\n    stringifier2(this, (i2) => {\n      result2 += i2;\n    });\n    return result2;\n  }\n  warn(result2, text, opts) {\n    let data = { node: this };\n    for (let i2 in opts) data[i2] = opts[i2];\n    return result2.warn(text, data);\n  }\n  get proxyOf() {\n    return this;\n  }\n};\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nlet Node$3$1 = node$1;\nlet Declaration$4$1 = class Declaration extends Node$3$1 {\n  constructor(defaults) {\n    if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n      defaults = { ...defaults, value: String(defaults.value) };\n    }\n    super(defaults);\n    this.type = \"decl\";\n  }\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n};\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nlet urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet$1 = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = \"\";\n    let i2 = size;\n    while (i2--) {\n      id += alphabet[Math.random() * alphabet.length | 0];\n    }\n    return id;\n  };\n};\nlet nanoid$1$1 = (size = 21) => {\n  let id = \"\";\n  let i2 = size;\n  while (i2--) {\n    id += urlAlphabet$1[Math.random() * 64 | 0];\n  }\n  return id;\n};\nvar nonSecure$1 = { nanoid: nanoid$1$1, customAlphabet: customAlphabet$1 };\nlet { SourceMapConsumer: SourceMapConsumer$2$1, SourceMapGenerator: SourceMapGenerator$2$1 } = require$$2$1;\nlet { existsSync: existsSync$1, readFileSync: readFileSync$1 } = require$$2$1;\nlet { dirname: dirname$1$1, join: join$1 } = require$$2$1;\nfunction fromBase64$1(str) {\n  if (Buffer) {\n    return Buffer.from(str, \"base64\").toString();\n  } else {\n    return window.atob(str);\n  }\n}\nlet PreviousMap$2$1 = class PreviousMap {\n  constructor(css, opts) {\n    if (opts.map === false) return;\n    this.loadAnnotation(css);\n    this.inline = this.startWith(this.annotation, \"data:\");\n    let prev = opts.map ? opts.map.prev : void 0;\n    let text = this.loadMap(opts.from, prev);\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from;\n    }\n    if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n    if (text) this.text = text;\n  }\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer$2$1(this.text);\n    }\n    return this.consumerCache;\n  }\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n    let baseUri = /^data:application\\/json;base64,/;\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n    let uri = /^data:application\\/json,/;\n    if (charsetUri.test(text) || uri.test(text)) {\n      return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n    }\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64$1(text.substr(RegExp.lastMatch.length));\n    }\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + encoding);\n  }\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(map) {\n    if (typeof map !== \"object\") return false;\n    return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n  }\n  loadAnnotation(css) {\n    let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n    if (!comments) return;\n    let start = css.lastIndexOf(comments.pop());\n    let end = css.indexOf(\"*/\", start);\n    if (start > -1 && end > -1) {\n      this.annotation = this.getAnnotationURL(css.substring(start, end));\n    }\n  }\n  loadFile(path) {\n    this.root = dirname$1$1(path);\n    if (existsSync$1(path)) {\n      this.mapFile = path;\n      return readFileSync$1(path, \"utf-8\").toString().trim();\n    }\n  }\n  loadMap(file, prev) {\n    if (prev === false) return false;\n    if (prev) {\n      if (typeof prev === \"string\") {\n        return prev;\n      } else if (typeof prev === \"function\") {\n        let prevPath = prev(file);\n        if (prevPath) {\n          let map = this.loadFile(prevPath);\n          if (!map) {\n            throw new Error(\n              \"Unable to load previous source map: \" + prevPath.toString()\n            );\n          }\n          return map;\n        }\n      } else if (prev instanceof SourceMapConsumer$2$1) {\n        return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n      } else if (prev instanceof SourceMapGenerator$2$1) {\n        return prev.toString();\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev);\n      } else {\n        throw new Error(\n          \"Unsupported previous source map format: \" + prev.toString()\n        );\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation);\n    } else if (this.annotation) {\n      let map = this.annotation;\n      if (file) map = join$1(dirname$1$1(file), map);\n      return this.loadFile(map);\n    }\n  }\n  startWith(string, start) {\n    if (!string) return false;\n    return string.substr(0, start.length) === start;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nlet { SourceMapConsumer: SourceMapConsumer$1$1, SourceMapGenerator: SourceMapGenerator$1$1 } = require$$2$1;\nlet { fileURLToPath: fileURLToPath$1, pathToFileURL: pathToFileURL$1$1 } = require$$2$1;\nlet { isAbsolute: isAbsolute$1, resolve: resolve$1$1 } = require$$2$1;\nlet { nanoid: nanoid$2 } = nonSecure$1;\nlet terminalHighlight$2 = require$$2$1;\nlet CssSyntaxError$1$1 = cssSyntaxError$1;\nlet PreviousMap$1$1 = previousMap$1;\nlet fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nlet pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nlet Input$4$1 = class Input {\n  constructor(css, opts = {}) {\n    if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`);\n    }\n    this.css = css.toString();\n    if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n      this.hasBOM = true;\n      this.css = this.css.slice(1);\n    } else {\n      this.hasBOM = false;\n    }\n    if (opts.from) {\n      if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n        this.file = opts.from;\n      } else {\n        this.file = resolve$1$1(opts.from);\n      }\n    }\n    if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n      let map = new PreviousMap$1$1(this.css, opts);\n      if (map.text) {\n        this.map = map;\n        let file = map.consumer().file;\n        if (!this.file && file) this.file = this.mapResolve(file);\n      }\n    }\n    if (!this.file) {\n      this.id = \"<input css \" + nanoid$2(6) + \">\";\n    }\n    if (this.map) this.map.file = this.from;\n  }\n  error(message, line, column, opts = {}) {\n    let result2, endLine, endColumn;\n    if (line && typeof line === \"object\") {\n      let start = line;\n      let end = column;\n      if (typeof start.offset === \"number\") {\n        let pos = this.fromOffset(start.offset);\n        line = pos.line;\n        column = pos.col;\n      } else {\n        line = start.line;\n        column = start.column;\n      }\n      if (typeof end.offset === \"number\") {\n        let pos = this.fromOffset(end.offset);\n        endLine = pos.line;\n        endColumn = pos.col;\n      } else {\n        endLine = end.line;\n        endColumn = end.column;\n      }\n    } else if (!column) {\n      let pos = this.fromOffset(line);\n      line = pos.line;\n      column = pos.col;\n    }\n    let origin = this.origin(line, column, endLine, endColumn);\n    if (origin) {\n      result2 = new CssSyntaxError$1$1(\n        message,\n        origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n        origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n        origin.source,\n        origin.file,\n        opts.plugin\n      );\n    } else {\n      result2 = new CssSyntaxError$1$1(\n        message,\n        endLine === void 0 ? line : { column, line },\n        endLine === void 0 ? column : { column: endColumn, line: endLine },\n        this.css,\n        this.file,\n        opts.plugin\n      );\n    }\n    result2.input = { column, endColumn, endLine, line, source: this.css };\n    if (this.file) {\n      if (pathToFileURL$1$1) {\n        result2.input.url = pathToFileURL$1$1(this.file).toString();\n      }\n      result2.input.file = this.file;\n    }\n    return result2;\n  }\n  fromOffset(offset) {\n    let lastLine, lineToIndex;\n    if (!this[fromOffsetCache$1]) {\n      let lines = this.css.split(\"\\n\");\n      lineToIndex = new Array(lines.length);\n      let prevIndex = 0;\n      for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n        lineToIndex[i2] = prevIndex;\n        prevIndex += lines[i2].length + 1;\n      }\n      this[fromOffsetCache$1] = lineToIndex;\n    } else {\n      lineToIndex = this[fromOffsetCache$1];\n    }\n    lastLine = lineToIndex[lineToIndex.length - 1];\n    let min = 0;\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1;\n    } else {\n      let max = lineToIndex.length - 2;\n      let mid;\n      while (min < max) {\n        mid = min + (max - min >> 1);\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1;\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1;\n        } else {\n          min = mid;\n          break;\n        }\n      }\n    }\n    return {\n      col: offset - lineToIndex[min] + 1,\n      line: min + 1\n    };\n  }\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file;\n    }\n    return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n  }\n  origin(line, column, endLine, endColumn) {\n    if (!this.map) return false;\n    let consumer = this.map.consumer();\n    let from = consumer.originalPositionFor({ column, line });\n    if (!from.source) return false;\n    let to;\n    if (typeof endLine === \"number\") {\n      to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n    }\n    let fromUrl;\n    if (isAbsolute$1(from.source)) {\n      fromUrl = pathToFileURL$1$1(from.source);\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)\n      );\n    }\n    let result2 = {\n      column: from.column,\n      endColumn: to && to.column,\n      endLine: to && to.line,\n      line: from.line,\n      url: fromUrl.toString()\n    };\n    if (fromUrl.protocol === \"file:\") {\n      if (fileURLToPath$1) {\n        result2.file = fileURLToPath$1(fromUrl);\n      } else {\n        throw new Error(`file: protocol is not available in this PostCSS build`);\n      }\n    }\n    let source = consumer.sourceContentFor(from.source);\n    if (source) result2.source = source;\n    return result2;\n  }\n  toJSON() {\n    let json = {};\n    for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n      if (this[name] != null) {\n        json[name] = this[name];\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map };\n      if (json.map.consumerCache) {\n        json.map.consumerCache = void 0;\n      }\n    }\n    return json;\n  }\n  get from() {\n    return this.file || this.id;\n  }\n};\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n  terminalHighlight$2.registerInput(Input$4$1);\n}\nlet { SourceMapConsumer: SourceMapConsumer$3, SourceMapGenerator: SourceMapGenerator$3 } = require$$2$1;\nlet { dirname: dirname$2, relative: relative$1, resolve: resolve$2, sep: sep$1 } = require$$2$1;\nlet { pathToFileURL: pathToFileURL$2 } = require$$2$1;\nlet Input$3$1 = input$1;\nlet sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nlet pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nlet MapGenerator$2$1 = class MapGenerator {\n  constructor(stringify2, root2, opts, cssString) {\n    this.stringify = stringify2;\n    this.mapOpts = opts.map || {};\n    this.root = root2;\n    this.opts = opts;\n    this.css = cssString;\n    this.originalCSS = cssString;\n    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n    this.memoizedFileURLs = /* @__PURE__ */ new Map();\n    this.memoizedPaths = /* @__PURE__ */ new Map();\n    this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let content;\n    if (this.isInline()) {\n      content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n    } else if (typeof this.mapOpts.annotation === \"string\") {\n      content = this.mapOpts.annotation;\n    } else if (typeof this.mapOpts.annotation === \"function\") {\n      content = this.mapOpts.annotation(this.opts.to, this.root);\n    } else {\n      content = this.outputFile() + \".map\";\n    }\n    let eol = \"\\n\";\n    if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n    this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n  }\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file));\n      let root2 = prev.root || dirname$2(prev.file);\n      let map;\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer$3(prev.text);\n        if (map.sourcesContent) {\n          map.sourcesContent = null;\n        }\n      } else {\n        map = prev.consumer();\n      }\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return;\n    if (this.root) {\n      let node2;\n      for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n        node2 = this.root.nodes[i2];\n        if (node2.type !== \"comment\") continue;\n        if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n          this.root.removeChild(i2);\n        }\n      }\n    } else if (this.css) {\n      this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n    }\n  }\n  generate() {\n    this.clearAnnotation();\n    if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n      return this.generateMap();\n    } else {\n      let result2 = \"\";\n      this.stringify(this.root, (i2) => {\n        result2 += i2;\n      });\n      return [result2];\n    }\n  }\n  generateMap() {\n    if (this.root) {\n      this.generateString();\n    } else if (this.previous().length === 1) {\n      let prev = this.previous()[0].consumer();\n      prev.file = this.outputFile();\n      this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n        ignoreInvalidMapping: true\n      });\n    } else {\n      this.map = new SourceMapGenerator$3({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      });\n      this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    }\n    if (this.isSourcesContent()) this.setSourcesContent();\n    if (this.root && this.previous().length > 0) this.applyPrevMaps();\n    if (this.isAnnotation()) this.addAnnotation();\n    if (this.isInline()) {\n      return [this.css];\n    } else {\n      return [this.css, this.map];\n    }\n  }\n  generateString() {\n    this.css = \"\";\n    this.map = new SourceMapGenerator$3({\n      file: this.outputFile(),\n      ignoreInvalidMapping: true\n    });\n    let line = 1;\n    let column = 1;\n    let noSource = \"<no source>\";\n    let mapping = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    };\n    let lines, last;\n    this.stringify(this.root, (str, node2, type) => {\n      this.css += str;\n      if (node2 && type !== \"end\") {\n        mapping.generated.line = line;\n        mapping.generated.column = column - 1;\n        if (node2.source && node2.source.start) {\n          mapping.source = this.sourcePath(node2);\n          mapping.original.line = node2.source.start.line;\n          mapping.original.column = node2.source.start.column - 1;\n          this.map.addMapping(mapping);\n        } else {\n          mapping.source = noSource;\n          mapping.original.line = 1;\n          mapping.original.column = 0;\n          this.map.addMapping(mapping);\n        }\n      }\n      lines = str.match(/\\n/g);\n      if (lines) {\n        line += lines.length;\n        last = str.lastIndexOf(\"\\n\");\n        column = str.length - last;\n      } else {\n        column += str.length;\n      }\n      if (node2 && type !== \"start\") {\n        let p = node2.parent || { raws: {} };\n        let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n        if (!childless || node2 !== p.last || p.raws.semicolon) {\n          if (node2.source && node2.source.end) {\n            mapping.source = this.sourcePath(node2);\n            mapping.original.line = node2.source.end.line;\n            mapping.original.column = node2.source.end.column - 1;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 2;\n            this.map.addMapping(mapping);\n          } else {\n            mapping.source = noSource;\n            mapping.original.line = 1;\n            mapping.original.column = 0;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 1;\n            this.map.addMapping(mapping);\n          }\n        }\n      }\n    });\n  }\n  isAnnotation() {\n    if (this.isInline()) {\n      return true;\n    }\n    if (typeof this.mapOpts.annotation !== \"undefined\") {\n      return this.mapOpts.annotation;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.annotation);\n    }\n    return true;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline !== \"undefined\") {\n      return this.mapOpts.inline;\n    }\n    let annotation = this.mapOpts.annotation;\n    if (typeof annotation !== \"undefined\" && annotation !== true) {\n      return false;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.inline);\n    }\n    return true;\n  }\n  isMap() {\n    if (typeof this.opts.map !== \"undefined\") {\n      return !!this.opts.map;\n    }\n    return this.previous().length > 0;\n  }\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n      return this.mapOpts.sourcesContent;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.withContent());\n    }\n    return true;\n  }\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to);\n    } else if (this.opts.from) {\n      return this.path(this.opts.from);\n    } else {\n      return \"to.css\";\n    }\n  }\n  path(file) {\n    if (this.mapOpts.absolute) return file;\n    if (file.charCodeAt(0) === 60) return file;\n    if (/^\\w+:\\/\\//.test(file)) return file;\n    let cached = this.memoizedPaths.get(file);\n    if (cached) return cached;\n    let from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n    if (typeof this.mapOpts.annotation === \"string\") {\n      from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n    }\n    let path = relative$1(from, file);\n    this.memoizedPaths.set(file, path);\n    return path;\n  }\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = [];\n      if (this.root) {\n        this.root.walk((node2) => {\n          if (node2.source && node2.source.input.map) {\n            let map = node2.source.input.map;\n            if (!this.previousMaps.includes(map)) {\n              this.previousMaps.push(map);\n            }\n          }\n        });\n      } else {\n        let input2 = new Input$3$1(this.originalCSS, this.opts);\n        if (input2.map) this.previousMaps.push(input2.map);\n      }\n    }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let already = {};\n    if (this.root) {\n      this.root.walk((node2) => {\n        if (node2.source) {\n          let from = node2.source.input.from;\n          if (from && !already[from]) {\n            already[from] = true;\n            let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n            this.map.setSourceContent(fromUrl, node2.source.input.css);\n          }\n        }\n      });\n    } else if (this.css) {\n      let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(from, this.css);\n    }\n  }\n  sourcePath(node2) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from);\n    } else if (this.usesFileUrls) {\n      return this.toFileUrl(node2.source.input.from);\n    } else {\n      return this.toUrl(this.path(node2.source.input.from));\n    }\n  }\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString(\"base64\");\n    } else {\n      return window.btoa(unescape(encodeURIComponent(str)));\n    }\n  }\n  toFileUrl(path) {\n    let cached = this.memoizedFileURLs.get(path);\n    if (cached) return cached;\n    if (pathToFileURL$2) {\n      let fileURL = pathToFileURL$2(path).toString();\n      this.memoizedFileURLs.set(path, fileURL);\n      return fileURL;\n    } else {\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n    }\n  }\n  toUrl(path) {\n    let cached = this.memoizedURLs.get(path);\n    if (cached) return cached;\n    if (sep$1 === \"\\\\\") {\n      path = path.replace(/\\\\/g, \"/\");\n    }\n    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n    this.memoizedURLs.set(path, url);\n    return url;\n  }\n};\nvar mapGenerator$1 = MapGenerator$2$1;\nlet Node$2$1 = node$1;\nlet Comment$4$1 = class Comment extends Node$2$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"comment\";\n  }\n};\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nlet { isClean: isClean$1$1, my: my$1$1 } = symbols$1;\nlet Declaration$3$1 = declaration$1;\nlet Comment$3$1 = comment$1;\nlet Node$1$1 = node$1;\nlet parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n  return nodes.map((i2) => {\n    if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n    delete i2.source;\n    return i2;\n  });\n}\nfunction markDirtyUp$1(node2) {\n  node2[isClean$1$1] = false;\n  if (node2.proxyOf.nodes) {\n    for (let i2 of node2.proxyOf.nodes) {\n      markDirtyUp$1(i2);\n    }\n  }\n}\nlet Container$7$1 = class Container extends Node$1$1 {\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last);\n      for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n    }\n    this.markDirty();\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween);\n    if (this.nodes) {\n      for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n    }\n  }\n  each(callback) {\n    if (!this.proxyOf.nodes) return void 0;\n    let iterator = this.getIterator();\n    let index2, result2;\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index2 = this.indexes[iterator];\n      result2 = callback(this.proxyOf.nodes[index2], index2);\n      if (result2 === false) break;\n      this.indexes[iterator] += 1;\n    }\n    delete this.indexes[iterator];\n    return result2;\n  }\n  every(condition) {\n    return this.nodes.every(condition);\n  }\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0;\n    if (!this.indexes) this.indexes = {};\n    this.lastEach += 1;\n    let iterator = this.lastEach;\n    this.indexes[iterator] = 0;\n    return iterator;\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (!node2[prop]) {\n          return node2[prop];\n        } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n          return (...args) => {\n            return node2[prop](\n              ...args.map((i2) => {\n                if (typeof i2 === \"function\") {\n                  return (child, index2) => i2(child.toProxy(), index2);\n                } else {\n                  return i2;\n                }\n              })\n            );\n          };\n        } else if (prop === \"every\" || prop === \"some\") {\n          return (cb) => {\n            return node2[prop](\n              (child, ...other) => cb(child.toProxy(), ...other)\n            );\n          };\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else if (prop === \"nodes\") {\n          return node2.nodes.map((i2) => i2.toProxy());\n        } else if (prop === \"first\" || prop === \"last\") {\n          return node2[prop].toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  index(child) {\n    if (typeof child === \"number\") return child;\n    if (child.proxyOf) child = child.proxyOf;\n    return this.proxyOf.nodes.indexOf(child);\n  }\n  insertAfter(exist, add) {\n    let existIndex = this.index(exist);\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex < index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  insertBefore(exist, add) {\n    let existIndex = this.index(exist);\n    let type = existIndex === 0 ? \"prepend\" : false;\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex <= index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  normalize(nodes, sample) {\n    if (typeof nodes === \"string\") {\n      nodes = cleanSource$1(parse$4$1(nodes).nodes);\n    } else if (typeof nodes === \"undefined\") {\n      nodes = [];\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type === \"root\" && this.type !== \"document\") {\n      nodes = nodes.nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type) {\n      nodes = [nodes];\n    } else if (nodes.prop) {\n      if (typeof nodes.value === \"undefined\") {\n        throw new Error(\"Value field is missed in node creation\");\n      } else if (typeof nodes.value !== \"string\") {\n        nodes.value = String(nodes.value);\n      }\n      nodes = [new Declaration$3$1(nodes)];\n    } else if (nodes.selector) {\n      nodes = [new Rule$4$1(nodes)];\n    } else if (nodes.name) {\n      nodes = [new AtRule$4$1(nodes)];\n    } else if (nodes.text) {\n      nodes = [new Comment$3$1(nodes)];\n    } else {\n      throw new Error(\"Unknown node type in node creation\");\n    }\n    let processed = nodes.map((i2) => {\n      if (!i2[my$1$1]) Container.rebuild(i2);\n      i2 = i2.proxyOf;\n      if (i2.parent) i2.parent.removeChild(i2);\n      if (i2[isClean$1$1]) markDirtyUp$1(i2);\n      if (typeof i2.raws.before === \"undefined\") {\n        if (sample && typeof sample.raws.before !== \"undefined\") {\n          i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n        }\n      }\n      i2.parent = this.proxyOf;\n      return i2;\n    });\n    return processed;\n  }\n  prepend(...children) {\n    children = children.reverse();\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n      for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  push(child) {\n    child.parent = this;\n    this.proxyOf.nodes.push(child);\n    return this;\n  }\n  removeAll() {\n    for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n    this.proxyOf.nodes = [];\n    this.markDirty();\n    return this;\n  }\n  removeChild(child) {\n    child = this.index(child);\n    this.proxyOf.nodes[child].parent = void 0;\n    this.proxyOf.nodes.splice(child, 1);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (index2 >= child) {\n        this.indexes[id] = index2 - 1;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts;\n      opts = {};\n    }\n    this.walkDecls((decl) => {\n      if (opts.props && !opts.props.includes(decl.prop)) return;\n      if (opts.fast && !decl.value.includes(opts.fast)) return;\n      decl.value = decl.value.replace(pattern, callback);\n    });\n    this.markDirty();\n    return this;\n  }\n  some(condition) {\n    return this.nodes.some(condition);\n  }\n  walk(callback) {\n    return this.each((child, i2) => {\n      let result2;\n      try {\n        result2 = callback(child, i2);\n      } catch (e2) {\n        throw child.addToError(e2);\n      }\n      if (result2 !== false && child.walk) {\n        result2 = child.walk(callback);\n      }\n      return result2;\n    });\n  }\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name;\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\" && name.test(child.name)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"atrule\" && child.name === name) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkComments(callback) {\n    return this.walk((child, i2) => {\n      if (child.type === \"comment\") {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop;\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\" && prop.test(child.prop)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"decl\" && child.prop === prop) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector;\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\" && selector.test(child.selector)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"rule\" && child.selector === selector) {\n        return callback(child, i2);\n      }\n    });\n  }\n  get first() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n};\nContainer$7$1.registerParse = (dependant) => {\n  parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = (dependant) => {\n  Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = (dependant) => {\n  AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = (dependant) => {\n  Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = (node2) => {\n  if (node2.type === \"atrule\") {\n    Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n  } else if (node2.type === \"rule\") {\n    Object.setPrototypeOf(node2, Rule$4$1.prototype);\n  } else if (node2.type === \"decl\") {\n    Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n  } else if (node2.type === \"comment\") {\n    Object.setPrototypeOf(node2, Comment$3$1.prototype);\n  } else if (node2.type === \"root\") {\n    Object.setPrototypeOf(node2, Root$6$1.prototype);\n  }\n  node2[my$1$1] = true;\n  if (node2.nodes) {\n    node2.nodes.forEach((child) => {\n      Container$7$1.rebuild(child);\n    });\n  }\n};\nlet Container$6$1 = container$1;\nlet LazyResult$4$1, Processor$3$1;\nlet Document$3$1 = class Document2 extends Container$6$1 {\n  constructor(defaults) {\n    super({ type: \"document\", ...defaults });\n    if (!this.nodes) {\n      this.nodes = [];\n    }\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n    return lazy.stringify();\n  }\n};\nDocument$3$1.registerLazyResult = (dependant) => {\n  LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = (dependant) => {\n  Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nlet printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n  if (printed$1[message]) return;\n  printed$1[message] = true;\n  if (typeof console !== \"undefined\" && console.warn) {\n    console.warn(message);\n  }\n};\nlet Warning$2$1 = class Warning {\n  constructor(text, opts = {}) {\n    this.type = \"warning\";\n    this.text = text;\n    if (opts.node && opts.node.source) {\n      let range = opts.node.rangeBy(opts);\n      this.line = range.start.line;\n      this.column = range.start.column;\n      this.endLine = range.end.line;\n      this.endColumn = range.end.column;\n    }\n    for (let opt in opts) this[opt] = opts[opt];\n  }\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        index: this.index,\n        plugin: this.plugin,\n        word: this.word\n      }).message;\n    }\n    if (this.plugin) {\n      return this.plugin + \": \" + this.text;\n    }\n    return this.text;\n  }\n};\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nlet Warning$1$1 = warning$1;\nlet Result$3$1 = class Result {\n  constructor(processor2, root2, opts) {\n    this.processor = processor2;\n    this.messages = [];\n    this.root = root2;\n    this.opts = opts;\n    this.css = void 0;\n    this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin;\n      }\n    }\n    let warning2 = new Warning$1$1(text, opts);\n    this.messages.push(warning2);\n    return warning2;\n  }\n  warnings() {\n    return this.messages.filter((i2) => i2.type === \"warning\");\n  }\n  get content() {\n    return this.css;\n  }\n};\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nconst SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nconst BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nconst SLASH$1 = \"/\".charCodeAt(0);\nconst NEWLINE$1 = \"\\n\".charCodeAt(0);\nconst SPACE$1 = \" \".charCodeAt(0);\nconst FEED$1 = \"\\f\".charCodeAt(0);\nconst TAB$1 = \"\t\".charCodeAt(0);\nconst CR$1 = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nconst OPEN_CURLY$1 = \"{\".charCodeAt(0);\nconst CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nconst SEMICOLON$1 = \";\".charCodeAt(0);\nconst ASTERISK$1 = \"*\".charCodeAt(0);\nconst COLON$1 = \":\".charCodeAt(0);\nconst AT$1 = \"@\".charCodeAt(0);\nconst RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options = {}) {\n  let css = input2.css.valueOf();\n  let ignore = options.ignoreErrors;\n  let code, next, quote, content, escape;\n  let escaped, escapePos, prev, n2, currentToken;\n  let length = css.length;\n  let pos = 0;\n  let buffer = [];\n  let returned = [];\n  function position() {\n    return pos;\n  }\n  function unclosed(what) {\n    throw input2.error(\"Unclosed \" + what, pos);\n  }\n  function endOfFile() {\n    return returned.length === 0 && pos >= length;\n  }\n  function nextToken(opts) {\n    if (returned.length) return returned.pop();\n    if (pos >= length) return;\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n    code = css.charCodeAt(pos);\n    switch (code) {\n      case NEWLINE$1:\n      case SPACE$1:\n      case TAB$1:\n      case CR$1:\n      case FEED$1: {\n        next = pos;\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n        } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n        currentToken = [\"space\", css.slice(pos, next)];\n        pos = next - 1;\n        break;\n      }\n      case OPEN_SQUARE$1:\n      case CLOSE_SQUARE$1:\n      case OPEN_CURLY$1:\n      case CLOSE_CURLY$1:\n      case COLON$1:\n      case SEMICOLON$1:\n      case CLOSE_PARENTHESES$1: {\n        let controlChar = String.fromCharCode(code);\n        currentToken = [controlChar, controlChar, pos];\n        break;\n      }\n      case OPEN_PARENTHESES$1: {\n        prev = buffer.length ? buffer.pop()[1] : \"\";\n        n2 = css.charCodeAt(pos + 1);\n        if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n          next = pos;\n          do {\n            escaped = false;\n            next = css.indexOf(\")\", next + 1);\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos;\n                break;\n              } else {\n                unclosed(\"bracket\");\n              }\n            }\n            escapePos = next;\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n          currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          next = css.indexOf(\")\", pos + 1);\n          content = css.slice(pos, next + 1);\n          if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n            currentToken = [\"(\", \"(\", pos];\n          } else {\n            currentToken = [\"brackets\", content, pos, next];\n            pos = next;\n          }\n        }\n        break;\n      }\n      case SINGLE_QUOTE$1:\n      case DOUBLE_QUOTE$1: {\n        quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n        next = pos;\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1;\n              break;\n            } else {\n              unclosed(\"string\");\n            }\n          }\n          escapePos = next;\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n        currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case AT$1: {\n        RE_AT_END$1.lastIndex = pos + 1;\n        RE_AT_END$1.test(css);\n        if (RE_AT_END$1.lastIndex === 0) {\n          next = css.length - 1;\n        } else {\n          next = RE_AT_END$1.lastIndex - 2;\n        }\n        currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case BACKSLASH$1: {\n        next = pos;\n        escape = true;\n        while (css.charCodeAt(next + 1) === BACKSLASH$1) {\n          next += 1;\n          escape = !escape;\n        }\n        code = css.charCodeAt(next + 1);\n        if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n          next += 1;\n          if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) {\n              next += 1;\n            }\n            if (css.charCodeAt(next + 1) === SPACE$1) {\n              next += 1;\n            }\n          }\n        }\n        currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      default: {\n        if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n          next = css.indexOf(\"*/\", pos + 2) + 1;\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length;\n            } else {\n              unclosed(\"comment\");\n            }\n          }\n          currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          RE_WORD_END$1.lastIndex = pos + 1;\n          RE_WORD_END$1.test(css);\n          if (RE_WORD_END$1.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_WORD_END$1.lastIndex - 2;\n          }\n          currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n          buffer.push(currentToken);\n          pos = next;\n        }\n        break;\n      }\n    }\n    pos++;\n    return currentToken;\n  }\n  function back(token) {\n    returned.push(token);\n  }\n  return {\n    back,\n    endOfFile,\n    nextToken,\n    position\n  };\n};\nlet Container$5$1 = container$1;\nlet AtRule$3$1 = class AtRule extends Container$5$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"atrule\";\n  }\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.append(...children);\n  }\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.prepend(...children);\n  }\n};\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nlet Container$4$1 = container$1;\nlet LazyResult$3$1, Processor$2$1;\nlet Root$5$1 = class Root extends Container$4$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"root\";\n    if (!this.nodes) this.nodes = [];\n  }\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child);\n    if (sample) {\n      if (type === \"prepend\") {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before;\n        } else {\n          delete sample.raws.before;\n        }\n      } else if (this.first !== sample) {\n        for (let node2 of nodes) {\n          node2.raws.before = sample.raws.before;\n        }\n      }\n    }\n    return nodes;\n  }\n  removeChild(child, ignore) {\n    let index2 = this.index(child);\n    if (!ignore && index2 === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index2].raws.before;\n    }\n    return super.removeChild(child);\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n    return lazy.stringify();\n  }\n};\nRoot$5$1.registerLazyResult = (dependant) => {\n  LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = (dependant) => {\n  Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nlet list$2$1 = {\n  comma(string) {\n    return list$2$1.split(string, [\",\"], true);\n  },\n  space(string) {\n    let spaces = [\" \", \"\\n\", \"\t\"];\n    return list$2$1.split(string, spaces);\n  },\n  split(string, separators, last) {\n    let array = [];\n    let current = \"\";\n    let split = false;\n    let func = 0;\n    let inQuote = false;\n    let prevQuote = \"\";\n    let escape = false;\n    for (let letter of string) {\n      if (escape) {\n        escape = false;\n      } else if (letter === \"\\\\\") {\n        escape = true;\n      } else if (inQuote) {\n        if (letter === prevQuote) {\n          inQuote = false;\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        inQuote = true;\n        prevQuote = letter;\n      } else if (letter === \"(\") {\n        func += 1;\n      } else if (letter === \")\") {\n        if (func > 0) func -= 1;\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true;\n      }\n      if (split) {\n        if (current !== \"\") array.push(current.trim());\n        current = \"\";\n        split = false;\n      } else {\n        current += letter;\n      }\n    }\n    if (last || current !== \"\") array.push(current.trim());\n    return array;\n  }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nlet Container$3$1 = container$1;\nlet list$1$1 = list_1$1;\nlet Rule$3$1 = class Rule extends Container$3$1 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"rule\";\n    if (!this.nodes) this.nodes = [];\n  }\n  get selectors() {\n    return list$1$1.comma(this.selector);\n  }\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null;\n    let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = values.join(sep2);\n  }\n};\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nlet Declaration$2$1 = declaration$1;\nlet tokenizer2$1 = tokenize$1;\nlet Comment$2$1 = comment$1;\nlet AtRule$2$1 = atRule$1;\nlet Root$4$1 = root$1;\nlet Rule$2$1 = rule$1;\nconst SAFE_COMMENT_NEIGHBOR$1 = {\n  empty: true,\n  space: true\n};\nfunction findLastWithPosition$1(tokens) {\n  for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n    let token = tokens[i2];\n    let pos = token[3] || token[2];\n    if (pos) return pos;\n  }\n}\nlet Parser$1$1 = class Parser {\n  constructor(input2) {\n    this.input = input2;\n    this.root = new Root$4$1();\n    this.current = this.root;\n    this.spaces = \"\";\n    this.semicolon = false;\n    this.createTokenizer();\n    this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(token) {\n    let node2 = new AtRule$2$1();\n    node2.name = token[1].slice(1);\n    if (node2.name === \"\") {\n      this.unnamedAtrule(node2, token);\n    }\n    this.init(node2, token[2]);\n    let type;\n    let prev;\n    let shift;\n    let last = false;\n    let open = false;\n    let params = [];\n    let brackets = [];\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      type = token[0];\n      if (type === \"(\" || type === \"[\") {\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (type === \"{\" && brackets.length > 0) {\n        brackets.push(\"}\");\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n      }\n      if (brackets.length === 0) {\n        if (type === \";\") {\n          node2.source.end = this.getPosition(token[2]);\n          node2.source.end.offset++;\n          this.semicolon = true;\n          break;\n        } else if (type === \"{\") {\n          open = true;\n          break;\n        } else if (type === \"}\") {\n          if (params.length > 0) {\n            shift = params.length - 1;\n            prev = params[shift];\n            while (prev && prev[0] === \"space\") {\n              prev = params[--shift];\n            }\n            if (prev) {\n              node2.source.end = this.getPosition(prev[3] || prev[2]);\n              node2.source.end.offset++;\n            }\n          }\n          this.end(token);\n          break;\n        } else {\n          params.push(token);\n        }\n      } else {\n        params.push(token);\n      }\n      if (this.tokenizer.endOfFile()) {\n        last = true;\n        break;\n      }\n    }\n    node2.raws.between = this.spacesAndCommentsFromEnd(params);\n    if (params.length) {\n      node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n      this.raw(node2, \"params\", params);\n      if (last) {\n        token = params[params.length - 1];\n        node2.source.end = this.getPosition(token[3] || token[2]);\n        node2.source.end.offset++;\n        this.spaces = node2.raws.between;\n        node2.raws.between = \"\";\n      }\n    } else {\n      node2.raws.afterName = \"\";\n      node2.params = \"\";\n    }\n    if (open) {\n      node2.nodes = [];\n      this.current = node2;\n    }\n  }\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens);\n    if (colon === false) return;\n    let founded = 0;\n    let token;\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j];\n      if (token[0] !== \"space\") {\n        founded += 1;\n        if (founded === 2) break;\n      }\n    }\n    throw this.input.error(\n      \"Missed semicolon\",\n      token[0] === \"word\" ? token[3] + 1 : token[2]\n    );\n  }\n  colon(tokens) {\n    let brackets = 0;\n    let token, type, prev;\n    for (let [i2, element] of tokens.entries()) {\n      token = element;\n      type = token[0];\n      if (type === \"(\") {\n        brackets += 1;\n      }\n      if (type === \")\") {\n        brackets -= 1;\n      }\n      if (brackets === 0 && type === \":\") {\n        if (!prev) {\n          this.doubleColon(token);\n        } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n          continue;\n        } else {\n          return i2;\n        }\n      }\n      prev = token;\n    }\n    return false;\n  }\n  comment(token) {\n    let node2 = new Comment$2$1();\n    this.init(node2, token[2]);\n    node2.source.end = this.getPosition(token[3] || token[2]);\n    node2.source.end.offset++;\n    let text = token[1].slice(2, -2);\n    if (/^\\s*$/.test(text)) {\n      node2.text = \"\";\n      node2.raws.left = text;\n      node2.raws.right = \"\";\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      node2.text = match[2];\n      node2.raws.left = match[1];\n      node2.raws.right = match[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = tokenizer2$1(this.input);\n  }\n  decl(tokens, customProperty) {\n    let node2 = new Declaration$2$1();\n    this.init(node2, tokens[0][2]);\n    let last = tokens[tokens.length - 1];\n    if (last[0] === \";\") {\n      this.semicolon = true;\n      tokens.pop();\n    }\n    node2.source.end = this.getPosition(\n      last[3] || last[2] || findLastWithPosition$1(tokens)\n    );\n    node2.source.end.offset++;\n    while (tokens[0][0] !== \"word\") {\n      if (tokens.length === 1) this.unknownWord(tokens);\n      node2.raws.before += tokens.shift()[1];\n    }\n    node2.source.start = this.getPosition(tokens[0][2]);\n    node2.prop = \"\";\n    while (tokens.length) {\n      let type = tokens[0][0];\n      if (type === \":\" || type === \"space\" || type === \"comment\") {\n        break;\n      }\n      node2.prop += tokens.shift()[1];\n    }\n    node2.raws.between = \"\";\n    let token;\n    while (tokens.length) {\n      token = tokens.shift();\n      if (token[0] === \":\") {\n        node2.raws.between += token[1];\n        break;\n      } else {\n        if (token[0] === \"word\" && /\\w/.test(token[1])) {\n          this.unknownWord([token]);\n        }\n        node2.raws.between += token[1];\n      }\n    }\n    if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n      node2.raws.before += node2.prop[0];\n      node2.prop = node2.prop.slice(1);\n    }\n    let firstSpaces = [];\n    let next;\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      firstSpaces.push(tokens.shift());\n    }\n    this.precheckMissedSemicolon(tokens);\n    for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n      token = tokens[i2];\n      if (token[1].toLowerCase() === \"!important\") {\n        node2.important = true;\n        let string = this.stringFrom(tokens, i2);\n        string = this.spacesFromEnd(tokens) + string;\n        if (string !== \" !important\") node2.raws.important = string;\n        break;\n      } else if (token[1].toLowerCase() === \"important\") {\n        let cache = tokens.slice(0);\n        let str = \"\";\n        for (let j = i2; j > 0; j--) {\n          let type = cache[j][0];\n          if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n            break;\n          }\n          str = cache.pop()[1] + str;\n        }\n        if (str.trim().indexOf(\"!\") === 0) {\n          node2.important = true;\n          node2.raws.important = str;\n          tokens = cache;\n        }\n      }\n      if (token[0] !== \"space\" && token[0] !== \"comment\") {\n        break;\n      }\n    }\n    let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n    if (hasWord) {\n      node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n      firstSpaces = [];\n    }\n    this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n    if (node2.value.includes(\":\") && !customProperty) {\n      this.checkMissedSemicolon(tokens);\n    }\n  }\n  doubleColon(token) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n  emptyRule(token) {\n    let node2 = new Rule$2$1();\n    this.init(node2, token[2]);\n    node2.selector = \"\";\n    node2.raws.between = \"\";\n    this.current = node2;\n  }\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.semicolon = false;\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.spaces = \"\";\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2]);\n      this.current.source.end.offset++;\n      this.current = this.current.parent;\n    } else {\n      this.unexpectedClose(token);\n    }\n  }\n  endFile() {\n    if (this.current.parent) this.unclosedBlock();\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(token) {\n    this.spaces += token[1];\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1];\n      if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces;\n        this.spaces = \"\";\n      }\n    }\n  }\n  // Helpers\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset);\n    return {\n      column: pos.col,\n      line: pos.line,\n      offset\n    };\n  }\n  init(node2, offset) {\n    this.current.push(node2);\n    node2.source = {\n      input: this.input,\n      start: this.getPosition(offset)\n    };\n    node2.raws.before = this.spaces;\n    this.spaces = \"\";\n    if (node2.type !== \"comment\") this.semicolon = false;\n  }\n  other(start) {\n    let end = false;\n    let type = null;\n    let colon = false;\n    let bracket = null;\n    let brackets = [];\n    let customProperty = start[1].startsWith(\"--\");\n    let tokens = [];\n    let token = start;\n    while (token) {\n      type = token[0];\n      tokens.push(token);\n      if (type === \"(\" || type === \"[\") {\n        if (!bracket) bracket = token;\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (customProperty && colon && type === \"{\") {\n        if (!bracket) bracket = token;\n        brackets.push(\"}\");\n      } else if (brackets.length === 0) {\n        if (type === \";\") {\n          if (colon) {\n            this.decl(tokens, customProperty);\n            return;\n          } else {\n            break;\n          }\n        } else if (type === \"{\") {\n          this.rule(tokens);\n          return;\n        } else if (type === \"}\") {\n          this.tokenizer.back(tokens.pop());\n          end = true;\n          break;\n        } else if (type === \":\") {\n          colon = true;\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n        if (brackets.length === 0) bracket = null;\n      }\n      token = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile()) end = true;\n    if (brackets.length > 0) this.unclosedBracket(bracket);\n    if (end && colon) {\n      if (!customProperty) {\n        while (tokens.length) {\n          token = tokens[tokens.length - 1][0];\n          if (token !== \"space\" && token !== \"comment\") break;\n          this.tokenizer.back(tokens.pop());\n        }\n      }\n      this.decl(tokens, customProperty);\n    } else {\n      this.unknownWord(tokens);\n    }\n  }\n  parse() {\n    let token;\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      switch (token[0]) {\n        case \"space\":\n          this.spaces += token[1];\n          break;\n        case \";\":\n          this.freeSemicolon(token);\n          break;\n        case \"}\":\n          this.end(token);\n          break;\n        case \"comment\":\n          this.comment(token);\n          break;\n        case \"at-word\":\n          this.atrule(token);\n          break;\n        case \"{\":\n          this.emptyRule(token);\n          break;\n        default:\n          this.other(token);\n          break;\n      }\n    }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(node2, prop, tokens, customProperty) {\n    let token, type;\n    let length = tokens.length;\n    let value = \"\";\n    let clean = true;\n    let next, prev;\n    for (let i2 = 0; i2 < length; i2 += 1) {\n      token = tokens[i2];\n      type = token[0];\n      if (type === \"space\" && i2 === length - 1 && !customProperty) {\n        clean = false;\n      } else if (type === \"comment\") {\n        prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n        next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n        if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n          if (value.slice(-1) === \",\") {\n            clean = false;\n          } else {\n            value += token[1];\n          }\n        } else {\n          clean = false;\n        }\n      } else {\n        value += token[1];\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n      node2.raws[prop] = { raw, value };\n    }\n    node2[prop] = value;\n  }\n  rule(tokens) {\n    tokens.pop();\n    let node2 = new Rule$2$1();\n    this.init(node2, tokens[0][2]);\n    node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n    this.raw(node2, \"selector\", tokens);\n    this.current = node2;\n  }\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  // Errors\n  spacesAndCommentsFromStart(tokens) {\n    let next;\n    let spaces = \"\";\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      spaces += tokens.shift()[1];\n    }\n    return spaces;\n  }\n  spacesFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  stringFrom(tokens, from) {\n    let result2 = \"\";\n    for (let i2 = from; i2 < tokens.length; i2++) {\n      result2 += tokens[i2][1];\n    }\n    tokens.splice(from, tokens.length - from);\n    return result2;\n  }\n  unclosedBlock() {\n    let pos = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n  }\n  unclosedBracket(bracket) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: bracket[2] },\n      { offset: bracket[2] + 1 }\n    );\n  }\n  unexpectedClose(token) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: token[2] },\n      { offset: token[2] + 1 }\n    );\n  }\n  unknownWord(tokens) {\n    throw this.input.error(\n      \"Unknown word\",\n      { offset: tokens[0][2] },\n      { offset: tokens[0][2] + tokens[0][1].length }\n    );\n  }\n  unnamedAtrule(node2, token) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n};\nvar parser$1 = Parser$1$1;\nlet Container$2$1 = container$1;\nlet Parser2$1 = parser$1;\nlet Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n  let input2 = new Input$2$1(css, opts);\n  let parser2 = new Parser2$1(input2);\n  try {\n    parser2.parse();\n  } catch (e2) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n        } else if (/\\.sass/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n        } else if (/\\.less$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n        }\n      }\n    }\n    throw e2;\n  }\n  return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nlet { isClean: isClean$3, my: my$3 } = symbols$1;\nlet MapGenerator$1$1 = mapGenerator$1;\nlet stringify$2$1 = stringify_1$1;\nlet Container$1$1 = container$1;\nlet Document$2$1 = document$1$1;\nlet warnOnce$1$1 = warnOnce$2$1;\nlet Result$2$1 = result$1;\nlet parse$2$1 = parse_1$1;\nlet Root$3$1 = root$1;\nconst TYPE_TO_CLASS_NAME$1 = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n};\nconst PLUGIN_PROPS$1 = {\n  AtRule: true,\n  AtRuleExit: true,\n  Comment: true,\n  CommentExit: true,\n  Declaration: true,\n  DeclarationExit: true,\n  Document: true,\n  DocumentExit: true,\n  Once: true,\n  OnceExit: true,\n  postcssPlugin: true,\n  prepare: true,\n  Root: true,\n  RootExit: true,\n  Rule: true,\n  RuleExit: true\n};\nconst NOT_VISITORS$1 = {\n  Once: true,\n  postcssPlugin: true,\n  prepare: true\n};\nconst CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n  return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n  let key = false;\n  let type = TYPE_TO_CLASS_NAME$1[node2.type];\n  if (node2.type === \"decl\") {\n    key = node2.prop.toLowerCase();\n  } else if (node2.type === \"atrule\") {\n    key = node2.name.toLowerCase();\n  }\n  if (key && node2.append) {\n    return [\n      type,\n      type + \"-\" + key,\n      CHILDREN$1,\n      type + \"Exit\",\n      type + \"Exit-\" + key\n    ];\n  } else if (key) {\n    return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n  } else if (node2.append) {\n    return [type, CHILDREN$1, type + \"Exit\"];\n  } else {\n    return [type, type + \"Exit\"];\n  }\n}\nfunction toStack$1(node2) {\n  let events;\n  if (node2.type === \"document\") {\n    events = [\"Document\", CHILDREN$1, \"DocumentExit\"];\n  } else if (node2.type === \"root\") {\n    events = [\"Root\", CHILDREN$1, \"RootExit\"];\n  } else {\n    events = getEvents$1(node2);\n  }\n  return {\n    eventIndex: 0,\n    events,\n    iterator: 0,\n    node: node2,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction cleanMarks$1(node2) {\n  node2[isClean$3] = false;\n  if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks$1(i2));\n  return node2;\n}\nlet postcss$2$1 = {};\nlet LazyResult$2$1 = class LazyResult {\n  constructor(processor2, css, opts) {\n    this.stringified = false;\n    this.processed = false;\n    let root2;\n    if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n      root2 = cleanMarks$1(css);\n    } else if (css instanceof LazyResult || css instanceof Result$2$1) {\n      root2 = cleanMarks$1(css.root);\n      if (css.map) {\n        if (typeof opts.map === \"undefined\") opts.map = {};\n        if (!opts.map.inline) opts.map.inline = false;\n        opts.map.prev = css.map;\n      }\n    } else {\n      let parser2 = parse$2$1;\n      if (opts.syntax) parser2 = opts.syntax.parse;\n      if (opts.parser) parser2 = opts.parser;\n      if (parser2.parse) parser2 = parser2.parse;\n      try {\n        root2 = parser2(css, opts);\n      } catch (error) {\n        this.processed = true;\n        this.error = error;\n      }\n      if (root2 && !root2[my$3]) {\n        Container$1$1.rebuild(root2);\n      }\n    }\n    this.result = new Result$2$1(processor2, root2, opts);\n    this.helpers = { ...postcss$2$1, postcss: postcss$2$1, result: this.result };\n    this.plugins = this.processor.plugins.map((plugin22) => {\n      if (typeof plugin22 === \"object\" && plugin22.prepare) {\n        return { ...plugin22, ...plugin22.prepare(this.result) };\n      } else {\n        return plugin22;\n      }\n    });\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    if (this.processed) return Promise.resolve(this.result);\n    if (!this.processing) {\n      this.processing = this.runAsync();\n    }\n    return this.processing;\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(error, node2) {\n    let plugin22 = this.result.lastPlugin;\n    try {\n      if (node2) node2.addToError(error);\n      this.error = error;\n      if (error.name === \"CssSyntaxError\" && !error.plugin) {\n        error.plugin = plugin22.postcssPlugin;\n        error.setMessage();\n      } else if (plugin22.postcssVersion) {\n        if (process.env.NODE_ENV !== \"production\") {\n          let pluginName = plugin22.postcssPlugin;\n          let pluginVer = plugin22.postcssVersion;\n          let runtimeVer = this.result.processor.version;\n          let a2 = pluginVer.split(\".\");\n          let b = runtimeVer.split(\".\");\n          if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n            console.error(\n              \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n            );\n          }\n        }\n      }\n    } catch (err) {\n      if (console && console.error) console.error(err);\n    }\n    return error;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let add = (plugin22, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = [];\n      this.listeners[type].push([plugin22, cb]);\n    };\n    for (let plugin22 of this.plugins) {\n      if (typeof plugin22 === \"object\") {\n        for (let event in plugin22) {\n          if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          }\n          if (!NOT_VISITORS$1[event]) {\n            if (typeof plugin22[event] === \"object\") {\n              for (let filter in plugin22[event]) {\n                if (filter === \"*\") {\n                  add(plugin22, event, plugin22[event][filter]);\n                } else {\n                  add(\n                    plugin22,\n                    event + \"-\" + filter.toLowerCase(),\n                    plugin22[event][filter]\n                  );\n                }\n              }\n            } else if (typeof plugin22[event] === \"function\") {\n              add(plugin22, event, plugin22[event]);\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let i2 = 0; i2 < this.plugins.length; i2++) {\n      let plugin22 = this.plugins[i2];\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise$1(promise)) {\n        try {\n          await promise;\n        } catch (error) {\n          throw this.handleError(error);\n        }\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean$3]) {\n        root2[isClean$3] = true;\n        let stack = [toStack$1(root2)];\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack);\n          if (isPromise$1(promise)) {\n            try {\n              await promise;\n            } catch (e2) {\n              let node2 = stack[stack.length - 1].node;\n              throw this.handleError(e2, node2);\n            }\n          }\n        }\n      }\n      if (this.listeners.OnceExit) {\n        for (let [plugin22, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin22;\n          try {\n            if (root2.type === \"document\") {\n              let roots = root2.nodes.map(\n                (subRoot) => visitor(subRoot, this.helpers)\n              );\n              await Promise.all(roots);\n            } else {\n              await visitor(root2, this.helpers);\n            }\n          } catch (e2) {\n            throw this.handleError(e2);\n          }\n        }\n      }\n    }\n    this.processed = true;\n    return this.stringify();\n  }\n  runOnRoot(plugin22) {\n    this.result.lastPlugin = plugin22;\n    try {\n      if (typeof plugin22 === \"object\" && plugin22.Once) {\n        if (this.result.root.type === \"document\") {\n          let roots = this.result.root.nodes.map(\n            (root2) => plugin22.Once(root2, this.helpers)\n          );\n          if (isPromise$1(roots[0])) {\n            return Promise.all(roots);\n          }\n          return roots;\n        }\n        return plugin22.Once(this.result.root, this.helpers);\n      } else if (typeof plugin22 === \"function\") {\n        return plugin22(this.result.root, this.result);\n      }\n    } catch (error) {\n      throw this.handleError(error);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = true;\n    this.sync();\n    let opts = this.result.opts;\n    let str = stringify$2$1;\n    if (opts.syntax) str = opts.syntax.stringify;\n    if (opts.stringifier) str = opts.stringifier;\n    if (str.stringify) str = str.stringify;\n    let map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n    let data = map.generate();\n    this.result.css = data[0];\n    this.result.map = data[1];\n    return this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    this.processed = true;\n    if (this.processing) {\n      throw this.getAsyncError();\n    }\n    for (let plugin22 of this.plugins) {\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise$1(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean$3]) {\n        root2[isClean$3] = true;\n        this.walkSync(root2);\n      }\n      if (this.listeners.OnceExit) {\n        if (root2.type === \"document\") {\n          for (let subRoot of root2.nodes) {\n            this.visitSync(this.listeners.OnceExit, subRoot);\n          }\n        } else {\n          this.visitSync(this.listeners.OnceExit, root2);\n        }\n      }\n    }\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this.opts)) {\n        warnOnce$1$1(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(visitors, node2) {\n    for (let [plugin22, visitor] of visitors) {\n      this.result.lastPlugin = plugin22;\n      let promise;\n      try {\n        promise = visitor(node2, this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2.proxyOf);\n      }\n      if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n        return true;\n      }\n      if (isPromise$1(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n  }\n  visitTick(stack) {\n    let visit2 = stack[stack.length - 1];\n    let { node: node2, visitors } = visit2;\n    if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n      stack.pop();\n      return;\n    }\n    if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n      let [plugin22, visitor] = visitors[visit2.visitorIndex];\n      visit2.visitorIndex += 1;\n      if (visit2.visitorIndex === visitors.length) {\n        visit2.visitors = [];\n        visit2.visitorIndex = 0;\n      }\n      this.result.lastPlugin = plugin22;\n      try {\n        return visitor(node2.toProxy(), this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2);\n      }\n    }\n    if (visit2.iterator !== 0) {\n      let iterator = visit2.iterator;\n      let child;\n      while (child = node2.nodes[node2.indexes[iterator]]) {\n        node2.indexes[iterator] += 1;\n        if (!child[isClean$3]) {\n          child[isClean$3] = true;\n          stack.push(toStack$1(child));\n          return;\n        }\n      }\n      visit2.iterator = 0;\n      delete node2.indexes[iterator];\n    }\n    let events = visit2.events;\n    while (visit2.eventIndex < events.length) {\n      let event = events[visit2.eventIndex];\n      visit2.eventIndex += 1;\n      if (event === CHILDREN$1) {\n        if (node2.nodes && node2.nodes.length) {\n          node2[isClean$3] = true;\n          visit2.iterator = node2.getIterator();\n        }\n        return;\n      } else if (this.listeners[event]) {\n        visit2.visitors = this.listeners[event];\n        return;\n      }\n    }\n    stack.pop();\n  }\n  walkSync(node2) {\n    node2[isClean$3] = true;\n    let events = getEvents$1(node2);\n    for (let event of events) {\n      if (event === CHILDREN$1) {\n        if (node2.nodes) {\n          node2.each((child) => {\n            if (!child[isClean$3]) this.walkSync(child);\n          });\n        }\n      } else {\n        let visitors = this.listeners[event];\n        if (visitors) {\n          if (this.visitSync(visitors, node2.toProxy())) return;\n        }\n      }\n    }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n};\nLazyResult$2$1.registerPostcss = (dependant) => {\n  postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nlet MapGenerator2$1 = mapGenerator$1;\nlet stringify$1$1 = stringify_1$1;\nlet warnOnce2$1 = warnOnce$2$1;\nlet parse$1$1 = parse_1$1;\nconst Result$1$1 = result$1;\nlet NoWorkResult$1$1 = class NoWorkResult {\n  constructor(processor2, css, opts) {\n    css = css.toString();\n    this.stringified = false;\n    this._processor = processor2;\n    this._css = css;\n    this._opts = opts;\n    this._map = void 0;\n    let root2;\n    let str = stringify$1$1;\n    this.result = new Result$1$1(this._processor, root2, this._opts);\n    this.result.css = css;\n    let self = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return self.root;\n      }\n    });\n    let map = new MapGenerator2$1(str, root2, this._opts, css);\n    if (map.isMap()) {\n      let [generatedCSS, generatedMap] = map.generate();\n      if (generatedCSS) {\n        this.result.css = generatedCSS;\n      }\n      if (generatedMap) {\n        this.result.map = generatedMap;\n      }\n    } else {\n      map.clearAnnotation();\n      this.result.css = map.css;\n    }\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    return Promise.resolve(this.result);\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this._opts)) {\n        warnOnce2$1(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root) {\n      return this._root;\n    }\n    let root2;\n    let parser2 = parse$1$1;\n    try {\n      root2 = parser2(this._css, this._opts);\n    } catch (error) {\n      this.error = error;\n    }\n    if (this.error) {\n      throw this.error;\n    } else {\n      this._root = root2;\n      return root2;\n    }\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n};\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nlet NoWorkResult2$1 = noWorkResult$1;\nlet LazyResult$1$1 = lazyResult$1;\nlet Document$1$1 = document$1$1;\nlet Root$2$1 = root$1;\nlet Processor$1$1 = class Processor {\n  constructor(plugins = []) {\n    this.version = \"8.4.38\";\n    this.plugins = this.normalize(plugins);\n  }\n  normalize(plugins) {\n    let normalized = [];\n    for (let i2 of plugins) {\n      if (i2.postcss === true) {\n        i2 = i2();\n      } else if (i2.postcss) {\n        i2 = i2.postcss;\n      }\n      if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n        normalized = normalized.concat(i2.plugins);\n      } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n        normalized.push(i2);\n      } else if (typeof i2 === \"function\") {\n        normalized.push(i2);\n      } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n        if (process.env.NODE_ENV !== \"production\") {\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n        }\n      } else {\n        throw new Error(i2 + \" is not a PostCSS plugin\");\n      }\n    }\n    return normalized;\n  }\n  process(css, opts = {}) {\n    if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n      return new NoWorkResult2$1(this, css, opts);\n    } else {\n      return new LazyResult$1$1(this, css, opts);\n    }\n  }\n  use(plugin22) {\n    this.plugins = this.plugins.concat(this.normalize([plugin22]));\n    return this;\n  }\n};\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nlet Declaration$1$1 = declaration$1;\nlet PreviousMap2$1 = previousMap$1;\nlet Comment$1$1 = comment$1;\nlet AtRule$1$1 = atRule$1;\nlet Input$1$1 = input$1;\nlet Root$1$1 = root$1;\nlet Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n  if (Array.isArray(json)) return json.map((n2) => fromJSON$1$1(n2));\n  let { inputs: ownInputs, ...defaults } = json;\n  if (ownInputs) {\n    inputs = [];\n    for (let input2 of ownInputs) {\n      let inputHydrated = { ...input2, __proto__: Input$1$1.prototype };\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap2$1.prototype\n        };\n      }\n      inputs.push(inputHydrated);\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map((n2) => fromJSON$1$1(n2, inputs));\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source;\n    defaults.source = source;\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId];\n    }\n  }\n  if (defaults.type === \"root\") {\n    return new Root$1$1(defaults);\n  } else if (defaults.type === \"decl\") {\n    return new Declaration$1$1(defaults);\n  } else if (defaults.type === \"rule\") {\n    return new Rule$1$1(defaults);\n  } else if (defaults.type === \"comment\") {\n    return new Comment$1$1(defaults);\n  } else if (defaults.type === \"atrule\") {\n    return new AtRule$1$1(defaults);\n  } else {\n    throw new Error(\"Unknown node type: \" + json.type);\n  }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nlet CssSyntaxError2$1 = cssSyntaxError$1;\nlet Declaration2$1 = declaration$1;\nlet LazyResult2$1 = lazyResult$1;\nlet Container2$1 = container$1;\nlet Processor2$1 = processor$1;\nlet stringify$5 = stringify_1$1;\nlet fromJSON$2 = fromJSON_1$1;\nlet Document22 = document$1$1;\nlet Warning2$1 = warning$1;\nlet Comment2$1 = comment$1;\nlet AtRule2$1 = atRule$1;\nlet Result2$1 = result$1;\nlet Input2$1 = input$1;\nlet parse$5 = parse_1$1;\nlet list$3 = list_1$1;\nlet Rule2$1 = rule$1;\nlet Root2$1 = root$1;\nlet Node2$1 = node$1;\nfunction postcss$3(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0];\n  }\n  return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n  let warningPrinted = false;\n  function creator(...args) {\n    if (console && console.warn && !warningPrinted) {\n      warningPrinted = true;\n      console.warn(\n        name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n      );\n      if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n        console.warn(\n          name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n        );\n      }\n    }\n    let transformer = initializer(...args);\n    transformer.postcssPlugin = name;\n    transformer.postcssVersion = new Processor2$1().version;\n    return transformer;\n  }\n  let cache;\n  Object.defineProperty(creator, \"postcss\", {\n    get() {\n      if (!cache) cache = creator();\n      return cache;\n    }\n  });\n  creator.process = function(css, processOpts, pluginOpts) {\n    return postcss$3([creator(pluginOpts)]).process(css, processOpts);\n  };\n  return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = (defaults) => new Comment2$1(defaults);\npostcss$3.atRule = (defaults) => new AtRule2$1(defaults);\npostcss$3.decl = (defaults) => new Declaration2$1(defaults);\npostcss$3.rule = (defaults) => new Rule2$1(defaults);\npostcss$3.root = (defaults) => new Root2$1(defaults);\npostcss$3.document = (defaults) => new Document22(defaults);\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nconst postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x2) {\n  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n  if (n2.__esModule) return n2;\n  var f2 = n2.default;\n  if (typeof f2 == \"function\") {\n    var a2 = function a22() {\n      if (this instanceof a22) {\n        return Reflect.construct(f2, arguments, this.constructor);\n      }\n      return f2.apply(this, arguments);\n    };\n    a2.prototype = f2.prototype;\n  } else a2 = {};\n  Object.defineProperty(a2, \"__esModule\", { value: true });\n  Object.keys(n2).forEach(function(k) {\n    var d = Object.getOwnPropertyDescriptor(n2, k);\n    Object.defineProperty(a2, k, d.get ? d : {\n      enumerable: true,\n      get: function() {\n        return n2[k];\n      }\n    });\n  });\n  return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar x = String;\nvar create = function() {\n  return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nlet pico = picocolors_browserExports;\nlet terminalHighlight$1 = require$$2;\nlet CssSyntaxError$3 = class CssSyntaxError2 extends Error {\n  constructor(message, line, column, source, file, plugin22) {\n    super(message);\n    this.name = \"CssSyntaxError\";\n    this.reason = message;\n    if (file) {\n      this.file = file;\n    }\n    if (source) {\n      this.source = source;\n    }\n    if (plugin22) {\n      this.plugin = plugin22;\n    }\n    if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n      if (typeof line === \"number\") {\n        this.line = line;\n        this.column = column;\n      } else {\n        this.line = line.line;\n        this.column = line.column;\n        this.endLine = column.line;\n        this.endColumn = column.column;\n      }\n    }\n    this.setMessage();\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError2);\n    }\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\";\n    this.message += this.file ? this.file : \"<css input>\";\n    if (typeof this.line !== \"undefined\") {\n      this.message += \":\" + this.line + \":\" + this.column;\n    }\n    this.message += \": \" + this.reason;\n  }\n  showSourceCode(color) {\n    if (!this.source) return \"\";\n    let css = this.source;\n    if (color == null) color = pico.isColorSupported;\n    if (terminalHighlight$1) {\n      if (color) css = terminalHighlight$1(css);\n    }\n    let lines = css.split(/\\r?\\n/);\n    let start = Math.max(this.line - 3, 0);\n    let end = Math.min(this.line + 2, lines.length);\n    let maxWidth = String(end).length;\n    let mark, aside;\n    if (color) {\n      let { bold, gray, red } = pico.createColors(true);\n      mark = (text) => bold(red(text));\n      aside = (text) => gray(text);\n    } else {\n      mark = aside = (str) => str;\n    }\n    return lines.slice(start, end).map((line, index2) => {\n      let number = start + 1 + index2;\n      let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n      if (number === this.line) {\n        let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n      }\n      return \" \" + aside(gutter) + line;\n    }).join(\"\\n\");\n  }\n  toString() {\n    let code = this.showSourceCode();\n    if (code) {\n      code = \"\\n\\n\" + code + \"\\n\";\n    }\n    return this.name + \": \" + this.message + code;\n  }\n};\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nconst DEFAULT_RAW = {\n  after: \"\\n\",\n  beforeClose: \"\\n\",\n  beforeComment: \"\\n\",\n  beforeDecl: \"\\n\",\n  beforeOpen: \" \",\n  beforeRule: \"\\n\",\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: false\n};\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1);\n}\nlet Stringifier$2 = class Stringifier2 {\n  constructor(builder) {\n    this.builder = builder;\n  }\n  atrule(node2, semicolon) {\n    let name = \"@\" + node2.name;\n    let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n    if (typeof node2.raws.afterName !== \"undefined\") {\n      name += node2.raws.afterName;\n    } else if (params) {\n      name += \" \";\n    }\n    if (node2.nodes) {\n      this.block(node2, name + params);\n    } else {\n      let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n      this.builder(name + params + end, node2);\n    }\n  }\n  beforeAfter(node2, detect) {\n    let value;\n    if (node2.type === \"decl\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (node2.type === \"comment\") {\n      value = this.raw(node2, null, \"beforeComment\");\n    } else if (detect === \"before\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else {\n      value = this.raw(node2, null, \"beforeClose\");\n    }\n    let buf = node2.parent;\n    let depth = 0;\n    while (buf && buf.type !== \"root\") {\n      depth += 1;\n      buf = buf.parent;\n    }\n    if (value.includes(\"\\n\")) {\n      let indent = this.raw(node2, null, \"indent\");\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent;\n      }\n    }\n    return value;\n  }\n  block(node2, start) {\n    let between = this.raw(node2, \"between\", \"beforeOpen\");\n    this.builder(start + between + \"{\", node2, \"start\");\n    let after;\n    if (node2.nodes && node2.nodes.length) {\n      this.body(node2);\n      after = this.raw(node2, \"after\");\n    } else {\n      after = this.raw(node2, \"after\", \"emptyBody\");\n    }\n    if (after) this.builder(after);\n    this.builder(\"}\", node2, \"end\");\n  }\n  body(node2) {\n    let last = node2.nodes.length - 1;\n    while (last > 0) {\n      if (node2.nodes[last].type !== \"comment\") break;\n      last -= 1;\n    }\n    let semicolon = this.raw(node2, \"semicolon\");\n    for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n      let child = node2.nodes[i2];\n      let before = this.raw(child, \"before\");\n      if (before) this.builder(before);\n      this.stringify(child, last !== i2 || semicolon);\n    }\n  }\n  comment(node2) {\n    let left = this.raw(node2, \"left\", \"commentLeft\");\n    let right = this.raw(node2, \"right\", \"commentRight\");\n    this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n  }\n  decl(node2, semicolon) {\n    let between = this.raw(node2, \"between\", \"colon\");\n    let string = node2.prop + between + this.rawValue(node2, \"value\");\n    if (node2.important) {\n      string += node2.raws.important || \" !important\";\n    }\n    if (semicolon) string += \";\";\n    this.builder(string, node2);\n  }\n  document(node2) {\n    this.body(node2);\n  }\n  raw(node2, own, detect) {\n    let value;\n    if (!detect) detect = own;\n    if (own) {\n      value = node2.raws[own];\n      if (typeof value !== \"undefined\") return value;\n    }\n    let parent = node2.parent;\n    if (detect === \"before\") {\n      if (!parent || parent.type === \"root\" && parent.first === node2) {\n        return \"\";\n      }\n      if (parent && parent.type === \"document\") {\n        return \"\";\n      }\n    }\n    if (!parent) return DEFAULT_RAW[detect];\n    let root2 = node2.root();\n    if (!root2.rawCache) root2.rawCache = {};\n    if (typeof root2.rawCache[detect] !== \"undefined\") {\n      return root2.rawCache[detect];\n    }\n    if (detect === \"before\" || detect === \"after\") {\n      return this.beforeAfter(node2, detect);\n    } else {\n      let method = \"raw\" + capitalize(detect);\n      if (this[method]) {\n        value = this[method](root2, node2);\n      } else {\n        root2.walk((i2) => {\n          value = i2.raws[own];\n          if (typeof value !== \"undefined\") return false;\n        });\n      }\n    }\n    if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n    root2.rawCache[detect] = value;\n    return value;\n  }\n  rawBeforeClose(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length > 0) {\n        if (typeof i2.raws.after !== \"undefined\") {\n          value = i2.raws.after;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawBeforeComment(root2, node2) {\n    let value;\n    root2.walkComments((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeDecl\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeDecl(root2, node2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.before !== \"undefined\") {\n        value = i2.raws.before;\n        if (value.includes(\"\\n\")) {\n          value = value.replace(/[^\\n]+$/, \"\");\n        }\n        return false;\n      }\n    });\n    if (typeof value === \"undefined\") {\n      value = this.raw(node2, null, \"beforeRule\");\n    } else if (value) {\n      value = value.replace(/\\S/g, \"\");\n    }\n    return value;\n  }\n  rawBeforeOpen(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.type !== \"decl\") {\n        value = i2.raws.between;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawBeforeRule(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          value = i2.raws.before;\n          if (value.includes(\"\\n\")) {\n            value = value.replace(/[^\\n]+$/, \"\");\n          }\n          return false;\n        }\n      }\n    });\n    if (value) value = value.replace(/\\S/g, \"\");\n    return value;\n  }\n  rawColon(root2) {\n    let value;\n    root2.walkDecls((i2) => {\n      if (typeof i2.raws.between !== \"undefined\") {\n        value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n        return false;\n      }\n    });\n    return value;\n  }\n  rawEmptyBody(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length === 0) {\n        value = i2.raws.after;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawIndent(root2) {\n    if (root2.raws.indent) return root2.raws.indent;\n    let value;\n    root2.walk((i2) => {\n      let p = i2.parent;\n      if (p && p !== root2 && p.parent && p.parent === root2) {\n        if (typeof i2.raws.before !== \"undefined\") {\n          let parts = i2.raws.before.split(\"\\n\");\n          value = parts[parts.length - 1];\n          value = value.replace(/\\S/g, \"\");\n          return false;\n        }\n      }\n    });\n    return value;\n  }\n  rawSemicolon(root2) {\n    let value;\n    root2.walk((i2) => {\n      if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n        value = i2.raws.semicolon;\n        if (typeof value !== \"undefined\") return false;\n      }\n    });\n    return value;\n  }\n  rawValue(node2, prop) {\n    let value = node2[prop];\n    let raw = node2.raws[prop];\n    if (raw && raw.value === value) {\n      return raw.raw;\n    }\n    return value;\n  }\n  root(node2) {\n    this.body(node2);\n    if (node2.raws.after) this.builder(node2.raws.after);\n  }\n  rule(node2) {\n    this.block(node2, this.rawValue(node2, \"selector\"));\n    if (node2.raws.ownSemicolon) {\n      this.builder(node2.raws.ownSemicolon, node2, \"end\");\n    }\n  }\n  stringify(node2, semicolon) {\n    if (!this[node2.type]) {\n      throw new Error(\n        \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    }\n    this[node2.type](node2, semicolon);\n  }\n};\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nlet Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n  let str = new Stringifier$1(builder);\n  str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nlet { isClean: isClean$2, my: my$2 } = symbols;\nlet CssSyntaxError$2 = cssSyntaxError;\nlet Stringifier22 = stringifier;\nlet stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n  let cloned = new obj.constructor();\n  for (let i2 in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n      continue;\n    }\n    if (i2 === \"proxyCache\") continue;\n    let value = obj[i2];\n    let type = typeof value;\n    if (i2 === \"parent\" && type === \"object\") {\n      if (parent) cloned[i2] = parent;\n    } else if (i2 === \"source\") {\n      cloned[i2] = value;\n    } else if (Array.isArray(value)) {\n      cloned[i2] = value.map((j) => cloneNode(j, cloned));\n    } else {\n      if (type === \"object\" && value !== null) value = cloneNode(value);\n      cloned[i2] = value;\n    }\n  }\n  return cloned;\n}\nlet Node$4 = class Node3 {\n  constructor(defaults = {}) {\n    this.raws = {};\n    this[isClean$2] = false;\n    this[my$2] = true;\n    for (let name in defaults) {\n      if (name === \"nodes\") {\n        this.nodes = [];\n        for (let node2 of defaults[name]) {\n          if (typeof node2.clone === \"function\") {\n            this.append(node2.clone());\n          } else {\n            this.append(node2);\n          }\n        }\n      } else {\n        this[name] = defaults[name];\n      }\n    }\n  }\n  addToError(error) {\n    error.postcssNode = this;\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s2 = this.source;\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n      );\n    }\n    return error;\n  }\n  after(add) {\n    this.parent.insertAfter(this, add);\n    return this;\n  }\n  assign(overrides = {}) {\n    for (let name in overrides) {\n      this[name] = overrides[name];\n    }\n    return this;\n  }\n  before(add) {\n    this.parent.insertBefore(this, add);\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    delete this.raws.before;\n    delete this.raws.after;\n    if (!keepBetween) delete this.raws.between;\n  }\n  clone(overrides = {}) {\n    let cloned = cloneNode(this);\n    for (let name in overrides) {\n      cloned[name] = overrides[name];\n    }\n    return cloned;\n  }\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertAfter(this, cloned);\n    return cloned;\n  }\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides);\n    this.parent.insertBefore(this, cloned);\n    return cloned;\n  }\n  error(message, opts = {}) {\n    if (this.source) {\n      let { end, start } = this.rangeBy(opts);\n      return this.source.input.error(\n        message,\n        { column: start.column, line: start.line },\n        { column: end.column, line: end.line },\n        opts\n      );\n    }\n    return new CssSyntaxError$2(message);\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n        prop === \"text\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  markDirty() {\n    if (this[isClean$2]) {\n      this[isClean$2] = false;\n      let next = this;\n      while (next = next.parent) {\n        next[isClean$2] = false;\n      }\n    }\n  }\n  next() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 + 1];\n  }\n  positionBy(opts, stringRepresentation) {\n    let pos = this.source.start;\n    if (opts.index) {\n      pos = this.positionInside(opts.index, stringRepresentation);\n    } else if (opts.word) {\n      stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n    }\n    return pos;\n  }\n  positionInside(index2, stringRepresentation) {\n    let string = stringRepresentation || this.toString();\n    let column = this.source.start.column;\n    let line = this.source.start.line;\n    for (let i2 = 0; i2 < index2; i2++) {\n      if (string[i2] === \"\\n\") {\n        column = 1;\n        line += 1;\n      } else {\n        column += 1;\n      }\n    }\n    return { column, line };\n  }\n  prev() {\n    if (!this.parent) return void 0;\n    let index2 = this.parent.index(this);\n    return this.parent.nodes[index2 - 1];\n  }\n  rangeBy(opts) {\n    let start = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    };\n    let end = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: start.column + 1,\n      line: start.line\n    };\n    if (opts.word) {\n      let stringRepresentation = this.toString();\n      let index2 = stringRepresentation.indexOf(opts.word);\n      if (index2 !== -1) {\n        start = this.positionInside(index2, stringRepresentation);\n        end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n      }\n    } else {\n      if (opts.start) {\n        start = {\n          column: opts.start.column,\n          line: opts.start.line\n        };\n      } else if (opts.index) {\n        start = this.positionInside(opts.index);\n      }\n      if (opts.end) {\n        end = {\n          column: opts.end.column,\n          line: opts.end.line\n        };\n      } else if (typeof opts.endIndex === \"number\") {\n        end = this.positionInside(opts.endIndex);\n      } else if (opts.index) {\n        end = this.positionInside(opts.index + 1);\n      }\n    }\n    if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n      end = { column: start.column + 1, line: start.line };\n    }\n    return { end, start };\n  }\n  raw(prop, defaultType) {\n    let str = new Stringifier22();\n    return str.raw(this, prop, defaultType);\n  }\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n    this.parent = void 0;\n    return this;\n  }\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this;\n      let foundSelf = false;\n      for (let node2 of nodes) {\n        if (node2 === this) {\n          foundSelf = true;\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node2);\n          bookmark = node2;\n        } else {\n          this.parent.insertBefore(bookmark, node2);\n        }\n      }\n      if (!foundSelf) {\n        this.remove();\n      }\n    }\n    return this;\n  }\n  root() {\n    let result2 = this;\n    while (result2.parent && result2.parent.type !== \"document\") {\n      result2 = result2.parent;\n    }\n    return result2;\n  }\n  toJSON(_, inputs) {\n    let fixed = {};\n    let emitInputs = inputs == null;\n    inputs = inputs || /* @__PURE__ */ new Map();\n    let inputsNextIndex = 0;\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        continue;\n      }\n      if (name === \"parent\" || name === \"proxyCache\") continue;\n      let value = this[name];\n      if (Array.isArray(value)) {\n        fixed[name] = value.map((i2) => {\n          if (typeof i2 === \"object\" && i2.toJSON) {\n            return i2.toJSON(null, inputs);\n          } else {\n            return i2;\n          }\n        });\n      } else if (typeof value === \"object\" && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs);\n      } else if (name === \"source\") {\n        let inputId = inputs.get(value.input);\n        if (inputId == null) {\n          inputId = inputsNextIndex;\n          inputs.set(value.input, inputsNextIndex);\n          inputsNextIndex++;\n        }\n        fixed[name] = {\n          end: value.end,\n          inputId,\n          start: value.start\n        };\n      } else {\n        fixed[name] = value;\n      }\n    }\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n    }\n    return fixed;\n  }\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor());\n    }\n    return this.proxyCache;\n  }\n  toString(stringifier2 = stringify$3) {\n    if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n    let result2 = \"\";\n    stringifier2(this, (i2) => {\n      result2 += i2;\n    });\n    return result2;\n  }\n  warn(result2, text, opts) {\n    let data = { node: this };\n    for (let i2 in opts) data[i2] = opts[i2];\n    return result2.warn(text, data);\n  }\n  get proxyOf() {\n    return this;\n  }\n};\nvar node = Node$4;\nNode$4.default = Node$4;\nlet Node$3 = node;\nlet Declaration$4 = class Declaration2 extends Node$3 {\n  constructor(defaults) {\n    if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n      defaults = { ...defaults, value: String(defaults.value) };\n    }\n    super(defaults);\n    this.type = \"decl\";\n  }\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n};\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nlet urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = \"\";\n    let i2 = size;\n    while (i2--) {\n      id += alphabet[Math.random() * alphabet.length | 0];\n    }\n    return id;\n  };\n};\nlet nanoid$1 = (size = 21) => {\n  let id = \"\";\n  let i2 = size;\n  while (i2--) {\n    id += urlAlphabet[Math.random() * 64 | 0];\n  }\n  return id;\n};\nvar nonSecure = { nanoid: nanoid$1, customAlphabet };\nlet { SourceMapConsumer: SourceMapConsumer$2, SourceMapGenerator: SourceMapGenerator$2 } = require$$2;\nlet { existsSync, readFileSync } = require$$2;\nlet { dirname: dirname$1, join } = require$$2;\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, \"base64\").toString();\n  } else {\n    return window.atob(str);\n  }\n}\nlet PreviousMap$2 = class PreviousMap2 {\n  constructor(css, opts) {\n    if (opts.map === false) return;\n    this.loadAnnotation(css);\n    this.inline = this.startWith(this.annotation, \"data:\");\n    let prev = opts.map ? opts.map.prev : void 0;\n    let text = this.loadMap(opts.from, prev);\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from;\n    }\n    if (this.mapFile) this.root = dirname$1(this.mapFile);\n    if (text) this.text = text;\n  }\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer$2(this.text);\n    }\n    return this.consumerCache;\n  }\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n    let baseUri = /^data:application\\/json;base64,/;\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n    let uri = /^data:application\\/json,/;\n    if (charsetUri.test(text) || uri.test(text)) {\n      return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n    }\n    if (baseCharsetUri.test(text) || baseUri.test(text)) {\n      return fromBase64(text.substr(RegExp.lastMatch.length));\n    }\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + encoding);\n  }\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(map) {\n    if (typeof map !== \"object\") return false;\n    return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n  }\n  loadAnnotation(css) {\n    let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n    if (!comments) return;\n    let start = css.lastIndexOf(comments.pop());\n    let end = css.indexOf(\"*/\", start);\n    if (start > -1 && end > -1) {\n      this.annotation = this.getAnnotationURL(css.substring(start, end));\n    }\n  }\n  loadFile(path) {\n    this.root = dirname$1(path);\n    if (existsSync(path)) {\n      this.mapFile = path;\n      return readFileSync(path, \"utf-8\").toString().trim();\n    }\n  }\n  loadMap(file, prev) {\n    if (prev === false) return false;\n    if (prev) {\n      if (typeof prev === \"string\") {\n        return prev;\n      } else if (typeof prev === \"function\") {\n        let prevPath = prev(file);\n        if (prevPath) {\n          let map = this.loadFile(prevPath);\n          if (!map) {\n            throw new Error(\n              \"Unable to load previous source map: \" + prevPath.toString()\n            );\n          }\n          return map;\n        }\n      } else if (prev instanceof SourceMapConsumer$2) {\n        return SourceMapGenerator$2.fromSourceMap(prev).toString();\n      } else if (prev instanceof SourceMapGenerator$2) {\n        return prev.toString();\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev);\n      } else {\n        throw new Error(\n          \"Unsupported previous source map format: \" + prev.toString()\n        );\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation);\n    } else if (this.annotation) {\n      let map = this.annotation;\n      if (file) map = join(dirname$1(file), map);\n      return this.loadFile(map);\n    }\n  }\n  startWith(string, start) {\n    if (!string) return false;\n    return string.substr(0, start.length) === start;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nlet { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2;\nlet { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2;\nlet { isAbsolute, resolve: resolve$1 } = require$$2;\nlet { nanoid } = nonSecure;\nlet terminalHighlight = require$$2;\nlet CssSyntaxError$1 = cssSyntaxError;\nlet PreviousMap$1 = previousMap;\nlet fromOffsetCache = Symbol(\"fromOffsetCache\");\nlet sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nlet pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nlet Input$4 = class Input2 {\n  constructor(css, opts = {}) {\n    if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`);\n    }\n    this.css = css.toString();\n    if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n      this.hasBOM = true;\n      this.css = this.css.slice(1);\n    } else {\n      this.hasBOM = false;\n    }\n    if (opts.from) {\n      if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n        this.file = opts.from;\n      } else {\n        this.file = resolve$1(opts.from);\n      }\n    }\n    if (pathAvailable$1 && sourceMapAvailable$1) {\n      let map = new PreviousMap$1(this.css, opts);\n      if (map.text) {\n        this.map = map;\n        let file = map.consumer().file;\n        if (!this.file && file) this.file = this.mapResolve(file);\n      }\n    }\n    if (!this.file) {\n      this.id = \"<input css \" + nanoid(6) + \">\";\n    }\n    if (this.map) this.map.file = this.from;\n  }\n  error(message, line, column, opts = {}) {\n    let result2, endLine, endColumn;\n    if (line && typeof line === \"object\") {\n      let start = line;\n      let end = column;\n      if (typeof start.offset === \"number\") {\n        let pos = this.fromOffset(start.offset);\n        line = pos.line;\n        column = pos.col;\n      } else {\n        line = start.line;\n        column = start.column;\n      }\n      if (typeof end.offset === \"number\") {\n        let pos = this.fromOffset(end.offset);\n        endLine = pos.line;\n        endColumn = pos.col;\n      } else {\n        endLine = end.line;\n        endColumn = end.column;\n      }\n    } else if (!column) {\n      let pos = this.fromOffset(line);\n      line = pos.line;\n      column = pos.col;\n    }\n    let origin = this.origin(line, column, endLine, endColumn);\n    if (origin) {\n      result2 = new CssSyntaxError$1(\n        message,\n        origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n        origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n        origin.source,\n        origin.file,\n        opts.plugin\n      );\n    } else {\n      result2 = new CssSyntaxError$1(\n        message,\n        endLine === void 0 ? line : { column, line },\n        endLine === void 0 ? column : { column: endColumn, line: endLine },\n        this.css,\n        this.file,\n        opts.plugin\n      );\n    }\n    result2.input = { column, endColumn, endLine, line, source: this.css };\n    if (this.file) {\n      if (pathToFileURL$1) {\n        result2.input.url = pathToFileURL$1(this.file).toString();\n      }\n      result2.input.file = this.file;\n    }\n    return result2;\n  }\n  fromOffset(offset) {\n    let lastLine, lineToIndex;\n    if (!this[fromOffsetCache]) {\n      let lines = this.css.split(\"\\n\");\n      lineToIndex = new Array(lines.length);\n      let prevIndex = 0;\n      for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n        lineToIndex[i2] = prevIndex;\n        prevIndex += lines[i2].length + 1;\n      }\n      this[fromOffsetCache] = lineToIndex;\n    } else {\n      lineToIndex = this[fromOffsetCache];\n    }\n    lastLine = lineToIndex[lineToIndex.length - 1];\n    let min = 0;\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1;\n    } else {\n      let max = lineToIndex.length - 2;\n      let mid;\n      while (min < max) {\n        mid = min + (max - min >> 1);\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1;\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1;\n        } else {\n          min = mid;\n          break;\n        }\n      }\n    }\n    return {\n      col: offset - lineToIndex[min] + 1,\n      line: min + 1\n    };\n  }\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file;\n    }\n    return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n  }\n  origin(line, column, endLine, endColumn) {\n    if (!this.map) return false;\n    let consumer = this.map.consumer();\n    let from = consumer.originalPositionFor({ column, line });\n    if (!from.source) return false;\n    let to;\n    if (typeof endLine === \"number\") {\n      to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n    }\n    let fromUrl;\n    if (isAbsolute(from.source)) {\n      fromUrl = pathToFileURL$1(from.source);\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)\n      );\n    }\n    let result2 = {\n      column: from.column,\n      endColumn: to && to.column,\n      endLine: to && to.line,\n      line: from.line,\n      url: fromUrl.toString()\n    };\n    if (fromUrl.protocol === \"file:\") {\n      if (fileURLToPath) {\n        result2.file = fileURLToPath(fromUrl);\n      } else {\n        throw new Error(`file: protocol is not available in this PostCSS build`);\n      }\n    }\n    let source = consumer.sourceContentFor(from.source);\n    if (source) result2.source = source;\n    return result2;\n  }\n  toJSON() {\n    let json = {};\n    for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n      if (this[name] != null) {\n        json[name] = this[name];\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map };\n      if (json.map.consumerCache) {\n        json.map.consumerCache = void 0;\n      }\n    }\n    return json;\n  }\n  get from() {\n    return this.file || this.id;\n  }\n};\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n  terminalHighlight.registerInput(Input$4);\n}\nlet { SourceMapConsumer, SourceMapGenerator } = require$$2;\nlet { dirname, relative, resolve, sep } = require$$2;\nlet { pathToFileURL } = require$$2;\nlet Input$3 = input;\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nlet pathAvailable = Boolean(dirname && resolve && relative && sep);\nlet MapGenerator$2 = class MapGenerator2 {\n  constructor(stringify2, root2, opts, cssString) {\n    this.stringify = stringify2;\n    this.mapOpts = opts.map || {};\n    this.root = root2;\n    this.opts = opts;\n    this.css = cssString;\n    this.originalCSS = cssString;\n    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n    this.memoizedFileURLs = /* @__PURE__ */ new Map();\n    this.memoizedPaths = /* @__PURE__ */ new Map();\n    this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let content;\n    if (this.isInline()) {\n      content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n    } else if (typeof this.mapOpts.annotation === \"string\") {\n      content = this.mapOpts.annotation;\n    } else if (typeof this.mapOpts.annotation === \"function\") {\n      content = this.mapOpts.annotation(this.opts.to, this.root);\n    } else {\n      content = this.outputFile() + \".map\";\n    }\n    let eol = \"\\n\";\n    if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n    this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n  }\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file));\n      let root2 = prev.root || dirname(prev.file);\n      let map;\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer(prev.text);\n        if (map.sourcesContent) {\n          map.sourcesContent = null;\n        }\n      } else {\n        map = prev.consumer();\n      }\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return;\n    if (this.root) {\n      let node2;\n      for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n        node2 = this.root.nodes[i2];\n        if (node2.type !== \"comment\") continue;\n        if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n          this.root.removeChild(i2);\n        }\n      }\n    } else if (this.css) {\n      this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n    }\n  }\n  generate() {\n    this.clearAnnotation();\n    if (pathAvailable && sourceMapAvailable && this.isMap()) {\n      return this.generateMap();\n    } else {\n      let result2 = \"\";\n      this.stringify(this.root, (i2) => {\n        result2 += i2;\n      });\n      return [result2];\n    }\n  }\n  generateMap() {\n    if (this.root) {\n      this.generateString();\n    } else if (this.previous().length === 1) {\n      let prev = this.previous()[0].consumer();\n      prev.file = this.outputFile();\n      this.map = SourceMapGenerator.fromSourceMap(prev, {\n        ignoreInvalidMapping: true\n      });\n    } else {\n      this.map = new SourceMapGenerator({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      });\n      this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    }\n    if (this.isSourcesContent()) this.setSourcesContent();\n    if (this.root && this.previous().length > 0) this.applyPrevMaps();\n    if (this.isAnnotation()) this.addAnnotation();\n    if (this.isInline()) {\n      return [this.css];\n    } else {\n      return [this.css, this.map];\n    }\n  }\n  generateString() {\n    this.css = \"\";\n    this.map = new SourceMapGenerator({\n      file: this.outputFile(),\n      ignoreInvalidMapping: true\n    });\n    let line = 1;\n    let column = 1;\n    let noSource = \"<no source>\";\n    let mapping = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    };\n    let lines, last;\n    this.stringify(this.root, (str, node2, type) => {\n      this.css += str;\n      if (node2 && type !== \"end\") {\n        mapping.generated.line = line;\n        mapping.generated.column = column - 1;\n        if (node2.source && node2.source.start) {\n          mapping.source = this.sourcePath(node2);\n          mapping.original.line = node2.source.start.line;\n          mapping.original.column = node2.source.start.column - 1;\n          this.map.addMapping(mapping);\n        } else {\n          mapping.source = noSource;\n          mapping.original.line = 1;\n          mapping.original.column = 0;\n          this.map.addMapping(mapping);\n        }\n      }\n      lines = str.match(/\\n/g);\n      if (lines) {\n        line += lines.length;\n        last = str.lastIndexOf(\"\\n\");\n        column = str.length - last;\n      } else {\n        column += str.length;\n      }\n      if (node2 && type !== \"start\") {\n        let p = node2.parent || { raws: {} };\n        let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n        if (!childless || node2 !== p.last || p.raws.semicolon) {\n          if (node2.source && node2.source.end) {\n            mapping.source = this.sourcePath(node2);\n            mapping.original.line = node2.source.end.line;\n            mapping.original.column = node2.source.end.column - 1;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 2;\n            this.map.addMapping(mapping);\n          } else {\n            mapping.source = noSource;\n            mapping.original.line = 1;\n            mapping.original.column = 0;\n            mapping.generated.line = line;\n            mapping.generated.column = column - 1;\n            this.map.addMapping(mapping);\n          }\n        }\n      }\n    });\n  }\n  isAnnotation() {\n    if (this.isInline()) {\n      return true;\n    }\n    if (typeof this.mapOpts.annotation !== \"undefined\") {\n      return this.mapOpts.annotation;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.annotation);\n    }\n    return true;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline !== \"undefined\") {\n      return this.mapOpts.inline;\n    }\n    let annotation = this.mapOpts.annotation;\n    if (typeof annotation !== \"undefined\" && annotation !== true) {\n      return false;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.inline);\n    }\n    return true;\n  }\n  isMap() {\n    if (typeof this.opts.map !== \"undefined\") {\n      return !!this.opts.map;\n    }\n    return this.previous().length > 0;\n  }\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n      return this.mapOpts.sourcesContent;\n    }\n    if (this.previous().length) {\n      return this.previous().some((i2) => i2.withContent());\n    }\n    return true;\n  }\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to);\n    } else if (this.opts.from) {\n      return this.path(this.opts.from);\n    } else {\n      return \"to.css\";\n    }\n  }\n  path(file) {\n    if (this.mapOpts.absolute) return file;\n    if (file.charCodeAt(0) === 60) return file;\n    if (/^\\w+:\\/\\//.test(file)) return file;\n    let cached = this.memoizedPaths.get(file);\n    if (cached) return cached;\n    let from = this.opts.to ? dirname(this.opts.to) : \".\";\n    if (typeof this.mapOpts.annotation === \"string\") {\n      from = dirname(resolve(from, this.mapOpts.annotation));\n    }\n    let path = relative(from, file);\n    this.memoizedPaths.set(file, path);\n    return path;\n  }\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = [];\n      if (this.root) {\n        this.root.walk((node2) => {\n          if (node2.source && node2.source.input.map) {\n            let map = node2.source.input.map;\n            if (!this.previousMaps.includes(map)) {\n              this.previousMaps.push(map);\n            }\n          }\n        });\n      } else {\n        let input2 = new Input$3(this.originalCSS, this.opts);\n        if (input2.map) this.previousMaps.push(input2.map);\n      }\n    }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let already = {};\n    if (this.root) {\n      this.root.walk((node2) => {\n        if (node2.source) {\n          let from = node2.source.input.from;\n          if (from && !already[from]) {\n            already[from] = true;\n            let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n            this.map.setSourceContent(fromUrl, node2.source.input.css);\n          }\n        }\n      });\n    } else if (this.css) {\n      let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(from, this.css);\n    }\n  }\n  sourcePath(node2) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from);\n    } else if (this.usesFileUrls) {\n      return this.toFileUrl(node2.source.input.from);\n    } else {\n      return this.toUrl(this.path(node2.source.input.from));\n    }\n  }\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString(\"base64\");\n    } else {\n      return window.btoa(unescape(encodeURIComponent(str)));\n    }\n  }\n  toFileUrl(path) {\n    let cached = this.memoizedFileURLs.get(path);\n    if (cached) return cached;\n    if (pathToFileURL) {\n      let fileURL = pathToFileURL(path).toString();\n      this.memoizedFileURLs.set(path, fileURL);\n      return fileURL;\n    } else {\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n    }\n  }\n  toUrl(path) {\n    let cached = this.memoizedURLs.get(path);\n    if (cached) return cached;\n    if (sep === \"\\\\\") {\n      path = path.replace(/\\\\/g, \"/\");\n    }\n    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n    this.memoizedURLs.set(path, url);\n    return url;\n  }\n};\nvar mapGenerator = MapGenerator$2;\nlet Node$2 = node;\nlet Comment$4 = class Comment2 extends Node$2 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"comment\";\n  }\n};\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nlet { isClean: isClean$1, my: my$1 } = symbols;\nlet Declaration$3 = declaration;\nlet Comment$3 = comment;\nlet Node$1 = node;\nlet parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n  return nodes.map((i2) => {\n    if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n    delete i2.source;\n    return i2;\n  });\n}\nfunction markDirtyUp(node2) {\n  node2[isClean$1] = false;\n  if (node2.proxyOf.nodes) {\n    for (let i2 of node2.proxyOf.nodes) {\n      markDirtyUp(i2);\n    }\n  }\n}\nlet Container$7 = class Container2 extends Node$1 {\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last);\n      for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n    }\n    this.markDirty();\n    return this;\n  }\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween);\n    if (this.nodes) {\n      for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n    }\n  }\n  each(callback) {\n    if (!this.proxyOf.nodes) return void 0;\n    let iterator = this.getIterator();\n    let index2, result2;\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index2 = this.indexes[iterator];\n      result2 = callback(this.proxyOf.nodes[index2], index2);\n      if (result2 === false) break;\n      this.indexes[iterator] += 1;\n    }\n    delete this.indexes[iterator];\n    return result2;\n  }\n  every(condition) {\n    return this.nodes.every(condition);\n  }\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0;\n    if (!this.indexes) this.indexes = {};\n    this.lastEach += 1;\n    let iterator = this.lastEach;\n    this.indexes[iterator] = 0;\n    return iterator;\n  }\n  getProxyProcessor() {\n    return {\n      get(node2, prop) {\n        if (prop === \"proxyOf\") {\n          return node2;\n        } else if (!node2[prop]) {\n          return node2[prop];\n        } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n          return (...args) => {\n            return node2[prop](\n              ...args.map((i2) => {\n                if (typeof i2 === \"function\") {\n                  return (child, index2) => i2(child.toProxy(), index2);\n                } else {\n                  return i2;\n                }\n              })\n            );\n          };\n        } else if (prop === \"every\" || prop === \"some\") {\n          return (cb) => {\n            return node2[prop](\n              (child, ...other) => cb(child.toProxy(), ...other)\n            );\n          };\n        } else if (prop === \"root\") {\n          return () => node2.root().toProxy();\n        } else if (prop === \"nodes\") {\n          return node2.nodes.map((i2) => i2.toProxy());\n        } else if (prop === \"first\" || prop === \"last\") {\n          return node2[prop].toProxy();\n        } else {\n          return node2[prop];\n        }\n      },\n      set(node2, prop, value) {\n        if (node2[prop] === value) return true;\n        node2[prop] = value;\n        if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n          node2.markDirty();\n        }\n        return true;\n      }\n    };\n  }\n  index(child) {\n    if (typeof child === \"number\") return child;\n    if (child.proxyOf) child = child.proxyOf;\n    return this.proxyOf.nodes.indexOf(child);\n  }\n  insertAfter(exist, add) {\n    let existIndex = this.index(exist);\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex < index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  insertBefore(exist, add) {\n    let existIndex = this.index(exist);\n    let type = existIndex === 0 ? \"prepend\" : false;\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n    existIndex = this.index(exist);\n    for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (existIndex <= index2) {\n        this.indexes[id] = index2 + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  normalize(nodes, sample) {\n    if (typeof nodes === \"string\") {\n      nodes = cleanSource(parse$4(nodes).nodes);\n    } else if (typeof nodes === \"undefined\") {\n      nodes = [];\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type === \"root\" && this.type !== \"document\") {\n      nodes = nodes.nodes.slice(0);\n      for (let i2 of nodes) {\n        if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n      }\n    } else if (nodes.type) {\n      nodes = [nodes];\n    } else if (nodes.prop) {\n      if (typeof nodes.value === \"undefined\") {\n        throw new Error(\"Value field is missed in node creation\");\n      } else if (typeof nodes.value !== \"string\") {\n        nodes.value = String(nodes.value);\n      }\n      nodes = [new Declaration$3(nodes)];\n    } else if (nodes.selector) {\n      nodes = [new Rule$4(nodes)];\n    } else if (nodes.name) {\n      nodes = [new AtRule$4(nodes)];\n    } else if (nodes.text) {\n      nodes = [new Comment$3(nodes)];\n    } else {\n      throw new Error(\"Unknown node type in node creation\");\n    }\n    let processed = nodes.map((i2) => {\n      if (!i2[my$1]) Container2.rebuild(i2);\n      i2 = i2.proxyOf;\n      if (i2.parent) i2.parent.removeChild(i2);\n      if (i2[isClean$1]) markDirtyUp(i2);\n      if (typeof i2.raws.before === \"undefined\") {\n        if (sample && typeof sample.raws.before !== \"undefined\") {\n          i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n        }\n      }\n      i2.parent = this.proxyOf;\n      return i2;\n    });\n    return processed;\n  }\n  prepend(...children) {\n    children = children.reverse();\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n      for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  push(child) {\n    child.parent = this;\n    this.proxyOf.nodes.push(child);\n    return this;\n  }\n  removeAll() {\n    for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n    this.proxyOf.nodes = [];\n    this.markDirty();\n    return this;\n  }\n  removeChild(child) {\n    child = this.index(child);\n    this.proxyOf.nodes[child].parent = void 0;\n    this.proxyOf.nodes.splice(child, 1);\n    let index2;\n    for (let id in this.indexes) {\n      index2 = this.indexes[id];\n      if (index2 >= child) {\n        this.indexes[id] = index2 - 1;\n      }\n    }\n    this.markDirty();\n    return this;\n  }\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts;\n      opts = {};\n    }\n    this.walkDecls((decl) => {\n      if (opts.props && !opts.props.includes(decl.prop)) return;\n      if (opts.fast && !decl.value.includes(opts.fast)) return;\n      decl.value = decl.value.replace(pattern, callback);\n    });\n    this.markDirty();\n    return this;\n  }\n  some(condition) {\n    return this.nodes.some(condition);\n  }\n  walk(callback) {\n    return this.each((child, i2) => {\n      let result2;\n      try {\n        result2 = callback(child, i2);\n      } catch (e2) {\n        throw child.addToError(e2);\n      }\n      if (result2 !== false && child.walk) {\n        result2 = child.walk(callback);\n      }\n      return result2;\n    });\n  }\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name;\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"atrule\" && name.test(child.name)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"atrule\" && child.name === name) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkComments(callback) {\n    return this.walk((child, i2) => {\n      if (child.type === \"comment\") {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop;\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"decl\" && prop.test(child.prop)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"decl\" && child.prop === prop) {\n        return callback(child, i2);\n      }\n    });\n  }\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector;\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\") {\n          return callback(child, i2);\n        }\n      });\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i2) => {\n        if (child.type === \"rule\" && selector.test(child.selector)) {\n          return callback(child, i2);\n        }\n      });\n    }\n    return this.walk((child, i2) => {\n      if (child.type === \"rule\" && child.selector === selector) {\n        return callback(child, i2);\n      }\n    });\n  }\n  get first() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (!this.proxyOf.nodes) return void 0;\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n};\nContainer$7.registerParse = (dependant) => {\n  parse$4 = dependant;\n};\nContainer$7.registerRule = (dependant) => {\n  Rule$4 = dependant;\n};\nContainer$7.registerAtRule = (dependant) => {\n  AtRule$4 = dependant;\n};\nContainer$7.registerRoot = (dependant) => {\n  Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = (node2) => {\n  if (node2.type === \"atrule\") {\n    Object.setPrototypeOf(node2, AtRule$4.prototype);\n  } else if (node2.type === \"rule\") {\n    Object.setPrototypeOf(node2, Rule$4.prototype);\n  } else if (node2.type === \"decl\") {\n    Object.setPrototypeOf(node2, Declaration$3.prototype);\n  } else if (node2.type === \"comment\") {\n    Object.setPrototypeOf(node2, Comment$3.prototype);\n  } else if (node2.type === \"root\") {\n    Object.setPrototypeOf(node2, Root$6.prototype);\n  }\n  node2[my$1] = true;\n  if (node2.nodes) {\n    node2.nodes.forEach((child) => {\n      Container$7.rebuild(child);\n    });\n  }\n};\nlet Container$6 = container;\nlet LazyResult$4, Processor$3;\nlet Document$3 = class Document23 extends Container$6 {\n  constructor(defaults) {\n    super({ type: \"document\", ...defaults });\n    if (!this.nodes) {\n      this.nodes = [];\n    }\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$4(new Processor$3(), this, opts);\n    return lazy.stringify();\n  }\n};\nDocument$3.registerLazyResult = (dependant) => {\n  LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = (dependant) => {\n  Processor$3 = dependant;\n};\nvar document$1 = Document$3;\nDocument$3.default = Document$3;\nlet printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n  if (printed[message]) return;\n  printed[message] = true;\n  if (typeof console !== \"undefined\" && console.warn) {\n    console.warn(message);\n  }\n};\nlet Warning$2 = class Warning2 {\n  constructor(text, opts = {}) {\n    this.type = \"warning\";\n    this.text = text;\n    if (opts.node && opts.node.source) {\n      let range = opts.node.rangeBy(opts);\n      this.line = range.start.line;\n      this.column = range.start.column;\n      this.endLine = range.end.line;\n      this.endColumn = range.end.column;\n    }\n    for (let opt in opts) this[opt] = opts[opt];\n  }\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        index: this.index,\n        plugin: this.plugin,\n        word: this.word\n      }).message;\n    }\n    if (this.plugin) {\n      return this.plugin + \": \" + this.text;\n    }\n    return this.text;\n  }\n};\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nlet Warning$1 = warning;\nlet Result$3 = class Result2 {\n  constructor(processor2, root2, opts) {\n    this.processor = processor2;\n    this.messages = [];\n    this.root = root2;\n    this.opts = opts;\n    this.css = void 0;\n    this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin;\n      }\n    }\n    let warning2 = new Warning$1(text, opts);\n    this.messages.push(warning2);\n    return warning2;\n  }\n  warnings() {\n    return this.messages.filter((i2) => i2.type === \"warning\");\n  }\n  get content() {\n    return this.css;\n  }\n};\nvar result = Result$3;\nResult$3.default = Result$3;\nconst SINGLE_QUOTE = \"'\".charCodeAt(0);\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0);\nconst BACKSLASH = \"\\\\\".charCodeAt(0);\nconst SLASH = \"/\".charCodeAt(0);\nconst NEWLINE = \"\\n\".charCodeAt(0);\nconst SPACE = \" \".charCodeAt(0);\nconst FEED = \"\\f\".charCodeAt(0);\nconst TAB = \"\t\".charCodeAt(0);\nconst CR = \"\\r\".charCodeAt(0);\nconst OPEN_SQUARE = \"[\".charCodeAt(0);\nconst CLOSE_SQUARE = \"]\".charCodeAt(0);\nconst OPEN_PARENTHESES = \"(\".charCodeAt(0);\nconst CLOSE_PARENTHESES = \")\".charCodeAt(0);\nconst OPEN_CURLY = \"{\".charCodeAt(0);\nconst CLOSE_CURLY = \"}\".charCodeAt(0);\nconst SEMICOLON = \";\".charCodeAt(0);\nconst ASTERISK = \"*\".charCodeAt(0);\nconst COLON = \":\".charCodeAt(0);\nconst AT = \"@\".charCodeAt(0);\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nconst RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options = {}) {\n  let css = input2.css.valueOf();\n  let ignore = options.ignoreErrors;\n  let code, next, quote, content, escape;\n  let escaped, escapePos, prev, n2, currentToken;\n  let length = css.length;\n  let pos = 0;\n  let buffer = [];\n  let returned = [];\n  function position() {\n    return pos;\n  }\n  function unclosed(what) {\n    throw input2.error(\"Unclosed \" + what, pos);\n  }\n  function endOfFile() {\n    return returned.length === 0 && pos >= length;\n  }\n  function nextToken(opts) {\n    if (returned.length) return returned.pop();\n    if (pos >= length) return;\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n    code = css.charCodeAt(pos);\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED: {\n        next = pos;\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n        } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n        currentToken = [\"space\", css.slice(pos, next)];\n        pos = next - 1;\n        break;\n      }\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES: {\n        let controlChar = String.fromCharCode(code);\n        currentToken = [controlChar, controlChar, pos];\n        break;\n      }\n      case OPEN_PARENTHESES: {\n        prev = buffer.length ? buffer.pop()[1] : \"\";\n        n2 = css.charCodeAt(pos + 1);\n        if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n          next = pos;\n          do {\n            escaped = false;\n            next = css.indexOf(\")\", next + 1);\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos;\n                break;\n              } else {\n                unclosed(\"bracket\");\n              }\n            }\n            escapePos = next;\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1;\n              escaped = !escaped;\n            }\n          } while (escaped);\n          currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          next = css.indexOf(\")\", pos + 1);\n          content = css.slice(pos, next + 1);\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = [\"(\", \"(\", pos];\n          } else {\n            currentToken = [\"brackets\", content, pos, next];\n            pos = next;\n          }\n        }\n        break;\n      }\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE: {\n        quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n        next = pos;\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1;\n              break;\n            } else {\n              unclosed(\"string\");\n            }\n          }\n          escapePos = next;\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n        currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case AT: {\n        RE_AT_END.lastIndex = pos + 1;\n        RE_AT_END.test(css);\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1;\n        } else {\n          next = RE_AT_END.lastIndex - 2;\n        }\n        currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      case BACKSLASH: {\n        next = pos;\n        escape = true;\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1;\n          escape = !escape;\n        }\n        code = css.charCodeAt(next + 1);\n        if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n          next += 1;\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1;\n            }\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1;\n            }\n          }\n        }\n        currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n        pos = next;\n        break;\n      }\n      default: {\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf(\"*/\", pos + 2) + 1;\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length;\n            } else {\n              unclosed(\"comment\");\n            }\n          }\n          currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n          pos = next;\n        } else {\n          RE_WORD_END.lastIndex = pos + 1;\n          RE_WORD_END.test(css);\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1;\n          } else {\n            next = RE_WORD_END.lastIndex - 2;\n          }\n          currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n          buffer.push(currentToken);\n          pos = next;\n        }\n        break;\n      }\n    }\n    pos++;\n    return currentToken;\n  }\n  function back(token) {\n    returned.push(token);\n  }\n  return {\n    back,\n    endOfFile,\n    nextToken,\n    position\n  };\n};\nlet Container$5 = container;\nlet AtRule$3 = class AtRule2 extends Container$5 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"atrule\";\n  }\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.append(...children);\n  }\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = [];\n    return super.prepend(...children);\n  }\n};\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nlet Container$4 = container;\nlet LazyResult$3, Processor$2;\nlet Root$5 = class Root2 extends Container$4 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"root\";\n    if (!this.nodes) this.nodes = [];\n  }\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child);\n    if (sample) {\n      if (type === \"prepend\") {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before;\n        } else {\n          delete sample.raws.before;\n        }\n      } else if (this.first !== sample) {\n        for (let node2 of nodes) {\n          node2.raws.before = sample.raws.before;\n        }\n      }\n    }\n    return nodes;\n  }\n  removeChild(child, ignore) {\n    let index2 = this.index(child);\n    if (!ignore && index2 === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index2].raws.before;\n    }\n    return super.removeChild(child);\n  }\n  toResult(opts = {}) {\n    let lazy = new LazyResult$3(new Processor$2(), this, opts);\n    return lazy.stringify();\n  }\n};\nRoot$5.registerLazyResult = (dependant) => {\n  LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = (dependant) => {\n  Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nlet list$2 = {\n  comma(string) {\n    return list$2.split(string, [\",\"], true);\n  },\n  space(string) {\n    let spaces = [\" \", \"\\n\", \"\t\"];\n    return list$2.split(string, spaces);\n  },\n  split(string, separators, last) {\n    let array = [];\n    let current = \"\";\n    let split = false;\n    let func = 0;\n    let inQuote = false;\n    let prevQuote = \"\";\n    let escape = false;\n    for (let letter of string) {\n      if (escape) {\n        escape = false;\n      } else if (letter === \"\\\\\") {\n        escape = true;\n      } else if (inQuote) {\n        if (letter === prevQuote) {\n          inQuote = false;\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        inQuote = true;\n        prevQuote = letter;\n      } else if (letter === \"(\") {\n        func += 1;\n      } else if (letter === \")\") {\n        if (func > 0) func -= 1;\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true;\n      }\n      if (split) {\n        if (current !== \"\") array.push(current.trim());\n        current = \"\";\n        split = false;\n      } else {\n        current += letter;\n      }\n    }\n    if (last || current !== \"\") array.push(current.trim());\n    return array;\n  }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nlet Container$3 = container;\nlet list$1 = list_1;\nlet Rule$3 = class Rule2 extends Container$3 {\n  constructor(defaults) {\n    super(defaults);\n    this.type = \"rule\";\n    if (!this.nodes) this.nodes = [];\n  }\n  get selectors() {\n    return list$1.comma(this.selector);\n  }\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null;\n    let sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = values.join(sep2);\n  }\n};\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nlet Declaration$2 = declaration;\nlet tokenizer22 = tokenize;\nlet Comment$2 = comment;\nlet AtRule$2 = atRule;\nlet Root$4 = root;\nlet Rule$2 = rule;\nconst SAFE_COMMENT_NEIGHBOR = {\n  empty: true,\n  space: true\n};\nfunction findLastWithPosition(tokens) {\n  for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n    let token = tokens[i2];\n    let pos = token[3] || token[2];\n    if (pos) return pos;\n  }\n}\nlet Parser$1 = class Parser2 {\n  constructor(input2) {\n    this.input = input2;\n    this.root = new Root$4();\n    this.current = this.root;\n    this.spaces = \"\";\n    this.semicolon = false;\n    this.createTokenizer();\n    this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(token) {\n    let node2 = new AtRule$2();\n    node2.name = token[1].slice(1);\n    if (node2.name === \"\") {\n      this.unnamedAtrule(node2, token);\n    }\n    this.init(node2, token[2]);\n    let type;\n    let prev;\n    let shift;\n    let last = false;\n    let open = false;\n    let params = [];\n    let brackets = [];\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      type = token[0];\n      if (type === \"(\" || type === \"[\") {\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (type === \"{\" && brackets.length > 0) {\n        brackets.push(\"}\");\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n      }\n      if (brackets.length === 0) {\n        if (type === \";\") {\n          node2.source.end = this.getPosition(token[2]);\n          node2.source.end.offset++;\n          this.semicolon = true;\n          break;\n        } else if (type === \"{\") {\n          open = true;\n          break;\n        } else if (type === \"}\") {\n          if (params.length > 0) {\n            shift = params.length - 1;\n            prev = params[shift];\n            while (prev && prev[0] === \"space\") {\n              prev = params[--shift];\n            }\n            if (prev) {\n              node2.source.end = this.getPosition(prev[3] || prev[2]);\n              node2.source.end.offset++;\n            }\n          }\n          this.end(token);\n          break;\n        } else {\n          params.push(token);\n        }\n      } else {\n        params.push(token);\n      }\n      if (this.tokenizer.endOfFile()) {\n        last = true;\n        break;\n      }\n    }\n    node2.raws.between = this.spacesAndCommentsFromEnd(params);\n    if (params.length) {\n      node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n      this.raw(node2, \"params\", params);\n      if (last) {\n        token = params[params.length - 1];\n        node2.source.end = this.getPosition(token[3] || token[2]);\n        node2.source.end.offset++;\n        this.spaces = node2.raws.between;\n        node2.raws.between = \"\";\n      }\n    } else {\n      node2.raws.afterName = \"\";\n      node2.params = \"\";\n    }\n    if (open) {\n      node2.nodes = [];\n      this.current = node2;\n    }\n  }\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens);\n    if (colon === false) return;\n    let founded = 0;\n    let token;\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j];\n      if (token[0] !== \"space\") {\n        founded += 1;\n        if (founded === 2) break;\n      }\n    }\n    throw this.input.error(\n      \"Missed semicolon\",\n      token[0] === \"word\" ? token[3] + 1 : token[2]\n    );\n  }\n  colon(tokens) {\n    let brackets = 0;\n    let token, type, prev;\n    for (let [i2, element] of tokens.entries()) {\n      token = element;\n      type = token[0];\n      if (type === \"(\") {\n        brackets += 1;\n      }\n      if (type === \")\") {\n        brackets -= 1;\n      }\n      if (brackets === 0 && type === \":\") {\n        if (!prev) {\n          this.doubleColon(token);\n        } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n          continue;\n        } else {\n          return i2;\n        }\n      }\n      prev = token;\n    }\n    return false;\n  }\n  comment(token) {\n    let node2 = new Comment$2();\n    this.init(node2, token[2]);\n    node2.source.end = this.getPosition(token[3] || token[2]);\n    node2.source.end.offset++;\n    let text = token[1].slice(2, -2);\n    if (/^\\s*$/.test(text)) {\n      node2.text = \"\";\n      node2.raws.left = text;\n      node2.raws.right = \"\";\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      node2.text = match[2];\n      node2.raws.left = match[1];\n      node2.raws.right = match[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = tokenizer22(this.input);\n  }\n  decl(tokens, customProperty) {\n    let node2 = new Declaration$2();\n    this.init(node2, tokens[0][2]);\n    let last = tokens[tokens.length - 1];\n    if (last[0] === \";\") {\n      this.semicolon = true;\n      tokens.pop();\n    }\n    node2.source.end = this.getPosition(\n      last[3] || last[2] || findLastWithPosition(tokens)\n    );\n    node2.source.end.offset++;\n    while (tokens[0][0] !== \"word\") {\n      if (tokens.length === 1) this.unknownWord(tokens);\n      node2.raws.before += tokens.shift()[1];\n    }\n    node2.source.start = this.getPosition(tokens[0][2]);\n    node2.prop = \"\";\n    while (tokens.length) {\n      let type = tokens[0][0];\n      if (type === \":\" || type === \"space\" || type === \"comment\") {\n        break;\n      }\n      node2.prop += tokens.shift()[1];\n    }\n    node2.raws.between = \"\";\n    let token;\n    while (tokens.length) {\n      token = tokens.shift();\n      if (token[0] === \":\") {\n        node2.raws.between += token[1];\n        break;\n      } else {\n        if (token[0] === \"word\" && /\\w/.test(token[1])) {\n          this.unknownWord([token]);\n        }\n        node2.raws.between += token[1];\n      }\n    }\n    if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n      node2.raws.before += node2.prop[0];\n      node2.prop = node2.prop.slice(1);\n    }\n    let firstSpaces = [];\n    let next;\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      firstSpaces.push(tokens.shift());\n    }\n    this.precheckMissedSemicolon(tokens);\n    for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n      token = tokens[i2];\n      if (token[1].toLowerCase() === \"!important\") {\n        node2.important = true;\n        let string = this.stringFrom(tokens, i2);\n        string = this.spacesFromEnd(tokens) + string;\n        if (string !== \" !important\") node2.raws.important = string;\n        break;\n      } else if (token[1].toLowerCase() === \"important\") {\n        let cache = tokens.slice(0);\n        let str = \"\";\n        for (let j = i2; j > 0; j--) {\n          let type = cache[j][0];\n          if (str.trim().indexOf(\"!\") === 0 && type !== \"space\") {\n            break;\n          }\n          str = cache.pop()[1] + str;\n        }\n        if (str.trim().indexOf(\"!\") === 0) {\n          node2.important = true;\n          node2.raws.important = str;\n          tokens = cache;\n        }\n      }\n      if (token[0] !== \"space\" && token[0] !== \"comment\") {\n        break;\n      }\n    }\n    let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n    if (hasWord) {\n      node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n      firstSpaces = [];\n    }\n    this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n    if (node2.value.includes(\":\") && !customProperty) {\n      this.checkMissedSemicolon(tokens);\n    }\n  }\n  doubleColon(token) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n  emptyRule(token) {\n    let node2 = new Rule$2();\n    this.init(node2, token[2]);\n    node2.selector = \"\";\n    node2.raws.between = \"\";\n    this.current = node2;\n  }\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.semicolon = false;\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.spaces = \"\";\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2]);\n      this.current.source.end.offset++;\n      this.current = this.current.parent;\n    } else {\n      this.unexpectedClose(token);\n    }\n  }\n  endFile() {\n    if (this.current.parent) this.unclosedBlock();\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon;\n    }\n    this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n    this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(token) {\n    this.spaces += token[1];\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1];\n      if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces;\n        this.spaces = \"\";\n      }\n    }\n  }\n  // Helpers\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset);\n    return {\n      column: pos.col,\n      line: pos.line,\n      offset\n    };\n  }\n  init(node2, offset) {\n    this.current.push(node2);\n    node2.source = {\n      input: this.input,\n      start: this.getPosition(offset)\n    };\n    node2.raws.before = this.spaces;\n    this.spaces = \"\";\n    if (node2.type !== \"comment\") this.semicolon = false;\n  }\n  other(start) {\n    let end = false;\n    let type = null;\n    let colon = false;\n    let bracket = null;\n    let brackets = [];\n    let customProperty = start[1].startsWith(\"--\");\n    let tokens = [];\n    let token = start;\n    while (token) {\n      type = token[0];\n      tokens.push(token);\n      if (type === \"(\" || type === \"[\") {\n        if (!bracket) bracket = token;\n        brackets.push(type === \"(\" ? \")\" : \"]\");\n      } else if (customProperty && colon && type === \"{\") {\n        if (!bracket) bracket = token;\n        brackets.push(\"}\");\n      } else if (brackets.length === 0) {\n        if (type === \";\") {\n          if (colon) {\n            this.decl(tokens, customProperty);\n            return;\n          } else {\n            break;\n          }\n        } else if (type === \"{\") {\n          this.rule(tokens);\n          return;\n        } else if (type === \"}\") {\n          this.tokenizer.back(tokens.pop());\n          end = true;\n          break;\n        } else if (type === \":\") {\n          colon = true;\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop();\n        if (brackets.length === 0) bracket = null;\n      }\n      token = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile()) end = true;\n    if (brackets.length > 0) this.unclosedBracket(bracket);\n    if (end && colon) {\n      if (!customProperty) {\n        while (tokens.length) {\n          token = tokens[tokens.length - 1][0];\n          if (token !== \"space\" && token !== \"comment\") break;\n          this.tokenizer.back(tokens.pop());\n        }\n      }\n      this.decl(tokens, customProperty);\n    } else {\n      this.unknownWord(tokens);\n    }\n  }\n  parse() {\n    let token;\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken();\n      switch (token[0]) {\n        case \"space\":\n          this.spaces += token[1];\n          break;\n        case \";\":\n          this.freeSemicolon(token);\n          break;\n        case \"}\":\n          this.end(token);\n          break;\n        case \"comment\":\n          this.comment(token);\n          break;\n        case \"at-word\":\n          this.atrule(token);\n          break;\n        case \"{\":\n          this.emptyRule(token);\n          break;\n        default:\n          this.other(token);\n          break;\n      }\n    }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(node2, prop, tokens, customProperty) {\n    let token, type;\n    let length = tokens.length;\n    let value = \"\";\n    let clean = true;\n    let next, prev;\n    for (let i2 = 0; i2 < length; i2 += 1) {\n      token = tokens[i2];\n      type = token[0];\n      if (type === \"space\" && i2 === length - 1 && !customProperty) {\n        clean = false;\n      } else if (type === \"comment\") {\n        prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n        next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n        if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n          if (value.slice(-1) === \",\") {\n            clean = false;\n          } else {\n            value += token[1];\n          }\n        } else {\n          clean = false;\n        }\n      } else {\n        value += token[1];\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n      node2.raws[prop] = { raw, value };\n    }\n    node2[prop] = value;\n  }\n  rule(tokens) {\n    tokens.pop();\n    let node2 = new Rule$2();\n    this.init(node2, tokens[0][2]);\n    node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n    this.raw(node2, \"selector\", tokens);\n    this.current = node2;\n  }\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  // Errors\n  spacesAndCommentsFromStart(tokens) {\n    let next;\n    let spaces = \"\";\n    while (tokens.length) {\n      next = tokens[0][0];\n      if (next !== \"space\" && next !== \"comment\") break;\n      spaces += tokens.shift()[1];\n    }\n    return spaces;\n  }\n  spacesFromEnd(tokens) {\n    let lastTokenType;\n    let spaces = \"\";\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0];\n      if (lastTokenType !== \"space\") break;\n      spaces = tokens.pop()[1] + spaces;\n    }\n    return spaces;\n  }\n  stringFrom(tokens, from) {\n    let result2 = \"\";\n    for (let i2 = from; i2 < tokens.length; i2++) {\n      result2 += tokens[i2][1];\n    }\n    tokens.splice(from, tokens.length - from);\n    return result2;\n  }\n  unclosedBlock() {\n    let pos = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n  }\n  unclosedBracket(bracket) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: bracket[2] },\n      { offset: bracket[2] + 1 }\n    );\n  }\n  unexpectedClose(token) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: token[2] },\n      { offset: token[2] + 1 }\n    );\n  }\n  unknownWord(tokens) {\n    throw this.input.error(\n      \"Unknown word\",\n      { offset: tokens[0][2] },\n      { offset: tokens[0][2] + tokens[0][1].length }\n    );\n  }\n  unnamedAtrule(node2, token) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    );\n  }\n};\nvar parser = Parser$1;\nlet Container$2 = container;\nlet Parser22 = parser;\nlet Input$2 = input;\nfunction parse$3(css, opts) {\n  let input2 = new Input$2(css, opts);\n  let parser2 = new Parser22(input2);\n  try {\n    parser2.parse();\n  } catch (e2) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n        } else if (/\\.sass/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n        } else if (/\\.less$/i.test(opts.from)) {\n          e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n        }\n      }\n    }\n    throw e2;\n  }\n  return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nlet { isClean, my } = symbols;\nlet MapGenerator$1 = mapGenerator;\nlet stringify$2 = stringify_1;\nlet Container$1 = container;\nlet Document$2 = document$1;\nlet warnOnce$1 = warnOnce$2;\nlet Result$2 = result;\nlet parse$2 = parse_1;\nlet Root$3 = root;\nconst TYPE_TO_CLASS_NAME = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n};\nconst PLUGIN_PROPS = {\n  AtRule: true,\n  AtRuleExit: true,\n  Comment: true,\n  CommentExit: true,\n  Declaration: true,\n  DeclarationExit: true,\n  Document: true,\n  DocumentExit: true,\n  Once: true,\n  OnceExit: true,\n  postcssPlugin: true,\n  prepare: true,\n  Root: true,\n  RootExit: true,\n  Rule: true,\n  RuleExit: true\n};\nconst NOT_VISITORS = {\n  Once: true,\n  postcssPlugin: true,\n  prepare: true\n};\nconst CHILDREN = 0;\nfunction isPromise(obj) {\n  return typeof obj === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n  let key = false;\n  let type = TYPE_TO_CLASS_NAME[node2.type];\n  if (node2.type === \"decl\") {\n    key = node2.prop.toLowerCase();\n  } else if (node2.type === \"atrule\") {\n    key = node2.name.toLowerCase();\n  }\n  if (key && node2.append) {\n    return [\n      type,\n      type + \"-\" + key,\n      CHILDREN,\n      type + \"Exit\",\n      type + \"Exit-\" + key\n    ];\n  } else if (key) {\n    return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n  } else if (node2.append) {\n    return [type, CHILDREN, type + \"Exit\"];\n  } else {\n    return [type, type + \"Exit\"];\n  }\n}\nfunction toStack(node2) {\n  let events;\n  if (node2.type === \"document\") {\n    events = [\"Document\", CHILDREN, \"DocumentExit\"];\n  } else if (node2.type === \"root\") {\n    events = [\"Root\", CHILDREN, \"RootExit\"];\n  } else {\n    events = getEvents(node2);\n  }\n  return {\n    eventIndex: 0,\n    events,\n    iterator: 0,\n    node: node2,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction cleanMarks(node2) {\n  node2[isClean] = false;\n  if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n  return node2;\n}\nlet postcss$2 = {};\nlet LazyResult$2 = class LazyResult2 {\n  constructor(processor2, css, opts) {\n    this.stringified = false;\n    this.processed = false;\n    let root2;\n    if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n      root2 = cleanMarks(css);\n    } else if (css instanceof LazyResult2 || css instanceof Result$2) {\n      root2 = cleanMarks(css.root);\n      if (css.map) {\n        if (typeof opts.map === \"undefined\") opts.map = {};\n        if (!opts.map.inline) opts.map.inline = false;\n        opts.map.prev = css.map;\n      }\n    } else {\n      let parser2 = parse$2;\n      if (opts.syntax) parser2 = opts.syntax.parse;\n      if (opts.parser) parser2 = opts.parser;\n      if (parser2.parse) parser2 = parser2.parse;\n      try {\n        root2 = parser2(css, opts);\n      } catch (error) {\n        this.processed = true;\n        this.error = error;\n      }\n      if (root2 && !root2[my]) {\n        Container$1.rebuild(root2);\n      }\n    }\n    this.result = new Result$2(processor2, root2, opts);\n    this.helpers = { ...postcss$2, postcss: postcss$2, result: this.result };\n    this.plugins = this.processor.plugins.map((plugin22) => {\n      if (typeof plugin22 === \"object\" && plugin22.prepare) {\n        return { ...plugin22, ...plugin22.prepare(this.result) };\n      } else {\n        return plugin22;\n      }\n    });\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    if (this.processed) return Promise.resolve(this.result);\n    if (!this.processing) {\n      this.processing = this.runAsync();\n    }\n    return this.processing;\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(error, node2) {\n    let plugin22 = this.result.lastPlugin;\n    try {\n      if (node2) node2.addToError(error);\n      this.error = error;\n      if (error.name === \"CssSyntaxError\" && !error.plugin) {\n        error.plugin = plugin22.postcssPlugin;\n        error.setMessage();\n      } else if (plugin22.postcssVersion) {\n        if (process.env.NODE_ENV !== \"production\") {\n          let pluginName = plugin22.postcssPlugin;\n          let pluginVer = plugin22.postcssVersion;\n          let runtimeVer = this.result.processor.version;\n          let a2 = pluginVer.split(\".\");\n          let b = runtimeVer.split(\".\");\n          if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n            console.error(\n              \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n            );\n          }\n        }\n      }\n    } catch (err) {\n      if (console && console.error) console.error(err);\n    }\n    return error;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let add = (plugin22, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = [];\n      this.listeners[type].push([plugin22, cb]);\n    };\n    for (let plugin22 of this.plugins) {\n      if (typeof plugin22 === \"object\") {\n        for (let event in plugin22) {\n          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin22.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          }\n          if (!NOT_VISITORS[event]) {\n            if (typeof plugin22[event] === \"object\") {\n              for (let filter in plugin22[event]) {\n                if (filter === \"*\") {\n                  add(plugin22, event, plugin22[event][filter]);\n                } else {\n                  add(\n                    plugin22,\n                    event + \"-\" + filter.toLowerCase(),\n                    plugin22[event][filter]\n                  );\n                }\n              }\n            } else if (typeof plugin22[event] === \"function\") {\n              add(plugin22, event, plugin22[event]);\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let i2 = 0; i2 < this.plugins.length; i2++) {\n      let plugin22 = this.plugins[i2];\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise(promise)) {\n        try {\n          await promise;\n        } catch (error) {\n          throw this.handleError(error);\n        }\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean]) {\n        root2[isClean] = true;\n        let stack = [toStack(root2)];\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack);\n          if (isPromise(promise)) {\n            try {\n              await promise;\n            } catch (e2) {\n              let node2 = stack[stack.length - 1].node;\n              throw this.handleError(e2, node2);\n            }\n          }\n        }\n      }\n      if (this.listeners.OnceExit) {\n        for (let [plugin22, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin22;\n          try {\n            if (root2.type === \"document\") {\n              let roots = root2.nodes.map(\n                (subRoot) => visitor(subRoot, this.helpers)\n              );\n              await Promise.all(roots);\n            } else {\n              await visitor(root2, this.helpers);\n            }\n          } catch (e2) {\n            throw this.handleError(e2);\n          }\n        }\n      }\n    }\n    this.processed = true;\n    return this.stringify();\n  }\n  runOnRoot(plugin22) {\n    this.result.lastPlugin = plugin22;\n    try {\n      if (typeof plugin22 === \"object\" && plugin22.Once) {\n        if (this.result.root.type === \"document\") {\n          let roots = this.result.root.nodes.map(\n            (root2) => plugin22.Once(root2, this.helpers)\n          );\n          if (isPromise(roots[0])) {\n            return Promise.all(roots);\n          }\n          return roots;\n        }\n        return plugin22.Once(this.result.root, this.helpers);\n      } else if (typeof plugin22 === \"function\") {\n        return plugin22(this.result.root, this.result);\n      }\n    } catch (error) {\n      throw this.handleError(error);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = true;\n    this.sync();\n    let opts = this.result.opts;\n    let str = stringify$2;\n    if (opts.syntax) str = opts.syntax.stringify;\n    if (opts.stringifier) str = opts.stringifier;\n    if (str.stringify) str = str.stringify;\n    let map = new MapGenerator$1(str, this.result.root, this.result.opts);\n    let data = map.generate();\n    this.result.css = data[0];\n    this.result.map = data[1];\n    return this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    this.processed = true;\n    if (this.processing) {\n      throw this.getAsyncError();\n    }\n    for (let plugin22 of this.plugins) {\n      let promise = this.runOnRoot(plugin22);\n      if (isPromise(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n    this.prepareVisitors();\n    if (this.hasListener) {\n      let root2 = this.result.root;\n      while (!root2[isClean]) {\n        root2[isClean] = true;\n        this.walkSync(root2);\n      }\n      if (this.listeners.OnceExit) {\n        if (root2.type === \"document\") {\n          for (let subRoot of root2.nodes) {\n            this.visitSync(this.listeners.OnceExit, subRoot);\n          }\n        } else {\n          this.visitSync(this.listeners.OnceExit, root2);\n        }\n      }\n    }\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this.opts)) {\n        warnOnce$1(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(visitors, node2) {\n    for (let [plugin22, visitor] of visitors) {\n      this.result.lastPlugin = plugin22;\n      let promise;\n      try {\n        promise = visitor(node2, this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2.proxyOf);\n      }\n      if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n        return true;\n      }\n      if (isPromise(promise)) {\n        throw this.getAsyncError();\n      }\n    }\n  }\n  visitTick(stack) {\n    let visit2 = stack[stack.length - 1];\n    let { node: node2, visitors } = visit2;\n    if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n      stack.pop();\n      return;\n    }\n    if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n      let [plugin22, visitor] = visitors[visit2.visitorIndex];\n      visit2.visitorIndex += 1;\n      if (visit2.visitorIndex === visitors.length) {\n        visit2.visitors = [];\n        visit2.visitorIndex = 0;\n      }\n      this.result.lastPlugin = plugin22;\n      try {\n        return visitor(node2.toProxy(), this.helpers);\n      } catch (e2) {\n        throw this.handleError(e2, node2);\n      }\n    }\n    if (visit2.iterator !== 0) {\n      let iterator = visit2.iterator;\n      let child;\n      while (child = node2.nodes[node2.indexes[iterator]]) {\n        node2.indexes[iterator] += 1;\n        if (!child[isClean]) {\n          child[isClean] = true;\n          stack.push(toStack(child));\n          return;\n        }\n      }\n      visit2.iterator = 0;\n      delete node2.indexes[iterator];\n    }\n    let events = visit2.events;\n    while (visit2.eventIndex < events.length) {\n      let event = events[visit2.eventIndex];\n      visit2.eventIndex += 1;\n      if (event === CHILDREN) {\n        if (node2.nodes && node2.nodes.length) {\n          node2[isClean] = true;\n          visit2.iterator = node2.getIterator();\n        }\n        return;\n      } else if (this.listeners[event]) {\n        visit2.visitors = this.listeners[event];\n        return;\n      }\n    }\n    stack.pop();\n  }\n  walkSync(node2) {\n    node2[isClean] = true;\n    let events = getEvents(node2);\n    for (let event of events) {\n      if (event === CHILDREN) {\n        if (node2.nodes) {\n          node2.each((child) => {\n            if (!child[isClean]) this.walkSync(child);\n          });\n        }\n      } else {\n        let visitors = this.listeners[event];\n        if (visitors) {\n          if (this.visitSync(visitors, node2.toProxy())) return;\n        }\n      }\n    }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n};\nLazyResult$2.registerPostcss = (dependant) => {\n  postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nlet MapGenerator22 = mapGenerator;\nlet stringify$1 = stringify_1;\nlet warnOnce22 = warnOnce$2;\nlet parse$1 = parse_1;\nconst Result$1 = result;\nlet NoWorkResult$1 = class NoWorkResult2 {\n  constructor(processor2, css, opts) {\n    css = css.toString();\n    this.stringified = false;\n    this._processor = processor2;\n    this._css = css;\n    this._opts = opts;\n    this._map = void 0;\n    let root2;\n    let str = stringify$1;\n    this.result = new Result$1(this._processor, root2, this._opts);\n    this.result.css = css;\n    let self = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return self.root;\n      }\n    });\n    let map = new MapGenerator22(str, root2, this._opts, css);\n    if (map.isMap()) {\n      let [generatedCSS, generatedMap] = map.generate();\n      if (generatedCSS) {\n        this.result.css = generatedCSS;\n      }\n      if (generatedMap) {\n        this.result.map = generatedMap;\n      }\n    } else {\n      map.clearAnnotation();\n      this.result.css = map.css;\n    }\n  }\n  async() {\n    if (this.error) return Promise.reject(this.error);\n    return Promise.resolve(this.result);\n  }\n  catch(onRejected) {\n    return this.async().catch(onRejected);\n  }\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!(\"from\" in this._opts)) {\n        warnOnce22(\n          \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n        );\n      }\n    }\n    return this.async().then(onFulfilled, onRejected);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root) {\n      return this._root;\n    }\n    let root2;\n    let parser2 = parse$1;\n    try {\n      root2 = parser2(this._css, this._opts);\n    } catch (error) {\n      this.error = error;\n    }\n    if (this.error) {\n      throw this.error;\n    } else {\n      this._root = root2;\n      return root2;\n    }\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n};\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nlet NoWorkResult22 = noWorkResult;\nlet LazyResult$1 = lazyResult;\nlet Document$1 = document$1;\nlet Root$2 = root;\nlet Processor$1 = class Processor2 {\n  constructor(plugins = []) {\n    this.version = \"8.4.38\";\n    this.plugins = this.normalize(plugins);\n  }\n  normalize(plugins) {\n    let normalized = [];\n    for (let i2 of plugins) {\n      if (i2.postcss === true) {\n        i2 = i2();\n      } else if (i2.postcss) {\n        i2 = i2.postcss;\n      }\n      if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n        normalized = normalized.concat(i2.plugins);\n      } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n        normalized.push(i2);\n      } else if (typeof i2 === \"function\") {\n        normalized.push(i2);\n      } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n        if (process.env.NODE_ENV !== \"production\") {\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n        }\n      } else {\n        throw new Error(i2 + \" is not a PostCSS plugin\");\n      }\n    }\n    return normalized;\n  }\n  process(css, opts = {}) {\n    if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n      return new NoWorkResult22(this, css, opts);\n    } else {\n      return new LazyResult$1(this, css, opts);\n    }\n  }\n  use(plugin22) {\n    this.plugins = this.plugins.concat(this.normalize([plugin22]));\n    return this;\n  }\n};\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nlet Declaration$1 = declaration;\nlet PreviousMap22 = previousMap;\nlet Comment$1 = comment;\nlet AtRule$1 = atRule;\nlet Input$1 = input;\nlet Root$1 = root;\nlet Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n  if (Array.isArray(json)) return json.map((n2) => fromJSON$1(n2));\n  let { inputs: ownInputs, ...defaults } = json;\n  if (ownInputs) {\n    inputs = [];\n    for (let input2 of ownInputs) {\n      let inputHydrated = { ...input2, __proto__: Input$1.prototype };\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap22.prototype\n        };\n      }\n      inputs.push(inputHydrated);\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map((n2) => fromJSON$1(n2, inputs));\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source;\n    defaults.source = source;\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId];\n    }\n  }\n  if (defaults.type === \"root\") {\n    return new Root$1(defaults);\n  } else if (defaults.type === \"decl\") {\n    return new Declaration$1(defaults);\n  } else if (defaults.type === \"rule\") {\n    return new Rule$1(defaults);\n  } else if (defaults.type === \"comment\") {\n    return new Comment$1(defaults);\n  } else if (defaults.type === \"atrule\") {\n    return new AtRule$1(defaults);\n  } else {\n    throw new Error(\"Unknown node type: \" + json.type);\n  }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nlet CssSyntaxError22 = cssSyntaxError;\nlet Declaration22 = declaration;\nlet LazyResult22 = lazyResult;\nlet Container22 = container;\nlet Processor22 = processor;\nlet stringify = stringify_1;\nlet fromJSON = fromJSON_1;\nlet Document222 = document$1;\nlet Warning22 = warning;\nlet Comment22 = comment;\nlet AtRule22 = atRule;\nlet Result22 = result;\nlet Input22 = input;\nlet parse = parse_1;\nlet list = list_1;\nlet Rule22 = rule;\nlet Root22 = root;\nlet Node22 = node;\nfunction postcss(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0];\n  }\n  return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n  let warningPrinted = false;\n  function creator(...args) {\n    if (console && console.warn && !warningPrinted) {\n      warningPrinted = true;\n      console.warn(\n        name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n      );\n      if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n        console.warn(\n          name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n        );\n      }\n    }\n    let transformer = initializer(...args);\n    transformer.postcssPlugin = name;\n    transformer.postcssVersion = new Processor22().version;\n    return transformer;\n  }\n  let cache;\n  Object.defineProperty(creator, \"postcss\", {\n    get() {\n      if (!cache) cache = creator();\n      return cache;\n    }\n  });\n  creator.process = function(css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts);\n  };\n  return creator;\n};\npostcss.stringify = stringify;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = (defaults) => new Comment22(defaults);\npostcss.atRule = (defaults) => new AtRule22(defaults);\npostcss.decl = (defaults) => new Declaration22(defaults);\npostcss.rule = (defaults) => new Rule22(defaults);\npostcss.root = (defaults) => new Root22(defaults);\npostcss.document = (defaults) => new Document222(defaults);\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nclass BaseRRNode {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  constructor(..._args) {\n    __publicField2(this, \"parentElement\", null);\n    __publicField2(this, \"parentNode\", null);\n    __publicField2(this, \"ownerDocument\");\n    __publicField2(this, \"firstChild\", null);\n    __publicField2(this, \"lastChild\", null);\n    __publicField2(this, \"previousSibling\", null);\n    __publicField2(this, \"nextSibling\", null);\n    __publicField2(this, \"ELEMENT_NODE\", 1);\n    __publicField2(this, \"TEXT_NODE\", 3);\n    __publicField2(this, \"nodeType\");\n    __publicField2(this, \"nodeName\");\n    __publicField2(this, \"RRNodeType\");\n  }\n  get childNodes() {\n    const childNodes2 = [];\n    let childIterator = this.firstChild;\n    while (childIterator) {\n      childNodes2.push(childIterator);\n      childIterator = childIterator.nextSibling;\n    }\n    return childNodes2;\n  }\n  contains(node2) {\n    if (!(node2 instanceof BaseRRNode)) return false;\n    else if (node2.ownerDocument !== this.ownerDocument) return false;\n    else if (node2 === this) return true;\n    while (node2.parentNode) {\n      if (node2.parentNode === this) return true;\n      node2 = node2.parentNode;\n    }\n    return false;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  appendChild(_newChild) {\n    throw new Error(\n      `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  insertBefore(_newChild, _refChild) {\n    throw new Error(\n      `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  removeChild(_node) {\n    throw new Error(\n      `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n    );\n  }\n  toString() {\n    return \"RRNode\";\n  }\n}\nconst testableAccessors = {\n  Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n  ShadowRoot: [\"host\", \"styleSheets\"],\n  Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n  MutationObserver: []\n};\nconst testableMethods = {\n  Node: [\"contains\", \"getRootNode\"],\n  ShadowRoot: [\"getSelection\"],\n  Element: [],\n  MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nfunction getUntaintedPrototype(key) {\n  if (untaintedBasePrototype[key])\n    return untaintedBasePrototype[key];\n  const defaultObj = globalThis[key];\n  const defaultPrototype = defaultObj.prototype;\n  const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n  const isUntaintedAccessors = Boolean(\n    accessorNames && // @ts-expect-error 2345\n    accessorNames.every(\n      (accessor) => {\n        var _a2, _b;\n        return Boolean(\n          (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n        );\n      }\n    )\n  );\n  const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n  const isUntaintedMethods = Boolean(\n    methodNames && methodNames.every(\n      // @ts-expect-error 2345\n      (method) => {\n        var _a2;\n        return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n      }\n    )\n  );\n  if (isUntaintedAccessors && isUntaintedMethods) {\n    untaintedBasePrototype[key] = defaultObj.prototype;\n    return defaultObj.prototype;\n  }\n  try {\n    const iframeEl = document.createElement(\"iframe\");\n    document.body.appendChild(iframeEl);\n    const win = iframeEl.contentWindow;\n    if (!win) return defaultObj.prototype;\n    const untaintedObject = win[key].prototype;\n    document.body.removeChild(iframeEl);\n    if (!untaintedObject) return defaultPrototype;\n    return untaintedBasePrototype[key] = untaintedObject;\n  } catch {\n    return defaultPrototype;\n  }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n  var _a2;\n  const cacheKey = `${key}.${String(accessor)}`;\n  if (untaintedAccessorCache[cacheKey])\n    return untaintedAccessorCache[cacheKey].call(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype(key);\n  const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n    untaintedPrototype,\n    accessor\n  )) == null ? void 0 : _a2.get;\n  if (!untaintedAccessor) return instance[accessor];\n  untaintedAccessorCache[cacheKey] = untaintedAccessor;\n  return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n  const cacheKey = `${key}.${String(method)}`;\n  if (untaintedMethodCache[cacheKey])\n    return untaintedMethodCache[cacheKey].bind(\n      instance\n    );\n  const untaintedPrototype = getUntaintedPrototype(key);\n  const untaintedMethod = untaintedPrototype[method];\n  if (typeof untaintedMethod !== \"function\") return instance[method];\n  untaintedMethodCache[cacheKey] = untaintedMethod;\n  return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n  return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n  return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n  return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n  if (!n2 || !(\"host\" in n2)) return null;\n  return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n  return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n  if (!n2 || !(\"shadowRoot\" in n2)) return null;\n  return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n  return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n  return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n  return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nconst index = {\n  childNodes,\n  parentNode,\n  parentElement,\n  textContent,\n  contains,\n  getRootNode,\n  host,\n  styleSheets,\n  shadowRoot,\n  querySelector,\n  querySelectorAll,\n  mutationObserver: mutationObserverCtor\n};\nfunction on(type, fn, target = document) {\n  const options = { capture: true, passive: true };\n  target.addEventListener(type, fn, options);\n  return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n  map: {},\n  getId() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return -1;\n  },\n  getNode() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return null;\n  },\n  removeNodeFromMap() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  },\n  has() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return false;\n  },\n  reset() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n  _mirror = new Proxy(_mirror, {\n    get(target, prop, receiver) {\n      if (prop === \"map\") {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n      }\n      return Reflect.get(target, prop, receiver);\n    }\n  });\n}\nfunction throttle(func, wait, options = {}) {\n  let timeout = null;\n  let previous = 0;\n  return function(...args) {\n    const now = Date.now();\n    if (!previous && options.leading === false) {\n      previous = now;\n    }\n    const remaining = wait - (now - previous);\n    const context = this;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = now;\n      func.apply(context, args);\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(() => {\n        previous = options.leading === false ? 0 : Date.now();\n        timeout = null;\n        func.apply(context, args);\n      }, remaining);\n    }\n  };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n  const original = win.Object.getOwnPropertyDescriptor(target, key);\n  win.Object.defineProperty(\n    target,\n    key,\n    isRevoked ? d : {\n      set(value) {\n        setTimeout(() => {\n          d.set.call(this, value);\n        }, 0);\n        if (original && original.set) {\n          original.set.call(this, value);\n        }\n      }\n    }\n  );\n  return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n  try {\n    if (!(name in source)) {\n      return () => {\n      };\n    }\n    const original = source[name];\n    const wrapped = replacement(original);\n    if (typeof wrapped === \"function\") {\n      wrapped.prototype = wrapped.prototype || {};\n      Object.defineProperties(wrapped, {\n        __rrweb_original__: {\n          enumerable: false,\n          value: original\n        }\n      });\n    }\n    source[name] = wrapped;\n    return () => {\n      source[name] = original;\n    };\n  } catch {\n    return () => {\n    };\n  }\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n  nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n  var _a2, _b, _c, _d;\n  const doc = win.document;\n  return {\n    left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n    top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n  };\n}\nfunction getWindowHeight() {\n  return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n  return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n  if (!node2) {\n    return null;\n  }\n  const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n  return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n  if (!node2) {\n    return false;\n  }\n  const el = closestElementOfNode(node2);\n  if (!el) {\n    return false;\n  }\n  try {\n    if (typeof blockClass === \"string\") {\n      if (el.classList.contains(blockClass)) return true;\n      if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n    } else {\n      if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n    }\n  } catch (e2) {\n  }\n  if (blockSelector) {\n    if (el.matches(blockSelector)) return true;\n    if (checkAncestors && el.closest(blockSelector) !== null) return true;\n  }\n  return false;\n}\nfunction isSerialized(n2, mirror2) {\n  return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n  if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n    return true;\n  }\n  return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n  if (isShadowRoot(target)) {\n    return false;\n  }\n  const id = mirror2.getId(target);\n  if (!mirror2.has(id)) {\n    return true;\n  }\n  const parent = index.parentNode(target);\n  if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n    return false;\n  }\n  if (!parent) {\n    return true;\n  }\n  return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n  return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n  if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n    win.NodeList.prototype.forEach = Array.prototype.forEach;\n  }\n  if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n    win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n  }\n}\nfunction isSerializedIframe(n2, mirror2) {\n  return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n  return Boolean(\n    n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n  );\n}\nfunction hasShadowRoot(n2) {\n  if (!n2) return false;\n  if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n    return Boolean(n2.shadowRoot);\n  }\n  return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n  constructor() {\n    __publicField(this, \"id\", 1);\n    __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n  }\n  getId(stylesheet) {\n    return this.styleIDMap.get(stylesheet) ?? -1;\n  }\n  has(stylesheet) {\n    return this.styleIDMap.has(stylesheet);\n  }\n  /**\n   * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n   */\n  add(stylesheet, id) {\n    if (this.has(stylesheet)) return this.getId(stylesheet);\n    let newId;\n    if (id === void 0) {\n      newId = this.id++;\n    } else newId = id;\n    this.styleIDMap.set(stylesheet, newId);\n    this.idStyleMap.set(newId, stylesheet);\n    return newId;\n  }\n  getStyle(id) {\n    return this.idStyleMap.get(id) || null;\n  }\n  reset() {\n    this.styleIDMap = /* @__PURE__ */ new WeakMap();\n    this.idStyleMap = /* @__PURE__ */ new Map();\n    this.id = 1;\n  }\n  generateId() {\n    return this.id++;\n  }\n}\nfunction getShadowHost(n2) {\n  var _a2;\n  let shadowHost = null;\n  if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n    shadowHost = index.host(index.getRootNode(n2));\n  return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n  let rootShadowHost = n2;\n  let shadowHost;\n  while (shadowHost = getShadowHost(rootShadowHost))\n    rootShadowHost = shadowHost;\n  return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n  const doc = n2.ownerDocument;\n  if (!doc) return false;\n  const shadowHost = getRootShadowHost(n2);\n  return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n  const doc = n2.ownerDocument;\n  if (!doc) return false;\n  return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n  EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n  EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n  EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n  EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n  EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n  EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n  EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n  return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n  IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n  IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n  IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n  IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n  IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n  IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n  IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n  IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n  IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n  IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n  IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n  IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n  IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n  IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n  IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n  IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n  return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n  MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n  MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n  MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n  MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n  MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n  MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n  MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n  MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n  MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n  MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n  MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n  return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n  CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n  CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n  CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n  return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n  MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n  MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n  MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n  MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n  MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n  return MediaInteractions2;\n})(MediaInteractions || {});\nfunction isNodeInLinkedList(n2) {\n  return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n  constructor() {\n    __publicField(this, \"length\", 0);\n    __publicField(this, \"head\", null);\n    __publicField(this, \"tail\", null);\n  }\n  get(position) {\n    if (position >= this.length) {\n      throw new Error(\"Position outside of list range\");\n    }\n    let current = this.head;\n    for (let index2 = 0; index2 < position; index2++) {\n      current = (current == null ? void 0 : current.next) || null;\n    }\n    return current;\n  }\n  addNode(n2) {\n    const node2 = {\n      value: n2,\n      previous: null,\n      next: null\n    };\n    n2.__ln = node2;\n    if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n      const current = n2.previousSibling.__ln.next;\n      node2.next = current;\n      node2.previous = n2.previousSibling.__ln;\n      n2.previousSibling.__ln.next = node2;\n      if (current) {\n        current.previous = node2;\n      }\n    } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n      const current = n2.nextSibling.__ln.previous;\n      node2.previous = current;\n      node2.next = n2.nextSibling.__ln;\n      n2.nextSibling.__ln.previous = node2;\n      if (current) {\n        current.next = node2;\n      }\n    } else {\n      if (this.head) {\n        this.head.previous = node2;\n      }\n      node2.next = this.head;\n      this.head = node2;\n    }\n    if (node2.next === null) {\n      this.tail = node2;\n    }\n    this.length++;\n  }\n  removeNode(n2) {\n    const current = n2.__ln;\n    if (!this.head) {\n      return;\n    }\n    if (!current.previous) {\n      this.head = current.next;\n      if (this.head) {\n        this.head.previous = null;\n      } else {\n        this.tail = null;\n      }\n    } else {\n      current.previous.next = current.next;\n      if (current.next) {\n        current.next.previous = current.previous;\n      } else {\n        this.tail = current.previous;\n      }\n    }\n    if (n2.__ln) {\n      delete n2.__ln;\n    }\n    this.length--;\n  }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n  constructor() {\n    __publicField(this, \"frozen\", false);\n    __publicField(this, \"locked\", false);\n    __publicField(this, \"texts\", []);\n    __publicField(this, \"attributes\", []);\n    __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"removes\", []);\n    __publicField(this, \"mapRemoves\", []);\n    __publicField(this, \"movedMap\", {});\n    __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"blockClass\");\n    __publicField(this, \"blockSelector\");\n    __publicField(this, \"maskTextClass\");\n    __publicField(this, \"maskTextSelector\");\n    __publicField(this, \"inlineStylesheet\");\n    __publicField(this, \"maskInputOptions\");\n    __publicField(this, \"maskTextFn\");\n    __publicField(this, \"maskInputFn\");\n    __publicField(this, \"keepIframeSrcFn\");\n    __publicField(this, \"recordCanvas\");\n    __publicField(this, \"inlineImages\");\n    __publicField(this, \"slimDOMOptions\");\n    __publicField(this, \"dataURLOptions\");\n    __publicField(this, \"doc\");\n    __publicField(this, \"mirror\");\n    __publicField(this, \"iframeManager\");\n    __publicField(this, \"stylesheetManager\");\n    __publicField(this, \"shadowDomManager\");\n    __publicField(this, \"canvasManager\");\n    __publicField(this, \"processedNodeManager\");\n    __publicField(this, \"unattachedDoc\");\n    __publicField(this, \"processMutations\", (mutations) => {\n      mutations.forEach(this.processMutation);\n      this.emit();\n    });\n    __publicField(this, \"emit\", () => {\n      if (this.frozen || this.locked) {\n        return;\n      }\n      const adds = [];\n      const addedIds = /* @__PURE__ */ new Set();\n      const addList = new DoubleLinkedList();\n      const getNextId = (n2) => {\n        let ns = n2;\n        let nextId = IGNORED_NODE;\n        while (nextId === IGNORED_NODE) {\n          ns = ns && ns.nextSibling;\n          nextId = ns && this.mirror.getId(ns);\n        }\n        return nextId;\n      };\n      const pushAdd = (n2) => {\n        const parent = index.parentNode(n2);\n        if (!parent || !inDom(n2) || parent.tagName === \"TEXTAREA\") {\n          return;\n        }\n        const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n        const nextId = getNextId(n2);\n        if (parentId === -1 || nextId === -1) {\n          return addList.addNode(n2);\n        }\n        const sn = serializeNodeWithId(n2, {\n          doc: this.doc,\n          mirror: this.mirror,\n          blockClass: this.blockClass,\n          blockSelector: this.blockSelector,\n          maskTextClass: this.maskTextClass,\n          maskTextSelector: this.maskTextSelector,\n          skipChild: true,\n          newlyAddedElement: true,\n          inlineStylesheet: this.inlineStylesheet,\n          maskInputOptions: this.maskInputOptions,\n          maskTextFn: this.maskTextFn,\n          maskInputFn: this.maskInputFn,\n          slimDOMOptions: this.slimDOMOptions,\n          dataURLOptions: this.dataURLOptions,\n          recordCanvas: this.recordCanvas,\n          inlineImages: this.inlineImages,\n          onSerialize: (currentN) => {\n            if (isSerializedIframe(currentN, this.mirror)) {\n              this.iframeManager.addIframe(currentN);\n            }\n            if (isSerializedStylesheet(currentN, this.mirror)) {\n              this.stylesheetManager.trackLinkElement(\n                currentN\n              );\n            }\n            if (hasShadowRoot(n2)) {\n              this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n            }\n          },\n          onIframeLoad: (iframe, childSn) => {\n            this.iframeManager.attachIframe(iframe, childSn);\n            this.shadowDomManager.observeAttachShadow(iframe);\n          },\n          onStylesheetLoad: (link, childSn) => {\n            this.stylesheetManager.attachLinkElement(link, childSn);\n          }\n        });\n        if (sn) {\n          adds.push({\n            parentId,\n            nextId,\n            node: sn\n          });\n          addedIds.add(sn.id);\n        }\n      };\n      while (this.mapRemoves.length) {\n        this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n      }\n      for (const n2 of this.movedSet) {\n        if (isParentRemoved(this.removes, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n          continue;\n        }\n        pushAdd(n2);\n      }\n      for (const n2 of this.addedSet) {\n        if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removes, n2, this.mirror)) {\n          pushAdd(n2);\n        } else if (isAncestorInSet(this.movedSet, n2)) {\n          pushAdd(n2);\n        } else {\n          this.droppedSet.add(n2);\n        }\n      }\n      let candidate = null;\n      while (addList.length) {\n        let node2 = null;\n        if (candidate) {\n          const parentId = this.mirror.getId(index.parentNode(candidate.value));\n          const nextId = getNextId(candidate.value);\n          if (parentId !== -1 && nextId !== -1) {\n            node2 = candidate;\n          }\n        }\n        if (!node2) {\n          let tailNode = addList.tail;\n          while (tailNode) {\n            const _node = tailNode;\n            tailNode = tailNode.previous;\n            if (_node) {\n              const parentId = this.mirror.getId(index.parentNode(_node.value));\n              const nextId = getNextId(_node.value);\n              if (nextId === -1) continue;\n              else if (parentId !== -1) {\n                node2 = _node;\n                break;\n              } else {\n                const unhandledNode = _node.value;\n                const parent = index.parentNode(unhandledNode);\n                if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n                  const shadowHost = index.host(parent);\n                  const parentId2 = this.mirror.getId(shadowHost);\n                  if (parentId2 !== -1) {\n                    node2 = _node;\n                    break;\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (!node2) {\n          while (addList.head) {\n            addList.removeNode(addList.head.value);\n          }\n          break;\n        }\n        candidate = node2.previous;\n        addList.removeNode(node2.value);\n        pushAdd(node2.value);\n      }\n      const payload = {\n        texts: this.texts.map((text) => {\n          const n2 = text.node;\n          const parent = index.parentNode(n2);\n          if (parent && parent.tagName === \"TEXTAREA\") {\n            this.genTextAreaValueMutation(parent);\n          }\n          return {\n            id: this.mirror.getId(n2),\n            value: text.value\n          };\n        }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n        attributes: this.attributes.map((attribute) => {\n          const { attributes } = attribute;\n          if (typeof attributes.style === \"string\") {\n            const diffAsStr = JSON.stringify(attribute.styleDiff);\n            const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n            if (diffAsStr.length < attributes.style.length) {\n              if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n                attributes.style = attribute.styleDiff;\n              }\n            }\n          }\n          return {\n            id: this.mirror.getId(attribute.node),\n            attributes\n          };\n        }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n        removes: this.removes,\n        adds\n      };\n      if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n        return;\n      }\n      this.texts = [];\n      this.attributes = [];\n      this.attributeMap = /* @__PURE__ */ new WeakMap();\n      this.removes = [];\n      this.addedSet = /* @__PURE__ */ new Set();\n      this.movedSet = /* @__PURE__ */ new Set();\n      this.droppedSet = /* @__PURE__ */ new Set();\n      this.movedMap = {};\n      this.mutationCb(payload);\n    });\n    __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n      let item = this.attributeMap.get(textarea);\n      if (!item) {\n        item = {\n          node: textarea,\n          attributes: {},\n          styleDiff: {},\n          _unchangedStyles: {}\n        };\n        this.attributes.push(item);\n        this.attributeMap.set(textarea, item);\n      }\n      item.attributes.value = Array.from(\n        index.childNodes(textarea),\n        (cn) => index.textContent(cn) || \"\"\n      ).join(\"\");\n    });\n    __publicField(this, \"processMutation\", (m) => {\n      if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n        return;\n      }\n      switch (m.type) {\n        case \"characterData\": {\n          const value = index.textContent(m.target);\n          if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n            this.texts.push({\n              value: needMaskingText(\n                m.target,\n                this.maskTextClass,\n                this.maskTextSelector,\n                true\n                // checkAncestors\n              ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n              node: m.target\n            });\n          }\n          break;\n        }\n        case \"attributes\": {\n          const target = m.target;\n          let attributeName = m.attributeName;\n          let value = m.target.getAttribute(attributeName);\n          if (attributeName === \"value\") {\n            const type = getInputType(target);\n            value = maskInputValue({\n              element: target,\n              maskInputOptions: this.maskInputOptions,\n              tagName: target.tagName,\n              type,\n              value,\n              maskInputFn: this.maskInputFn\n            });\n          }\n          if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n            return;\n          }\n          let item = this.attributeMap.get(m.target);\n          if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n            if (!target.contentDocument) {\n              attributeName = \"rr_src\";\n            } else {\n              return;\n            }\n          }\n          if (!item) {\n            item = {\n              node: m.target,\n              attributes: {},\n              styleDiff: {},\n              _unchangedStyles: {}\n            };\n            this.attributes.push(item);\n            this.attributeMap.set(m.target, item);\n          }\n          if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n            target.setAttribute(\"data-rr-is-password\", \"true\");\n          }\n          if (!ignoreAttribute(target.tagName, attributeName)) {\n            item.attributes[attributeName] = transformAttribute(\n              this.doc,\n              toLowerCase(target.tagName),\n              toLowerCase(attributeName),\n              value\n            );\n            if (attributeName === \"style\") {\n              if (!this.unattachedDoc) {\n                try {\n                  this.unattachedDoc = document.implementation.createHTMLDocument();\n                } catch (e2) {\n                  this.unattachedDoc = this.doc;\n                }\n              }\n              const old = this.unattachedDoc.createElement(\"span\");\n              if (m.oldValue) {\n                old.setAttribute(\"style\", m.oldValue);\n              }\n              for (const pname of Array.from(target.style)) {\n                const newValue = target.style.getPropertyValue(pname);\n                const newPriority = target.style.getPropertyPriority(pname);\n                if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n                  if (newPriority === \"\") {\n                    item.styleDiff[pname] = newValue;\n                  } else {\n                    item.styleDiff[pname] = [newValue, newPriority];\n                  }\n                } else {\n                  item._unchangedStyles[pname] = [newValue, newPriority];\n                }\n              }\n              for (const pname of Array.from(old.style)) {\n                if (target.style.getPropertyValue(pname) === \"\") {\n                  item.styleDiff[pname] = false;\n                }\n              }\n            } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n              if (target.matches(\"dialog:modal\")) {\n                item.attributes[\"rr_open_mode\"] = \"modal\";\n              } else {\n                item.attributes[\"rr_open_mode\"] = \"non-modal\";\n              }\n            }\n          }\n          break;\n        }\n        case \"childList\": {\n          if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n            return;\n          if (m.target.tagName === \"TEXTAREA\") {\n            this.genTextAreaValueMutation(m.target);\n            return;\n          }\n          m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n          m.removedNodes.forEach((n2) => {\n            const nodeId = this.mirror.getId(n2);\n            const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n            if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n              return;\n            }\n            if (this.addedSet.has(n2)) {\n              deepDelete(this.addedSet, n2);\n              this.droppedSet.add(n2);\n            } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n            else if (isAncestorRemoved(m.target, this.mirror)) ;\n            else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n              deepDelete(this.movedSet, n2);\n            } else {\n              this.removes.push({\n                parentId,\n                id: nodeId,\n                isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n              });\n            }\n            this.mapRemoves.push(n2);\n          });\n          break;\n        }\n      }\n    });\n    __publicField(this, \"genAdds\", (n2, target) => {\n      if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n      if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n      if (this.mirror.hasNode(n2)) {\n        if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n          return;\n        }\n        this.movedSet.add(n2);\n        let targetId = null;\n        if (target && this.mirror.hasNode(target)) {\n          targetId = this.mirror.getId(target);\n        }\n        if (targetId && targetId !== -1) {\n          this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n        }\n      } else {\n        this.addedSet.add(n2);\n        this.droppedSet.delete(n2);\n      }\n      if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n        index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n        if (hasShadowRoot(n2)) {\n          index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n            this.processedNodeManager.add(childN, this);\n            this.genAdds(childN, n2);\n          });\n        }\n      }\n    });\n  }\n  init(options) {\n    [\n      \"mutationCb\",\n      \"blockClass\",\n      \"blockSelector\",\n      \"maskTextClass\",\n      \"maskTextSelector\",\n      \"inlineStylesheet\",\n      \"maskInputOptions\",\n      \"maskTextFn\",\n      \"maskInputFn\",\n      \"keepIframeSrcFn\",\n      \"recordCanvas\",\n      \"inlineImages\",\n      \"slimDOMOptions\",\n      \"dataURLOptions\",\n      \"doc\",\n      \"mirror\",\n      \"iframeManager\",\n      \"stylesheetManager\",\n      \"shadowDomManager\",\n      \"canvasManager\",\n      \"processedNodeManager\"\n    ].forEach((key) => {\n      this[key] = options[key];\n    });\n  }\n  freeze() {\n    this.frozen = true;\n    this.canvasManager.freeze();\n  }\n  unfreeze() {\n    this.frozen = false;\n    this.canvasManager.unfreeze();\n    this.emit();\n  }\n  isFrozen() {\n    return this.frozen;\n  }\n  lock() {\n    this.locked = true;\n    this.canvasManager.lock();\n  }\n  unlock() {\n    this.locked = false;\n    this.canvasManager.unlock();\n    this.emit();\n  }\n  reset() {\n    this.shadowDomManager.reset();\n    this.canvasManager.reset();\n  }\n}\nfunction deepDelete(addsSet, n2) {\n  addsSet.delete(n2);\n  index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n  if (removes.length === 0) return false;\n  return _isParentRemoved(removes, n2, mirror2);\n}\nfunction _isParentRemoved(removes, n2, mirror2) {\n  let node2 = index.parentNode(n2);\n  while (node2) {\n    const parentId = mirror2.getId(node2);\n    if (removes.some((r2) => r2.id === parentId)) {\n      return true;\n    }\n    node2 = index.parentNode(node2);\n  }\n  return false;\n}\nfunction isAncestorInSet(set, n2) {\n  if (set.size === 0) return false;\n  return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n  const parent = index.parentNode(n2);\n  if (!parent) {\n    return false;\n  }\n  if (set.has(parent)) {\n    return true;\n  }\n  return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n  errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n  errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n  if (!errorHandler) {\n    return cb;\n  }\n  const rrwebWrapped = (...rest) => {\n    try {\n      return cb(...rest);\n    } catch (error) {\n      if (errorHandler && errorHandler(error) === true) {\n        return;\n      }\n      throw error;\n    }\n  };\n  return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n  try {\n    if (\"composedPath\" in event) {\n      const path = event.composedPath();\n      if (path.length) {\n        return path[0];\n      }\n    } else if (\"path\" in event && event.path.length) {\n      return event.path[0];\n    }\n  } catch {\n  }\n  return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n  const mutationBuffer = new MutationBuffer();\n  mutationBuffers.push(mutationBuffer);\n  mutationBuffer.init(options);\n  const observer = new (mutationObserverCtor())(\n    callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n  );\n  observer.observe(rootEl, {\n    attributes: true,\n    attributeOldValue: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true\n  });\n  return observer;\n}\nfunction initMoveObserver({\n  mousemoveCb,\n  sampling,\n  doc,\n  mirror: mirror2\n}) {\n  if (sampling.mousemove === false) {\n    return () => {\n    };\n  }\n  const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n  const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n  let positions = [];\n  let timeBaseline;\n  const wrappedCb = throttle(\n    callbackWrapper(\n      (source) => {\n        const totalOffset = Date.now() - timeBaseline;\n        mousemoveCb(\n          positions.map((p) => {\n            p.timeOffset -= totalOffset;\n            return p;\n          }),\n          source\n        );\n        positions = [];\n        timeBaseline = null;\n      }\n    ),\n    callbackThreshold\n  );\n  const updatePosition = callbackWrapper(\n    throttle(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n        if (!timeBaseline) {\n          timeBaseline = nowTimestamp();\n        }\n        positions.push({\n          x: clientX,\n          y: clientY,\n          id: mirror2.getId(target),\n          timeOffset: nowTimestamp() - timeBaseline\n        });\n        wrappedCb(\n          typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n        );\n      }),\n      threshold,\n      {\n        trailing: false\n      }\n    )\n  );\n  const handlers = [\n    on(\"mousemove\", updatePosition, doc),\n    on(\"touchmove\", updatePosition, doc),\n    on(\"drag\", updatePosition, doc)\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initMouseInteractionObserver({\n  mouseInteractionCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  sampling\n}) {\n  if (sampling.mouseInteraction === false) {\n    return () => {\n    };\n  }\n  const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n  const handlers = [];\n  let currentPointerType = null;\n  const getHandler = (eventKey) => {\n    return (event) => {\n      const target = getEventTarget(event);\n      if (isBlocked(target, blockClass, blockSelector, true)) {\n        return;\n      }\n      let pointerType = null;\n      let thisEventKey = eventKey;\n      if (\"pointerType\" in event) {\n        switch (event.pointerType) {\n          case \"mouse\":\n            pointerType = PointerTypes.Mouse;\n            break;\n          case \"touch\":\n            pointerType = PointerTypes.Touch;\n            break;\n          case \"pen\":\n            pointerType = PointerTypes.Pen;\n            break;\n        }\n        if (pointerType === PointerTypes.Touch) {\n          if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n            thisEventKey = \"TouchStart\";\n          } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n            thisEventKey = \"TouchEnd\";\n          }\n        } else if (pointerType === PointerTypes.Pen) ;\n      } else if (legacy_isTouchEvent(event)) {\n        pointerType = PointerTypes.Touch;\n      }\n      if (pointerType !== null) {\n        currentPointerType = pointerType;\n        if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n          pointerType = null;\n        }\n      } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n        pointerType = currentPointerType;\n        currentPointerType = null;\n      }\n      const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n      if (!e2) {\n        return;\n      }\n      const id = mirror2.getId(target);\n      const { clientX, clientY } = e2;\n      callbackWrapper(mouseInteractionCb)({\n        type: MouseInteractions[thisEventKey],\n        id,\n        x: clientX,\n        y: clientY,\n        ...pointerType !== null && { pointerType }\n      });\n    };\n  };\n  Object.keys(MouseInteractions).filter(\n    (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n  ).forEach((eventKey) => {\n    let eventName = toLowerCase(eventKey);\n    const handler = getHandler(eventKey);\n    if (window.PointerEvent) {\n      switch (MouseInteractions[eventKey]) {\n        case MouseInteractions.MouseDown:\n        case MouseInteractions.MouseUp:\n          eventName = eventName.replace(\n            \"mouse\",\n            \"pointer\"\n          );\n          break;\n        case MouseInteractions.TouchStart:\n        case MouseInteractions.TouchEnd:\n          return;\n      }\n    }\n    handlers.push(on(eventName, handler, doc));\n  });\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initScrollObserver({\n  scrollCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  sampling\n}) {\n  const updatePosition = callbackWrapper(\n    throttle(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n          return;\n        }\n        const id = mirror2.getId(target);\n        if (target === doc && doc.defaultView) {\n          const scrollLeftTop = getWindowScroll(doc.defaultView);\n          scrollCb({\n            id,\n            x: scrollLeftTop.left,\n            y: scrollLeftTop.top\n          });\n        } else {\n          scrollCb({\n            id,\n            x: target.scrollLeft,\n            y: target.scrollTop\n          });\n        }\n      }),\n      sampling.scroll || 100\n    )\n  );\n  return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n  let lastH = -1;\n  let lastW = -1;\n  const updateDimension = callbackWrapper(\n    throttle(\n      callbackWrapper(() => {\n        const height = getWindowHeight();\n        const width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n          viewportResizeCb({\n            width: Number(width),\n            height: Number(height)\n          });\n          lastH = height;\n          lastW = width;\n        }\n      }),\n      200\n    )\n  );\n  return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n  inputCb,\n  doc,\n  mirror: mirror2,\n  blockClass,\n  blockSelector,\n  ignoreClass,\n  ignoreSelector,\n  maskInputOptions,\n  maskInputFn,\n  sampling,\n  userTriggeredOnInput\n}) {\n  function eventHandler(event) {\n    let target = getEventTarget(event);\n    const userTriggered = event.isTrusted;\n    const tagName = target && target.tagName;\n    if (target && tagName === \"OPTION\") {\n      target = index.parentElement(target);\n    }\n    if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n      return;\n    }\n    if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n      return;\n    }\n    let text = target.value;\n    let isChecked = false;\n    const type = getInputType(target) || \"\";\n    if (type === \"radio\" || type === \"checkbox\") {\n      isChecked = target.checked;\n    } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n      text = maskInputValue({\n        element: target,\n        maskInputOptions,\n        tagName,\n        type,\n        value: text,\n        maskInputFn\n      });\n    }\n    cbWithDedup(\n      target,\n      userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n    );\n    const name = target.name;\n    if (type === \"radio\" && name && isChecked) {\n      doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n        if (el !== target) {\n          const text2 = el.value;\n          cbWithDedup(\n            el,\n            userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n          );\n        }\n      });\n    }\n  }\n  function cbWithDedup(target, v2) {\n    const lastInputValue = lastInputValueMap.get(target);\n    if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n      lastInputValueMap.set(target, v2);\n      const id = mirror2.getId(target);\n      callbackWrapper(inputCb)({\n        ...v2,\n        id\n      });\n    }\n  }\n  const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n  const handlers = events.map(\n    (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n  );\n  const currentWindow = doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n      handlers.forEach((h) => h());\n    };\n  }\n  const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n    currentWindow.HTMLInputElement.prototype,\n    \"value\"\n  );\n  const hookProperties = [\n    [currentWindow.HTMLInputElement.prototype, \"value\"],\n    [currentWindow.HTMLInputElement.prototype, \"checked\"],\n    [currentWindow.HTMLSelectElement.prototype, \"value\"],\n    [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n    // Some UI library use selectedIndex to set select value\n    [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n    [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n  ];\n  if (propertyDescriptor && propertyDescriptor.set) {\n    handlers.push(\n      ...hookProperties.map(\n        (p) => hookSetter(\n          p[0],\n          p[1],\n          {\n            set() {\n              callbackWrapper(eventHandler)({\n                target: this,\n                isTrusted: false\n                // userTriggered to false as this could well be programmatic\n              });\n            }\n          },\n          false,\n          currentWindow\n        )\n      )\n    );\n  }\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction getNestedCSSRulePositions(rule2) {\n  const positions = [];\n  function recurse(childRule, pos) {\n    if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n      const rules2 = Array.from(\n        childRule.parentRule.cssRules\n      );\n      const index2 = rules2.indexOf(childRule);\n      pos.unshift(index2);\n    } else if (childRule.parentStyleSheet) {\n      const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n      const index2 = rules2.indexOf(childRule);\n      pos.unshift(index2);\n    }\n    return pos;\n  }\n  return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n  let id, styleId;\n  if (!sheet) return {};\n  if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n  else styleId = styleMirror.getId(sheet);\n  return {\n    styleId,\n    id\n  };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n  if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n    return () => {\n    };\n  }\n  const insertRule = win.CSSStyleSheet.prototype.insertRule;\n  win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        const [rule2, index2] = argumentsList;\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            adds: [{ rule: rule2, index: index2 }]\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n    const rule2 = `${selector} { ${styleBlock} }`;\n    return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n  };\n  const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n  win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        const [index2] = argumentsList;\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            removes: [{ index: index2 }]\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  win.CSSStyleSheet.prototype.removeRule = function(index2) {\n    return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n  };\n  let replace;\n  if (win.CSSStyleSheet.prototype.replace) {\n    replace = win.CSSStyleSheet.prototype.replace;\n    win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n      apply: callbackWrapper(\n        (target, thisArg, argumentsList) => {\n          const [text] = argumentsList;\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror2,\n            stylesheetManager.styleMirror\n          );\n          if (id && id !== -1 || styleId && styleId !== -1) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replace: text\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        }\n      )\n    });\n  }\n  let replaceSync;\n  if (win.CSSStyleSheet.prototype.replaceSync) {\n    replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n    win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n      apply: callbackWrapper(\n        (target, thisArg, argumentsList) => {\n          const [text] = argumentsList;\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror2,\n            stylesheetManager.styleMirror\n          );\n          if (id && id !== -1 || styleId && styleId !== -1) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replaceSync: text\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        }\n      )\n    });\n  }\n  const supportedNestedCSSRuleTypes = {};\n  if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n    supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n  } else {\n    if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n      supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n      supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n      supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n    }\n  }\n  const unmodifiedFunctions = {};\n  Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n    unmodifiedFunctions[typeKey] = {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      insertRule: type.prototype.insertRule,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      deleteRule: type.prototype.deleteRule\n    };\n    type.prototype.insertRule = new Proxy(\n      unmodifiedFunctions[typeKey].insertRule,\n      {\n        apply: callbackWrapper(\n          (target, thisArg, argumentsList) => {\n            const [rule2, index2] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror2,\n              stylesheetManager.styleMirror\n            );\n            if (id && id !== -1 || styleId && styleId !== -1) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                adds: [\n                  {\n                    rule: rule2,\n                    index: [\n                      ...getNestedCSSRulePositions(thisArg),\n                      index2 || 0\n                      // defaults to 0\n                    ]\n                  }\n                ]\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          }\n        )\n      }\n    );\n    type.prototype.deleteRule = new Proxy(\n      unmodifiedFunctions[typeKey].deleteRule,\n      {\n        apply: callbackWrapper(\n          (target, thisArg, argumentsList) => {\n            const [index2] = argumentsList;\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror2,\n              stylesheetManager.styleMirror\n            );\n            if (id && id !== -1 || styleId && styleId !== -1) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                removes: [\n                  { index: [...getNestedCSSRulePositions(thisArg), index2] }\n                ]\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          }\n        )\n      }\n    );\n  });\n  return callbackWrapper(() => {\n    win.CSSStyleSheet.prototype.insertRule = insertRule;\n    win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n    replace && (win.CSSStyleSheet.prototype.replace = replace);\n    replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n      type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n      type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n    });\n  });\n}\nfunction initAdoptedStyleSheetObserver({\n  mirror: mirror2,\n  stylesheetManager\n}, host2) {\n  var _a2, _b, _c;\n  let hostId = null;\n  if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n  else hostId = mirror2.getId(index.host(host2));\n  const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n  const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n    patchTarget == null ? void 0 : patchTarget.prototype,\n    \"adoptedStyleSheets\"\n  ) : void 0;\n  if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n    return () => {\n    };\n  Object.defineProperty(host2, \"adoptedStyleSheets\", {\n    configurable: originalPropertyDescriptor.configurable,\n    enumerable: originalPropertyDescriptor.enumerable,\n    get() {\n      var _a3;\n      return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n    },\n    set(sheets) {\n      var _a3;\n      const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n      if (hostId !== null && hostId !== -1) {\n        try {\n          stylesheetManager.adoptStyleSheets(sheets, hostId);\n        } catch (e2) {\n        }\n      }\n      return result2;\n    }\n  });\n  return callbackWrapper(() => {\n    Object.defineProperty(host2, \"adoptedStyleSheets\", {\n      configurable: originalPropertyDescriptor.configurable,\n      enumerable: originalPropertyDescriptor.enumerable,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      get: originalPropertyDescriptor.get,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      set: originalPropertyDescriptor.set\n    });\n  });\n}\nfunction initStyleDeclarationObserver({\n  styleDeclarationCb,\n  mirror: mirror2,\n  ignoreCSSAttributes,\n  stylesheetManager\n}, { win }) {\n  const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n  win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        var _a2;\n        const [property, value, priority] = argumentsList;\n        if (ignoreCSSAttributes.has(property)) {\n          return setProperty.apply(thisArg, [property, value, priority]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            set: {\n              property,\n              value,\n              priority\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule)\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n  win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n    apply: callbackWrapper(\n      (target, thisArg, argumentsList) => {\n        var _a2;\n        const [property] = argumentsList;\n        if (ignoreCSSAttributes.has(property)) {\n          return removeProperty.apply(thisArg, [property]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n          mirror2,\n          stylesheetManager.styleMirror\n        );\n        if (id && id !== -1 || styleId && styleId !== -1) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            remove: {\n              property\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule)\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      }\n    )\n  });\n  return callbackWrapper(() => {\n    win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n  });\n}\nfunction initMediaInteractionObserver({\n  mediaInteractionCb,\n  blockClass,\n  blockSelector,\n  mirror: mirror2,\n  sampling,\n  doc\n}) {\n  const handler = callbackWrapper(\n    (type) => throttle(\n      callbackWrapper((event) => {\n        const target = getEventTarget(event);\n        if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n          return;\n        }\n        const { currentTime, volume, muted, playbackRate, loop } = target;\n        mediaInteractionCb({\n          type,\n          id: mirror2.getId(target),\n          currentTime,\n          volume,\n          muted,\n          playbackRate,\n          loop\n        });\n      }),\n      sampling.media || 500\n    )\n  );\n  const handlers = [\n    on(\"play\", handler(MediaInteractions.Play), doc),\n    on(\"pause\", handler(MediaInteractions.Pause), doc),\n    on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n    on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n    on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initFontObserver({ fontCb, doc }) {\n  const win = doc.defaultView;\n  if (!win) {\n    return () => {\n    };\n  }\n  const handlers = [];\n  const fontMap = /* @__PURE__ */ new WeakMap();\n  const originalFontFace = win.FontFace;\n  win.FontFace = function FontFace2(family, source, descriptors) {\n    const fontFace = new originalFontFace(family, source, descriptors);\n    fontMap.set(fontFace, {\n      family,\n      buffer: typeof source !== \"string\",\n      descriptors,\n      fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n    });\n    return fontFace;\n  };\n  const restoreHandler = patch(\n    doc.fonts,\n    \"add\",\n    function(original) {\n      return function(fontFace) {\n        setTimeout(\n          callbackWrapper(() => {\n            const p = fontMap.get(fontFace);\n            if (p) {\n              fontCb(p);\n              fontMap.delete(fontFace);\n            }\n          }),\n          0\n        );\n        return original.apply(this, [fontFace]);\n      };\n    }\n  );\n  handlers.push(() => {\n    win.FontFace = originalFontFace;\n  });\n  handlers.push(restoreHandler);\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\nfunction initSelectionObserver(param) {\n  const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n  let collapsed = true;\n  const updateSelection = callbackWrapper(() => {\n    const selection = doc.getSelection();\n    if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n    collapsed = selection.isCollapsed || false;\n    const ranges = [];\n    const count = selection.rangeCount || 0;\n    for (let i2 = 0; i2 < count; i2++) {\n      const range = selection.getRangeAt(i2);\n      const { startContainer, startOffset, endContainer, endOffset } = range;\n      const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n      if (blocked) continue;\n      ranges.push({\n        start: mirror2.getId(startContainer),\n        startOffset,\n        end: mirror2.getId(endContainer),\n        endOffset\n      });\n    }\n    selectionCb({ ranges });\n  });\n  updateSelection();\n  return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n  doc,\n  customElementCb\n}) {\n  const win = doc.defaultView;\n  if (!win || !win.customElements) return () => {\n  };\n  const restoreHandler = patch(\n    win.customElements,\n    \"define\",\n    function(original) {\n      return function(name, constructor, options) {\n        try {\n          customElementCb({\n            define: {\n              name\n            }\n          });\n        } catch (e2) {\n          console.warn(`Custom element callback failed for ${name}`);\n        }\n        return original.apply(this, [name, constructor, options]);\n      };\n    }\n  );\n  return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n  const {\n    mutationCb,\n    mousemoveCb,\n    mouseInteractionCb,\n    scrollCb,\n    viewportResizeCb,\n    inputCb,\n    mediaInteractionCb,\n    styleSheetRuleCb,\n    styleDeclarationCb,\n    canvasMutationCb,\n    fontCb,\n    selectionCb,\n    customElementCb\n  } = o2;\n  o2.mutationCb = (...p) => {\n    if (hooks.mutation) {\n      hooks.mutation(...p);\n    }\n    mutationCb(...p);\n  };\n  o2.mousemoveCb = (...p) => {\n    if (hooks.mousemove) {\n      hooks.mousemove(...p);\n    }\n    mousemoveCb(...p);\n  };\n  o2.mouseInteractionCb = (...p) => {\n    if (hooks.mouseInteraction) {\n      hooks.mouseInteraction(...p);\n    }\n    mouseInteractionCb(...p);\n  };\n  o2.scrollCb = (...p) => {\n    if (hooks.scroll) {\n      hooks.scroll(...p);\n    }\n    scrollCb(...p);\n  };\n  o2.viewportResizeCb = (...p) => {\n    if (hooks.viewportResize) {\n      hooks.viewportResize(...p);\n    }\n    viewportResizeCb(...p);\n  };\n  o2.inputCb = (...p) => {\n    if (hooks.input) {\n      hooks.input(...p);\n    }\n    inputCb(...p);\n  };\n  o2.mediaInteractionCb = (...p) => {\n    if (hooks.mediaInteaction) {\n      hooks.mediaInteaction(...p);\n    }\n    mediaInteractionCb(...p);\n  };\n  o2.styleSheetRuleCb = (...p) => {\n    if (hooks.styleSheetRule) {\n      hooks.styleSheetRule(...p);\n    }\n    styleSheetRuleCb(...p);\n  };\n  o2.styleDeclarationCb = (...p) => {\n    if (hooks.styleDeclaration) {\n      hooks.styleDeclaration(...p);\n    }\n    styleDeclarationCb(...p);\n  };\n  o2.canvasMutationCb = (...p) => {\n    if (hooks.canvasMutation) {\n      hooks.canvasMutation(...p);\n    }\n    canvasMutationCb(...p);\n  };\n  o2.fontCb = (...p) => {\n    if (hooks.font) {\n      hooks.font(...p);\n    }\n    fontCb(...p);\n  };\n  o2.selectionCb = (...p) => {\n    if (hooks.selection) {\n      hooks.selection(...p);\n    }\n    selectionCb(...p);\n  };\n  o2.customElementCb = (...c2) => {\n    if (hooks.customElement) {\n      hooks.customElement(...c2);\n    }\n    customElementCb(...c2);\n  };\n}\nfunction initObservers(o2, hooks = {}) {\n  const currentWindow = o2.doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n    };\n  }\n  mergeHooks(o2, hooks);\n  let mutationObserver;\n  if (o2.recordDOM) {\n    mutationObserver = initMutationObserver(o2, o2.doc);\n  }\n  const mousemoveHandler = initMoveObserver(o2);\n  const mouseInteractionHandler = initMouseInteractionObserver(o2);\n  const scrollHandler = initScrollObserver(o2);\n  const viewportResizeHandler = initViewportResizeObserver(o2, {\n    win: currentWindow\n  });\n  const inputHandler = initInputObserver(o2);\n  const mediaInteractionHandler = initMediaInteractionObserver(o2);\n  let styleSheetObserver = () => {\n  };\n  let adoptedStyleSheetObserver = () => {\n  };\n  let styleDeclarationObserver = () => {\n  };\n  let fontObserver = () => {\n  };\n  if (o2.recordDOM) {\n    styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n    adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n    styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n      win: currentWindow\n    });\n    if (o2.collectFonts) {\n      fontObserver = initFontObserver(o2);\n    }\n  }\n  const selectionObserver = initSelectionObserver(o2);\n  const customElementObserver = initCustomElementObserver(o2);\n  const pluginHandlers = [];\n  for (const plugin3 of o2.plugins) {\n    pluginHandlers.push(\n      plugin3.observer(plugin3.callback, currentWindow, plugin3.options)\n    );\n  }\n  return callbackWrapper(() => {\n    mutationBuffers.forEach((b) => b.reset());\n    mutationObserver == null ? void 0 : mutationObserver.disconnect();\n    mousemoveHandler();\n    mouseInteractionHandler();\n    scrollHandler();\n    viewportResizeHandler();\n    inputHandler();\n    mediaInteractionHandler();\n    styleSheetObserver();\n    adoptedStyleSheetObserver();\n    styleDeclarationObserver();\n    fontObserver();\n    selectionObserver();\n    customElementObserver();\n    pluginHandlers.forEach((h) => h());\n  });\n}\nfunction hasNestedCSSRule(prop) {\n  return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n  return Boolean(\n    typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n    // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n    window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n  );\n}\nclass CrossOriginIframeMirror {\n  constructor(generateIdFn) {\n    __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n    this.generateIdFn = generateIdFn;\n  }\n  getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n    const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n    let id = idToRemoteIdMap.get(remoteId);\n    if (!id) {\n      id = this.generateIdFn();\n      idToRemoteIdMap.set(remoteId, id);\n      remoteIdToIdMap.set(id, remoteId);\n    }\n    return id;\n  }\n  getIds(iframe, remoteId) {\n    const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return remoteId.map(\n      (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n    );\n  }\n  getRemoteId(iframe, id, map) {\n    const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n    if (typeof id !== \"number\") return id;\n    const remoteId = remoteIdToIdMap.get(id);\n    if (!remoteId) return -1;\n    return remoteId;\n  }\n  getRemoteIds(iframe, ids) {\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n  }\n  reset(iframe) {\n    if (!iframe) {\n      this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n      this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n      return;\n    }\n    this.iframeIdToRemoteIdMap.delete(iframe);\n    this.iframeRemoteIdToIdMap.delete(iframe);\n  }\n  getIdToRemoteIdMap(iframe) {\n    let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n    if (!idToRemoteIdMap) {\n      idToRemoteIdMap = /* @__PURE__ */ new Map();\n      this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n    }\n    return idToRemoteIdMap;\n  }\n  getRemoteIdToIdMap(iframe) {\n    let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n    if (!remoteIdToIdMap) {\n      remoteIdToIdMap = /* @__PURE__ */ new Map();\n      this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n    }\n    return remoteIdToIdMap;\n  }\n}\nclass IframeManager {\n  constructor(options) {\n    __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n    __publicField(this, \"crossOriginIframeStyleMirror\");\n    __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"mirror\");\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"wrappedEmit\");\n    __publicField(this, \"loadListener\");\n    __publicField(this, \"stylesheetManager\");\n    __publicField(this, \"recordCrossOriginIframes\");\n    this.mutationCb = options.mutationCb;\n    this.wrappedEmit = options.wrappedEmit;\n    this.stylesheetManager = options.stylesheetManager;\n    this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n    this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n      this.stylesheetManager.styleMirror.generateId.bind(\n        this.stylesheetManager.styleMirror\n      )\n    );\n    this.mirror = options.mirror;\n    if (this.recordCrossOriginIframes) {\n      window.addEventListener(\"message\", this.handleMessage.bind(this));\n    }\n  }\n  addIframe(iframeEl) {\n    this.iframes.set(iframeEl, true);\n    if (iframeEl.contentWindow)\n      this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n  }\n  addLoadListener(cb) {\n    this.loadListener = cb;\n  }\n  attachIframe(iframeEl, childSn) {\n    var _a2, _b;\n    this.mutationCb({\n      adds: [\n        {\n          parentId: this.mirror.getId(iframeEl),\n          nextId: null,\n          node: childSn\n        }\n      ],\n      removes: [],\n      texts: [],\n      attributes: [],\n      isAttachIframe: true\n    });\n    if (this.recordCrossOriginIframes)\n      (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n        \"message\",\n        this.handleMessage.bind(this)\n      );\n    (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n    if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n      this.stylesheetManager.adoptStyleSheets(\n        iframeEl.contentDocument.adoptedStyleSheets,\n        this.mirror.getId(iframeEl.contentDocument)\n      );\n  }\n  handleMessage(message) {\n    const crossOriginMessageEvent = message;\n    if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n    crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n      return;\n    const iframeSourceWindow = message.source;\n    if (!iframeSourceWindow) return;\n    const iframeEl = this.crossOriginIframeMap.get(message.source);\n    if (!iframeEl) return;\n    const transformedEvent = this.transformCrossOriginEvent(\n      iframeEl,\n      crossOriginMessageEvent.data.event\n    );\n    if (transformedEvent)\n      this.wrappedEmit(\n        transformedEvent,\n        crossOriginMessageEvent.data.isCheckout\n      );\n  }\n  transformCrossOriginEvent(iframeEl, e2) {\n    var _a2;\n    switch (e2.type) {\n      case EventType.FullSnapshot: {\n        this.crossOriginIframeMirror.reset(iframeEl);\n        this.crossOriginIframeStyleMirror.reset(iframeEl);\n        this.replaceIdOnNode(e2.data.node, iframeEl);\n        const rootId = e2.data.node.id;\n        this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n        this.patchRootIdOnNode(e2.data.node, rootId);\n        return {\n          timestamp: e2.timestamp,\n          type: EventType.IncrementalSnapshot,\n          data: {\n            source: IncrementalSource.Mutation,\n            adds: [\n              {\n                parentId: this.mirror.getId(iframeEl),\n                nextId: null,\n                node: e2.data.node\n              }\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true\n          }\n        };\n      }\n      case EventType.Meta:\n      case EventType.Load:\n      case EventType.DomContentLoaded: {\n        return false;\n      }\n      case EventType.Plugin: {\n        return e2;\n      }\n      case EventType.Custom: {\n        this.replaceIds(\n          e2.data.payload,\n          iframeEl,\n          [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n        );\n        return e2;\n      }\n      case EventType.IncrementalSnapshot: {\n        switch (e2.data.source) {\n          case IncrementalSource.Mutation: {\n            e2.data.adds.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\n                \"parentId\",\n                \"nextId\",\n                \"previousId\"\n              ]);\n              this.replaceIdOnNode(n2.node, iframeEl);\n              const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n              rootId && this.patchRootIdOnNode(n2.node, rootId);\n            });\n            e2.data.removes.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n            });\n            e2.data.attributes.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"id\"]);\n            });\n            e2.data.texts.forEach((n2) => {\n              this.replaceIds(n2, iframeEl, [\"id\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.Drag:\n          case IncrementalSource.TouchMove:\n          case IncrementalSource.MouseMove: {\n            e2.data.positions.forEach((p) => {\n              this.replaceIds(p, iframeEl, [\"id\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.ViewportResize: {\n            return false;\n          }\n          case IncrementalSource.MediaInteraction:\n          case IncrementalSource.MouseInteraction:\n          case IncrementalSource.Scroll:\n          case IncrementalSource.CanvasMutation:\n          case IncrementalSource.Input: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            return e2;\n          }\n          case IncrementalSource.StyleSheetRule:\n          case IncrementalSource.StyleDeclaration: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n            return e2;\n          }\n          case IncrementalSource.Font: {\n            return e2;\n          }\n          case IncrementalSource.Selection: {\n            e2.data.ranges.forEach((range) => {\n              this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n            });\n            return e2;\n          }\n          case IncrementalSource.AdoptedStyleSheet: {\n            this.replaceIds(e2.data, iframeEl, [\"id\"]);\n            this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n            (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n              this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n            });\n            return e2;\n          }\n        }\n      }\n    }\n    return false;\n  }\n  replace(iframeMirror, obj, iframeEl, keys) {\n    for (const key of keys) {\n      if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n      if (Array.isArray(obj[key])) {\n        obj[key] = iframeMirror.getIds(\n          iframeEl,\n          obj[key]\n        );\n      } else {\n        obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n      }\n    }\n    return obj;\n  }\n  replaceIds(obj, iframeEl, keys) {\n    return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n  }\n  replaceStyleIds(obj, iframeEl, keys) {\n    return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n  }\n  replaceIdOnNode(node2, iframeEl) {\n    this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n    if (\"childNodes\" in node2) {\n      node2.childNodes.forEach((child) => {\n        this.replaceIdOnNode(child, iframeEl);\n      });\n    }\n  }\n  patchRootIdOnNode(node2, rootId) {\n    if (node2.type !== NodeType$2.Document && !node2.rootId) node2.rootId = rootId;\n    if (\"childNodes\" in node2) {\n      node2.childNodes.forEach((child) => {\n        this.patchRootIdOnNode(child, rootId);\n      });\n    }\n  }\n}\nclass ShadowDomManager {\n  constructor(options) {\n    __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"scrollCb\");\n    __publicField(this, \"bypassOptions\");\n    __publicField(this, \"mirror\");\n    __publicField(this, \"restoreHandlers\", []);\n    this.mutationCb = options.mutationCb;\n    this.scrollCb = options.scrollCb;\n    this.bypassOptions = options.bypassOptions;\n    this.mirror = options.mirror;\n    this.init();\n  }\n  init() {\n    this.reset();\n    this.patchAttachShadow(Element, document);\n  }\n  addShadowRoot(shadowRoot2, doc) {\n    if (!isNativeShadowDom(shadowRoot2)) return;\n    if (this.shadowDoms.has(shadowRoot2)) return;\n    this.shadowDoms.add(shadowRoot2);\n    const observer = initMutationObserver(\n      {\n        ...this.bypassOptions,\n        doc,\n        mutationCb: this.mutationCb,\n        mirror: this.mirror,\n        shadowDomManager: this\n      },\n      shadowRoot2\n    );\n    this.restoreHandlers.push(() => observer.disconnect());\n    this.restoreHandlers.push(\n      initScrollObserver({\n        ...this.bypassOptions,\n        scrollCb: this.scrollCb,\n        // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n        // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n        doc: shadowRoot2,\n        mirror: this.mirror\n      })\n    );\n    setTimeout(() => {\n      if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n        this.bypassOptions.stylesheetManager.adoptStyleSheets(\n          shadowRoot2.adoptedStyleSheets,\n          this.mirror.getId(index.host(shadowRoot2))\n        );\n      this.restoreHandlers.push(\n        initAdoptedStyleSheetObserver(\n          {\n            mirror: this.mirror,\n            stylesheetManager: this.bypassOptions.stylesheetManager\n          },\n          shadowRoot2\n        )\n      );\n    }, 0);\n  }\n  /**\n   * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n   */\n  observeAttachShadow(iframeElement) {\n    if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n    this.patchAttachShadow(\n      iframeElement.contentWindow.Element,\n      iframeElement.contentDocument\n    );\n  }\n  /**\n   * Patch 'attachShadow' to observe newly added shadow doms.\n   */\n  patchAttachShadow(element, doc) {\n    const manager = this;\n    this.restoreHandlers.push(\n      patch(\n        element.prototype,\n        \"attachShadow\",\n        function(original) {\n          return function(option) {\n            const sRoot = original.call(this, option);\n            const shadowRootEl = index.shadowRoot(this);\n            if (shadowRootEl && inDom(this))\n              manager.addShadowRoot(shadowRootEl, doc);\n            return sRoot;\n          };\n        }\n      )\n    );\n  }\n  reset() {\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e2) {\n      }\n    });\n    this.restoreHandlers = [];\n    this.shadowDoms = /* @__PURE__ */ new WeakSet();\n  }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n  lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n  var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n  for (i2 = 0; i2 < len; i2 += 3) {\n    base64 += chars[bytes[i2] >> 2];\n    base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n    base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n    base64 += chars[bytes[i2 + 2] & 63];\n  }\n  if (len % 3 === 2) {\n    base64 = base64.substring(0, base64.length - 1) + \"=\";\n  } else if (len % 3 === 1) {\n    base64 = base64.substring(0, base64.length - 2) + \"==\";\n  }\n  return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n  let contextMap = canvasVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = /* @__PURE__ */ new Map();\n    canvasVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n  if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n    return;\n  const name = value.constructor.name;\n  const list2 = variableListFor$1(ctx, name);\n  let index2 = list2.indexOf(value);\n  if (index2 === -1) {\n    index2 = list2.length;\n    list2.push(value);\n  }\n  return index2;\n};\nfunction serializeArg(value, win, ctx) {\n  if (value instanceof Array) {\n    return value.map((arg) => serializeArg(arg, win, ctx));\n  } else if (value === null) {\n    return value;\n  } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [Object.values(value)]\n    };\n  } else if (\n    // SharedArrayBuffer disabled on most browsers due to spectre.\n    // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n    // value instanceof SharedArrayBuffer ||\n    value instanceof ArrayBuffer\n  ) {\n    const name = value.constructor.name;\n    const base64 = encode(value);\n    return {\n      rr_type: name,\n      base64\n    };\n  } else if (value instanceof DataView) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [\n        serializeArg(value.buffer, win, ctx),\n        value.byteOffset,\n        value.byteLength\n      ]\n    };\n  } else if (value instanceof HTMLImageElement) {\n    const name = value.constructor.name;\n    const { src } = value;\n    return {\n      rr_type: name,\n      src\n    };\n  } else if (value instanceof HTMLCanvasElement) {\n    const name = \"HTMLImageElement\";\n    const src = value.toDataURL();\n    return {\n      rr_type: name,\n      src\n    };\n  } else if (value instanceof ImageData) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [serializeArg(value.data, win, ctx), value.width, value.height]\n    };\n  } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n    const name = value.constructor.name;\n    const index2 = saveWebGLVar(value, win, ctx);\n    return {\n      rr_type: name,\n      index: index2\n    };\n  }\n  return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n  return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n  const webGLConstructorNames = [\n    \"WebGLActiveInfo\",\n    \"WebGLBuffer\",\n    \"WebGLFramebuffer\",\n    \"WebGLProgram\",\n    \"WebGLRenderbuffer\",\n    \"WebGLShader\",\n    \"WebGLShaderPrecisionFormat\",\n    \"WebGLTexture\",\n    \"WebGLUniformLocation\",\n    \"WebGLVertexArrayObject\",\n    // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n    \"WebGLVertexArrayObjectOES\"\n  ];\n  const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n    (name) => typeof win[name] === \"function\"\n  );\n  return Boolean(\n    supportedWebGLConstructorNames.find(\n      (name) => value instanceof win[name]\n    )\n  );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n  const handlers = [];\n  const props2D = Object.getOwnPropertyNames(\n    win.CanvasRenderingContext2D.prototype\n  );\n  for (const prop of props2D) {\n    try {\n      if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n        continue;\n      }\n      const restoreHandler = patch(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        function(original) {\n          return function(...args) {\n            if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n              setTimeout(() => {\n                const recordArgs = serializeArgs(args, win, this);\n                cb(this.canvas, {\n                  type: CanvasContext[\"2D\"],\n                  property: prop,\n                  args: recordArgs\n                });\n              }, 0);\n            }\n            return original.apply(this, args);\n          };\n        }\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        {\n          set(v2) {\n            cb(this.canvas, {\n              type: CanvasContext[\"2D\"],\n              property: prop,\n              args: [v2],\n              setter: true\n            });\n          }\n        }\n      );\n      handlers.push(hookHandler);\n    }\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nfunction getNormalizedContextName(contextType) {\n  return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n  const handlers = [];\n  try {\n    const restoreHandler = patch(\n      win.HTMLCanvasElement.prototype,\n      \"getContext\",\n      function(original) {\n        return function(contextType, ...args) {\n          if (!isBlocked(this, blockClass, blockSelector, true)) {\n            const ctxName = getNormalizedContextName(contextType);\n            if (!(\"__context\" in this)) this.__context = ctxName;\n            if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n              if (args[0] && typeof args[0] === \"object\") {\n                const contextAttributes = args[0];\n                if (!contextAttributes.preserveDrawingBuffer) {\n                  contextAttributes.preserveDrawingBuffer = true;\n                }\n              } else {\n                args.splice(0, 1, {\n                  preserveDrawingBuffer: true\n                });\n              }\n            }\n          }\n          return original.apply(this, [contextType, ...args]);\n        };\n      }\n    );\n    handlers.push(restoreHandler);\n  } catch {\n    console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n  const handlers = [];\n  const props = Object.getOwnPropertyNames(prototype);\n  for (const prop of props) {\n    if (\n      //prop.startsWith('get') ||  // e.g. getProgramParameter, but too risky\n      [\n        \"isContextLost\",\n        \"canvas\",\n        \"drawingBufferWidth\",\n        \"drawingBufferHeight\"\n      ].includes(prop)\n    ) {\n      continue;\n    }\n    try {\n      if (typeof prototype[prop] !== \"function\") {\n        continue;\n      }\n      const restoreHandler = patch(\n        prototype,\n        prop,\n        function(original) {\n          return function(...args) {\n            const result2 = original.apply(this, args);\n            saveWebGLVar(result2, win, this);\n            if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n              const recordArgs = serializeArgs(args, win, this);\n              const mutation = {\n                type,\n                property: prop,\n                args: recordArgs\n              };\n              cb(this.canvas, mutation);\n            }\n            return result2;\n          };\n        }\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter(prototype, prop, {\n        set(v2) {\n          cb(this.canvas, {\n            type,\n            property: prop,\n            args: [v2],\n            setter: true\n          });\n        }\n      });\n      handlers.push(hookHandler);\n    }\n  }\n  return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n  const handlers = [];\n  handlers.push(\n    ...patchGLPrototype(\n      win.WebGLRenderingContext.prototype,\n      CanvasContext.WebGL,\n      cb,\n      blockClass,\n      blockSelector,\n      win\n    )\n  );\n  if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n    handlers.push(\n      ...patchGLPrototype(\n        win.WebGL2RenderingContext.prototype,\n        CanvasContext.WebGL2,\n        cb,\n        blockClass,\n        blockSelector,\n        win\n      )\n    );\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\nconst encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nconst decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));\nconst blob = typeof window !== \"undefined\" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n  let objURL;\n  try {\n    objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n    if (!objURL) throw \"\";\n    const worker = new Worker(objURL, {\n      name: options == null ? void 0 : options.name\n    });\n    worker.addEventListener(\"error\", () => {\n      (window.URL || window.webkitURL).revokeObjectURL(objURL);\n    });\n    return worker;\n  } catch (e2) {\n    return new Worker(\n      \"data:text/javascript;base64,\" + encodedJs,\n      {\n        name: options == null ? void 0 : options.name\n      }\n    );\n  } finally {\n    objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n  }\n}\nclass CanvasManager {\n  constructor(options) {\n    __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n    __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n    __publicField(this, \"mirror\");\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"resetObservers\");\n    __publicField(this, \"frozen\", false);\n    __publicField(this, \"locked\", false);\n    __publicField(this, \"processMutation\", (target, mutation) => {\n      const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n      if (newFrame || !this.rafStamps.invokeId)\n        this.rafStamps.invokeId = this.rafStamps.latestId;\n      if (!this.pendingCanvasMutations.has(target)) {\n        this.pendingCanvasMutations.set(target, []);\n      }\n      this.pendingCanvasMutations.get(target).push(mutation);\n    });\n    const {\n      sampling = \"all\",\n      win,\n      blockClass,\n      blockSelector,\n      recordCanvas,\n      dataURLOptions\n    } = options;\n    this.mutationCb = options.mutationCb;\n    this.mirror = options.mirror;\n    if (recordCanvas && sampling === \"all\")\n      this.initCanvasMutationObserver(win, blockClass, blockSelector);\n    if (recordCanvas && typeof sampling === \"number\")\n      this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n        dataURLOptions\n      });\n  }\n  reset() {\n    this.pendingCanvasMutations.clear();\n    this.resetObservers && this.resetObservers();\n  }\n  freeze() {\n    this.frozen = true;\n  }\n  unfreeze() {\n    this.frozen = false;\n  }\n  lock() {\n    this.locked = true;\n  }\n  unlock() {\n    this.locked = false;\n  }\n  initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      true\n    );\n    const snapshotInProgressMap = /* @__PURE__ */ new Map();\n    const worker = new WorkerWrapper();\n    worker.onmessage = (e2) => {\n      const { id } = e2.data;\n      snapshotInProgressMap.set(id, false);\n      if (!(\"base64\" in e2.data)) return;\n      const { base64, type, width, height } = e2.data;\n      this.mutationCb({\n        id,\n        type: CanvasContext[\"2D\"],\n        commands: [\n          {\n            property: \"clearRect\",\n            // wipe canvas\n            args: [0, 0, width, height]\n          },\n          {\n            property: \"drawImage\",\n            // draws (semi-transparent) image\n            args: [\n              {\n                rr_type: \"ImageBitmap\",\n                args: [\n                  {\n                    rr_type: \"Blob\",\n                    data: [{ rr_type: \"ArrayBuffer\", base64 }],\n                    type\n                  }\n                ]\n              },\n              0,\n              0\n            ]\n          }\n        ]\n      });\n    };\n    const timeBetweenSnapshots = 1e3 / fps;\n    let lastSnapshotTime = 0;\n    let rafId;\n    const getCanvas = () => {\n      const matchedCanvas = [];\n      win.document.querySelectorAll(\"canvas\").forEach((canvas) => {\n        if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n          matchedCanvas.push(canvas);\n        }\n      });\n      return matchedCanvas;\n    };\n    const takeCanvasSnapshots = (timestamp) => {\n      if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n        rafId = requestAnimationFrame(takeCanvasSnapshots);\n        return;\n      }\n      lastSnapshotTime = timestamp;\n      getCanvas().forEach(async (canvas) => {\n        var _a2;\n        const id = this.mirror.getId(canvas);\n        if (snapshotInProgressMap.get(id)) return;\n        if (canvas.width === 0 || canvas.height === 0) return;\n        snapshotInProgressMap.set(id, true);\n        if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n          const context = canvas.getContext(canvas.__context);\n          if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n            context.clear(context.COLOR_BUFFER_BIT);\n          }\n        }\n        const bitmap = await createImageBitmap(canvas);\n        worker.postMessage(\n          {\n            id,\n            bitmap,\n            width: canvas.width,\n            height: canvas.height,\n            dataURLOptions: options.dataURLOptions\n          },\n          [bitmap]\n        );\n      });\n      rafId = requestAnimationFrame(takeCanvasSnapshots);\n    };\n    rafId = requestAnimationFrame(takeCanvasSnapshots);\n    this.resetObservers = () => {\n      canvasContextReset();\n      cancelAnimationFrame(rafId);\n    };\n  }\n  initCanvasMutationObserver(win, blockClass, blockSelector) {\n    this.startRAFTimestamping();\n    this.startPendingCanvasMutationFlusher();\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      false\n    );\n    const canvas2DReset = initCanvas2DMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector\n    );\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector\n    );\n    this.resetObservers = () => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    };\n  }\n  startPendingCanvasMutationFlusher() {\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n  startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp) => {\n      this.rafStamps.latestId = timestamp;\n      requestAnimationFrame(setLatestRAFTimestamp);\n    };\n    requestAnimationFrame(setLatestRAFTimestamp);\n  }\n  flushPendingCanvasMutations() {\n    this.pendingCanvasMutations.forEach(\n      (_values, canvas) => {\n        const id = this.mirror.getId(canvas);\n        this.flushPendingCanvasMutationFor(canvas, id);\n      }\n    );\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n  flushPendingCanvasMutationFor(canvas, id) {\n    if (this.frozen || this.locked) {\n      return;\n    }\n    const valuesWithType = this.pendingCanvasMutations.get(canvas);\n    if (!valuesWithType || id === -1) return;\n    const values = valuesWithType.map((value) => {\n      const { type: type2, ...rest } = value;\n      return rest;\n    });\n    const { type } = valuesWithType[0];\n    this.mutationCb({ id, type, commands: values });\n    this.pendingCanvasMutations.delete(canvas);\n  }\n}\nclass StylesheetManager {\n  constructor(options) {\n    __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n    __publicField(this, \"mutationCb\");\n    __publicField(this, \"adoptedStyleSheetCb\");\n    __publicField(this, \"styleMirror\", new StyleSheetMirror());\n    this.mutationCb = options.mutationCb;\n    this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n  }\n  attachLinkElement(linkEl, childSn) {\n    if (\"_cssText\" in childSn.attributes)\n      this.mutationCb({\n        adds: [],\n        removes: [],\n        texts: [],\n        attributes: [\n          {\n            id: childSn.id,\n            attributes: childSn.attributes\n          }\n        ]\n      });\n    this.trackLinkElement(linkEl);\n  }\n  trackLinkElement(linkEl) {\n    if (this.trackedLinkElements.has(linkEl)) return;\n    this.trackedLinkElements.add(linkEl);\n    this.trackStylesheetInLinkElement(linkEl);\n  }\n  adoptStyleSheets(sheets, hostId) {\n    if (sheets.length === 0) return;\n    const adoptedStyleSheetData = {\n      id: hostId,\n      styleIds: []\n    };\n    const styles = [];\n    for (const sheet of sheets) {\n      let styleId;\n      if (!this.styleMirror.has(sheet)) {\n        styleId = this.styleMirror.add(sheet);\n        styles.push({\n          styleId,\n          rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n            rule: stringifyRule(r2, sheet.href),\n            index: index2\n          }))\n        });\n      } else styleId = this.styleMirror.getId(sheet);\n      adoptedStyleSheetData.styleIds.push(styleId);\n    }\n    if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n    this.adoptedStyleSheetCb(adoptedStyleSheetData);\n  }\n  reset() {\n    this.styleMirror.reset();\n    this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n  }\n  // TODO: take snapshot on stylesheet reload by applying event listener\n  trackStylesheetInLinkElement(_linkEl) {\n  }\n}\nclass ProcessedNodeManager {\n  constructor() {\n    __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n    __publicField(this, \"active\", false);\n  }\n  inOtherBuffer(node2, thisBuffer) {\n    const buffers = this.nodeMap.get(node2);\n    return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n  }\n  add(node2, buffer) {\n    if (!this.active) {\n      this.active = true;\n      requestAnimationFrame(() => {\n        this.nodeMap = /* @__PURE__ */ new WeakMap();\n        this.active = false;\n      });\n    }\n    this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n  }\n  destroy() {\n  }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n  if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {\n    const cleanFrame = document.createElement(\"iframe\");\n    document.body.appendChild(cleanFrame);\n    Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n    document.body.removeChild(cleanFrame);\n  }\n} catch (err) {\n  console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n  const {\n    emit,\n    checkoutEveryNms,\n    checkoutEveryNth,\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    ignoreClass = \"rr-ignore\",\n    ignoreSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    maskAllInputs,\n    maskInputOptions: _maskInputOptions,\n    slimDOMOptions: _slimDOMOptions,\n    maskInputFn,\n    maskTextFn,\n    hooks,\n    packFn,\n    sampling = {},\n    dataURLOptions = {},\n    mousemoveWait,\n    recordDOM = true,\n    recordCanvas = false,\n    recordCrossOriginIframes = false,\n    recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n    userTriggeredOnInput = false,\n    collectFonts = false,\n    inlineImages = false,\n    plugins,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n    errorHandler: errorHandler2\n  } = options;\n  registerErrorHandler(errorHandler2);\n  const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n  let passEmitsToParent = false;\n  if (!inEmittingFrame) {\n    try {\n      if (window.parent.document) {\n        passEmitsToParent = false;\n      }\n    } catch (e2) {\n      passEmitsToParent = true;\n    }\n  }\n  if (inEmittingFrame && !emit) {\n    throw new Error(\"emit function is required\");\n  }\n  if (!inEmittingFrame && !passEmitsToParent) {\n    return () => {\n    };\n  }\n  if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n    sampling.mousemove = mousemoveWait;\n  }\n  mirror.reset();\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true,\n    password: true\n  } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n  const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n    script: true,\n    comment: true,\n    headFavicon: true,\n    headWhitespace: true,\n    headMetaSocial: true,\n    headMetaRobots: true,\n    headMetaHttpEquiv: true,\n    headMetaVerification: true,\n    // the following are off for slimDOMOptions === true,\n    // as they destroy some (hidden) info:\n    headMetaAuthorship: _slimDOMOptions === \"all\",\n    headMetaDescKeywords: _slimDOMOptions === \"all\",\n    headTitleMutations: _slimDOMOptions === \"all\"\n  } : _slimDOMOptions ? _slimDOMOptions : {};\n  polyfill$1();\n  let lastFullSnapshotEvent;\n  let incrementalSnapshotCount = 0;\n  const eventProcessor = (e2) => {\n    for (const plugin3 of plugins || []) {\n      if (plugin3.eventProcessor) {\n        e2 = plugin3.eventProcessor(e2);\n      }\n    }\n    if (packFn && // Disable packing events which will be emitted to parent frames.\n    !passEmitsToParent) {\n      e2 = packFn(e2);\n    }\n    return e2;\n  };\n  wrappedEmit = (r2, isCheckout) => {\n    var _a2;\n    const e2 = r2;\n    e2.timestamp = nowTimestamp();\n    if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n      mutationBuffers.forEach((buf) => buf.unfreeze());\n    }\n    if (inEmittingFrame) {\n      emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n    } else if (passEmitsToParent) {\n      const message = {\n        type: \"rrweb\",\n        event: eventProcessor(e2),\n        origin: window.location.origin,\n        isCheckout\n      };\n      window.parent.postMessage(message, \"*\");\n    }\n    if (e2.type === EventType.FullSnapshot) {\n      lastFullSnapshotEvent = e2;\n      incrementalSnapshotCount = 0;\n    } else if (e2.type === EventType.IncrementalSnapshot) {\n      if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n        return;\n      }\n      incrementalSnapshotCount++;\n      const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n      const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n      if (exceedCount || exceedTime) {\n        takeFullSnapshot$1(true);\n      }\n    }\n  };\n  const wrappedMutationEmit = (m) => {\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Mutation,\n        ...m\n      }\n    });\n  };\n  const wrappedScrollEmit = (p) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.Scroll,\n      ...p\n    }\n  });\n  const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.CanvasMutation,\n      ...p\n    }\n  });\n  const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n    type: EventType.IncrementalSnapshot,\n    data: {\n      source: IncrementalSource.AdoptedStyleSheet,\n      ...a2\n    }\n  });\n  const stylesheetManager = new StylesheetManager({\n    mutationCb: wrappedMutationEmit,\n    adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n  });\n  const iframeManager = new IframeManager({\n    mirror,\n    mutationCb: wrappedMutationEmit,\n    stylesheetManager,\n    recordCrossOriginIframes,\n    wrappedEmit\n  });\n  for (const plugin3 of plugins || []) {\n    if (plugin3.getMirror)\n      plugin3.getMirror({\n        nodeMirror: mirror,\n        crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n        crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n      });\n  }\n  const processedNodeManager = new ProcessedNodeManager();\n  canvasManager = new CanvasManager({\n    recordCanvas,\n    mutationCb: wrappedCanvasMutationEmit,\n    win: window,\n    blockClass,\n    blockSelector,\n    mirror,\n    sampling: sampling.canvas,\n    dataURLOptions\n  });\n  const shadowDomManager = new ShadowDomManager({\n    mutationCb: wrappedMutationEmit,\n    scrollCb: wrappedScrollEmit,\n    bypassOptions: {\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskInputOptions,\n      dataURLOptions,\n      maskTextFn,\n      maskInputFn,\n      recordCanvas,\n      inlineImages,\n      sampling,\n      slimDOMOptions,\n      iframeManager,\n      stylesheetManager,\n      canvasManager,\n      keepIframeSrcFn,\n      processedNodeManager\n    },\n    mirror\n  });\n  takeFullSnapshot$1 = (isCheckout = false) => {\n    if (!recordDOM) {\n      return;\n    }\n    wrappedEmit(\n      {\n        type: EventType.Meta,\n        data: {\n          href: window.location.href,\n          width: getWindowWidth(),\n          height: getWindowHeight()\n        }\n      },\n      isCheckout\n    );\n    stylesheetManager.reset();\n    shadowDomManager.init();\n    mutationBuffers.forEach((buf) => buf.lock());\n    const node2 = snapshot(document, {\n      mirror,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskAllInputs: maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOM: slimDOMOptions,\n      dataURLOptions,\n      recordCanvas,\n      inlineImages,\n      onSerialize: (n2) => {\n        if (isSerializedIframe(n2, mirror)) {\n          iframeManager.addIframe(n2);\n        }\n        if (isSerializedStylesheet(n2, mirror)) {\n          stylesheetManager.trackLinkElement(n2);\n        }\n        if (hasShadowRoot(n2)) {\n          shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n        }\n      },\n      onIframeLoad: (iframe, childSn) => {\n        iframeManager.attachIframe(iframe, childSn);\n        shadowDomManager.observeAttachShadow(iframe);\n      },\n      onStylesheetLoad: (linkEl, childSn) => {\n        stylesheetManager.attachLinkElement(linkEl, childSn);\n      },\n      keepIframeSrcFn\n    });\n    if (!node2) {\n      return console.warn(\"Failed to snapshot the document\");\n    }\n    wrappedEmit(\n      {\n        type: EventType.FullSnapshot,\n        data: {\n          node: node2,\n          initialOffset: getWindowScroll(window)\n        }\n      },\n      isCheckout\n    );\n    mutationBuffers.forEach((buf) => buf.unlock());\n    if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n      stylesheetManager.adoptStyleSheets(\n        document.adoptedStyleSheets,\n        mirror.getId(document)\n      );\n  };\n  try {\n    const handlers = [];\n    const observe = (doc) => {\n      var _a2;\n      return callbackWrapper(initObservers)(\n        {\n          mutationCb: wrappedMutationEmit,\n          mousemoveCb: (positions, source) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source,\n              positions\n            }\n          }),\n          mouseInteractionCb: (d) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.MouseInteraction,\n              ...d\n            }\n          }),\n          scrollCb: wrappedScrollEmit,\n          viewportResizeCb: (d) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.ViewportResize,\n              ...d\n            }\n          }),\n          inputCb: (v2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.Input,\n              ...v2\n            }\n          }),\n          mediaInteractionCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.MediaInteraction,\n              ...p\n            }\n          }),\n          styleSheetRuleCb: (r2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleSheetRule,\n              ...r2\n            }\n          }),\n          styleDeclarationCb: (r2) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.StyleDeclaration,\n              ...r2\n            }\n          }),\n          canvasMutationCb: wrappedCanvasMutationEmit,\n          fontCb: (p) => wrappedEmit({\n            type: EventType.IncrementalSnapshot,\n            data: {\n              source: IncrementalSource.Font,\n              ...p\n            }\n          }),\n          selectionCb: (p) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Selection,\n                ...p\n              }\n            });\n          },\n          customElementCb: (c2) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.CustomElement,\n                ...c2\n              }\n            });\n          },\n          blockClass,\n          ignoreClass,\n          ignoreSelector,\n          maskTextClass,\n          maskTextSelector,\n          maskInputOptions,\n          inlineStylesheet,\n          sampling,\n          recordDOM,\n          recordCanvas,\n          inlineImages,\n          userTriggeredOnInput,\n          collectFonts,\n          doc,\n          maskInputFn,\n          maskTextFn,\n          keepIframeSrcFn,\n          blockSelector,\n          slimDOMOptions,\n          dataURLOptions,\n          mirror,\n          iframeManager,\n          stylesheetManager,\n          shadowDomManager,\n          processedNodeManager,\n          canvasManager,\n          ignoreCSSAttributes,\n          plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n            observer: p.observer,\n            options: p.options,\n            callback: (payload) => wrappedEmit({\n              type: EventType.Plugin,\n              data: {\n                plugin: p.name,\n                payload\n              }\n            })\n          }))) || []\n        },\n        hooks\n      );\n    };\n    iframeManager.addLoadListener((iframeEl) => {\n      try {\n        handlers.push(observe(iframeEl.contentDocument));\n      } catch (error) {\n        console.warn(error);\n      }\n    });\n    const init = () => {\n      takeFullSnapshot$1();\n      handlers.push(observe(document));\n      recording = true;\n    };\n    if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n      init();\n    } else {\n      handlers.push(\n        on(\"DOMContentLoaded\", () => {\n          wrappedEmit({\n            type: EventType.DomContentLoaded,\n            data: {}\n          });\n          if (recordAfter === \"DOMContentLoaded\") init();\n        })\n      );\n      handlers.push(\n        on(\n          \"load\",\n          () => {\n            wrappedEmit({\n              type: EventType.Load,\n              data: {}\n            });\n            if (recordAfter === \"load\") init();\n          },\n          window\n        )\n      );\n    }\n    return () => {\n      handlers.forEach((h) => h());\n      processedNodeManager.destroy();\n      recording = false;\n      unregisterErrorHandler();\n    };\n  } catch (error) {\n    console.warn(error);\n  }\n}\nrecord.addCustomEvent = (tag, payload) => {\n  if (!recording) {\n    throw new Error(\"please add custom event after start recording\");\n  }\n  wrappedEmit({\n    type: EventType.Custom,\n    data: {\n      tag,\n      payload\n    }\n  });\n};\nrecord.freezePage = () => {\n  mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n  if (!recording) {\n    throw new Error(\"please take full snapshot after start recording\");\n  }\n  takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n  t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nexport {\n  record\n};\n//# sourceMappingURL=record.js.map\n","// Should change to union but it's a breaking change (affects sprig npm packages)\nexport enum DismissReason {\n  Closed = \"close.click\", // user clicked the close button\n  Complete = \"survey.completed\", // user answered all questions\n  FeedbackClosed = \"feedback.closed\", // user either clicked on feedback button or close button\n  PageChange = \"page.change\", // productConfig.dismissOnPageChange == true and we detected a page change (excludes hash/query param changes)\n  API = \"api\", // JS called Sprig('dismissActiveSurvey')\n  Override = \"override\", // JS called Sprig('displaySurvey', SURVEY_ID)\n}\n\nexport type StudyType = \"feedbackButton\" | \"inProductSurvey\" | \"longFormSurvey\";\n\n// Should change to union but it's a breaking change (affects sprig npm packages)\nexport enum SprigEvent {\n  // for controller\n  ReplayCapture = \"replay.capture\",\n  ReplayPaused = \"replay.paused\",\n  ReplayResumed = \"replay.resumed\",\n  FeedbackButtonLoaded = \"feedback.button.loaded\",\n  SDKReady = \"sdk.ready\",\n  SurveyAppeared = \"survey.appeared\",\n  SurveyCloseRequested = \"survey.closeRequested\", //This event signals to mobile the survey overlay can close\n  SurveyClosed = \"survey.closed\",\n  SurveyDimensions = \"survey.dimensions\",\n  SurveyFadingOut = \"survey.fadingOut\",\n  SurveyHeight = \"survey.height\",\n  SurveyPresented = \"survey.presented\",\n  SurveyLifeCycle = \"survey.lifeCycle\",\n  SurveyWidth = \"survey.width\",\n  SurveyWillClose = \"survey.willClose\",\n  SurveyWillPresent = \"survey.will.present\",\n\n  // for view\n  CloseSurveyOnOverlayClick = \"close.survey.overlayClick\",\n  VisitorIDUpdated = \"visitor.id.updated\",\n\n  // question\n  QuestionAnswered = \"question.answered\",\n}\n\n// events not intended to be used externally and not in the documentation\nexport type InternalEventName =\n  | \"verify.view.version\"\n  | \"survey.question\"\n  | \"question.prototype.click\"\n  | \"question.agreement.click\"\n  | \"recorded.task.start\"\n  | \"recorded.task.permission.screen\"\n  | \"survey.complete\";\n\nexport type InternalEventData = \"view.version\" | \"qid\" | \"props\";\n\n// should remove as this is redundant (similar to sprig-event), needs to be marked as a breaking change (affects sprig npm packages)\nexport const EVENTS = {\n  // for controller\n  FEEDBACK_BUTTON_LOADED: SprigEvent.FeedbackButtonLoaded,\n  SDK_READY: SprigEvent.SDKReady,\n  SURVEY_APPEARED: SprigEvent.SurveyAppeared,\n  SURVEY_CLOSED: SprigEvent.SurveyClosed,\n  SURVEY_DIMENSIONS: SprigEvent.SurveyDimensions,\n  SURVEY_FADING_OUT: SprigEvent.SurveyFadingOut,\n  SURVEY_HEIGHT: SprigEvent.SurveyHeight,\n  SURVEY_WIDTH: SprigEvent.SurveyWidth,\n  SURVEY_PRESENTED: SprigEvent.SurveyPresented,\n  SURVEY_LIFE_CYCLE: SprigEvent.SurveyLifeCycle,\n  SURVEY_WILL_CLOSE: SprigEvent.SurveyWillClose,\n  SURVEY_WILL_PRESENT: SprigEvent.SurveyWillPresent,\n  QUESTION_ANSWERED: SprigEvent.QuestionAnswered,\n  REPLAY_CAPTURE: SprigEvent.ReplayCapture,\n\n  // for view\n  CLOSE_SURVEY_ON_OVERLAY_CLICK: SprigEvent.CloseSurveyOnOverlayClick,\n  VISITOR_ID_UPDATED: SprigEvent.VisitorIDUpdated,\n\n  // data - TODO: separate data e.g. export const enum SprigEventData { SurveyID } (breaking change)\n  DATA: {\n    DISMISS_REASONS: {\n      API: DismissReason.API, // JS called Sprig('dismissActiveSurvey')\n      CLOSED: DismissReason.Closed, // user clicked the close button\n      COMPLETE: DismissReason.Complete, // user answered all questions\n      PAGE_CHANGE: DismissReason.PageChange, // productConfig.dismissOnPageChange:= true and we detected a page change (excludes hash/query param changes)\n      OVERRIDE: DismissReason.Override, // JS called Sprig('displaySurvey', SURVEY_ID)\n    },\n    SURVEY_ID: \"survey.id\",\n  },\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","/**\n * Reference: https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/\n */\ninterface Breadcrumb {\n  category: string;\n  data?: unknown;\n\n  /**\n   * Highest to lowest severity.\n   */\n  level?: \"fatal\" | \"error\" | \"warning\" | \"info\" | \"debug\";\n\n  message: string;\n\n  timestamp: string | number; // ISO 8601 string or unix timestamp (seconds)\n\n  type: \"default\" | \"debug\" | \"error\" | \"http\" | \"info\" | \"navigation\";\n}\n\nconst modeIsDevelopment = !import.meta.env.PROD;\n\nconst MAX_BREADCRUMBS = 300;\n\n/**\n * For logging the breadcrumbs for various user actions for debugging purposes.\n * Since we use a custom error api, we can pass these breadcrumbs along which will create the actual Sentry breadcrumbs.\n */\nexport class BreadcrumbsLogger {\n  breadcrumbs: Breadcrumb[] = [];\n\n  getTimeStamp() {\n    return new Date().toISOString();\n  }\n\n  addBreadcrumb(breadcrumb: Breadcrumb) {\n    if (modeIsDevelopment) {\n      const { data, message } = breadcrumb;\n      const dataToLog = data && Object.keys(data).length ? data : null;\n      if (dataToLog) {\n        console.info(message, dataToLog);\n      } else {\n        console.info(message);\n      }\n    }\n    this.breadcrumbs.push(breadcrumb);\n    if (this.breadcrumbs.length > MAX_BREADCRUMBS) {\n      this.breadcrumbs.shift();\n    }\n  }\n\n  /**\n   * Logs a debug breadcrumb. Data is unused.\n   * @example\n   * debug('message', 'started')\n   * // will log\n   * {\n   *    \"type\": \"debug\",\n   *    \"category\": \"started\",\n   *    \"data\": null,\n   *    \"level\": \"info\",\n   *    \"message\": \"message\",\n   *    \"timestamp\": '2024-08-07T00:00:00.000Z'\n   * }\n   */\n  debug(message: string, category: Breadcrumb[\"category\"] = \"debug\") {\n    this.addBreadcrumb({\n      category,\n      level: \"info\",\n      message,\n      timestamp: this.getTimeStamp(),\n      type: \"debug\",\n    });\n  }\n\n  /**\n   * Logs an error breadcrumb.\n   * @example\n   * error('message')\n   * // will log\n   * {\n   *    \"type\": \"error\",\n   *    \"category\": \"error\",\n   *    \"level\": \"error\",\n   *    \"message\": \"this is a message\",\n   *    \"timestamp\": '2024-08-07T00:00:00.000Z'\n   * }\n   */\n  error(message: string, data: unknown = {}) {\n    this.addBreadcrumb({\n      category: \"error\",\n      data,\n      level: \"error\",\n      message,\n      timestamp: this.getTimeStamp(),\n      type: \"error\",\n    });\n  }\n\n  /**\n   * Logs an info breadcrumb.\n   * @example\n   * http('message')\n   * // will log\n   * {\n   *    \"type\": \"info\",\n   *    \"category\": \"started\",\n   *    \"level\": \"info\",\n   *    \"message\": \"this is a message\",\n   *    \"timestamp\": '2024-08-07T00:00:00.000Z'\n   * }\n   */\n  http(\n    message: string,\n    data: {\n      url: string;\n      method: string;\n      status_code?: number;\n      reason?: string;\n    } & Record<string, unknown>,\n  ) {\n    this.addBreadcrumb({\n      category: \"xhr\",\n      data,\n      message,\n      timestamp: this.getTimeStamp(),\n      type: \"http\",\n    });\n  }\n\n  /**\n   * Logs an info breadcrumb.\n   * @example\n   * info('message')\n   * // will log\n   * {\n   *    \"type\": \"info\",\n   *    \"category\": \"started\",\n   *    \"level\": \"info\",\n   *    \"message\": \"this is a message\",\n   *    \"timestamp\": '2024-08-07T00:00:00.000Z'\n   * }\n   */\n  info(message: string, data: unknown = {}) {\n    this.addBreadcrumb({\n      category: \"info\",\n      data,\n      level: \"info\",\n      message,\n      timestamp: this.getTimeStamp(),\n      type: \"info\",\n    });\n  }\n\n  /**\n   * Logs a navigation breadcrumb.\n   * @example\n   * navigation('message', { from: '/login', to: '/dashboard' })\n   * // will log\n   * {\n   *    \"type\": \"navigation\",\n   *    \"category\": \"navigation\",\n   *    \"timestamp\": '2024-08-07T00:00:00.000Z'\n   *    \"data\": {\n   *      \"from\": \"/login\",\n   *      \"to\": \"/dashboard\"\n   *    },\n   * }\n   */\n  navigation(message: string, data: { from: string; to: string }) {\n    this.addBreadcrumb({\n      category: \"navigation\",\n      data,\n      message,\n      timestamp: this.getTimeStamp(),\n      type: \"navigation\",\n    });\n  }\n}\n\nexport const breadcrumbsLogger = new BreadcrumbsLogger();\n","const getIntercom = () => {\n  try {\n    return window.parent.Intercom;\n  } catch (err) {\n    return null;\n  }\n};\n\nexport const enable = () => {\n  const Intercom = getIntercom();\n  if (!Intercom) return;\n\n  if (Intercom.ul_wasVisible) {\n    Intercom(\"update\", { hide_default_launcher: false });\n  }\n\n  delete Intercom.ul_wasVisible;\n};\n\nexport const disable = () => {\n  const Intercom = getIntercom();\n  if (!Intercom) return;\n\n  Intercom.ul_wasVisible = !!document.querySelector(\n    \"iframe.intercom-launcher-frame\"\n  );\n\n  if (Intercom.ul_wasVisible) {\n    Intercom(\"update\", { hide_default_launcher: true });\n  }\n};\n","import * as Intercom from \"./intercom\";\n\nconst widgets = [Intercom];\n\nexport default class ConflictingWidgets {\n  static disable() {\n    widgets.forEach((w) => w.disable());\n  }\n\n  static enable() {\n    widgets.forEach((w) => w.enable());\n  }\n}\n","// src/MemoryLeakError.ts\nvar MemoryLeakError = class extends Error {\n  constructor(emitter, type, count) {\n    super(\n      `Possible EventEmitter memory leak detected. ${count} ${type.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`\n    );\n    this.emitter = emitter;\n    this.type = type;\n    this.count = count;\n    this.name = \"MaxListenersExceededWarning\";\n  }\n};\n\n// src/Emitter.ts\nvar _Emitter = class {\n  static listenerCount(emitter, eventName) {\n    return emitter.listenerCount(eventName);\n  }\n  constructor() {\n    this.events = /* @__PURE__ */ new Map();\n    this.maxListeners = _Emitter.defaultMaxListeners;\n    this.hasWarnedAboutPotentialMemoryLeak = false;\n  }\n  _emitInternalEvent(internalEventName, eventName, listener) {\n    this.emit(\n      internalEventName,\n      ...[eventName, listener]\n    );\n  }\n  _getListeners(eventName) {\n    return Array.prototype.concat.apply([], this.events.get(eventName)) || [];\n  }\n  _removeListener(listeners, listener) {\n    const index = listeners.indexOf(listener);\n    if (index > -1) {\n      listeners.splice(index, 1);\n    }\n    return [];\n  }\n  _wrapOnceListener(eventName, listener) {\n    const onceListener = (...data) => {\n      this.removeListener(eventName, onceListener);\n      return listener.apply(this, data);\n    };\n    Object.defineProperty(onceListener, \"name\", { value: listener.name });\n    return onceListener;\n  }\n  setMaxListeners(maxListeners) {\n    this.maxListeners = maxListeners;\n    return this;\n  }\n  /**\n   * Returns the current max listener value for the `Emitter` which is\n   * either set by `emitter.setMaxListeners(n)` or defaults to\n   * `Emitter.defaultMaxListeners`.\n   */\n  getMaxListeners() {\n    return this.maxListeners;\n  }\n  /**\n   * Returns an array listing the events for which the emitter has registered listeners.\n   * The values in the array will be strings or Symbols.\n   */\n  eventNames() {\n    return Array.from(this.events.keys());\n  }\n  /**\n   * Synchronously calls each of the listeners registered for the event named `eventName`,\n   * in the order they were registered, passing the supplied arguments to each.\n   * Returns `true` if the event has listeners, `false` otherwise.\n   *\n   * @example\n   * const emitter = new Emitter<{ hello: [string] }>()\n   * emitter.emit('hello', 'John')\n   */\n  emit(eventName, ...data) {\n    const listeners = this._getListeners(eventName);\n    listeners.forEach((listener) => {\n      listener.apply(this, data);\n    });\n    return listeners.length > 0;\n  }\n  addListener(eventName, listener) {\n    this._emitInternalEvent(\"newListener\", eventName, listener);\n    const nextListeners = this._getListeners(eventName).concat(listener);\n    this.events.set(eventName, nextListeners);\n    if (this.maxListeners > 0 && this.listenerCount(eventName) > this.maxListeners && !this.hasWarnedAboutPotentialMemoryLeak) {\n      this.hasWarnedAboutPotentialMemoryLeak = true;\n      const memoryLeakWarning = new MemoryLeakError(\n        this,\n        eventName,\n        this.listenerCount(eventName)\n      );\n      console.warn(memoryLeakWarning);\n    }\n    return this;\n  }\n  on(eventName, listener) {\n    return this.addListener(eventName, listener);\n  }\n  once(eventName, listener) {\n    return this.addListener(\n      eventName,\n      this._wrapOnceListener(eventName, listener)\n    );\n  }\n  prependListener(eventName, listener) {\n    const listeners = this._getListeners(eventName);\n    if (listeners.length > 0) {\n      const nextListeners = [listener].concat(listeners);\n      this.events.set(eventName, nextListeners);\n    } else {\n      this.events.set(eventName, listeners.concat(listener));\n    }\n    return this;\n  }\n  prependOnceListener(eventName, listener) {\n    return this.prependListener(\n      eventName,\n      this._wrapOnceListener(eventName, listener)\n    );\n  }\n  removeListener(eventName, listener) {\n    const listeners = this._getListeners(eventName);\n    if (listeners.length > 0) {\n      this._removeListener(listeners, listener);\n      this.events.set(eventName, listeners);\n      this._emitInternalEvent(\"removeListener\", eventName, listener);\n    }\n    return this;\n  }\n  /**\n   * Alias for `emitter.removeListener()`.\n   *\n   * @example\n   * emitter.off('hello', listener)\n   */\n  off(eventName, listener) {\n    return this.removeListener(eventName, listener);\n  }\n  removeAllListeners(eventName) {\n    if (eventName) {\n      this.events.delete(eventName);\n    } else {\n      this.events.clear();\n    }\n    return this;\n  }\n  /**\n   * Returns a copy of the array of listeners for the event named `eventName`.\n   */\n  listeners(eventName) {\n    return Array.from(this._getListeners(eventName));\n  }\n  /**\n   * Returns the number of listeners listening to the event named `eventName`.\n   */\n  listenerCount(eventName) {\n    return this._getListeners(eventName).length;\n  }\n  rawListeners(eventName) {\n    return this.listeners(eventName);\n  }\n};\nvar Emitter = _Emitter;\nEmitter.defaultMaxListeners = 10;\nexport {\n  Emitter,\n  MemoryLeakError\n};\n//# sourceMappingURL=index.mjs.map","import { Emitter } from \"strict-event-emitter\";\n\nimport { MetricThreshold } from \"./metrics/performanceMetric\";\nimport { SprigEvent, DismissReason, StudyType } from \"../constants/sprigEvents\";\nimport { MediaType, PassthroughData } from \"../constants/sprigRecordingEvents\";\nimport { AvPermission } from \"../types/card\";\nimport { RecordedTaskResponseType } from \"../view/cards/recordedTask/store\";\n\nimport type { ReplayDurationType } from \"../controller/types\";\n\nexport interface MobileReplayConfig {\n  mobileMetricsReportingEnabled?: boolean;\n  metricsReportingInterval?: number;\n  metricsThresholds?: MetricThreshold[];\n  maxMobileReplayDurationSeconds?: number;\n  mobileReplaySettings?: {\n    hideAllFormContents: boolean;\n    hidePasswordsOnly: boolean;\n    hideAllImages: boolean;\n  };\n}\n\nexport type SprigEventMap = {\n  // internal events\n  \"survey.question\": [\n    {\n      qid: number;\n      props: unknown;\n    },\n  ];\n  \"recorded.task.permission.screen\": [];\n  \"recorded.task.start\": [];\n  \"survey.complete\": [number];\n  \"verify.view.version\": [\n    {\n      \"view.version\": string;\n    },\n  ];\n\n  // sprig events\n  [SprigEvent.CloseSurveyOnOverlayClick]: [];\n  [SprigEvent.FeedbackButtonLoaded]: [\n    {\n      name: string;\n      \"survey.id\"?: number;\n    },\n  ];\n  [SprigEvent.SDKReady]: [MobileReplayConfig];\n  [SprigEvent.SurveyAppeared]: [\n    {\n      name: string;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyDimensions]: [\n    {\n      contentFrameHeight: number;\n      contentFrameWidth: number;\n      name: string;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyClosed]: [\n    {\n      initiator?: string;\n      name: string;\n      studyType?: StudyType;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyFadingOut]: [];\n  [SprigEvent.SurveyHeight]: [\n    {\n      name: string;\n      contentFrameHeight: number;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyWidth]: [\n    {\n      name: string;\n      contentFrameWidth: number;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyLifeCycle]: [{ state: string }];\n  [SprigEvent.SurveyPresented]: [\n    {\n      name: string;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyCloseRequested]: [\n    {\n      initiator: DismissReason;\n      name?: string;\n      studyType?: StudyType;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyWillClose]: [\n    {\n      initiator: DismissReason;\n      name?: string;\n      studyType?: StudyType;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.SurveyWillPresent]: [\n    {\n      name: string;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.VisitorIDUpdated]: [{ visitorId: string | null }];\n  [SprigEvent.QuestionAnswered]: [\n    {\n      answeredAt?: number;\n      questionIndex?: number;\n      value: unknown;\n      \"survey.id\": number;\n    },\n  ];\n  [SprigEvent.ReplayCapture]: [\n    {\n      responseGroupUid: string;\n      hasQuestions: boolean;\n      uploadId: string;\n      seconds: number;\n      replayType: ReplayDurationType;\n      generateVideoUploadUrlPayload: {\n        isReplay: boolean;\n        mediaRecordingUid: string;\n        mediaType: MediaType;\n        questionId: number;\n        responseGroupUid: string;\n        surveyId: number;\n        updatedAt: string;\n        visitorId: string | null;\n      };\n      surveyId: number;\n    },\n  ];\n  [SprigEvent.ReplayPaused]: [];\n  [SprigEvent.ReplayResumed]: [];\n  // recording events\n  \"av.permission\": [\n    {\n      \"stream.ready\": (\n        avStream: MediaStream | null,\n        captureStream?: MediaStream | null,\n      ) => void;\n      \"permission.descriptors\": AvPermission[];\n    },\n  ];\n  \"begin.recording\": [\n    {\n      \"recording.media.types\": MediaType[];\n      \"start.recording.callback\": (mediaRecordingUids: UUID[]) => void;\n    },\n  ];\n  \"finish.task\": [\n    {\n      \"begin.callback\": (mediaRecordingUid: UUID) => void;\n      \"current.index\": number;\n      \"passthrough.data\": PassthroughData;\n      \"progress.callback\": (\n        mediaRecordingUid: UUID,\n        data: { detail: number },\n      ) => void;\n      \"task.complete.callback\": (taskDurationMillisecond: number) => void;\n      \"task.response\": RecordedTaskResponseType;\n      \"upload.callback\": (\n        mediaRecordingUid: UUID | null,\n        successOrError: true | unknown,\n      ) => void;\n    },\n  ];\n  \"permission.status\": [\n    {\n      \"permission.status.callback\": (\n        avStream: MediaStream | undefined,\n        hasVideoPermission: boolean,\n        hasScreenPermission: boolean,\n        captureStream: MediaStream | undefined,\n      ) => void;\n    },\n  ];\n  \"screen.permission\": [\n    {\n      \"screen.permission.requested\"?: (data: boolean) => void;\n      \"stream.ready.callback\": (\n        avStream: MediaStream | null,\n        captureStream: MediaStream | null,\n      ) => void;\n    },\n  ];\n  \"start.task\": [];\n};\n\nexport type EventPayload = {\n  [Property in keyof SprigEventMap]: SprigEventMap[Property][0];\n};\n\nconst eventEmitter = new Emitter<SprigEventMap>();\n\nexport type SprigEventEmitter = typeof eventEmitter;\n\nexport default eventEmitter;\n","import { StudyType } from \"../constants/sprigEvents\";\nimport { StorageKey } from \"../controller/types\";\nimport { AppCard } from \"../types/card\";\nimport { Config } from \"../types/config\";\n\nexport const delay = async (ms: number) => {\n  await new Promise<void>((res) => {\n    setTimeout(res, ms);\n  });\n};\n\n/**\n * Get true or false for whether to direct embed from platform headers\n * @returns user meta information\n */\nexport const shouldDirectEmbed = ({\n  \"userleap-platform\": platform,\n}: Config[\"headers\"]) => {\n  return window.UserLeap?.forceDirectEmbed || platform !== \"web\";\n};\n\nclass StorageHelper {\n  private storage?: Storage;\n  private tempStorage: Record<string, string> = {};\n  public isStorageAvailable: boolean;\n\n  constructor(storage: \"sessionStorage\" | \"localStorage\") {\n    try {\n      this.storage = window[storage];\n      const test = \"__storage_test__\";\n      this.storage.setItem(test, test);\n      this.storage.removeItem(test);\n      this.isStorageAvailable = true;\n    } catch (e) {\n      this.isStorageAvailable = false;\n    }\n  }\n\n  public setItem(key: StorageKey, value: string) {\n    if (this.isStorageAvailable && this.storage) {\n      this.storage.setItem(key, value);\n    } else {\n      this.tempStorage[key] = value;\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public setItemObject(key: StorageKey, value: Record<string, unknown>) {\n    try {\n      this.setItem(key, JSON.stringify(value));\n    } catch (err) {\n      if (err instanceof Error) {\n        err.stack = key + \": \" + value;\n        window.UserLeap.reportError(\"Failed to save to local storage\", err);\n      }\n    }\n  }\n\n  public getItem(key: StorageKey) {\n    if (this.isStorageAvailable && this.storage) {\n      return this.storage.getItem(key);\n    } else {\n      return this.tempStorage[key];\n    }\n  }\n\n  public getItemObject(key: StorageKey) {\n    const stringifiedObject = this.getItem(key);\n    if (stringifiedObject) {\n      try {\n        return JSON.parse(stringifiedObject);\n      } catch (err) {\n        if (err instanceof Error) {\n          err.stack = key + \": \" + stringifiedObject;\n          window.UserLeap.reportError(\"Failed to parse local storage\", err);\n        }\n      }\n    }\n    return {};\n  }\n\n  public removeItem(key: StorageKey) {\n    if (this.isStorageAvailable && this.storage) {\n      this.storage.removeItem(key);\n    } else {\n      delete this.tempStorage[key];\n    }\n  }\n\n  public clear() {\n    if (this.isStorageAvailable && this.storage) {\n      this.storage.clear();\n    } else {\n      this.tempStorage = {};\n    }\n  }\n}\n\nexport const groupCards = (cards: AppCard[], index: number): AppCard[] => {\n  const cardsGroup: AppCard[] = [cards[index]];\n\n  const groupId = cards[index].groupId;\n\n  if (groupId) {\n    // If the card is part of a group, we can add it to the cardsGroup\n    // slice at the index to handle skip logic\n    return cards.slice(index).reduce((acc: AppCard[], card: AppCard) => {\n      if (card.groupId === groupId) {\n        acc.push(card);\n      }\n      return acc;\n    }, []);\n  }\n\n  return cardsGroup;\n};\n\nexport const isLongFormSurvey = (studyType: StudyType | undefined) => {\n  return studyType === \"longFormSurvey\";\n};\n\nexport const sessionStorageHelper = new StorageHelper(\"sessionStorage\");\nexport const localStorageHelper = new StorageHelper(\"localStorage\");\n","class Deferred<T = unknown, R = unknown> {\n  payload: T;\n  promise: Promise<R>;\n  reject: (reason?: unknown) => void = () => {};\n  resolve: (value: R) => void = () => {};\n\n  constructor(payload: T) {\n    this.payload = payload;\n    this.promise = new Promise((resolve, reject) => {\n      this.reject = reject;\n      this.resolve = resolve;\n    });\n  }\n\n  resolveRequest(result: R) {\n    this.resolve(result);\n  }\n}\n\nexport default Deferred;\n","type ReplayModule = typeof import(\"./replay\");\n\ninterface Modules {\n  replay: ReplayModule | null;\n}\n\nexport const modules: Modules = {\n  replay: null,\n};\n\nexport const registerReplay = (m: ReplayModule) => {\n  modules.replay = m;\n};\n\nexport const getModuleHeaders = () => {\n  const headerValue = [];\n  if (modules.replay) headerValue.push(\"replay\");\n  return headerValue.join(\",\");\n};\n","import Deferred from \"./Deferred\";\nimport { delay } from \"./general\";\nimport { getModuleHeaders } from \"../modules/moduleRegistry\";\nimport { Config, InstallationMethod } from \"../types/config\";\n\nexport const NETWORK_CONFIG = {\n  RATELIMIT_RESET_DEFAULT: 10, // 10s to restart the rate limit retry\n};\n\nexport type FetchOptions = Omit<RequestInit, \"headers\"> & {\n  headers?: Config[\"headers\"] | RequestInit[\"headers\"];\n  retries?: number;\n  shouldDropOnRateLimit?: boolean;\n  shouldRetryRequest?: boolean;\n};\n\ninterface RequestInfo {\n  options: RequestInit;\n  retries: number;\n  shouldDropOnRateLimit?: boolean;\n  url: string;\n}\nexport type Result = {\n  error?: Error;\n  ok?: boolean;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  json?: any;\n  reportError?: boolean;\n  status?: number;\n} & Partial<Response>;\n\nlet killswitch = false;\nlet killswitchReason = \"\";\nlet isRateLimited = false;\nlet isViolatingCspPolicy = false;\nlet pendingRequestQueue: Deferred<RequestInfo, Result>[] = [];\n\n// generates a CSP violation handler that prevents ulFetch retries when the targetUrl is blocked.\nconst getInstallationMethodHeader = (\n  Sprig: Partial<WindowSprig>,\n): InstallationMethod => {\n  if (Sprig._config && Sprig._config.installationMethod)\n    return Sprig._config.installationMethod;\n  if (Sprig._gtm) return \"web-gtm\";\n  if (Sprig._segment) return \"web-segment\";\n  return \"web-snippet\";\n};\n\nexport const cspViolationHandler = (event: SecurityPolicyViolationEvent) => {\n  if (event?.blockedURI?.includes(window.UserLeap._API_URL)) {\n    isViolatingCspPolicy = true;\n\n    console.warn(\n      `[Sprig] ${event.blockedURI} is blocked by Content-Security-Policy`,\n    );\n  }\n};\n\nexport const killNetworkRequests = (reason = \"\") => {\n  killswitch = true;\n  killswitchReason = reason;\n};\n\nexport function getHttpHeaders(\n  Sprig: Partial<WindowSprig> = {},\n): Config[\"headers\"] {\n  const headers: Config[\"headers\"] = {\n    \"Content-Type\": \"application/json\",\n    \"userleap-platform\": \"web\",\n    \"x-ul-sdk-version\": __SDK_VERSION__,\n    \"x-ul-installation-method\": getInstallationMethodHeader(Sprig),\n    \"sprig-modules\": getModuleHeaders(),\n  };\n  if (__NPM_BUNDLED___) {\n    headers[\"x-ul-package-version\"] = __BUNDLED_VERSION__;\n  }\n\n  if (Sprig.envId) headers[\"x-ul-environment-id\"] = Sprig.envId;\n  if (Sprig.token) headers[\"Authorization\"] = \"Bearer \" + Sprig.token;\n  if (Sprig.userId) headers[\"x-ul-user-id\"] = Sprig.userId;\n  if (Sprig.visitorId) headers[\"x-ul-visitor-id\"] = Sprig.visitorId;\n  if (Sprig.partnerAnonymousId)\n    headers[\"x-ul-anonymous-id\"] = Sprig.partnerAnonymousId;\n  if (Sprig.mobileHeadersJSON) {\n    const mobileHeaders = JSON.parse(Sprig.mobileHeadersJSON);\n    Object.assign(headers, mobileHeaders);\n  }\n  if (Sprig.locale) headers[\"accept-language\"] = Sprig.locale; // custom set locale overrides original header locales\n  if (window.previewMode) headers[\"x-ul-preview-mode\"] = \"1\";\n\n  return headers;\n}\n\nconst dropOrQueueRequest = async ({\n  shouldDropOnRateLimit,\n  ...requestInfo\n}: RequestInfo) => {\n  if (shouldDropOnRateLimit) {\n    return { status: 429 };\n  } else {\n    const deferredRequest = new Deferred<\n      Omit<RequestInfo, \"shouldDropOnRateLimit\">,\n      Result\n    >(requestInfo);\n    pendingRequestQueue.push(deferredRequest);\n    return deferredRequest.promise;\n  }\n};\n\nexport const sprigFetch = async (\n  url: string,\n  _options: FetchOptions,\n): Promise<Result> => {\n  const {\n    retries = 0,\n    shouldDropOnRateLimit = false,\n    shouldRetryRequest = false,\n    ...options\n  } = _options;\n\n  // drop or queue request based on the current rate limit status\n  const requestInfo = { url, options, retries, shouldDropOnRateLimit };\n  if (isRateLimited && !shouldRetryRequest) {\n    return dropOrQueueRequest(requestInfo);\n  }\n  const killswitchResponse = { ok: false, reportError: false };\n  if (killswitch) {\n    console.info(`UserLeap - ${killswitchReason}`);\n    return killswitchResponse;\n  }\n\n  try {\n    const result = await fetch(url, options);\n\n    if (result.status === 429) {\n      // retry if rate limit is not in effect yet and the request is not droppable\n      const shouldRetryCurrentRequest =\n        (!isRateLimited && !shouldDropOnRateLimit) || shouldRetryRequest;\n\n      if (shouldRetryCurrentRequest) {\n        isRateLimited = true;\n        const rateLimitResetTime = result.headers.has(\"ratelimit-reset\")\n          ? Number(result.headers.get(\"ratelimit-reset\"))\n          : NETWORK_CONFIG.RATELIMIT_RESET_DEFAULT;\n\n        await delay(rateLimitResetTime * 1000);\n        return sprigFetch(url, {\n          ...options,\n          shouldDropOnRateLimit,\n          shouldRetryRequest: true,\n        });\n      } else {\n        return dropOrQueueRequest(requestInfo);\n      }\n    }\n    isRateLimited = false;\n    if (pendingRequestQueue.length) {\n      pendingRequestQueue.map((deferredRequest) => {\n        const payload = deferredRequest.payload;\n        sprigFetch(payload.url, {\n          ...payload.options,\n          retries: payload.retries,\n          shouldDropOnRateLimit: payload.shouldDropOnRateLimit,\n        }).then((result) => {\n          deferredRequest.resolveRequest(result);\n        });\n      });\n      pendingRequestQueue = [];\n    }\n    if (result.ok) {\n      if (result.status === 249) {\n        killNetworkRequests();\n        return killswitchResponse;\n      }\n\n      const responseText = await result.text();\n      try {\n        if (responseText && responseText !== \"OK\") {\n          result.json = JSON.parse(responseText);\n        }\n        return result;\n      } catch (err) {\n        return {\n          ok: false,\n          reportError: false,\n          error: new Error(\n            `failed parsing response json for ${url} - ${responseText}`,\n          ),\n        };\n      }\n    }\n    return result;\n  } catch (err) {\n    const newAttempt = retries + 1;\n    if (newAttempt > 5 || isViolatingCspPolicy) {\n      return {\n        ok: false,\n        reportError: false,\n        error: err as Error,\n      };\n    }\n\n    // 1s... 2s... 4s... 8s... 16s...\n    await delay(Math.pow(2, retries) * 1000);\n    return sprigFetch(url, { ...options, retries: newAttempt });\n  }\n};\n","import { v4 as uuidv4 } from \"uuid\";\n\nimport {\n  removeContainer,\n  createContainer,\n  removeContainerOnClose,\n  createFrame,\n} from \"./iframe\";\nimport { SurveyState } from \"./types\";\nimport { MOBILE_MAX_WIDTH } from \"../constants/css\";\nimport { SprigEvent, EVENTS, StudyType } from \"../constants/sprigEvents\";\nimport { breadcrumbsLogger as logger } from \"../helpers/BreadcrumbsLogger\";\nimport ConflictingWidgets from \"../helpers/conflicting_widgets\";\nimport eventEmitter, { EventPayload } from \"../helpers/eventEmitter\";\nimport { shouldDirectEmbed, localStorageHelper } from \"../helpers/general\";\nimport { FetchOptions, getHttpHeaders, sprigFetch } from \"../helpers/network\";\nimport { modules } from \"../modules/moduleRegistry\";\nimport {\n  type HeatmapCaptureParams,\n  type ReplayCaptureInfo,\n} from \"../modules/replay\";\nimport { Card } from \"../types/card\";\nimport { Config, HttpHeader, ProductConfig } from \"../types/config\";\n\nconst VIEW_TAG = \"ul-view-sdk-script\";\nconst MOBILE_PLATFORM_HEADERS = [\"ios\", \"android\"];\nexport const PATH_VISITOR = \"visitors\";\nexport const PATH_ENV = \"environments\";\n\nexport interface QuestionsResponse {\n  context: {\n    outcome: string;\n    product: { name: string };\n    visitor: { outcome: \"\" };\n  };\n  delay?: number;\n  forceBrandedLogo: boolean;\n  isFeedback?: boolean;\n  endCard: Config[\"endCard\"];\n  heatmap?: HeatmapCaptureParams;\n  locale: string;\n  questions: Card[];\n  previewMode?: boolean;\n  productConfig: ProductConfig;\n  responseGroupUid: string;\n  sessionReplay?: ReplayCaptureInfo;\n  studyType: StudyType;\n  surveyId: number;\n  uuid: string;\n  vid: string;\n  groupid?: string;\n}\n\nexport async function authenticatedFetch(url: string, _options: FetchOptions) {\n  const { shouldDropOnRateLimit, ...options } = _options;\n  options.headers = Object.assign(\n    getHttpHeaders(window.UserLeap),\n    options.headers,\n  );\n  const results = await sprigFetch(url, {\n    ...options,\n    shouldDropOnRateLimit,\n  });\n  if (results.ok) {\n    const authHeader = results.headers?.get(\"Authorization\");\n    const tokenPieces = authHeader ? authHeader.split(\" \") : undefined;\n    const headerToken =\n      tokenPieces && tokenPieces.length === 2 ? tokenPieces[1] : undefined;\n\n    const visitorId = results.headers?.get(\n      \"x-ul-visitor-id\" satisfies HttpHeader,\n    );\n    if (window.UserLeap.userId && visitorId === window.UserLeap.visitorId) {\n      //this visitor is now identified so remove from anon map\n      const envUuidMap = localStorageHelper.getItemObject(\n        \"sprig.anon.env.vid.map\",\n      );\n      if (envUuidMap && envUuidMap[window.UserLeap.envId] === visitorId) {\n        delete envUuidMap[window.UserLeap.envId];\n        localStorageHelper.setItemObject(\"sprig.anon.env.vid.map\", envUuidMap);\n      }\n    }\n\n    // reset the token and visitor id when they are valid and if either one of them is different from old values\n    if (\n      headerToken &&\n      visitorId &&\n      (visitorId !== window.UserLeap.visitorId ||\n        window.UserLeap.token !== headerToken)\n    ) {\n      widgetSetLocalStorageCredentialsValue(\"token\", headerToken);\n      widgetSetLocalStorageCredentialsValue(\"vid\", visitorId);\n\n      eventEmitter.emit(SprigEvent.VisitorIDUpdated, { visitorId });\n\n      window.UserLeap.token = headerToken;\n      window.UserLeap.visitorId = visitorId;\n    }\n  }\n  if (results.json?.logMessage)\n    console.warn(`[Sprig] ${results.json.logMessage}`);\n  return results;\n}\n\nexport function widgetSetLocalStorageCredentialsValue(\n  field: string,\n  value: string | null,\n) {\n  const savedIds = localStorageHelper.getItemObject(\"userleap.ids\");\n  let ids = savedIds[window.UserLeap.envId];\n  if (ids) {\n    ids[field] = value;\n  } else {\n    ids = { [field]: value };\n  }\n  savedIds[window.UserLeap.envId] = ids;\n  localStorageHelper.setItemObject(\"userleap.ids\", savedIds);\n}\n\nexport function widgetGetVID() {\n  return window.previewMode ? \"0\" : window.UserLeap.visitorId ?? \"\";\n}\nexport function apiUrl(\n  version: string,\n  fillPaths: string[] | null,\n  trailing?: string,\n) {\n  const components = [window.UserLeap._API_URL, \"sdk\", version];\n  if (fillPaths) {\n    fillPaths.forEach((p) => {\n      components.push(p);\n      if (p === PATH_ENV) components.push(window.UserLeap.envId);\n      else if (p === PATH_VISITOR) components.push(widgetGetVID());\n    });\n  }\n  if (trailing) components.push(trailing);\n  return components.join(\"/\");\n}\n\nconst shouldCreateDirectEmbedContainer = () => {\n  const headers = getHttpHeaders(window.UserLeap);\n  const isMobileWebview = calculateIsMobileWebview(headers);\n  const forceDirectEmbed = window.UserLeap.forceDirectEmbed;\n  const platformIsWeb = headers[\"userleap-platform\"] === \"web\";\n  return isMobileWebview || (forceDirectEmbed && platformIsWeb);\n};\n\nexport const displayQuestions = async (\n  responseJson: QuestionsResponse,\n  trackPageViewUrl?: string,\n  initializedHeatmapPrivacySettings?: object,\n): Promise<{\n  message?: string;\n  responseGroupUid?: string;\n  success: boolean;\n  surveyId?: number;\n  surveyState: SurveyState;\n  delay?: number;\n}> => {\n  const {\n    context,\n    delay,\n    forceBrandedLogo,\n    endCard,\n    isFeedback = false,\n    heatmap,\n    locale,\n    previewMode,\n    productConfig,\n    questions,\n    responseGroupUid,\n    surveyId,\n    uuid,\n    vid,\n    sessionReplay,\n    studyType,\n  } = responseJson;\n  const headers = getHttpHeaders(window.UserLeap);\n  const isMobileWebview = calculateIsMobileWebview(headers);\n  const useMobileStyling = calculateUseMobileStyling(headers);\n\n  if (sessionReplay) {\n    if (isMobileWebview) {\n      eventEmitter.emit(SprigEvent.ReplayCapture, {\n        responseGroupUid,\n        hasQuestions: !!questions?.length,\n        surveyId,\n        uploadId: sessionReplay.uploadId,\n        replayType: sessionReplay.replayDurationType ?? \"before\",\n        seconds: sessionReplay.replayDurationSeconds,\n        generateVideoUploadUrlPayload: {\n          mediaRecordingUid: uuidv4(),\n          mediaType: \"screen\",\n          questionId: 1,\n          responseGroupUid,\n          surveyId,\n          updatedAt: new Date().toISOString(),\n          visitorId: window.UserLeap.visitorId,\n          isReplay: true,\n        },\n      });\n    } else {\n      if (!modules.replay) {\n        window.UserLeap.reportError(\n          \"displayQuestions\",\n          new Error(`Replay module not registered`),\n        );\n        return {\n          success: false,\n          message: \"Replay module not registered\",\n          surveyState: \"no survey\",\n        };\n      }\n      modules.replay.scheduleOrCaptureReplay({\n        responseGroupId: responseGroupUid,\n        surveyId,\n        visitorId: vid,\n        replayParams: sessionReplay,\n        completeUploadHeaders: headers,\n        apiUrl: window.UserLeap._API_URL,\n        triggerTimestamp: Date.now(),\n        isStandalone: questions.length === 0,\n      });\n    }\n  }\n  // initialize here, turn off when done uploading\n  if (heatmap) {\n    if (!modules.replay) {\n      window.UserLeap.reportError(\n        \"displayQuestions\",\n        new Error(`Replay module not registered`),\n      );\n      return {\n        success: false,\n        message: \"Replay module not registered\",\n        surveyState: \"no survey\",\n      };\n    }\n    const {\n      eventId,\n      replayParams,\n      responseGroupUid,\n      surveyId: heatmapSurveyId,\n    } = heatmap;\n    await modules.replay.initializeReplay({\n      maxReplayDurationSeconds: 300,\n      maxInflightRequests: window.UserLeap.maxInflightReplayRequests,\n      teardownAfter: true,\n      apiUrl: window.UserLeap._API_URL,\n      replaySettings: initializedHeatmapPrivacySettings,\n    });\n    modules.replay.tryReplayAction(\n      () =>\n        modules.replay?.scheduleCapture({\n          apiUrl: window.UserLeap._API_URL,\n          completeUploadHeaders: headers,\n          eventId,\n          isHeatmap: true,\n          replayParams,\n          responseGroupId: responseGroupUid,\n          surveyId: heatmapSurveyId,\n          triggerTimestamp: Date.now(),\n          visitorId: vid,\n        }),\n      \"Error in scheduling/capturing replay\",\n    );\n  }\n\n  // Unrender if survey, vid or questions are undefined or empty\n  if (vid == null || !questions?.length) {\n    logger.info(\"CannotDisplaySurvey\", { vid });\n    return {\n      success: false,\n      message: \"[Sprig] no survey found\",\n      surveyState: \"no survey\",\n    };\n  }\n\n  if (__NPM_BUNDLED___) {\n    if (hasVideoVoiceQuestion(questions)) {\n      return {\n        success: false,\n        message: \"[Sprig] bundled version does not support video voice\",\n        surveyState: \"no survey\",\n      };\n    }\n  }\n\n  // Are we showing a Survey already?\n  if (window.UserLeap.container) {\n    logger.info(\"AlreadyDisplayingSurvey\");\n    const message = `[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey`;\n    console.warn(message);\n    return { success: false, message, surveyState: \"no survey\" };\n  }\n\n  if (\n    vid !== window.UserLeap.visitorId &&\n    uuid !== window.UserLeap.visitorId &&\n    !window.previewMode\n  ) {\n    const message = \"Attempted to display survey to a different visitor\";\n    window.UserLeap.reportError(\"DisplaySurvey\", new Error(message));\n    return { success: false, message, surveyState: \"no survey\" };\n  }\n\n  logger.info(\"ShowingSurvey\", { surveyId });\n  modules.replay?.RecordSurveyShown({\n    id: surveyId,\n    userAgent: window.navigator.userAgent,\n  });\n\n  ConflictingWidgets.disable();\n  eventEmitter.emit(SprigEvent.SurveyWillPresent, {\n    name: SprigEvent.SurveyWillPresent,\n    \"survey.id\": surveyId,\n  });\n  let frameId,\n    containerFrame = document.createElement(\"div\"),\n    contentWinDocHead,\n    contentWindow,\n    hasOverlay;\n\n  const verifyViewVersion = (data: EventPayload[\"verify.view.version\"]) => {\n    const { \"view.version\": viewSdkVersion } = data;\n    if (viewSdkVersion !== headers[\"x-ul-sdk-version\"]) {\n      removeContainer();\n    }\n    eventEmitter.removeListener(\"verify.view.version\", verifyViewVersion);\n  };\n  eventEmitter.on(\"verify.view.version\", verifyViewVersion);\n  window.UserLeap.useMobileStyling = useMobileStyling;\n\n  if (shouldDirectEmbed(headers)) {\n    frameId = \"ul-direct-embeded-frame\";\n    contentWinDocHead = document.head;\n    contentWindow = window;\n    hasOverlay = false;\n\n    if (shouldCreateDirectEmbedContainer()) {\n      createContainer(surveyId, isFeedback); // sets window.UserLeap.container\n      containerFrame.id = frameId;\n\n      (window.UserLeap.container as unknown as HTMLDivElement).appendChild(\n        containerFrame,\n      );\n\n      removeContainerOnClose();\n      eventEmitter.emit(SprigEvent.SurveyLifeCycle, { state: \"presented\" });\n      eventEmitter.emit(SprigEvent.SurveyPresented, {\n        name: SprigEvent.SurveyPresented,\n        \"survey.id\": surveyId,\n      });\n    }\n  } else {\n    ({\n      frameId,\n      contentWinDocHead,\n      contentWindow,\n      hasOverlay,\n      iframe: containerFrame,\n    } = createFrame({ productConfig, useMobileStyling, surveyId, isFeedback }));\n  }\n\n  window.UserLeap.frameId = frameId;\n  const configureExitOnOverlayClick = (exit: () => void) => {\n    eventEmitter.once(SprigEvent.CloseSurveyOnOverlayClick, exit);\n  };\n\n  // Attach questions response to frame bootstrap config\n  const config: Config = {\n    ...{\n      apiURL: window.UserLeap._API_URL,\n      cards: questions,\n      configureExitOnOverlayClick,\n      context,\n      endCard,\n      envId: window.UserLeap.envId,\n      eventEmitFn: eventEmitter.emit.bind(eventEmitter),\n      fontFamily: window.UserLeap.fontFamily,\n      fontFamilyURL: window.UserLeap.fontFamilyURL,\n      forceBrandedLogo,\n      frame: containerFrame,\n      headers,\n      locale,\n      mobileSDKVersion: window.UserLeap.mobileSDKVersion,\n      previewKey: localStorageHelper.getItem(\"sprig.previewKey\"),\n      previewMode: previewMode,\n      productConfig: {\n        framePosition: productConfig?.framePosition,\n        desktopDisplay: productConfig?.desktopDisplay,\n        placement: productConfig?.placement,\n      },\n      responseGroupUid,\n      startingQuestionIdx: window.UserLeap.config?.startingQuestionIdx,\n      studyType,\n      styleNonce: window.UserLeap.styleNonce,\n      surveyId,\n      tabTitle: document.title,\n      trackPageViewUrl,\n      ulEvents: EVENTS,\n      upchunkLibraryURL: window.UserLeap.upchunkLibraryURL,\n      useMobileStyling,\n      userId: uuid,\n      viewDocument: contentWindow?.document,\n      viewWindow: contentWindow,\n      visitorAttributes: {\n        externalUserId: window.UserLeap.userId,\n        email: window.UserLeap.email,\n      },\n    },\n    ...window.UserLeap._config,\n  };\n\n  // Resetting it to null after initial config so study restarts back to question 0\n  if (window.UserLeap._config?.startingQuestionIdx)\n    window.UserLeap._config = {\n      ...window.UserLeap._config,\n      startingQuestionIdx: null,\n    };\n\n  // Only custom CSS previews should use global window.UserLeap.customStyles and window.UserLeap.feedbackCustomStyles\n  // If those exist, prioritize them over productConfig.customStyles so styles stay consistent in preview\n  // Else use productConfig.customStyles\n  const viewStyles =\n    (isFeedback\n      ? window.UserLeap.feedbackCustomStyles\n      : window.UserLeap.customStyles) ?? productConfig.customStyles;\n\n  config.customStyles = viewStyles;\n  if (contentWindow) contentWindow.__cfg = config;\n\n  function makeSafeScriptTag() {\n    const scriptTag = document.createElement(\"script\");\n    if (window.UserLeap.nonce) {\n      scriptTag.setAttribute(\"nonce\", window.UserLeap.nonce);\n    }\n    scriptTag.id = VIEW_TAG;\n    return scriptTag;\n  }\n  const frameSrc = window.UserLeap.viewSDKURL\n    ? window.UserLeap.viewSDKURL\n    : config.path;\n\n  const existingScript = document.getElementById(VIEW_TAG);\n  existingScript && existingScript.remove();\n  // Inject frame application script\n  const frameScript = makeSafeScriptTag();\n\n  const updateContainerDisplay = () => {\n    if (window.UserLeap.container)\n      Object.assign(window.UserLeap.container.style, { display: \"flex\" });\n  };\n\n  if (\n    config.installationMethod === \"web-npm\" ||\n    config.installationMethod === \"web-npm-bundled\" ||\n    import.meta.env.DEV\n  ) {\n    const { default: view } = await import(\"../view/view\");\n    view.configure(config);\n    if (hasOverlay && window.UserLeap.container) updateContainerDisplay();\n  } else if (frameSrc) {\n    frameScript.src = frameSrc;\n    if (hasOverlay) {\n      frameScript.addEventListener(\"load\", () => {\n        if (window.UserLeap.container) updateContainerDisplay();\n      });\n    }\n    contentWindow?.addEventListener(\n      \"error\",\n      (e) => {\n        if (\n          e.target instanceof HTMLScriptElement &&\n          e.target.src === frameSrc\n        ) {\n          window.UserLeap.reportError(\n            \"loadFrameScript\",\n            new Error(`Frame script failed to load`),\n          );\n        }\n      },\n      {\n        capture: true,\n        once: true,\n      },\n    );\n  }\n  contentWinDocHead?.appendChild(frameScript);\n  type surveyStateResponse = {\n    success: boolean;\n    surveyState: SurveyState;\n    surveyId: number;\n    responseGroupUid: string;\n    delay?: number;\n  };\n  const surveyStatusPayload: surveyStateResponse = {\n    success: true,\n    surveyState: \"ready\",\n    surveyId,\n    responseGroupUid,\n  };\n  if (window.UserLeap.isMobileSDK && delay) {\n    surveyStatusPayload.delay = delay;\n  }\n  return surveyStatusPayload;\n};\n\nexport function calculateUseMobileStyling(headers: Config[\"headers\"]) {\n  if (window.UserLeap.useMobileStyling !== undefined)\n    return window.UserLeap.useMobileStyling;\n\n  // handle default-0 width iframes, if UserLeap.windowDimensions.width is not specified, with desktop styling\n  const windowWidth =\n    window.UserLeap.windowDimensions?.width ?? document.body.clientWidth;\n  return (\n    calculateIsMobileWebview(headers) ||\n    (windowWidth > 10 && windowWidth < MOBILE_MAX_WIDTH)\n  );\n}\n\nexport function calculateIsMobileWebview(headers: Config[\"headers\"]) {\n  return MOBILE_PLATFORM_HEADERS.includes(headers[\"userleap-platform\"]);\n}\n\nconst hasVideoVoiceQuestion = (questions: Card[]) => {\n  return questions.some((q) => q.type === \"videovoice\");\n};\n","// used to control the top-level app frame, eg destroying it after the study is completed or closed\nexport const APP_ID = \"ul-app\";\n\nexport type CssConstant =\n  | \"fade-in-transition\"\n  | \"sprig-button-disabled\"\n  | \"sprig-feedback-container\"\n  | \"sprig-feedback-error-container\"\n  | \"sprig-feedback-loading-animation\"\n  | \"sprig-feedback-loading-container\"\n  | \"ul-app\"\n  | \"ul-button-checkmark\"\n  | \"ul-button-inactive\"\n  | \"ul-button-left-align\"\n  | \"ul-caption\"\n  | \"ul-card\"\n  | \"ul-card__container\"\n  | \"ul-card-main-content\"\n  | \"ul-card-skip__button\"\n  | \"ul-footer\"\n  | \"ul-loading-spinner-container\"\n  | \"ul-loading-spinner\"\n  | \"ul-question\"\n  | \"select-button\"\n  | \"select-button-placeholder\"\n  | \"select-list\"\n  | \"select-option\"\n  | \"select-checkbox\"\n  | \"sprig-border-bottom\"\n  | \"sprig-border-top\"\n  | \"sprig-container\"\n  | \"sprig-header-container\"\n  | \"sprig-question-body\"\n  | \"sprig-question-footer-container\"\n  | \"sprig-stretch\"\n  | \"long-form-button\"\n  | \"long-form-button-text-container\"\n  | \"long-form-question-footer-container\"\n  | \"long-form-question-footer-container-center\"\n  | \"long-form-question-footer-container-actions\"\n  | \"long-form-question-footer-container-logo\"\n  | \"ul-card__button-wrapper\"\n  | \"ul-card-vertical__button-wrapper\";\n\nexport const DEFAULT_BORDER_COLOR = \"#e6e6e6\";\nexport const DEFAULT_TRANSPARENT_COLOR = \"#ffffff\";\nexport const ERROR_BORDER_COLOR = \"#bd282a\";\n\n// for phone styling (thicker borders, etc)\nexport const MOBILE_MAX_WIDTH = 500;\n\n// embeds should display in mobile mode under 1030px\nexport const EMBED_MOBILE_MAX_WIDTH = 1030;\n","import { CSSProperties } from \"preact/compat\";\n\nimport { DEFAULT_WIDTH } from \"./constants\";\nimport { getLoadingContainer } from \"./feedback\";\nimport { widgetSetLocalStorageCredentialsValue } from \"./shared\";\nimport { SprigEvent, StudyType } from \"../constants/sprigEvents\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport { Config, ProductConfig } from \"../types/config\";\n\nexport const FRAME_ID = \"ul-frame\";\n\nif (window.UserLeap && window.Sprig) {\n  if (window.Sprig._gtm) {\n    // if sdk installation snippet references UserLeap, but Google Tag Manager (GTM) references Sprig,\n    // overwrite Sprig by assigning it the value of UserLeap to make sure Sprig receives the full functionality without losing any configuration\n    window.Sprig = window.UserLeap;\n  } else {\n    // if sdk installation snippet references Sprig, but Google Tag Manager (GTM) references UserLeap,\n    // overwrite UserLeap by assigning it the value of Sprig to make sure Sprig receives the full functionality without losing any configuration\n    window.UserLeap = window.Sprig;\n  }\n}\n// for an all-new GTM or snippet-based installation referencing Sprig,\n// assign Sprig to UserLeap so that when functionality is defined on UserLeap, it's accessible on Sprig.\nif (!window.UserLeap) window.UserLeap = window.Sprig;\n// for a legacy GTM or snippet-based installation referencing UserLeap,\n// assign UserLeap to Sprig so that the functionality is accessible on Sprig, too.\nif (!window.Sprig) window.Sprig = window.UserLeap;\n\nconst LIGHT_OVERLAY_BACKGROUND_COLOR = \"rgba(255,255,255, 0.95)\";\nconst DARK_OVERLAY_BACKGROUND_COLOR = \"rgba(0,0,0,0.9)\";\nconst MARGIN = \"0px\";\n\nexport const createContainer = (\n  surveyId: number | undefined,\n  isFeedback: boolean,\n  isFeedbackSlider?: boolean,\n) => {\n  // Create home container\n  window.UserLeap.container = document.createElement(\"div\");\n  window.UserLeap.container.className = `ul-container${\n    isFeedback ? \" ul-container-feedback\" : \"\"\n  }`;\n  if (surveyId) window.UserLeap.container.dataset.studyId = surveyId.toString();\n\n  const loadingContainer = getLoadingContainer();\n\n  if (\n    isFeedbackSlider &&\n    loadingContainer &&\n    !window.UserLeap.useMobileStyling\n  ) {\n    loadingContainer.appendChild(window.UserLeap.container);\n  } else {\n    document.body.appendChild(window.UserLeap.container);\n  }\n};\n\nexport const removeContainer = (initiator?: string, studyType?: StudyType) => {\n  removeIFrameEventListeners();\n\n  const container = window.UserLeap.container;\n\n  if (!container) return;\n  try {\n    container.parentNode?.removeChild(container);\n    window.UserLeap.container = null;\n\n    widgetSetLocalStorageCredentialsValue(\"trackStartUrl\", null);\n    eventEmitter.emit(SprigEvent.SurveyLifeCycle, { state: \"dismissed\" });\n    eventEmitter.emit(SprigEvent.SurveyClosed, {\n      name: SprigEvent.SurveyClosed,\n      initiator,\n      \"survey.id\": parseInt(container.dataset.studyId!),\n      ...(studyType && { studyType }),\n    });\n  } catch (err) {\n    console.warn(\n      `[Sprig] (ERR-412) Error removing UserLeap container by ${initiator} ` +\n        container,\n    );\n    if (err instanceof Error)\n      window.UserLeap.reportError(\"dismissActiveSurvey\", err);\n  }\n};\n\nexport const removeContainerOnClose = () => {\n  eventEmitter.once(SprigEvent.SurveyWillClose, ({ initiator, studyType }) => {\n    eventEmitter.removeAllListeners(SprigEvent.CloseSurveyOnOverlayClick);\n    removeContainer(initiator, studyType);\n  });\n};\n\nconst configureOverlayContainer = (\n  styleConfig: WindowSprig,\n  useMobileStyling: boolean,\n) => {\n  const defaultContainerStyle: CSSProperties = {\n    position: \"fixed\",\n    overflow: \"auto\",\n    top: \"0px\",\n    left: \"0px\",\n    display: \"none\", // overwritten after view is loaded, to prevent blocking website until we can display the survey.\n    height: \"100%\",\n    width: \"100%\",\n    transition: \"background-color 0.3s ease-out\",\n    zIndex: 2147483646,\n  };\n\n  const containerStyle = { ...defaultContainerStyle };\n  const overlayStyleConfig = useMobileStyling\n    ? styleConfig.overlayStyleMobile\n    : styleConfig.overlayStyle;\n\n  containerStyle[\"background-color\"] =\n    overlayStyleConfig === \"light\"\n      ? LIGHT_OVERLAY_BACKGROUND_COLOR\n      : DARK_OVERLAY_BACKGROUND_COLOR;\n\n  if (!useMobileStyling) containerStyle.margin = \"auto\";\n  if (window.UserLeap.container)\n    Object.assign(window.UserLeap.container.style, containerStyle);\n};\n\nconst configureFrame = (\n  iframe: HTMLIFrameElement,\n  productConfig: ProductConfig,\n  useMobileStyling: boolean,\n  isFeedback?: boolean,\n) => {\n  const defaultFrameStyle: CSSProperties = {\n    position: \"fixed\",\n    bottom: \"0px\",\n    right: MARGIN,\n    border: 0,\n    backgroundColor: \"rgba(0,0,0,0)\",\n    zIndex: 2147483646,\n    transition: \"height 0.2s ease-in-out\",\n    maxWidth: \"100%\",\n  };\n\n  const styleConfig = Object.assign({}, productConfig, window.UserLeap);\n  const { desktopDisplay } = productConfig || {};\n  const showFeedbackCenter = desktopDisplay === \"center-modal\";\n  if (showFeedbackCenter) {\n    styleConfig.framePosition = \"center\";\n  }\n\n  let framePositionStyle;\n  let hasOverlay = false;\n\n  if (useMobileStyling) {\n    if (window.UserLeap.windowDimensions?.width) {\n      defaultFrameStyle.width = `${window.UserLeap.windowDimensions.width}px`;\n    } else {\n      defaultFrameStyle.width = \"100%\";\n    }\n\n    if (window.UserLeap.windowDimensions?.height) {\n      defaultFrameStyle.maxHeight = `${\n        window.UserLeap.windowDimensions.height - 20\n      }px`;\n    } else if (window.UserLeap.maxHeight) {\n      defaultFrameStyle.maxHeight = window.UserLeap.maxHeight;\n    } else {\n      defaultFrameStyle.maxHeight = `${document.body.clientHeight - 20}px`;\n    }\n\n    if ([\"light\", \"dark\"].includes(styleConfig.overlayStyleMobile)) {\n      hasOverlay = true;\n    }\n  } else {\n    defaultFrameStyle.width = DEFAULT_WIDTH;\n    defaultFrameStyle.maxHeight = window.UserLeap.maxHeight || \"66vh\";\n\n    const setCenterModalPosition = () => {\n      hasOverlay = true;\n      framePositionStyle = { margin: \"auto\", position: \"static\" };\n    };\n\n    // if feedback button, feedback container handles positioning\n    if (isFeedback) {\n      if (!showFeedbackCenter)\n        framePositionStyle = { position: \"relative\", height: \"300px\" };\n      else setCenterModalPosition();\n    } else {\n      // FramePosition does not apply to Feedback studies\n      switch (styleConfig.framePosition) {\n        case \"bottomLeft\":\n          framePositionStyle = { left: MARGIN };\n          break;\n        case \"topLeft\":\n          framePositionStyle = {\n            left: MARGIN,\n            top: 0,\n          };\n          break;\n        case \"topRight\":\n          framePositionStyle = {\n            top: 0,\n          };\n          break;\n        case \"center\":\n          setCenterModalPosition();\n          break;\n      }\n    }\n  }\n\n  if (hasOverlay) configureOverlayContainer(styleConfig, useMobileStyling);\n  Object.assign(iframe.style, defaultFrameStyle, framePositionStyle);\n  return hasOverlay;\n};\n\n/**\n * Create iframe\n */\nexport const createFrame = ({\n  productConfig,\n  useMobileStyling,\n  surveyId,\n  isFeedback,\n}: {\n  productConfig: ProductConfig;\n  useMobileStyling: boolean;\n  surveyId: number;\n  isFeedback: boolean;\n}) => {\n  const frameId = FRAME_ID;\n  const isFeedbackSlider =\n    isFeedback && productConfig.desktopDisplay === \"slider\";\n  createContainer(surveyId, isFeedback, isFeedbackSlider);\n  setupIFrameEventListeners();\n  // Create iframe for application\n  const iframe: Config[\"frame\"] = document.createElement(\"iframe\");\n  iframe.id = frameId;\n  iframe.setAttribute(\"title\", \"Sprig User Feedback Dialog\");\n\n  const hasOverlay = configureFrame(\n    iframe,\n    productConfig,\n    useMobileStyling,\n    isFeedback,\n  );\n  removeContainerOnClose();\n\n  /**\n   * Set iframe height\n   */\n\n  let firedHeight = false;\n  iframe.setHeight = (height: number) => {\n    if (parseInt(iframe.style.height) != height || !firedHeight) {\n      firedHeight = true;\n      iframe.style.height = `${height}px`;\n      eventEmitter.emit(SprigEvent.SurveyHeight, {\n        name: SprigEvent.SurveyHeight,\n        contentFrameHeight: height,\n        \"survey.id\": surveyId,\n      });\n    }\n  };\n\n  let firedWidth = false;\n  iframe.setWidth = (width: number) => {\n    if (parseInt(iframe.style.width) != width || !firedWidth) {\n      firedWidth = true;\n      iframe.style.width = `${width}px`;\n      eventEmitter.emit(SprigEvent.SurveyWidth, {\n        name: SprigEvent.SurveyWidth,\n        contentFrameWidth: width,\n        \"survey.id\": surveyId,\n      });\n    }\n  };\n\n  window.UserLeap.container?.appendChild(iframe);\n  if (\n    productConfig &&\n    (useMobileStyling\n      ? productConfig.exitOnOverlayClickMobile\n      : productConfig.exitOnOverlayClick)\n  ) {\n    if (window.UserLeap.container) {\n      window.UserLeap.container.onclick = () => {\n        eventEmitter.emit(SprigEvent.CloseSurveyOnOverlayClick);\n      };\n    }\n  }\n  eventEmitter.emit(SprigEvent.SurveyLifeCycle, { state: \"presented\" });\n  eventEmitter.emit(SprigEvent.SurveyPresented, {\n    name: SprigEvent.SurveyPresented,\n    \"survey.id\": surveyId,\n  });\n\n  const contentWinDoc = iframe.contentWindow?.document;\n  if (contentWinDoc) {\n    contentWinDoc.open(\"text/html\", \"replace\"),\n      contentWinDoc.write(\"<!doctype html><head></head><body></body></html>\"),\n      contentWinDoc.close();\n\n    if (!useMobileStyling) {\n      const iframeBody = contentWinDoc.body;\n      iframeBody.style.display = \"flex\";\n      iframeBody.style.alignItems = \"center\";\n    }\n  }\n  const contentWinDocHead = contentWinDoc?.head;\n\n  return {\n    frameId,\n    contentWinDocHead,\n    contentWindow: iframe.contentWindow,\n    hasOverlay,\n    iframe,\n  };\n};\n\n// Add event listeners related to the SDK iframe\nconst eventListeners = {\n  [SprigEvent.SurveyFadingOut]: () => {\n    if (window.UserLeap.container) {\n      Object.assign(window.UserLeap.container.style, {\n        \"background-color\": \"rgba(0,0,0,0)\",\n      });\n    }\n  },\n};\n\nconst setupIFrameEventListeners = () => {\n  Object.entries(eventListeners).forEach(([eventName, listener]) => {\n    eventEmitter.on(eventName as SprigEvent, listener);\n  });\n};\n\nconst removeIFrameEventListeners = () => {\n  Object.entries(eventListeners).forEach(([eventName, listener]) => {\n    eventEmitter.off(eventName as SprigEvent, listener);\n  });\n};\n","export const DEFAULT_WIDTH_PX = 360;\nexport const DEFAULT_WIDTH = `${DEFAULT_WIDTH_PX}px`;\n","import type { PageUrlEvent } from \"../types/event\";\n\nconst MATCHERS_BY_TYPE = Object.freeze({\n  contains: (pattern: string, url: string) => url.includes(pattern),\n  notContains: (pattern: string, url: string) => !url.includes(pattern),\n  exactly: (pattern: string, url: string) => url === pattern,\n  notExactly: (pattern: string, url: string) => url !== pattern,\n  startsWith: (pattern: string, url: string) => url.startsWith(pattern),\n  endsWith: (pattern: string, url: string) => url.endsWith(pattern),\n  regex: (pattern: string, url: string) => {\n    return new RegExp(pattern).test(url);\n  },\n  legacy: (pattern: string, url: string) => {\n    return new RegExp(pattern, \"i\").test(url);\n  },\n});\n\nexport function checkUrlMatch(event: PageUrlEvent, url: string) {\n  const { matchType, pattern } = event;\n  const matcher = matchType\n    ? MATCHERS_BY_TYPE[matchType]\n    : MATCHERS_BY_TYPE.legacy;\n  let doesUrlMatch = false;\n  try {\n    doesUrlMatch = matcher(pattern, url);\n  } catch (err) {\n    const message = `[Sprig] (ERR-445) Failed to check url match with pattern ${pattern}`;\n    if (err instanceof Error) {\n      console.warn(message, err);\n      err.stack = JSON.stringify(event);\n      window.UserLeap.reportError(message, err);\n    }\n  }\n  return doesUrlMatch;\n}\n\nexport const checkUrlStillMatching = (eventId?: number | null) => {\n  const { pageUrlEvents } = window.UserLeap._config;\n  const currEvent = pageUrlEvents?.find((event) => event.id === eventId);\n  if (!currEvent) return false;\n  return checkUrlMatch(currEvent, window.location.href);\n};\n","export const isHTMLElement = (\n  e: Element | null | undefined,\n): e is HTMLElement => {\n  if (!e) return false;\n  return e.nodeType === Node.ELEMENT_NODE;\n};\n","// for shared functions across the sdk\nimport { isHTMLElement } from \"./typeguards\";\nimport { CssConstant } from \"../constants/css\";\n\nconst FRAME_HEIGHT_PADDING_PIXELS = 1;\n\nexport const isTargetElement = (\n  element: EventTarget | null,\n): element is HTMLElement | SVGElement => {\n  return element instanceof HTMLElement || element instanceof SVGElement;\n};\n\nexport const isTargetInputElement = (\n  element: EventTarget | null,\n): element is HTMLInputElement => {\n  return element instanceof HTMLInputElement;\n};\n\nexport const setSurveyStyles = ({\n  document,\n  elementId,\n  styleString,\n  nonce,\n}: {\n  document: Document;\n  elementId: string;\n  styleString: string;\n  nonce?: string;\n}) => {\n  const styleTag = document.getElementById(elementId);\n  if (styleTag) {\n    styleTag.textContent = styleString;\n    return;\n  }\n  const newStyleTag = document.createElement(\"style\");\n  if (nonce) newStyleTag.nonce = nonce;\n  newStyleTag.textContent = styleString;\n  newStyleTag.id = elementId;\n  document.head.appendChild(newStyleTag);\n};\n\nconst getAdditionalHeight = (doc: Document) => {\n  const questionBody = doc.querySelector(\n    `.${\"sprig-question-body\" satisfies CssConstant}`,\n  );\n  const mainCard = doc.querySelector(`.${\"ul-card\" satisfies CssConstant}`);\n  const mainContent = doc.querySelector(\n    `.${\"ul-card-main-content\" satisfies CssConstant}`,\n  );\n  const footer = doc.querySelector(`.${\"ul-footer\" satisfies CssConstant}`);\n  const topContainer = doc.querySelector(\n    `.${\"sprig-container\" satisfies CssConstant}`,\n  );\n  let additional = 0;\n  if (isHTMLElement(mainCard)) {\n    additional += mainCard.scrollHeight - mainCard.clientHeight;\n  }\n  if (isHTMLElement(mainContent)) {\n    additional += mainContent.scrollHeight - mainContent.clientHeight;\n  }\n  if (isHTMLElement(questionBody)) {\n    additional += questionBody.scrollHeight - questionBody.clientHeight;\n  }\n  if (isHTMLElement(footer) && isHTMLElement(topContainer)) {\n    if (topContainer.clientHeight === 0) {\n      additional += footer.clientHeight;\n    }\n  }\n  return additional;\n};\n\nconst MIN_BODY_HEIGHT = 100;\n\nconst getMinHeight = (calculatedHeight: number, document: Document) => {\n  const questionBody = document.querySelector(\n    `.${\"sprig-question-body\" satisfies CssConstant}`,\n  );\n  if (!isHTMLElement(questionBody)) return calculatedHeight;\n  const scrollableHeight = questionBody.scrollHeight;\n  if (scrollableHeight < MIN_BODY_HEIGHT) return calculatedHeight;\n  return calculatedHeight - (scrollableHeight - MIN_BODY_HEIGHT);\n};\n\nconst getHorizontalPaddingAndMargin = (selector: string, doc: Document) => {\n  const e = doc.querySelector(selector);\n  if (!isHTMLElement(e)) return 0;\n  const style = getComputedStyle(e);\n  const paddingWidth =\n    parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n  const marginWidth =\n    parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n  const borderWidth =\n    parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n  return paddingWidth + marginWidth + borderWidth;\n};\n\nexport const calculateFrameDimensions = (\n  document: Document,\n  isDesktopWeb: boolean,\n  isDirectEmbed: boolean,\n) => {\n  const container = document.querySelector(\n    `.${\"ul-card__container\" satisfies CssConstant}`,\n  );\n  const app = document.querySelector(`.${\"ul-app\" satisfies CssConstant}`);\n  let containerHeight = 600;\n  let containerWidth = 360;\n  let scrollableMinHeight = 0;\n  if (isHTMLElement(container) && isHTMLElement(app)) {\n    const matrixGrid = container.querySelector(\".ul-card--matrix_grid\");\n    const setAppWidth = !matrixGrid && isDesktopWeb && isDirectEmbed;\n    try {\n      if (setAppWidth) {\n        //We need to set the width before calculating the height. Normally this is done with the iframe\n        //But for direct embed it must be done with the app container\n        app.style.width = \"360px\";\n      }\n      containerHeight = container.clientHeight;\n      containerHeight += getAdditionalHeight(document);\n      const containerStyles = getComputedStyle(container);\n      scrollableMinHeight = containerHeight;\n      // calculate iframe height\n      const marginHeight =\n        parseFloat(containerStyles.marginTop) +\n        parseFloat(containerStyles.marginBottom);\n      const borderHeight =\n        parseFloat(containerStyles.borderTopWidth) +\n        parseFloat(containerStyles.borderBottomWidth);\n      containerHeight += marginHeight + borderHeight;\n      // calculate iframe width\n      if (matrixGrid) {\n        containerWidth = matrixGrid.scrollWidth;\n        containerWidth += getHorizontalPaddingAndMargin(\n          `.${\"ul-card__container\" satisfies CssConstant}`,\n          document,\n        );\n        containerWidth += getHorizontalPaddingAndMargin(\n          `.${\"sprig-question-body\" satisfies CssConstant}`,\n          document,\n        );\n      }\n    } finally {\n      if (setAppWidth) {\n        app.style.removeProperty(\"width\");\n      }\n    }\n  }\n  const idealHeight = containerHeight + FRAME_HEIGHT_PADDING_PIXELS;\n  return [\n    idealHeight,\n    containerWidth,\n    getMinHeight(scrollableMinHeight, document),\n  ];\n};\n\nexport const resetScrollPosition = (document: Document) => {\n  const container = document.querySelector(\n    `.${\"ul-card__container\" satisfies CssConstant}`,\n  );\n  if (container) container.scrollTop = 0;\n};\n","import css from \"./feedback.css?inline\";\nimport { FRAME_ID } from \"./iframe\";\nimport {\n  apiUrl,\n  authenticatedFetch,\n  calculateUseMobileStyling,\n  displayQuestions,\n  PATH_VISITOR,\n  QuestionsResponse,\n} from \"./shared\";\nimport { checkUrlStillMatching } from \"./urlMatcher\";\nimport { CssConstant } from \"../constants/css\";\nimport { DismissReason, EVENTS, SprigEvent } from \"../constants/sprigEvents\";\nimport { setSurveyStyles } from \"../helpers/document\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport { getHttpHeaders } from \"../helpers/network\";\nimport { FeedbackButton, FeedbackPlacement } from \"../types/config\";\n\nexport const getLoadingContainer = () => {\n  return loadingContainer;\n};\n\nexport const getFeedbackContainer = () =>\n  document.getElementById(\"sprig-feedback-container\" satisfies CssConstant);\n\nconst getLoadingSpinner = () =>\n  document.getElementById(\n    \"sprig-feedback-loading-animation\" satisfies CssConstant,\n  );\n\nconst constructLoadingSpinner = () => {\n  if (getLoadingSpinner()) return;\n\n  const loadingSpinner = document.createElement(\"div\");\n  loadingSpinner.className = \"ul-loading-spinner-container\";\n  loadingSpinner.id = \"sprig-feedback-loading-animation\";\n  loadingSpinner.role = \"progressbar\";\n  loadingSpinner.setAttribute(\"aria-live\", \"polite\");\n  loadingSpinner.setAttribute(\"aria-busy\", \"true\");\n  loadingSpinner.setAttribute(\"aria-label\", \"Processing...\");\n  loadingSpinner.innerHTML = `\n    <div class=\"ul-loading-spinner\">\n      <div class=\"first\"></div>\n      <div class=\"second\"></div>\n      <div class=\"third\"></div>\n      <div class=\"fourth\"></div>\n    </div>\n  `;\n  return loadingSpinner;\n};\n\n// Check if survey iframe already open\nexport const isSurveyOpen = () => {\n  return !!document.getElementById(FRAME_ID);\n};\n\nlet isCenterModal = false;\nlet loadingContainer: HTMLElement | null = null;\nlet feedbackButton: HTMLButtonElement | null = null;\nlet loadingSurvey = false;\nlet currEventId: number | null = null;\nlet feedbackPlacement: FeedbackPlacement | null = null;\n\nconst FEEDBACK_PLACEMENTS: FeedbackPlacement[] = [\n  \"bottom-left\",\n  \"bottom-right\",\n  \"center-left\",\n  \"center-right\",\n];\n\nconst createFeedbackContainer = (placement: FeedbackPlacement) => {\n  if (getFeedbackContainer()) return;\n  if (!FEEDBACK_PLACEMENTS.includes(placement)) return;\n  const [verticalPlacement, horizontalPlacement] = placement.split(\"-\");\n\n  const feedbackContainer = document.createElement(\"div\");\n\n  feedbackContainer.id = \"sprig-feedback-container\";\n  feedbackContainer.classList.add(\n    `${\n      \"sprig-feedback-container\" satisfies CssConstant\n    }-${horizontalPlacement}`,\n    `${\"sprig-feedback-container\" satisfies CssConstant}-${verticalPlacement}`,\n  );\n  document.body.appendChild(feedbackContainer);\n};\n\nexport const isFeedbackSurveyOpen = () => {\n  const loadingContainer = window.UserLeap.container;\n  return (\n    loadingContainer?.parentElement?.id ===\n    (\"sprig-feedback-loading-container\" satisfies CssConstant)\n  );\n};\n\nconst isErrorState = () =>\n  document.getElementById(\n    \"sprig-feedback-error-container\" satisfies CssConstant,\n  );\n\nconst getFeedbackContainerWidth = () => {\n  if (!loadingContainer) return 0;\n  const containerWidth = loadingContainer?.clientWidth;\n\n  const style = window.getComputedStyle(loadingContainer);\n  const borderRight = parseInt(style.borderRightWidth || \"0\");\n  const borderLeft = parseInt(style.borderLeftWidth || \"0\");\n\n  return containerWidth + borderRight + borderLeft;\n};\n\nconst moveFeedbackContainer = (length: number) => {\n  const getWholeContainer = getFeedbackContainer();\n  if (getWholeContainer) {\n    if (feedbackPlacement?.endsWith(\"right\"))\n      getWholeContainer.style.right = `${length}px`;\n    else if (feedbackPlacement?.endsWith(\"left\"))\n      getWholeContainer.style.left = `${length}px`;\n  }\n};\n\n// Move whole container the size of the loading container off screen, return true if closed\nconst closeLoadingContainer = () => {\n  if (loadingContainer && (isFeedbackSurveyOpen() || isErrorState())) {\n    eventEmitter.off(SprigEvent.SurveyAppeared, hideLoadingAnimation);\n    constructLoadingContainer();\n    const width = getFeedbackContainerWidth();\n    moveFeedbackContainer(-width);\n    return true;\n  }\n  return false;\n};\n\n// Removing loading animation div will cause the container to resize temporarily\nconst hideLoadingAnimation = () => {\n  if (!loadingContainer || !feedbackButton) return;\n\n  const loadingAnimationDiv = getLoadingSpinner();\n  if (loadingAnimationDiv) {\n    loadingAnimationDiv.remove();\n  }\n  loadingContainer.style.height = \"auto\";\n  loadingContainer.style.width = \"auto\";\n\n  feedbackButton.disabled = false;\n  loadingSurvey = false;\n};\n\n// Construct loading container with loading animation.\nconst constructLoadingContainer = () => {\n  if (!loadingContainer) return;\n\n  const loadingAnimationDiv = getLoadingSpinner();\n  if (!loadingAnimationDiv) {\n    const getLoadingSpinnerContainer = constructLoadingSpinner();\n    if (getLoadingSpinnerContainer) {\n      // default loading container size\n      loadingContainer.style.height = \"300px\";\n      loadingContainer.style.width = \"360px\";\n\n      loadingContainer.appendChild(getLoadingSpinnerContainer);\n    }\n  }\n};\n\nconst openLoadingContainer = () => {\n  if (!loadingContainer || !feedbackButton) return;\n  moveFeedbackContainer(0);\n\n  feedbackButton.disabled = true;\n  loadingSurvey = true;\n};\n\nconst fetchFeedbackStudyInfo = async (surveyUuid: string) => {\n  const result = await authenticatedFetch(\n    apiUrl(\"1\", [PATH_VISITOR], \"startFeedbackStudy\"),\n    { body: JSON.stringify({ surveyUuid }), method: \"POST\" },\n  );\n  if (!result.ok) return null;\n  return result.json;\n};\n\nexport const createFeedbackButton = async (\n  feedbackButtonOptions: FeedbackButton,\n  previewQuestionsJson?: QuestionsResponse, // only passed in previews to show questions without going through /startFeedbackStudy\n  trackPageViewUrl?: string,\n) => {\n  const {\n    buttonTheme,\n    customStyles,\n    eventId,\n    placement,\n    desktopDisplay,\n    feedbackLabel,\n    surveyUuid,\n    surveyId,\n  } = feedbackButtonOptions;\n\n  window.UserLeap.feedbackCustomStyles = undefined;\n\n  let feedbackContainer = getFeedbackContainer();\n  if (feedbackContainer) {\n    if (!previewQuestionsJson && eventId === currEventId) {\n      return;\n    }\n    feedbackContainer.remove();\n    eventEmitter.off(EVENTS.SURVEY_FADING_OUT, closeLoadingContainer);\n  }\n  currEventId = eventId;\n\n  // Inject stylesheet\n  setSurveyStyles({\n    document: document,\n    elementId: \"sprig-feedback-style\",\n    styleString: css,\n    nonce: window.UserLeap.styleNonce,\n  });\n\n  const buttonStyles = customStyles ?? \"\";\n  setSurveyStyles({\n    document: document,\n    elementId: \"ul-custom-style\",\n    styleString: buttonStyles,\n    nonce: window.UserLeap.styleNonce,\n  });\n\n  isCenterModal = desktopDisplay === \"center-modal\";\n  feedbackPlacement = placement;\n  const [verticalPlacement, horizontalPlacement] = placement.split(\"-\");\n  createFeedbackContainer(placement);\n  feedbackContainer = getFeedbackContainer();\n\n  feedbackButton = document.createElement(\"button\");\n  const feedbackButtonLabel = document.createElement(\"div\");\n  feedbackButtonLabel.className = \"sprig-feedback-button-label\";\n  feedbackButtonLabel.innerText = feedbackLabel;\n  feedbackButton.appendChild(feedbackButtonLabel);\n\n  feedbackButton.id = \"sprig-feedback-button\";\n  feedbackButton.classList.add(\n    `sprig-feedback-button-${horizontalPlacement}`,\n    `sprig-feedback-button-${verticalPlacement}`,\n    `sprig-feedback-button-${buttonTheme}`,\n    `${\"fade-in-transition\" satisfies CssConstant}`,\n  );\n  eventEmitter.on(EVENTS.SURVEY_FADING_OUT, closeLoadingContainer);\n\n  feedbackButton.addEventListener(\"click\", async () => {\n    const errorState = document.getElementById(\n      \"sprig-feedback-error-container\" satisfies CssConstant,\n    );\n    // handle if survey is open or error state\n    if (isSurveyOpen() || isErrorState()) {\n      // if feedback survey open, complete and close\n      if (closeLoadingContainer()) {\n        eventEmitter.emit(SprigEvent.SurveyCloseRequested, {\n          name: SprigEvent.SurveyCloseRequested,\n          initiator: DismissReason.FeedbackClosed,\n          studyType: \"feedbackButton\",\n          \"survey.id\": surveyId!,\n        });\n        eventEmitter.emit(SprigEvent.SurveyWillClose, {\n          name: SprigEvent.SurveyWillClose,\n          initiator: DismissReason.FeedbackClosed,\n          studyType: \"feedbackButton\",\n          \"survey.id\": surveyId!,\n        });\n\n        const feedbackContainer = getFeedbackContainer();\n        // if there's the error container, we want to remove the feedback button\n        if (errorState && feedbackContainer) {\n          feedbackContainer.remove();\n          currEventId = null;\n          loadingContainer = null;\n        }\n      }\n      return;\n    }\n\n    const headers = getHttpHeaders(window.UserLeap);\n    const useMobileStyling = calculateUseMobileStyling(headers);\n    // show loading animation\n    if (!useMobileStyling && !loadingSurvey) {\n      openLoadingContainer();\n    }\n\n    // Handle previews\n    if (previewQuestionsJson) {\n      if (loadingContainer)\n        loadingContainer.classList.add(\n          \"sprig-feedback-loading-container-previews\",\n        );\n      await displayQuestions(previewQuestionsJson);\n      hideLoadingAnimation();\n      return;\n    }\n\n    // Handle non-previews\n    const feedbackStudyInfo = await fetchFeedbackStudyInfo(surveyUuid);\n    if (feedbackStudyInfo) {\n      eventEmitter.once(SprigEvent.SurveyAppeared, hideLoadingAnimation);\n      displayQuestions(\n        {\n          ...feedbackStudyInfo,\n          studyType: \"feedbackButton\",\n        },\n        trackPageViewUrl,\n      );\n    } else if (loadingContainer) {\n      // there was an error when fetching study\n      const createErrorState = feedbackErrorState();\n      loadingContainer.appendChild(createErrorState);\n      hideLoadingAnimation();\n      loadingContainer.style.height = \"300px\";\n      loadingContainer.style.width = \"360px\";\n    }\n  });\n\n  feedbackContainer?.appendChild(feedbackButton);\n  eventEmitter.emit(SprigEvent.FeedbackButtonLoaded, {\n    name: SprigEvent.FeedbackButtonLoaded,\n    \"survey.id\": surveyId,\n  });\n\n  const {\n    useMobileStyling,\n    _config: { border },\n  } = window.UserLeap;\n\n  // if desktop display slider, create container to: show loading animation -> show questions\n  if (!isCenterModal && !useMobileStyling) {\n    const feedbackLoading = document.createElement(\"div\");\n    feedbackLoading.id =\n      \"sprig-feedback-loading-container\" satisfies CssConstant;\n    feedbackLoading.className = `sprig-feedback-loading-container sprig-feedback-loading-container-${horizontalPlacement}`;\n    feedbackLoading.style.setProperty(\"--feedback-border\", border);\n    loadingContainer = feedbackLoading;\n\n    // on initial load, we construct loading container bc transition require a default width\n    constructLoadingContainer();\n    feedbackContainer?.appendChild(feedbackLoading);\n    const width = getFeedbackContainerWidth();\n    moveFeedbackContainer(-width);\n  } else moveFeedbackContainer(0);\n\n  // Applicable to survey live Previews only\n  // Show questions immediately if on questions tab in edit mode\n  if (\n    window.UserLeap._config.isOnQuestionsTab &&\n    previewQuestionsJson &&\n    !isFeedbackSurveyOpen() &&\n    loadingContainer\n  ) {\n    openLoadingContainer();\n    constructLoadingContainer();\n    if (loadingContainer)\n      loadingContainer.classList.add(\n        \"sprig-feedback-loading-container-previews\",\n      );\n    displayQuestions(previewQuestionsJson);\n    hideLoadingAnimation();\n  }\n};\n\nexport const handleFeedbackURLMatching = () => {\n  if (isFeedbackSurveyOpen()) return; // keep active survey open\n  const feedbackContainer = getFeedbackContainer();\n  if (!feedbackContainer) return;\n\n  const isStillMatching = checkUrlStillMatching(currEventId);\n  if (!isStillMatching) {\n    feedbackContainer.remove();\n    currEventId = null;\n    loadingContainer = null;\n  }\n};\n\nconst feedbackErrorState = () => {\n  const container = document.createElement(\"div\");\n  container.id = \"sprig-feedback-error-container\" satisfies CssConstant;\n\n  // Create SVG element\n  container.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n  <circle cx=\"20\" cy=\"20\" r=\"14.5\" stroke=\"#B0B5B7\" stroke-width=\"3\"/>\n  <path d=\"M20 12L20 21.6\" stroke=\"#B0B5B7\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n  <circle cx=\"19.9984\" cy=\"27.6\" r=\"1.6\" fill=\"#B0B5B7\"/>\n  </svg>`;\n\n  // Create paragraph element\n  const paragraph = document.createElement(\"h3\");\n  paragraph.className = \"sprig-feedback-error-text\";\n  paragraph.innerText = \"There was an error while loading the survey\";\n  container.appendChild(paragraph);\n\n  return container;\n};\n","export const LAUNCH_DARKLY_PREFIX = \"!launch_darkly_\";\n\nexport class LaunchDarklyIntegration {\n  _ldData: Record<string, number> = {};\n\n  /**\n   *\n   * @returns all experiments to variation\n   */\n  getAllLaunchDarklyVariations() {\n    return this._ldData;\n  }\n\n  /**\n   * Set all LaunchDarkly flags and variations. This will override any existing flags.\n   * Note: LaunchDarkly variation numbering system starts at 0, but their UI presents variation starting as 1.\n   * So we add 1 to the incoming variation index to be consistent with their UI.\n   * @param data object containing flag name as keys and variation index as the value\n   * @example [{ flagName: 'flag-name-slug', variationIndex: 1 }]\n   * @returns boolean if set action was successful\n   */\n  setLDFlagsVariations(data: Record<string, number | undefined>) {\n    try {\n      if (!data || typeof data !== \"object\" || Array.isArray(data))\n        return false;\n\n      // Delete existing flags\n      Object.keys(this._ldData).forEach((key) => {\n        delete this._ldData[key];\n      });\n\n      // Add new flags\n      Object.keys(data).forEach(\n        (key) =>\n          (this._ldData[`${LAUNCH_DARKLY_PREFIX}${key}`] = (data[key] ?? 0) + 1)\n      );\n\n      return true;\n    } catch (err) {\n      if (err instanceof Error)\n        window.UserLeap.reportError(\"setAllLDFlagsVariations\", err);\n      console.warn(\n        \"[Sprig] An issue had occured when setting LaunchDarkly flags and variations.\"\n      );\n      return false;\n    }\n  }\n}\n\nconst ldIntegration = new LaunchDarklyIntegration();\nObject.freeze(ldIntegration);\n\nexport default ldIntegration;\n","export const OPTIMIZELY_EVENT_PREFIX = \"!optimizely_experiments_\";\n\n/**\n *\n * @param state the object returned from optimizely getExperimentStates\n * @returns simplified object with experiment id to variation name pairing\n *\n */\nexport const extractExperimentState = (\n  state: Record<string, { variation: { name: string } }>\n) => {\n  return Object.keys(state).reduce<Record<string, string>>((agg, curr) => {\n    if (state[curr].variation?.name) agg[curr] = state[curr].variation.name;\n    return agg;\n  }, {});\n};\n\nexport interface Experiment {\n  id: string;\n  variation?: string;\n}\n\nexport class OptimizelyIntegration {\n  _optimizelyData: Record<string, string> = {};\n\n  /**\n   * @param data object containing experimentIds as keys and variation name as the value\n   * @example { experiments: [ { id: 1, variation: 'Variation 1' } ] }\n   * @returns boolean if set action was successful\n   */\n  setOptimizelyExperiment(\n    data: { experiments: Experiment[] },\n    isOverride = true\n  ) {\n    if (!data || typeof data !== \"object\") return false;\n\n    const { experiments } = data;\n    try {\n      // Delete existing experiments if override is true\n      isOverride &&\n        Object.keys(this._optimizelyData).map((key) => {\n          delete this._optimizelyData[key];\n        });\n\n      // Override with new experiments\n      if (experiments) {\n        experiments.map((exp) => {\n          const { id, variation } = exp;\n          const newKey = this.transformExperimentId(id);\n          if (variation && typeof variation === \"string\")\n            this._optimizelyData[newKey] = variation;\n        });\n      }\n\n      return true;\n    } catch (err) {\n      if (err instanceof Error)\n        window.UserLeap.reportError(\"setOptimizelyExperiment\", err);\n      return false;\n    }\n  }\n\n  /**\n   *\n   * @returns all active experiments to variation\n   */\n  getAllOptimizelyExperiments() {\n    return this._optimizelyData;\n  }\n\n  /**\n   * @returns the variation name associated to the experimentId the current user is bucketed in.\n   */\n  getOptimizelyVariationName(experimentId: string) {\n    return this._optimizelyData[this.transformExperimentId(experimentId)];\n  }\n\n  transformExperimentId(experimentId: string) {\n    return OPTIMIZELY_EVENT_PREFIX + experimentId;\n  }\n\n  getAndSetWebOptimizelyExperiments() {\n    try {\n      if (\n        window &&\n        window[\"optimizely\"] &&\n        typeof window[\"optimizely\"].get === \"function\"\n      ) {\n        const experiments = window[\"optimizely\"]\n          .get(\"state\")\n          ?.getExperimentStates({\n            isActive: true,\n          });\n\n        // transform experiments if able to retreive state\n        if (experiments) {\n          const transformExperiments = Object.keys(experiments).map((expId) => {\n            if (experiments[expId].variation?.name)\n              return {\n                id: expId,\n                variation: experiments[expId].variation?.name,\n              };\n            else return { id: expId, variation: \"Original\" };\n          });\n\n          this.setOptimizelyExperiment(\n            { experiments: transformExperiments },\n            false\n          );\n          return true;\n        }\n\n        return false;\n      }\n\n      return false;\n    } catch (err) {\n      if (err instanceof Error)\n        window.UserLeap.reportError(\"getAndSetWebOptimizely\", err);\n      return false;\n    }\n  }\n}\n\nconst optimizely = new OptimizelyIntegration();\nObject.freeze(optimizely);\n\nexport default optimizely;\n","// Queue is an intermediatator for calls from developers\n// integrating the userleap. Before the library loads,\n// the snippet stores calls in a simple array.\n// Once the library is initialized, the simple array\n// is replaced by a Queue. All stored actions are processed,\n// and subsequent actions are processed immediately.\n//\n// Pause functionality is used internally to enable UI actions\n// to be delayed while Userleap is 'muted'\nexport type QueueItem = [string, ...unknown[]] | (() => void);\n\nclass SprigQueue {\n  paused: boolean;\n  queue: QueueItem[];\n  ul: WindowSprig;\n\n  constructor(ul: WindowSprig, queue: QueueItem[]) {\n    this.ul = ul;\n    this.paused = false;\n    this.queue = [];\n    this.flush(queue);\n  }\n\n  flush(queue: QueueItem[]) {\n    const length = queue.length;\n    if (length) {\n      for (let i = 0; i < length; i++) {\n        this.push(queue[i]);\n      }\n    }\n  }\n\n  isPaused() {\n    return this.paused;\n  }\n\n  pause() {\n    this.paused = true;\n  }\n\n  unpause() {\n    this.paused = false;\n    const queue = this.queue.slice(); //copies\n    this.empty();\n    this.flush(queue);\n  }\n\n  /* Push methods meant to make queue a drop-in replacement for the Array that's used pre-init. */\n  push(action: QueueItem) {\n    if (!this.paused) {\n      // Queue is not paused. Perform the specified action\n      if (action instanceof Function) {\n        // Action is a closure\n        action();\n      } else {\n        // Action is an array\n        const args = Array.prototype.slice.call(action, 1);\n        const actionName = action[0];\n        const actionFunc = this.ul[actionName as keyof typeof this.ul];\n\n        if (actionFunc instanceof Function) {\n          // eslint-disable-next-line @typescript-eslint/ban-types\n          (actionFunc as Function).apply(this.ul, args);\n        } else {\n          if (actionName) {\n            console.warn(\n              \"[Sprig] (ERR-100) No valid UserLeap action called\",\n              actionName\n            );\n          }\n        }\n      }\n    } else {\n      // Queue is paused. Store the action in the queue\n      this.queue.push(action);\n    }\n  }\n\n  /* Enqueue a closure to be performed by the queue.\n   * This is primarily designed to be used to enable internal behaviors to be paused when the library is muted, and resume correctly when the mute is over.\n   */\n  perform(func: () => void) {\n    if (!this.paused) {\n      return func();\n    } else {\n      let a = () => {};\n      const p = new Promise(function (resolve) {\n        a = function () {\n          resolve(func());\n        };\n      });\n      this.queue.push(a);\n      return p;\n    }\n  }\n\n  /**\n   * Removes all queued items\n   */\n  empty() {\n    this.queue.length = 0;\n  }\n}\n\nexport default SprigQueue;\n","let enabled = true;\nlet disableChecking = false;\nexport const disableReporting = () => (enabled = false);\nexport const disableThresholdChecking = () => (disableChecking = true);\n\nexport type Metric =\n  | \"sdk_event_queue_latency_seconds\"\n  | \"sdk_replay_add_event_batch_seconds\"\n  | \"sdk_replay_cleanup_seconds\"\n  | \"sdk_replay_compression_seconds\"\n  | \"sdk_replay_get_events_between_seconds\"\n  | \"sdk_replay_snapshot_seconds\"\n  | \"sdk_mutations_nodes_added\"\n  | \"sdk_mutations_nodes_removed\"\n  | \"sdk_mutations_attributes_changed\"\n  | \"sdk_mutations_character_data\"\n  | \"sdk_dom_nodes_count\"\n  | \"sdk_page_html_characters\";\n\nconst WebMetricNames: Metric[] = [\n  \"sdk_event_queue_latency_seconds\",\n  \"sdk_replay_add_event_batch_seconds\",\n  \"sdk_replay_cleanup_seconds\",\n  \"sdk_replay_compression_seconds\",\n  \"sdk_replay_get_events_between_seconds\",\n  \"sdk_replay_snapshot_seconds\",\n  \"sdk_mutations_nodes_added\",\n  \"sdk_mutations_nodes_removed\",\n  \"sdk_mutations_attributes_changed\",\n  \"sdk_mutations_character_data\",\n  \"sdk_dom_nodes_count\",\n  \"sdk_page_html_characters\",\n];\n\nexport interface MetricValue {\n  value: number;\n  time: number;\n}\n\nexport type ThresholdType = \"max\" | \"min\";\n\nexport interface MetricThreshold {\n  metric: Metric;\n  type: ThresholdType;\n  value: number;\n}\n\nlet thresholdsByMetric: { [key: string]: MetricThreshold[] } = {};\nlet onThresholdTripped: (value: number, t: MetricThreshold) => void;\n\nexport class MetricsReporter {\n  private _values: MetricValue[] = [];\n  private _isWebMetric: boolean;\n  constructor(public name: Metric) {\n    this._isWebMetric = WebMetricNames.includes(this.name);\n  }\n\n  report(value: number) {\n    if (enabled) {\n      this._values.push({ time: Date.now(), value });\n    }\n    if (disableChecking || !this._isWebMetric) return;\n    const threshold = this.findExceededThreshold(value);\n    if (threshold && onThresholdTripped) {\n      onThresholdTripped(value, threshold);\n    }\n  }\n\n  collect() {\n    const values = this._values;\n    this._values = [];\n    return values;\n  }\n\n  findExceededThreshold(value: number) {\n    const thresholds = thresholdsByMetric[this.name];\n    if (!thresholds) return;\n    return thresholds.find((t) => this.valueExceedsThreshold(value, t));\n  }\n\n  valueExceedsThreshold(value: number, t: MetricThreshold) {\n    if (t.type === \"max\") {\n      return value > t.value;\n    } else if (t.type === \"min\") {\n      return value < t.value;\n    }\n    return false;\n  }\n}\n\nexport const registerThresholds = (\n  thresholds: MetricThreshold[],\n  thresholdTrippedAction: (value: number, t: MetricThreshold) => void,\n) => {\n  thresholdsByMetric = {};\n  disableChecking = false;\n  thresholds?.forEach((t) => {\n    if (!(t.metric in thresholdsByMetric)) {\n      thresholdsByMetric[t.metric] = [];\n    }\n    thresholdsByMetric[t.metric]?.push(t);\n  });\n  onThresholdTripped = thresholdTrippedAction;\n};\n","import { Metric, MetricsReporter, disableReporting } from \"./performanceMetric\";\nimport { breadcrumbsLogger as logger } from \"../BreadcrumbsLogger\";\n\nexport const PerformanceMetrics: { [key: string]: MetricsReporter } = {};\nexport const registerMetric = (name: Metric) => {\n  const metric = new MetricsReporter(name);\n  PerformanceMetrics[name] = metric;\n  return metric;\n};\n\nexport const reportAndRegister = (name: Metric, value: number) => {\n  let metric = PerformanceMetrics[name];\n  if (!metric) {\n    metric = registerMetric(name);\n  }\n  return metric.report(value);\n};\n\nconst collectAndReport = async (\n  postMetrics: (json: string) => Promise<void>,\n) => {\n  const body = Object.values(PerformanceMetrics).map((m) => ({\n    name: m.name,\n    values: m.collect(),\n  }));\n  if (!body.some((m) => m.values.length)) return;\n  try {\n    await postMetrics(JSON.stringify(body));\n  } catch (e) {\n    if (e instanceof Error) {\n      logger.error(\"MetricsErr\", {\n        error: {\n          message: e.message,\n          name: e.name,\n        },\n      });\n    }\n  }\n};\n\nexport const initPerformanceReporting = ({\n  reportingIntervalSeconds,\n  postMetrics,\n}: {\n  reportingIntervalSeconds: number;\n  postMetrics: (json: string) => Promise<void>;\n}) => {\n  if (reportingIntervalSeconds) {\n    setInterval(() => {\n      collectAndReport(postMetrics);\n    }, reportingIntervalSeconds * 1000);\n  } else {\n    disableReporting();\n  }\n};\n","import { registerMetric } from \"./metricsReporter\";\nimport { MetricsReporter } from \"./performanceMetric\";\n\nlet domSizeMetric: MetricsReporter;\nlet htmlCharsMetric: MetricsReporter;\n\nconst calcNumberOfDomNodes = (element: Element | ShadowRoot) => {\n  let count = 0; let child = element.firstElementChild;    \n  while (child) {\n    count += calcNumberOfDomNodes(child);\n    if (child.shadowRoot) {\n      count += calcNumberOfDomNodes(child.shadowRoot);\n    }\n    child = child.nextElementSibling;\n    count++;\n  }\n  return count;\n};\n\nconst getHtmlChars = () => document.documentElement.innerHTML.length;\n\nconst report = () => {\n  domSizeMetric.report(calcNumberOfDomNodes(document.body));\n  htmlCharsMetric.report(getHtmlChars());\n};\n\nexport const init = (interval = 10 * 1000) => {\n  domSizeMetric = registerMetric(\"sdk_dom_nodes_count\");\n  htmlCharsMetric = registerMetric(\"sdk_page_html_characters\");\n  report();\n  setInterval(report, interval);\n}\n","import { registerMetric } from \"./metricsReporter\";\nimport { MetricsReporter } from \"./performanceMetric\";\n\nconst measureEventQueueLatency = (\n  intervalMs: number,\n  reporter: MetricsReporter,\n) => {\n  const start = performance.now();\n  if (document.hidden) {\n    setTimeout(\n      () => measureEventQueueLatency(intervalMs, reporter),\n      intervalMs,\n    );\n  } else {\n    setTimeout(() => {\n      const latency = performance.now() - start;\n      reporter.report(latency / 1000.0);\n      setTimeout(\n        () => measureEventQueueLatency(intervalMs, reporter),\n        intervalMs,\n      );\n    }, 0);\n  }\n};\n\nexport const init = (intervalMs = 1000) => {\n  const metric = registerMetric(\"sdk_event_queue_latency_seconds\");\n  measureEventQueueLatency(intervalMs, metric);\n};\n","import { registerMetric } from \"./metricsReporter\";\nimport { MetricsReporter } from \"./performanceMetric\";\n\nlet nodeAddedMetric: MetricsReporter;\nlet nodeRemovedMetric: MetricsReporter;\nlet attributeChangeMetric: MetricsReporter;\nlet charDataMetric: MetricsReporter;\n\nlet countMap: { [key: string]: number }  = {};\nlet observer: MutationObserver;\n\nconst add = (metric: MetricsReporter, count = 1) => {\n  const { name } = metric;\n  countMap[name] = (countMap[name] || 0) + count;\n};\n\nconst countNodesRecursive = (n: Node) => {\n  let total = 1;\n  n.childNodes.forEach((c) => {\n    total += countNodesRecursive(c);\n  });\n  return total;\n};\n\nconst countNodeListRecursive = (nodes: NodeList) => {\n  let total = 0;\n  nodes.forEach((n) => {\n    total += countNodesRecursive(n);\n  }); \n  return total;\n};\n\nconst handleMutation = (mutation: MutationRecord) => {\n  switch (mutation.type) {\n    case \"childList\":\n      add(nodeAddedMetric,  countNodeListRecursive(mutation.addedNodes));\n      add(nodeRemovedMetric,  countNodeListRecursive(mutation.removedNodes));\n      return;\n    case \"attributes\":\n      add(attributeChangeMetric);\n      return;\n    case \"characterData\":\n      add(charDataMetric);\n      return;\n  };\n};\n\nconst handleMutations = (mutations: MutationRecord[]) => mutations.forEach(handleMutation);\n\nconst initMutationObserver = () => {\n  observer = new MutationObserver(handleMutations);\n  // NOTE: These settings for mutation observer are the same as those used by rrweb, copied from here:\n  // https://github.com/rrweb-io/rrweb/blob/e0590bbdf1a910188e036ae93c77d45be23bae87/packages/rrweb/src/record/observer.ts#L126\n  observer.observe(\n    document,\n    {\n      attributes: true,\n      attributeOldValue: true,\n      characterData: true,\n      characterDataOldValue: true,\n      childList: true,\n      subtree: true,\n    },\n  );\n};\n\nconst report = () => {\n  nodeAddedMetric.report(countMap[nodeAddedMetric.name] || 0);\n  nodeRemovedMetric.report(countMap[nodeRemovedMetric.name] || 0);\n  attributeChangeMetric.report(countMap[attributeChangeMetric.name] || 0);\n  charDataMetric.report(countMap[charDataMetric.name] || 0);\n  countMap = {};\n};\n\nexport const init = (interval = 1 * 1000) => {\n  nodeAddedMetric = registerMetric(\"sdk_mutations_nodes_added\");\n  nodeRemovedMetric = registerMetric(\"sdk_mutations_nodes_removed\");\n  attributeChangeMetric = registerMetric(\"sdk_mutations_attributes_changed\");\n  charDataMetric = registerMetric(\"sdk_mutations_character_data\");\n  initMutationObserver();\n  setInterval(report, interval);\n}\n","import { init as initDomMetrics } from \"./domMetrics\";\nimport { init as initEventQueueLatencyMetric } from \"./eventQueueLatencyMetric\";\nimport { initPerformanceReporting } from \"./metricsReporter\";\nimport { init as initMutationMetrics } from \"./mutationMetrics\";\nimport {\n  MetricThreshold,\n  disableThresholdChecking,\n  registerThresholds,\n} from \"./performanceMetric\";\nimport { modules } from \"../../modules/moduleRegistry\";\n\nexport const initMetrics = ({\n  isWeb,\n  reportingIntervalSeconds,\n  thresholds,\n  postMetrics,\n}: {\n  isWeb: boolean;\n  reportingIntervalSeconds: number;\n  thresholds: MetricThreshold[];\n  postMetrics: (json: string) => Promise<void>;\n}) => {\n  registerThresholds(thresholds, (v, m) => {\n    if (modules.replay?.isReplayRecording()) {\n      const message = `Value: ${v} on ${m.metric} violated threshold of ${m.type} ${m.value}`;\n      modules.replay?.disableRecording(\n        \"Threshold violated\",\n        new Error(message),\n        {\n          reportError: false,\n        },\n      );\n      window.UserLeap.reportError(\n        \"Sdk Performance Metric threshold violated\",\n        new Error(`Sdk Performance Metric threshold violated`),\n        {\n          metricName: m.metric,\n          type: m.type,\n          value: m.value,\n        },\n        {\n          metricName: m.metric,\n        },\n      );\n      disableThresholdChecking();\n    }\n  });\n  initPerformanceReporting({\n    reportingIntervalSeconds,\n    postMetrics,\n  });\n  if (isWeb) {\n    initEventQueueLatencyMetric();\n    initDomMetrics();\n    initMutationMetrics();\n  }\n};\n","import { ActivateListenerPayload } from \"@optimizely/optimizely-sdk\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport {\n  createFeedbackButton,\n  getLoadingContainer,\n  handleFeedbackURLMatching,\n  isFeedbackSurveyOpen,\n  isSurveyOpen,\n} from \"./feedback\";\nimport { FRAME_ID } from \"./iframe\";\nimport LaunchDarklyIntegration from \"./LaunchDarklyIntegration\";\nimport OptimizelyIntegration from \"./OptimizelyIntegration\";\nimport SprigQueue from \"./Queue\";\nimport {\n  apiUrl,\n  authenticatedFetch,\n  calculateIsMobileWebview,\n  calculateUseMobileStyling,\n  displayQuestions,\n  PATH_ENV,\n  PATH_VISITOR,\n  widgetGetVID,\n  widgetSetLocalStorageCredentialsValue,\n} from \"./shared\";\nimport { QueryParam, SurveyState } from \"./types\";\nimport { checkUrlMatch } from \"./urlMatcher\";\nimport { DismissReason, SprigEvent, EVENTS } from \"../constants/sprigEvents\";\nimport { breadcrumbsLogger as logger } from \"../helpers/BreadcrumbsLogger\";\nimport {\n  calculateFrameDimensions,\n  isTargetElement,\n  setSurveyStyles,\n} from \"../helpers/document\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport {\n  delay,\n  localStorageHelper,\n  sessionStorageHelper,\n  shouldDirectEmbed,\n} from \"../helpers/general\";\nimport { initMetrics } from \"../helpers/metrics\";\nimport { reportAndRegister } from \"../helpers/metrics/metricsReporter\";\nimport {\n  sprigFetch,\n  killNetworkRequests,\n  getHttpHeaders,\n  cspViolationHandler,\n} from \"../helpers/network\";\nimport { modules } from \"../modules/moduleRegistry\";\nimport { Config } from \"../types/config\";\nimport { InteractiveEvent } from \"../types/event\";\n\n/**\n * Various modes that the app can be in. For now test is the\n * only one that matters\n */\nconst APP_MODES = {\n  test: \"test\",\n};\nconst dismissOnPageChangeEventTypes = [\"popState\", \"pushState\", \"replaceState\"];\nlet initializedHeatmapPrivacySettings: object | undefined = undefined;\n\nlet trackPageViewUrl: string | undefined;\nconst sessionProvidedAttributes: SprigAttributes = {};\n\n// backend has special handling for it, so we use `!email` as the attribute key\nconst EMAIL_ATTRIBUTE_KEY = \"!email\";\nconst PAGE_URL_EVENT_NAME = \"pageUrl\";\n\nfunction shouldDisplaySurveyAfterDelay(trackStartUrlString: string) {\n  if (!window.UserLeap._config.dismissOnPageChange) return true;\n  // compare path, exclude query params and anchor tags\n  const startUrl = new URL(trackStartUrlString);\n  const currentURL = new URL(trackPageViewUrl ?? window.location.href);\n  return (\n    startUrl.hostname === currentURL.hostname &&\n    startUrl.pathname === currentURL.pathname\n  );\n}\n\nlet prevUrl = window.location.href;\nfunction locationChangeHandler(event?: Event) {\n  const { pageUrlEvents, interactiveEvents, dismissOnPageChange, platform } =\n    window.UserLeap._config;\n  if (platform && platform !== \"web\") return; // we should clean this up during web sdk controller refactor along with the should direct embed\n\n  if (prevUrl !== window.location.href) {\n    logger.navigation(\"LocationChange\", {\n      from: prevUrl,\n      to: window.location.href,\n    });\n  }\n  prevUrl = window.location.href;\n\n  const credentials = loadCredentials();\n  const localStorageUrl = credentials[\"trackStartUrl\"];\n  const trackedUrl = localStorageUrl ? String(localStorageUrl) : null;\n  if (pageUrlEvents) trackPageView(window.location.href);\n  if (interactiveEvents) {\n    // need to remove old listeners bc current page may not be targeted\n    removeInteractiveEventListener();\n    addInteractiveEventListeners();\n  }\n  if (getLoadingContainer()) {\n    handleFeedbackURLMatching();\n  }\n  if (sessionStorageHelper.getItem(\"sprig.isCapturingHeatmap\")) {\n    modules.replay?.checkPendingHeatmapsUrl()?.then((count) => {\n      // We want to upload the heatmap data if there is any that marked pending\n      if (count) {\n        modules.replay?.uploadReadyPendingCaptures(true);\n      }\n    });\n  }\n\n  if (\n    !isFeedbackSurveyOpen() && // feedback survey stay open on page change\n    dismissOnPageChange &&\n    trackedUrl &&\n    trackedUrl !== window.location.href &&\n    event &&\n    dismissOnPageChangeEventTypes.includes(event.type)\n  )\n    window.UserLeap(\"dismissActiveSurvey\", DismissReason.PageChange);\n}\n\nconst INTERACTIVE_LISTENER_OPTIONS = { capture: true };\n\nconst addInteractiveEventListeners = () => {\n  const activeEventsForUrl = window.UserLeap._config.interactiveEvents.filter(\n    (event) => checkUrlMatch(event, window.location.href),\n  );\n\n  const handlersForActiveEvents = activeEventsForUrl.map((i) => {\n    const { name, properties } = i;\n    const { selector, innerText } = properties;\n    return selector\n      ? (e: MouseEvent) => {\n          if (isTargetElement(e.target)) {\n            try {\n              !!e.target.closest(selector) && window.UserLeap(\"track\", name);\n            } catch {\n              // ignore\n            }\n          }\n          return false;\n        }\n      : (e: MouseEvent) => {\n          if (isTargetElement(e.target)) {\n            (e.target as HTMLElement).innerText === innerText &&\n              window.UserLeap(\"track\", name);\n          }\n          return false;\n        };\n  });\n\n  const combinedHandler = (e: MouseEvent) =>\n    handlersForActiveEvents.forEach((f) => f(e));\n\n  window.UserLeap._config.interactiveEventsHandler = combinedHandler;\n  window.addEventListener(\n    \"click\",\n    combinedHandler,\n    INTERACTIVE_LISTENER_OPTIONS,\n  );\n};\n\nconst removeInteractiveEventListener = () => {\n  if (window.UserLeap._config.interactiveEventsHandler) {\n    window.removeEventListener(\n      \"click\",\n      window.UserLeap._config.interactiveEventsHandler,\n      INTERACTIVE_LISTENER_OPTIONS,\n    );\n  }\n  delete window.UserLeap._config.interactiveEventsHandler;\n};\n\nfunction registerEventListeners() {\n  [\"hashchange\", \"popstate\"].forEach((evt) =>\n    window.addEventListener(evt, locationChangeHandler, true),\n  );\n}\n\nfunction unregisterEventListeners() {\n  [\"hashchange\", \"popstate\"].forEach((evt) =>\n    window.removeEventListener(evt, locationChangeHandler, true),\n  );\n  if (window.UserLeap._config.interactiveEvents)\n    removeInteractiveEventListener();\n}\n\n/**\n * Construct the get questions URL\n * @param options\n * @param options.surveyId Active SurveyId for the Environment display, from displaySurvey\n * @param options.surveyTemplateId SurveyTemplateId to display, from previewSurvey / Template Previews\n */\nfunction getQuestionURL(options?: {\n  desktopDisplay?: string;\n  isMobile?: boolean;\n  previewLanguage?: string;\n  surveyid?: number;\n  surveytemplateid?: string;\n  vid: string | null;\n}) {\n  const url = new URL(apiUrl(\"1\", [PATH_ENV], \"questions\"));\n  Object.entries(options || {}).forEach(([key, value]) => {\n    if (value) url.searchParams.append(key, String(value));\n  });\n  return url.toString();\n}\n\nfunction loadCredentials() {\n  const envIdCredMap = localStorageHelper.getItemObject(\"userleap.ids\");\n  return (envIdCredMap && envIdCredMap[window.UserLeap.envId]) || {};\n}\n\nfunction fallbackToAnonVisitor() {\n  if (window.previewMode) return;\n  const envUuidMap =\n    localStorageHelper.getItemObject(\"sprig.anon.env.vid.map\") || {};\n  const anonVisitorId = envUuidMap[window.UserLeap.envId];\n  window.UserLeap.visitorId = anonVisitorId || uuidv4();\n\n  logger.info(\"NewVid\", { vid: window.UserLeap.visitorId });\n  widgetSetLocalStorageCredentialsValue(\"vid\", window.UserLeap.visitorId);\n  if (!anonVisitorId) {\n    envUuidMap[window.UserLeap.envId] = window.UserLeap.visitorId;\n    localStorageHelper.setItemObject(\"sprig.anon.env.vid.map\", envUuidMap);\n  }\n  eventEmitter.emit(SprigEvent.VisitorIDUpdated, {\n    visitorId: window.UserLeap.visitorId,\n  });\n}\n\nfunction trackPageView(\n  location: string,\n  properties?: SprigProperties,\n  showSurveyCallback?: (surveyId?: number) => Promise<boolean>,\n  calledFromApi?: boolean,\n) {\n  try {\n    if (location.endsWith(\"mock_snippet.html\")) {\n      return;\n    }\n    logger.info(\"PageView\", { url: location });\n\n    const documentDescription = document\n      ?.querySelector('meta[name=\"description\"]')\n      ?.getAttribute(\"content\");\n\n    modules.replay?.RecordPageView({\n      ...(documentDescription && { description: documentDescription }),\n      url: location,\n      referrer: document.referrer,\n      pageTitle: document.title,\n    });\n\n    //filter out pages that aren't being tracked\n    const pageUrlEvents = window.UserLeap._config.pageUrlEvents;\n    let shouldTrackPage = false;\n    if (pageUrlEvents && pageUrlEvents.length) {\n      for (let i = 0; i < pageUrlEvents.length; i++) {\n        shouldTrackPage = checkUrlMatch(pageUrlEvents[i], location);\n\n        if (shouldTrackPage) {\n          break;\n        }\n      }\n    }\n\n    if (!shouldTrackPage) return;\n    if (window.UserLeap.debugMode)\n      console.info(\"[DEBUG] Sprig trackPageView\", location);\n\n    const metadata: {\n      url: string;\n      trackPageView?: boolean;\n    } = {\n      url: location,\n    };\n    if (calledFromApi) metadata.trackPageView = true;\n    window.UserLeap._queue.push([\n      \"track\",\n      PAGE_URL_EVENT_NAME,\n      properties,\n      metadata,\n      showSurveyCallback,\n    ]);\n  } catch (err) {\n    if (err instanceof Error) {\n      err.stack = location;\n      window.UserLeap.reportError(\"trackPageView\", err);\n    }\n    console.warn(`[Sprig] (ERR-428) Failed to track page view`, err);\n  }\n}\n\nfunction bindTrackingEvents() {\n  const historyRef =\n    \"Backbone\" in window && window.Backbone && window.Backbone.history\n      ? window.Backbone.history\n      : window.history;\n\n  if (\"pushState\" in historyRef) {\n    historyRef.pushState = ((f) =>\n      function pushState(this: typeof historyRef, ...args) {\n        const ret = f.apply(this, args);\n        const event = new Event(\"pushState\");\n        window.dispatchEvent(event);\n        locationChangeHandler(event);\n        return ret;\n      })(historyRef.pushState);\n  }\n\n  if (\"replaceState\" in historyRef) {\n    historyRef.replaceState = ((f) =>\n      function replaceState(this: typeof historyRef, ...args) {\n        const ret = f.apply(this, args);\n        const event = new Event(\"replaceState\");\n        window.dispatchEvent(event);\n        locationChangeHandler(event);\n        return ret;\n      })(historyRef.replaceState);\n  }\n  registerEventListeners();\n}\n\nasync function getQuestions(\n  options?: {\n    surveyId?: number;\n    surveyTemplateId?: string;\n  },\n  submitAnswers?: boolean,\n): Promise<{ success: boolean; surveyState: SurveyState } | undefined> {\n  const visitorId = widgetGetVID();\n  if (options && !submitAnswers) {\n    window.UserLeap._config.mode = APP_MODES.test;\n  }\n  const headers = getHttpHeaders(window.UserLeap);\n  const useMobileStyling = calculateUseMobileStyling(headers);\n  const response = await authenticatedFetch(\n    getQuestionURL({\n      desktopDisplay: window.UserLeap._config.desktopDisplay,\n      isMobile: useMobileStyling,\n      previewLanguage: window.UserLeap._config.previewLanguage,\n      surveyid: options?.surveyId,\n      surveytemplateid: options?.surveyTemplateId,\n      vid: visitorId,\n    }),\n    {\n      shouldDropOnRateLimit: true,\n    },\n  );\n\n  if (!response.ok) {\n    if (response.reportError && response.error) {\n      console.warn(\n        `[Sprig] (ERR-414) Failed to request questions from the server`,\n        response.error,\n      );\n      window.UserLeap.reportError(\"getQuestions\", response.error);\n    }\n    return { success: false, surveyState: \"no survey\" satisfies SurveyState };\n  }\n  response.json.delay && (await delay(response.json.delay));\n\n  /**\n   * When previewing feedback survey, feedback config sent in getQuestions response\n   * Use config to create feedback button, skip displaying questions for now\n   */\n  if (response.json.isFeedback) {\n    const { feedbackLabel, productConfig, surveyUuid, feedbackCustomStyles } =\n      response.json;\n\n    const { buttonTheme, placement, desktopDisplay } = productConfig;\n    const feedbackButtonOptions = {\n      customStyles: feedbackCustomStyles,\n      buttonTheme,\n      desktopDisplay,\n      eventId: 0,\n      feedbackLabel,\n      placement,\n      surveyUuid,\n      surveyId: options?.surveyId,\n    };\n    createFeedbackButton(feedbackButtonOptions, response.json);\n  } else {\n    return displayQuestions(\n      response.json,\n      trackPageViewUrl,\n      initializedHeatmapPrivacySettings,\n    );\n  }\n}\n\nfunction shuffleInteractiveEvents(events: InteractiveEvent[]) {\n  // All qualifying events will be sent when a user clicks the selected target element,\n  // but we shuffle them here so that we don't bias towards always sending any particular\n  // one first.\n  let currentIndex = events.length;\n  while (currentIndex) {\n    const randomIndex = Math.floor(Math.random() * currentIndex);\n    currentIndex -= 1;\n    const tmp = events[currentIndex];\n    events[currentIndex] = events[randomIndex];\n    events[randomIndex] = tmp;\n  }\n}\n\n/**\n * Gather identifier data, retrieve questions, and render widget\n */\nfunction widgetInitialize(config: Config) {\n  if (!config) return;\n  window.UserLeap._config = config;\n\n  if (config.mute) {\n    // Userleap.mute isn't defined yet\n    window.UserLeap._queue.pause();\n  }\n\n  const { interactiveEvents, pageUrlEvents, dismissOnPageChange } = config;\n  if (interactiveEvents) shuffleInteractiveEvents(interactiveEvents);\n\n  if (interactiveEvents || pageUrlEvents || dismissOnPageChange) {\n    bindTrackingEvents();\n    locationChangeHandler();\n  }\n}\n\n// Delay survey off of both showSurveyCallback and based off survey delay here\nasync function delaySurveyIfNecessary(\n  response: {\n    json?: {\n      delay?: number;\n      surveyId?: number;\n    };\n  },\n  showSurveyCallback?: (surveyId?: number) => Promise<boolean>,\n) {\n  let shouldShowSurvey = true;\n  if (showSurveyCallback && response?.json?.surveyId) {\n    window.UserLeap.delayingSurvey = true;\n    shouldShowSurvey = await showSurveyCallback(response.json.surveyId);\n    window.UserLeap.delayingSurvey = false;\n    if (!shouldShowSurvey) {\n      return false;\n    }\n  }\n\n  if (response?.json?.delay && !window.UserLeap.isMobileSDK) {\n    window.UserLeap.delayingSurvey = true;\n    await delay(response.json.delay);\n    window.UserLeap.delayingSurvey = false;\n  }\n  return shouldShowSurvey;\n}\n\n/**\n * Hydrates the window.userLeap object with test mode\n * specific functions\n */\nconst __enableUserLeapAPIActions = function (config: Config) {\n  if (!window.UserLeap) {\n    return;\n  }\n\n  const identifyAndTrackHelper = async (\n    payload: TrackPayload = {},\n  ): Promise<\n    | {\n        error?: Error;\n        message?: string;\n        success: boolean;\n        surveyState: SurveyState;\n      }\n    | undefined\n  > => {\n    const {\n      userId,\n      anonymousId,\n      metadata = {},\n      properties,\n      showSurveyCallback,\n    } = payload;\n    let { eventName } = payload;\n\n    if (window.UserLeap.debugMode && eventName !== PAGE_URL_EVENT_NAME)\n      console.info(\"[DEBUG] Sprig track\", payload);\n\n    if (config.mode === \"test\") {\n      return;\n    }\n\n    const previewKey =\n      localStorageHelper.getItem(\"sprig.previewKey\") ?? undefined;\n\n    if (config.requireUserIdForTracking && !window.UserLeap.userId && !userId) {\n      const message = \"[Sprig] - Skipping tracking without userId\";\n      console.warn(message);\n      return { success: false, message, surveyState: \"no survey\" };\n    }\n    if (!eventName || eventName.trim().length === 0) {\n      eventName = eventName ? String(eventName) : \"\";\n      const message = `[Sprig] - Invalid event name ` + eventName;\n      console.warn(message);\n      return { success: false, message, surveyState: \"no survey\" };\n    }\n\n    const trackStartUrl = trackPageViewUrl ?? window.location.href;\n    if (!metadata.url) metadata.url = trackStartUrl;\n\n    widgetSetLocalStorageCredentialsValue(\"trackStartUrl\", trackStartUrl);\n\n    if (window.UserLeap?._config?.optimizelyEnabled) {\n      const headers = getHttpHeaders(window.UserLeap);\n      const isMobileWebview = calculateIsMobileWebview(headers);\n      // Call Optimizely in browser to scrape data on Web\n      if (!isMobileWebview)\n        OptimizelyIntegration.getAndSetWebOptimizelyExperiments();\n\n      metadata[\"optimizelyExperiments\"] = Object.assign(\n        {},\n        OptimizelyIntegration.getAllOptimizelyExperiments(),\n      );\n    }\n\n    if (window.UserLeap?._config?.launchDarklyEnabled) {\n      metadata[\"launchDarklyFlags\"] =\n        LaunchDarklyIntegration.getAllLaunchDarklyVariations();\n    }\n\n    // set userId and/or anonymousId locally.\n    // they will be included in request header.\n    if (userId) window.UserLeap.userId = userId;\n    if (anonymousId) window.UserLeap.partnerAnonymousId = anonymousId;\n\n    // set event properties\n    if (properties) metadata.eventProperties = properties;\n    modules.replay?.RecordEvent({\n      name: eventName,\n      url: metadata.url as string,\n    });\n    logger.info(\"TrackEvent\", { eventName });\n\n    // if a survey trigger delay is ongoing, use events/batch API to avoid survey selector (blocking other events to trigger the survey).\n    const result =\n      window.UserLeap.delayingSurvey || isSurveyOpen()\n        ? await authenticatedFetch(\n            apiUrl(\"1\", [PATH_VISITOR], \"events/batch\"),\n            {\n              body: JSON.stringify({\n                events: [\n                  {\n                    event: eventName,\n                    metadata,\n                  },\n                ],\n                previewKey,\n              }),\n              method: \"POST\",\n              shouldDropOnRateLimit: true,\n            },\n          )\n        : await authenticatedFetch(apiUrl(\"1\", [PATH_VISITOR], \"events\"), {\n            body: JSON.stringify({\n              event: eventName,\n              metadata,\n              previewKey,\n            }),\n            method: \"POST\",\n            shouldDropOnRateLimit: true,\n          });\n    if (!result.ok) {\n      const errorMessage = `[Sprig] (ERR-421) Failed to track event`;\n      if (result.reportError) {\n        console.warn(errorMessage, result.error);\n\n        if (result.error) window.UserLeap.reportError(\"track\", result.error);\n      }\n      return {\n        success: false,\n        message: errorMessage,\n        error: result.error,\n        surveyState: \"no survey\",\n      };\n    }\n    if (userId) widgetSetLocalStorageCredentialsValue(\"uid\", userId);\n    if (anonymousId) widgetSetLocalStorageCredentialsValue(\"aid\", anonymousId);\n\n    const responseBody = result.json;\n    if (responseBody.invalidPreviewKey) {\n      localStorageHelper.removeItem(\"sprig.previewKey\");\n    }\n\n    const trackedUrl = metadata.trackPageView ? metadata.url : undefined;\n\n    const feedbackButtonReturned = !!responseBody?.feedbackButton;\n    if (feedbackButtonReturned) {\n      createFeedbackButton(responseBody.feedbackButton, undefined, trackedUrl);\n    }\n    const showSurvey = await delaySurveyIfNecessary(result, showSurveyCallback);\n    if (!showSurvey) {\n      const message = `[Sprig] Callback returned false, aborting rendering of survey`;\n      return { success: false, message, surveyState: \"no survey\" };\n    }\n\n    if (shouldDisplaySurveyAfterDelay(trackStartUrl)) {\n      return displayQuestions(\n        responseBody,\n        trackedUrl,\n        initializedHeatmapPrivacySettings,\n      );\n    } else {\n      return {\n        success: false,\n        message: \"Study should not be displayed after page navigation\",\n        surveyState: \"no survey\",\n      };\n    }\n  };\n\n  const overrideSurveyStyles = (\n    document: HTMLElement | null | undefined,\n    styleString: string,\n  ) => {\n    const iframeDoc = document?.querySelector<HTMLIFrameElement>(\n      `[id=\"${FRAME_ID}\"]`,\n    )?.contentDocument;\n    if (iframeDoc) {\n      setSurveyStyles({\n        document: iframeDoc,\n        elementId: \"ul-custom-style\",\n        styleString: styleString,\n      });\n    }\n  };\n\n  const apiActions: SprigAPIActions = {\n    // Triggers displaying specified survey. Does submit answers!\n    async displaySurvey(surveyId) {\n      console.warn(\n        \"[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage.\",\n      );\n      window.UserLeap(\"dismissActiveSurvey\", DismissReason.Override);\n      return getQuestions({ surveyId }, true);\n    },\n\n    // Triggers displaying specified survey template. Does not submit answers\n    _previewSurvey(surveyTemplateId) {\n      window.UserLeap(\"dismissActiveSurvey\", DismissReason.Override);\n      getQuestions({ surveyTemplateId }, false);\n    },\n\n    // Triggers displaying specified survey. Does not submit answers\n    _reviewSurvey(surveyId) {\n      window.UserLeap(\"dismissActiveSurvey\", DismissReason.Override);\n      getQuestions({ surveyId }, false);\n    },\n\n    previewSurvey(surveyTemplateId) {\n      apiActions._previewSurvey(surveyTemplateId);\n    },\n\n    reviewSurvey(surveyId) {\n      apiActions._reviewSurvey(surveyId);\n    },\n\n    mute() {\n      window.UserLeap._queue.pause();\n    },\n\n    unmute() {\n      window.UserLeap._queue.unpause();\n    },\n\n    setVisitorToken() {\n      console.warn(\"[Sprig] setVisitorToken is deprecated.\");\n    },\n\n    dismissActiveSurvey(initiator = DismissReason.API) {\n      if (!window.UserLeap.container) return;\n      if (initiator === DismissReason.Closed && window.Sprig.trackHistory) {\n        window.Sprig.trackHistory({ event: \"closed\" });\n      }\n\n      eventEmitter.emit(SprigEvent.SurveyCloseRequested, {\n        name: SprigEvent.SurveyCloseRequested,\n        initiator,\n        \"survey.id\": parseInt(window.UserLeap.container.dataset.studyId!),\n      });\n\n      eventEmitter.emit(SprigEvent.SurveyWillClose, {\n        name: SprigEvent.SurveyWillClose,\n        initiator,\n        \"survey.id\": parseInt(window.UserLeap.container.dataset.studyId!),\n      });\n    },\n\n    // Set an arbitrary attribute on the visitor\n    async setAttribute(attribute: string, value: string | number | boolean) {\n      if (!attribute || (!value && value !== 0 && value !== false)) {\n        const message = `[Sprig] - Disregarding empty attribute / value provided`;\n        console.warn(message);\n        return { success: false, message };\n      }\n      return this.setAttributes({ [attribute]: value });\n    },\n\n    async setAttributes(attributes) {\n      if (\n        attributes === null ||\n        attributes === undefined ||\n        Object.keys(attributes).length === 0\n      ) {\n        const message = `[Sprig] - Disregarding empty attributes provided`;\n        console.warn(message);\n        return { success: false, message };\n      }\n      return this.identifyAndSetAttributes({ attributes });\n    },\n\n    // identifies and sets attributes on visitor; see sprig-browser/index.js for documentation\n    async identifyAndSetAttributes(payload) {\n      if (window.UserLeap.debugMode)\n        console.info(\"[DEBUG] Sprig identifyAndSetAttributes\", payload);\n\n      if (config.mode === \"test\") return;\n\n      if (\n        payload === null ||\n        typeof payload !== \"object\" ||\n        !(payload.userId || payload.anonymousId || payload.attributes)\n      ) {\n        const message = `[Sprig] - Disregarding empty payload provided`;\n        console.warn(message);\n        return { success: false, message };\n      }\n\n      const { userId, anonymousId, attributes } = payload;\n\n      if (\n        config.requireUserIdForTracking &&\n        !window.UserLeap.userId &&\n        !userId\n      ) {\n        const message = \"[Sprig] - Skipping tracking without userId\";\n        console.warn(message);\n        return { success: false, message };\n      }\n      if (attributes) {\n        // replace the email key if we don't already have !email in the attributes\n        if (attributes[\"email\"] && !attributes[EMAIL_ATTRIBUTE_KEY]) {\n          attributes[EMAIL_ATTRIBUTE_KEY] = attributes[\"email\"];\n          delete attributes[\"email\"];\n        }\n        // Dedupe already provided attributes in this session\n        const keys = Object.keys(attributes);\n        for (const key of keys) {\n          if (attributes[key] === sessionProvidedAttributes[key]) {\n            delete attributes[key];\n          }\n        }\n      }\n\n      if (\n        // no attributes to set, and the provided userId and/or anonymousId are already set locally; nothing to do.\n        (!attributes || Object.keys(attributes).length === 0) &&\n        (!userId || window.UserLeap.userId === userId) &&\n        (!anonymousId || window.UserLeap.partnerAnonymousId === anonymousId)\n      ) {\n        return { success: true };\n      }\n\n      const putUserBody: { partnerAnonymousId?: string; userId?: string } = {};\n      // set userId and/or anonymousId locally, and in potential request body if there are no attributes.\n      // they will be included in request header and used in authentication.\n      if (userId) putUserBody.userId = window.UserLeap.userId = userId;\n      if (anonymousId)\n        putUserBody.partnerAnonymousId = window.UserLeap.partnerAnonymousId =\n          anonymousId;\n\n      let result;\n      if (attributes && Object.keys(attributes).length > 0) {\n        result = await authenticatedFetch(\n          apiUrl(\"1\", [PATH_ENV, PATH_VISITOR], \"attributes\"),\n          {\n            body: JSON.stringify(attributes),\n            method: \"PUT\",\n          },\n        );\n        if (result.ok) {\n          Object.assign(sessionProvidedAttributes, attributes);\n        } else if (result.reportError) {\n          console.warn(\n            `[Sprig] (ERR-432) identifyAndSetAttributes failed`,\n            result.error,\n          );\n\n          if (result.error)\n            window.UserLeap.reportError(\n              \"identifyAndSetAttributes\",\n              result.error,\n            );\n        }\n      } else {\n        result = await authenticatedFetch(\n          apiUrl(\"1\", [PATH_ENV, PATH_VISITOR]),\n          {\n            body: JSON.stringify(putUserBody),\n            method: \"PUT\",\n          },\n        );\n      }\n\n      if (attributes && attributes[EMAIL_ATTRIBUTE_KEY]) {\n        window.UserLeap.email = attributes[EMAIL_ATTRIBUTE_KEY] as string;\n      }\n\n      if (result.ok) {\n        if (userId) widgetSetLocalStorageCredentialsValue(\"uid\", userId);\n        if (anonymousId)\n          widgetSetLocalStorageCredentialsValue(\"aid\", anonymousId);\n      }\n\n      return { success: !!result.ok };\n    },\n\n    async removeAttributes(attributes) {\n      if (window.UserLeap.debugMode)\n        console.info(\"[DEBUG] Sprig removeAttributes\", attributes);\n      if (config.mode === \"test\") return;\n\n      if (\n        attributes === null ||\n        attributes === undefined ||\n        attributes.length === 0\n      ) {\n        const message = `[Sprig] - Disregarding empty attributes provided`;\n        console.warn(message);\n        return { success: false, message };\n      }\n\n      if (config.requireUserIdForTracking && !window.UserLeap.userId) {\n        const message = \"[Sprig] - Skipping tracking without userId\";\n        console.warn(message);\n        return { success: false, message };\n      }\n\n      const result = await authenticatedFetch(\n        apiUrl(\"1\", [PATH_ENV, PATH_VISITOR], \"attributes\"),\n        {\n          body: JSON.stringify({ delete: attributes }),\n          method: \"DELETE\",\n        },\n      );\n      if (!result.ok && result.reportError) {\n        console.warn(\n          `[Sprig] (ERR-433) Remove attributes failed`,\n          result.error,\n        );\n        if (result.error)\n          window.UserLeap.reportError(\"removeAttributes\", result.error);\n      }\n\n      return { success: !!result.ok };\n    },\n\n    async addSurveyListener(listener) {\n      eventEmitter.on(SprigEvent.SurveyLifeCycle, listener);\n    },\n\n    async removeSurveyListener(listener) {\n      eventEmitter.removeListener(SprigEvent.SurveyLifeCycle, listener);\n    },\n\n    async addListener(event, listener) {\n      eventEmitter.on(event, listener);\n    },\n\n    async removeListener(event, listener) {\n      eventEmitter.removeListener(event, listener);\n    },\n\n    async removeAllListeners() {\n      eventEmitter.removeAllListeners();\n    },\n\n    setPreviewKey(previewKey: string) {\n      if (!previewKey || typeof previewKey !== \"string\") {\n        return;\n      }\n      if (localStorageHelper.isStorageAvailable && previewKey) {\n        localStorageHelper.setItem(\"sprig.previewKey\", previewKey);\n      }\n    },\n\n    /**\n     * Attach a user id to the visitor\n     */\n    async setUserId(userId) {\n      if (window.UserLeap.debugMode)\n        console.info(\"[DEBUG] Sprig setUserId\", userId);\n      if (userId === null || userId === undefined) {\n        const message = `[Sprig] - Invalid userId ${userId}`;\n        console.warn(message);\n        return { success: false, message };\n      }\n      if (config.mode === \"test\" || userId === window.UserLeap.userId) {\n        return;\n      }\n\n      window.UserLeap.userId = userId;\n      const visitorId = window.UserLeap.visitorId;\n      const result = await authenticatedFetch(\n        apiUrl(\"1\", [PATH_ENV, PATH_VISITOR]),\n        {\n          body: JSON.stringify({\n            userId,\n          }),\n          method: \"PUT\",\n        },\n      );\n      if (!result.ok) {\n        if (result.reportError) {\n          console.warn(`[Sprig] (ERR-420) Failed to set user id`, result.error);\n          if (result.error)\n            window.UserLeap.reportError(\"setUserId\", result.error);\n        }\n        return;\n      }\n      if (visitorId !== window.UserLeap.visitorId) {\n        modules.replay?.clearUserReplayData();\n      }\n      widgetSetLocalStorageCredentialsValue(\"uid\", userId);\n    },\n\n    /**\n     * Set a partner anonymous id for future requests -- to be deprecated, never documented.\n     */\n    async setPartnerAnonymousId(partnerAnonymousId) {\n      if (window.UserLeap.debugMode)\n        console.info(\"[DEBUG] Sprig setPartnerAnonymousId\", partnerAnonymousId);\n      if (partnerAnonymousId === null || partnerAnonymousId === undefined) {\n        const message = `[Sprig] - Invalid partnerAnonymousId ${partnerAnonymousId}`;\n        console.warn(message);\n        return { success: false, message };\n      }\n\n      window.UserLeap.partnerAnonymousId = partnerAnonymousId;\n      widgetSetLocalStorageCredentialsValue(\"aid\", partnerAnonymousId);\n      return { success: true };\n    },\n\n    /**\n     * track an event to show survey if eligible\n     */\n    async track(\n      eventName,\n      properties,\n      metadata = {},\n      showSurveyCallback = undefined,\n    ) {\n      return identifyAndTrackHelper({\n        eventName,\n        properties,\n        metadata,\n        showSurveyCallback,\n      });\n    },\n\n    // identifies and tracks event on visitor; see sprig-browser/index.js for documentation\n    async identifyAndTrack(payload) {\n      return await identifyAndTrackHelper(payload);\n    },\n\n    trackPageView(\n      url: string,\n      props = undefined,\n      showSurveyCallback = undefined,\n      calledFromApi = true,\n    ) {\n      trackPageViewUrl = url;\n      trackPageView(url, props, showSurveyCallback, calledFromApi);\n    },\n\n    applyFeedbackStyles({ button = \"\", view = \"\" }) {\n      // button override css will exist in the document so will just keep track of view only\n      window.UserLeap.feedbackCustomStyles = view;\n      if (document.getElementById(\"sprig-feedback-style\")) {\n        setSurveyStyles({\n          document: document,\n          elementId: \"ul-custom-style\",\n          styleString: button,\n          nonce: window.UserLeap.styleNonce,\n        });\n      }\n\n      overrideSurveyStyles(\n        document.querySelector(\".ul-container-feedback\") as HTMLElement,\n        view,\n      );\n    },\n\n    applyStyles(styleString) {\n      window.UserLeap.customStyles = styleString;\n      // survey already present override the styles\n      // this will only work for web sdk as when sdk is direct embedded there would not be a frame\n      overrideSurveyStyles(window.UserLeap.container, styleString);\n    },\n\n    /**\n      set viewport dimensions, in int pixels. necessary if Sprig is installed in an iframe/component defaulting to 0 width and height.\n    */\n    setWindowDimensions(width, height) {\n      const parsedWidth =\n        typeof width === \"string\" ? parseInt(width, 10) : width;\n      const parsedHeight =\n        typeof height === \"string\" ? parseInt(height, 10) : height;\n\n      if (!isNaN(parsedWidth) && !isNaN(parsedHeight)) {\n        window.UserLeap.windowDimensions = {\n          width: parsedWidth,\n          height: parsedHeight,\n        };\n      }\n\n      const headers = getHttpHeaders(window.UserLeap);\n      const useMobileStyling = calculateUseMobileStyling(headers);\n      const platformIsWeb = headers[\"userleap-platform\"] === \"web\";\n      if (!window.UserLeap.frameId) return; // nothing to do if there's no survey frame\n      const iframe = document.getElementById(\n        window.UserLeap.frameId,\n      ) as HTMLIFrameElement | null;\n      if (!iframe) return;\n\n      if (window.UserLeap.useMobileStyling) {\n        // desktop style is not repsonsive, but still emit SURVEY_DIMENSIONS\n        if (window.UserLeap.windowDimensions?.width)\n          iframe.style.width = `${window.UserLeap.windowDimensions.width}px`;\n        if (window.UserLeap.windowDimensions?.height)\n          iframe.style.maxHeight = `${\n            window.UserLeap.windowDimensions.height - 20\n          }px`;\n\n        if (iframe.contentDocument)\n          iframe.style.height =\n            String(\n              calculateFrameDimensions(\n                iframe.contentDocument,\n                platformIsWeb && !useMobileStyling,\n                shouldDirectEmbed(headers),\n              )[0],\n            ) + \"px\";\n      }\n      eventEmitter.emit(SprigEvent.SurveyDimensions, {\n        name: SprigEvent.SurveyDimensions,\n        contentFrameWidth: iframe.clientWidth,\n        contentFrameHeight: iframe.clientHeight,\n        \"survey.id\": parseInt(window.UserLeap.container!.dataset.studyId!),\n      });\n    },\n\n    /**\n     * logs out current visitor and associated ids\n     */\n    logoutUser() {\n      if (window.UserLeap.debugMode) console.info(\"[DEBUG] Sprig logout\");\n      logger.info(\"LogOut\", {\n        vid: window.UserLeap.visitorId,\n        userId: window.UserLeap.userId,\n      });\n\n      //clear in-memory\n      window.UserLeap.visitorId = null;\n      window.UserLeap.userId = null;\n      window.UserLeap.partnerAnonymousId = null;\n      window.UserLeap.token = null;\n      window.UserLeap.email = null;\n\n      //clear local storage\n      localStorageHelper.removeItem(\"userleap.ids\");\n\n      /**\n       * If it's paused, we're not going to wait for it to unpause to replay\n       * the queued items because it may replay it with a different visitorId\n       */\n      if (window.UserLeap._queue.isPaused()) window.UserLeap._queue.empty();\n      fallbackToAnonVisitor();\n      modules.replay?.clearUserReplayData();\n      window.UserLeap._queue.unpause();\n    },\n\n    /**\n     * dismiss surveys and clean up sprig globals\n     */\n    teardown() {\n      unregisterEventListeners();\n      window.UserLeap(\"dismissActiveSurvey\", DismissReason.API);\n\n      // @ts-expect-error - we want to clear the global UserLeap object\n      delete window.UserLeap;\n      // @ts-expect-error - we want to clear the global UserLeap object\n      delete window.Sprig;\n      delete window._Sprig;\n    },\n\n    integrateOptimizely(data, isOverride = true) {\n      if (!window.UserLeap?._config?.optimizelyEnabled) {\n        console.warn(\n          \"[SPRIG] Optimizely integration is currently not enabled for your product.\",\n        );\n        return;\n      }\n      try {\n        const jsonData = typeof data === \"string\" ? JSON.parse(data) : data;\n        OptimizelyIntegration.setOptimizelyExperiment(jsonData, isOverride);\n      } catch (err) {\n        console.warn(\"[Sprig] Error with integrating Optimizely data\");\n        if (err instanceof Error)\n          window.UserLeap.reportError(\"integrateOptimizely\", err);\n      }\n    },\n\n    integrateOptimizelyClient(client) {\n      if (!window.UserLeap?._config?.optimizelyEnabled) {\n        console.warn(\n          \"[SPRIG] Optimizely integration is currently not enabled for your product.\",\n        );\n        return;\n      }\n\n      const onActivate = ({\n        experiment,\n        variation,\n      }: ActivateListenerPayload) => {\n        const insertExperiment = {\n          experiments: [\n            {\n              id: experiment.id,\n              variation: variation.key,\n            },\n          ],\n        };\n        window.UserLeap(\"integrateOptimizely\", insertExperiment, false);\n      };\n\n      client.notificationCenter.addNotificationListener(\n        // previously was enums.NOTIFICATION_TYPES.ACTIVATE, but need to wait for optimizely sdk v5 for better tree shaking\n        \"ACTIVATE:experiment, user_id,attributes, variation, event\",\n        onActivate,\n      );\n    },\n\n    importLaunchDarklyData(data) {\n      if (!window.UserLeap?._config?.launchDarklyEnabled) {\n        console.warn(\n          \"[SPRIG] LaunchDarkly integration is currently not enabled for your product.\",\n        );\n        return;\n      }\n      LaunchDarklyIntegration.setLDFlagsVariations(data);\n    },\n\n    /** @deprecated */\n    setVisitorAttribute(attribute, value) {\n      console.warn(\n        \"[Sprig] setVisitorAttribute is deprecated. Please use setAttribute\",\n      );\n      return apiActions.setAttribute(attribute, value);\n    },\n\n    // Attach an email address to visitor\n    /** @deprecated */\n    async setEmail(email) {\n      return apiActions.setAttribute(EMAIL_ATTRIBUTE_KEY, email);\n    },\n\n    /** @deprecated */\n    async setVisitorEmail(email) {\n      console.warn(\n        \"[Sprig] setVisitorEmail is deprecated. Please use setEmail\",\n      );\n      return apiActions.setEmail(email);\n    },\n\n    async _generateVideoUploadUrl(body) {\n      return generateVideoUploadUrl(body);\n    },\n\n    _reportMetric(name, value) {\n      reportAndRegister(name, value);\n    },\n\n    async _completeSessionReplay({ surveyId, responseGroupUuid, eventDigest }) {\n      if (!modules.replay) {\n        window.UserLeap.reportError(\n          \"_completeSessionReplay\",\n          new Error(\"Replay module not registered\"),\n        );\n        return false;\n      }\n      return modules.replay?._completeSessionReplay({\n        surveyId,\n        responseGroupUuid,\n        eventDigest,\n        headers: getHttpHeaders(window.UserLeap),\n      });\n    },\n\n    pauseReplayRecording() {\n      if (modules.replay?.isReplayPaused?.()) {\n        return;\n      }\n      modules.replay?.recordReplayPaused?.();\n    },\n\n    resumeReplayRecording() {\n      if (!modules.replay?.isReplayPaused?.()) {\n        return;\n      }\n      modules.replay?.recordReplayResumed?.();\n      modules.replay?.recordFullSnapshot?.();\n    },\n  };\n\n  Object.assign(window.UserLeap, apiActions);\n};\n\n/**\n * Pulls down presentation config settings from server and\n * applies them to supplied config dict\n */\nasync function applyRemoteConfig(config: Partial<Config>) {\n  const headers = getHttpHeaders(window.UserLeap);\n\n  // CSP violation listener to prevent retries on CSP violations\n  document.addEventListener(\"securitypolicyviolation\", cspViolationHandler);\n  const response = await sprigFetch(apiUrl(\"1\", [PATH_ENV], \"config\"), {\n    headers,\n  });\n  document.removeEventListener(\"securitypolicyviolation\", cspViolationHandler);\n\n  if (!response.ok) {\n    window.SprigLoggerCallback?.(\"Sprig config fetch failed\");\n    if (response.reportError) {\n      console.warn(\n        `[Sprig] (ERR-422) Failed to load configuration`,\n        response.error,\n      );\n      if (response.error)\n        window.UserLeap.reportError(\"applyRemoteConfig\", response.error);\n    }\n    killNetworkRequests(\"Disabled: failed to fetch configuration\");\n    return config;\n  }\n  const properties = response.json;\n  if (properties?.disabled) {\n    window.SprigLoggerCallback?.(\"Sprig config fetch disabled\");\n    killNetworkRequests(`Disabled: ${properties.disabled}`);\n    return { disabled: properties.disabled };\n  }\n\n  const newConfig = Object.assign({}, properties, config);\n  return newConfig;\n}\n\nasync function reportError(\n  action: string,\n  err: Error,\n  extraInfo: object = {},\n  bodyInfo: object = {},\n) {\n  const mode = window.__cfg && window.__cfg.mode;\n  const vid = widgetGetVID();\n  const envId = window.UserLeap.envId;\n  const pde = window.document.documentElement;\n\n  const meta = {\n    mode,\n    screenWidth: window.screen.width,\n    screenHeight: window.screen.height,\n    clientWidth: pde.clientWidth,\n    clientHeight: pde.clientHeight,\n    location: trackPageViewUrl ?? window.location.href,\n    language: window.navigator.language,\n    ...extraInfo,\n  };\n\n  const body = {\n    action,\n    breadcrumbs: logger.breadcrumbs,\n    err: { message: `${err?.name} - ${err?.message}`, stack: err?.stack },\n    meta,\n    vid,\n    envId,\n    ...bodyInfo,\n  };\n  const result = await authenticatedFetch(apiUrl(\"1\", null, \"errors\"), {\n    method: \"POST\",\n    headers: {\n      \"x-ul-error\": window.btoa(`userleap-${Date.now()}-error`),\n    },\n    body: JSON.stringify(body),\n    shouldDropOnRateLimit: true,\n  });\n  if (!result.ok) {\n    console.warn(`[Sprig] (ERR-444) Failed to report error to API`, err);\n  }\n}\n\n/**\n * Generates a video URL\n */\nexport async function generateVideoUploadUrl(body: unknown) {\n  if (!body) return;\n\n  const uploadEndpoint = `${window.UserLeap._API_URL}/2/environments/integrations/upload`;\n\n  try {\n    const response = await fetch(uploadEndpoint, {\n      method: \"POST\",\n      cache: \"no-cache\",\n      headers: { \"Content-Type\": \"application/json\" },\n      body: JSON.stringify(body),\n    });\n\n    if (response.ok) {\n      const uploadResponse = await response.json();\n      return uploadResponse?.upload?.url;\n    } else {\n      return null;\n    }\n  } catch (err) {\n    console.warn(\"[Sprig] Error with generating video upload url\");\n    if (err instanceof Error)\n      window.UserLeap.reportError(\"generateVideoUploadUrl\", err);\n  }\n}\n/**\n * Initialize frame and bootstrap data\n * @param config this is included in the compilation step (points to the default viewSDKURL)\n * @param config.envId Environment Id\n * @param config.path Frame script url\n * @param [config.border] Border color\n */\nexport function sprigInitializer(config: Partial<Config> = {}) {\n  window.SprigLoggerCallback?.(\"Initializing Sprig\");\n  const previewKey =\n    new URLSearchParams(window.location.search).get(\n      \"sprigPreviewKey\" satisfies QueryParam,\n    ) ?? \"\";\n  window.UserLeap.UPDATES = EVENTS;\n  window.UserLeap(\"setPreviewKey\", previewKey);\n\n  async function load() {\n    if (window.UserLeap.loaded) return;\n    window.SprigLoggerCallback?.(\"Loading Sprig\");\n    window.UserLeap.reportError = reportError;\n    window.UserLeap.loaded = true;\n\n    // combine compile-provided config and installation-snippet config\n    window.UserLeap._config = Object.assign({}, config, window.UserLeap.config);\n    window.UserLeap.delayingSurvey = false;\n\n    //backwards compat\n    if (\n      window.UserLeap._config &&\n      typeof window.UserLeap._config === \"object\"\n    ) {\n      for (const attr in window.UserLeap._config) {\n        window.UserLeap[attr as keyof Config] = window.UserLeap._config[\n          attr as keyof Config\n        ] as never;\n      }\n    }\n    if (window.Sprig.outstandingTransactionLimit !== undefined) {\n      config.outstandingTransactionLimit =\n        window.Sprig.outstandingTransactionLimit;\n    }\n    //backwards compatibility for old installation snippet which set appId instead of envId\n    if (!window.UserLeap.envId) {\n      if (window.UserLeap.appId) {\n        window.UserLeap.envId = window.UserLeap.appId;\n      } else {\n        throw new Error(\"Missing Environment id\");\n      }\n    }\n    if (window.UserLeap.debugMode)\n      console.info(\"[DEBUG] Sprig debug mode enabled\");\n\n    const credentials = loadCredentials();\n\n    const sampleRate = window.UserLeap.sampleRate;\n    let sampled = credentials[\"sampled\"];\n    if (sampleRate) {\n      if (sampled === null) {\n        sampled = Math.random() < sampleRate;\n        widgetSetLocalStorageCredentialsValue(\"sampled\", sampled);\n      }\n      if (!sampled) return;\n    } else {\n      //if customer removed sampleRate config, need to remove from localStorage\n      if (sampled !== null) {\n        widgetSetLocalStorageCredentialsValue(\"sampled\", null);\n      }\n    }\n\n    if (!window.UserLeap._API_URL)\n      window.UserLeap._API_URL = \"https://api.sprig.com\";\n\n    //make a copy of existing queue, we will replay this after configuring\n    //Note: UserLeap._queue is an array at this point (defined in installation snippet)\n    // @ts-expect-error UserLeap._queue is an array at this point (defined in installation snippet)\n    const queueItems = [...window.UserLeap._queue];\n\n    //converts [] -> Queue()\n    window.UserLeap._queue = new SprigQueue(window.UserLeap, []);\n    window.UserLeap._queue.pause();\n    for (let i = 0; i < queueItems.length; i++) {\n      window.UserLeap._queue.push(queueItems[i]);\n    }\n\n    const cachedToken = credentials[\"token\"];\n    if (cachedToken) {\n      window.UserLeap.token = cachedToken;\n      window.UserLeap.visitorId = credentials[\"vid\"] ?? null;\n      window.UserLeap.userId = credentials[\"uid\"] ?? null;\n      window.UserLeap.partnerAnonymousId = credentials[\"aid\"] ?? null;\n    } else {\n      fallbackToAnonVisitor();\n    }\n    const headers = getHttpHeaders(window.UserLeap);\n    const isMobileWebview = calculateIsMobileWebview(headers);\n    window.SprigLoggerCallback?.(\"Sprig fetching config\");\n    const remoteConfig = await applyRemoteConfig(config);\n    window.SprigLoggerCallback?.(\"Sprig fetched config\");\n    initMetrics({\n      isWeb: !isMobileWebview,\n      reportingIntervalSeconds:\n        remoteConfig.metricsReportingEnabled ||\n        remoteConfig.mobileMetricsReportingEnabled\n          ? remoteConfig.metricsReportingIntervalSeconds\n          : 0,\n      thresholds: remoteConfig.metricThresholds,\n      postMetrics: async (json: string) => {\n        await authenticatedFetch(apiUrl(\"1\", [PATH_ENV], \"metrics\"), {\n          body: json,\n          method: \"POST\",\n          headers: {\n            \"x-ul-replay-enabled\": `${!!modules.replay?.isReplayRecording()}`,\n          },\n          shouldDropOnRateLimit: true,\n        });\n      },\n    });\n    if (!isMobileWebview) {\n      const alwaysOnConfig = remoteConfig.alwaysOnReplay\n        ? {\n            userAgent: window.navigator.userAgent,\n            surveyId: remoteConfig.alwaysOnReplay.surveyId,\n            responseGroupUuid: remoteConfig.alwaysOnReplay.responseGroupUuid,\n            sdkVersion: __SDK_VERSION__,\n            maxDurationSeconds: remoteConfig.alwaysOnReplay.maxDurationSeconds,\n          }\n        : undefined;\n\n      await modules.replay?.initializeReplay({\n        maxReplayDurationSeconds: remoteConfig.maxReplayDurationSeconds,\n        maxInflightRequests: window.UserLeap.maxInflightReplayRequests ?? 2,\n        replaySettings: remoteConfig.replaySettings,\n        apiUrl: window.UserLeap._API_URL,\n        alwaysOnConfig,\n      });\n      initializedHeatmapPrivacySettings = remoteConfig.replaySettings;\n    }\n    __enableUserLeapAPIActions(remoteConfig);\n\n    await widgetInitialize(remoteConfig);\n    window.UserLeap._queue.unpause();\n\n    window.SprigLoggerCallback?.(\"SdkReady\");\n    eventEmitter.emit(SprigEvent.SDKReady, {\n      mobileMetricsReportingEnabled:\n        !!remoteConfig.mobileMetricsReportingEnabled,\n      metricsReportingInterval:\n        remoteConfig.metricsReportingIntervalSeconds || 0,\n      metricsThresholds: remoteConfig.metricThresholds || [],\n      maxMobileReplayDurationSeconds:\n        remoteConfig.maxMobileReplayDurationSeconds,\n      mobileReplaySettings: remoteConfig.mobileReplaySettings,\n    });\n    eventEmitter.emit(SprigEvent.VisitorIDUpdated, {\n      visitorId: window.UserLeap.visitorId,\n    });\n    eventEmitter.on(SprigEvent.VisitorIDUpdated, () => {\n      for (const key in sessionProvidedAttributes)\n        delete sessionProvidedAttributes[key];\n    });\n  }\n\n  if (document.readyState === \"complete\") {\n    load();\n  } else if (window.attachEvent) {\n    window.attachEvent(\"onload\", load);\n  } else {\n    window.addEventListener(\n      \"load\",\n      () => {\n        load();\n      },\n      false,\n    );\n  }\n}\n","import {\n  DismissReason,\n  EVENTS,\n  SprigEvent,\n} from \"../src/constants/sprigEvents\";\nimport { sprigInitializer } from \"../src/controller/controller\";\n\nexport class SprigAPI {\n  /**\n   * Include external events emitted from Sprig\n   */\n  UPDATES = EVENTS;\n\n  /**\n   * Triggers displaying specified survey. Does submit answers!\n   */\n  displaySurvey(surveyId: number) {\n    window.Sprig(\"displaySurvey\", surveyId);\n  }\n\n  /**\n   * Pauses api interactions\n   */\n  mute() {\n    window.Sprig(\"mute\");\n  }\n\n  /**\n   * Restart api interactions\n   */\n  unmute() {\n    window.Sprig(\"unmute\");\n  }\n\n  /**\n   * Manually dismiss an opened survey\n   */\n  dismissActiveSurvey() {\n    window.Sprig(\"dismissActiveSurvey\");\n  }\n\n  /**\n   * Set an arbitrary attribute on the visitor\n   */\n  setAttribute(attribute: string, value: string | number | boolean) {\n    window.Sprig(\"setAttribute\", attribute, value);\n  }\n\n  /**\n   * Set attributes on visitor\n   */\n  setAttributes(attributes: SprigAttributes) {\n    window.Sprig(\"setAttributes\", attributes);\n  }\n\n  /**\n   * Set identifiers and attributes on visitor\n   */\n  identifyAndSetAttributes(payload: {\n    anonymousID?: string;\n    attributes: SprigAttributes;\n    userID?: string;\n  }) {\n    window.Sprig(\"identifyAndSetAttributes\", payload);\n  }\n\n  /**\n   * Remove attributes on visitor\n   */\n  removeAttributes(attributes: SprigAttributes) {\n    window.Sprig(\"removeAttributes\", attributes);\n  }\n\n  /**\n   * Add a listener for an event defined in ulEvents\n   */\n  addListener(event: SprigEvent, listener: SprigListener) {\n    window.Sprig(\"addListener\", event, listener);\n  }\n\n  /**\n   * Remove a listener for an event defined in ulEvents\n   */\n  removeListener(event: SprigEvent, listener: SprigListener) {\n    window.Sprig(\"removeListener\", event, listener);\n  }\n\n  /**\n   * Remove all listeners set on Sprig\n   */\n  removeAllListeners() {\n    window.Sprig(\"removeAllListeners\");\n  }\n\n  /**\n   * Attach an email address to visitor\n   */\n  setEmail(email: string) {\n    window.Sprig(\"setAttribute\", \"!email\", email);\n  }\n\n  /**\n   * Attach a user id to the visitor\n   */\n  setUserId(userId: string) {\n    window.Sprig(\"setUserId\", userId);\n  }\n\n  /**\n   * Set a partner anonymous id for future requests.\n   */\n  setPartnerAnonymousId(partnerAnonymousId: string) {\n    window.Sprig(\"setPartnerAnonymousId\", partnerAnonymousId);\n  }\n\n  /**\n   * Track an event to show survey if eligible\n   * @param eventName name of event to track\n   */\n  track(\n    eventName: string,\n    properties: Record<string, unknown> = {},\n    metadata: SprigMetadata = {},\n  ) {\n    window.Sprig(\"track\", eventName, properties, metadata);\n  }\n\n  /**\n   * Optionally set userId and/or anonymousId, track an event to show survey if eligible\n   */\n  identifyAndTrack(payload: {\n    anonymousId?: string;\n    eventName: string;\n    metadata?: SprigMetadata;\n    userId?: string;\n  }) {\n    window.Sprig(\"identifyAndTrack\", payload);\n  }\n\n  /**\n   * Tracks a page view with the provided URL and additional event properties.\n   */\n  trackPageView(\n    url: string,\n    props?: SprigProperties,\n    showSurveyCallback?: (surveyId?: number) => Promise<boolean>,\n  ) {\n    window.Sprig(\"trackPageView\", url, props, showSurveyCallback);\n  }\n\n  /**\n   * Apply a css string representing the customized styles\n   */\n  applyStyles(styleString: string) {\n    window.Sprig(\"applyStyles\", styleString);\n  }\n\n  /**\n    Set viewport dimensions, in int pixels. necessary if Sprig is installed in an iframe/component defaulting to 0 width and height.\n  */\n  setWindowDimensions(width: number | string, height: number | string) {\n    window.Sprig(\"setWindowDimensions\", width, height);\n  }\n\n  /**\n   * Logs out current visitor and associated ids\n   */\n  logoutUser() {\n    window.Sprig(\"logoutUser\");\n  }\n\n  /**\n   * Clears Sprig from window\n   */\n  teardown() {\n    window.Sprig(\"teardown\");\n  }\n\n  /**\n   * Pause replay recording\n   */\n  pauseReplayRecording() {\n    window.Sprig(\"pauseReplayRecording\");\n  }\n\n  /**\n   * Resume replay recording\n   */\n  resumeReplayRecording() {\n    window.Sprig(\"resumeReplayRecording\");\n  }\n}\n\ntype NpmConfig = {\n  envId?: string;\n  environmentId?: string;\n  path?: string;\n} & Partial<WindowSprig>;\n\nexport const sprig = {\n  /**\n   * Sets up the sprig api and load the sprig sdk on document load\n   * @param config\n   * @returns an instance of the sprig api\n   */\n  configure: (config: NpmConfig) => {\n    if (!config.envId && !config.environmentId) {\n      throw new Error(\n        \"Initialization Error: Sprig configure requires an environmentId\",\n      );\n    }\n    if (!config.envId) config.envId = config.environmentId ?? \"\"; // backwards compatible setting for environment id\n    config.installationMethod = __INSTALLATION_METHOD__;\n    if (window.Sprig) return window.Sprig;\n    // @ts-expect-error - TODO: improve\n    window.Sprig = function () {\n      // @ts-expect-error - TODO: improve\n      // eslint-disable-next-line prefer-rest-params\n      window.Sprig._queue.push(arguments);\n    };\n\n    Object.getOwnPropertyNames(SprigAPI.prototype).map((apiMethodName) => {\n      if (apiMethodName !== \"constructor\")\n        window.Sprig[apiMethodName as keyof typeof SprigAPI] =\n          SprigAPI.prototype[apiMethodName as keyof typeof SprigAPI.prototype];\n    });\n    const S = window.Sprig;\n    S.appId = config.envId;\n    // @ts-expect-error - TODO: improve\n    S._queue = [];\n    window.UserLeap = S;\n\n    sprigInitializer(config);\n    return window.Sprig;\n  },\n};\n\nexport type WindowSprig = typeof window.Sprig;\nexport { DismissReason, SprigEvent };\n\nexport default { sprig, SprigAPI, configure: sprig.configure };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n  EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n  EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n  EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n  EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n  EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n  EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n  EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n  return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n  IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n  IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n  IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n  IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n  IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n  IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n  IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n  IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n  IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n  IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n  IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n  IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n  IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n  IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n  IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n  IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n  return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n  MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n  MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n  MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n  MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n  MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n  MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n  MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n  MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n  MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n  MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n  MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n  return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n  CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n  CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n  CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n  return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n  MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n  MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n  MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n  MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n  MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n  return MediaInteractions2;\n})(MediaInteractions || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n  ReplayerEvents2[\"Start\"] = \"start\";\n  ReplayerEvents2[\"Pause\"] = \"pause\";\n  ReplayerEvents2[\"Resume\"] = \"resume\";\n  ReplayerEvents2[\"Resize\"] = \"resize\";\n  ReplayerEvents2[\"Finish\"] = \"finish\";\n  ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n  ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n  ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n  ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n  ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n  ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n  ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n  ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n  ReplayerEvents2[\"Flush\"] = \"flush\";\n  ReplayerEvents2[\"StateChange\"] = \"state-change\";\n  ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n  ReplayerEvents2[\"Destroy\"] = \"destroy\";\n  return ReplayerEvents2;\n})(ReplayerEvents || {});\nexport {\n  CanvasContext,\n  EventType,\n  IncrementalSource,\n  MediaInteractions,\n  MouseInteractions,\n  PointerTypes,\n  ReplayerEvents\n};\n//# sourceMappingURL=types.js.map\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n    return (idbProxyableTypes ||\n        (idbProxyableTypes = [\n            IDBDatabase,\n            IDBObjectStore,\n            IDBIndex,\n            IDBCursor,\n            IDBTransaction,\n        ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n    return (cursorAdvanceMethods ||\n        (cursorAdvanceMethods = [\n            IDBCursor.prototype.advance,\n            IDBCursor.prototype.continue,\n            IDBCursor.prototype.continuePrimaryKey,\n        ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n    const promise = new Promise((resolve, reject) => {\n        const success = () => {\n            resolve(wrap(request.result));\n        };\n        const error = () => {\n            reject(request.error);\n        };\n        request.onsuccess = success;\n        request.onerror = error;\n    });\n    // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n    // is because we create many promises from a single IDBRequest.\n    reverseTransformCache.set(promise, request);\n    return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n    // Early bail if we've already created a done promise for this transaction.\n    if (transactionDoneMap.has(tx))\n        return;\n    const done = new Promise((resolve, reject) => {\n        const complete = () => {\n            resolve();\n        };\n        const error = () => {\n            reject(tx.error || new DOMException('AbortError', 'AbortError'));\n        };\n        tx.oncomplete = complete;\n        tx.onerror = error;\n        tx.onabort = error;\n    });\n    // Cache it for later retrieval.\n    transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n    get(target, prop, receiver) {\n        if (target instanceof IDBTransaction) {\n            // Special handling for transaction.done.\n            if (prop === 'done')\n                return transactionDoneMap.get(target);\n            // Make tx.store return the only store in the transaction, or undefined if there are many.\n            if (prop === 'store') {\n                return receiver.objectStoreNames[1]\n                    ? undefined\n                    : receiver.objectStore(receiver.objectStoreNames[0]);\n            }\n        }\n        // Else transform whatever we get back.\n        return wrap(target[prop]);\n    },\n    set(target, prop, value) {\n        target[prop] = value;\n        return true;\n    },\n    has(target, prop) {\n        if (target instanceof IDBTransaction &&\n            (prop === 'done' || prop === 'store')) {\n            return true;\n        }\n        return prop in target;\n    },\n};\nfunction replaceTraps(callback) {\n    idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n    // Due to expected object equality (which is enforced by the caching in `wrap`), we\n    // only create one new func per func.\n    // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n    // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n    // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n    // with real promises, so each advance methods returns a new promise for the cursor object, or\n    // undefined if the end of the cursor has been reached.\n    if (getCursorAdvanceMethods().includes(func)) {\n        return function (...args) {\n            // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n            // the original object.\n            func.apply(unwrap(this), args);\n            return wrap(this.request);\n        };\n    }\n    return function (...args) {\n        // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n        // the original object.\n        return wrap(func.apply(unwrap(this), args));\n    };\n}\nfunction transformCachableValue(value) {\n    if (typeof value === 'function')\n        return wrapFunction(value);\n    // This doesn't return, it just creates a 'done' promise for the transaction,\n    // which is later returned for transaction.done (see idbObjectHandler).\n    if (value instanceof IDBTransaction)\n        cacheDonePromiseForTransaction(value);\n    if (instanceOfAny(value, getIdbProxyableTypes()))\n        return new Proxy(value, idbProxyTraps);\n    // Return the same value back if we're not going to transform it.\n    return value;\n}\nfunction wrap(value) {\n    // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n    // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n    if (value instanceof IDBRequest)\n        return promisifyRequest(value);\n    // If we've already transformed this value before, reuse the transformed value.\n    // This is faster, but it also provides object equality.\n    if (transformCache.has(value))\n        return transformCache.get(value);\n    const newValue = transformCachableValue(value);\n    // Not all types are transformed.\n    // These may be primitive types, so they can't be WeakMap keys.\n    if (newValue !== value) {\n        transformCache.set(value, newValue);\n        reverseTransformCache.set(newValue, value);\n    }\n    return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n    const request = indexedDB.open(name, version);\n    const openPromise = wrap(request);\n    if (upgrade) {\n        request.onupgradeneeded = (event) => {\n            upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n        };\n    }\n    if (blocked) {\n        request.onblocked = (event) => blocked(\n        // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n        event.oldVersion, event.newVersion, event);\n    }\n    openPromise\n        .then((db) => {\n        if (terminated)\n            db.onclose = () => terminated();\n        if (blocking) {\n            db.onversionchange = (event) => blocking(event.oldVersion, event.newVersion, event);\n        }\n    })\n        .catch(() => { });\n    return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n    const request = indexedDB.deleteDatabase(name);\n    if (blocked) {\n        request.onblocked = (event) => blocked(\n        // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n        event.oldVersion, event);\n    }\n    return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n    if (!(target instanceof IDBDatabase &&\n        !(prop in target) &&\n        typeof prop === 'string')) {\n        return;\n    }\n    if (cachedMethods.get(prop))\n        return cachedMethods.get(prop);\n    const targetFuncName = prop.replace(/FromIndex$/, '');\n    const useIndex = prop !== targetFuncName;\n    const isWrite = writeMethods.includes(targetFuncName);\n    if (\n    // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n    !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n        !(isWrite || readMethods.includes(targetFuncName))) {\n        return;\n    }\n    const method = async function (storeName, ...args) {\n        // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n        const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n        let target = tx.store;\n        if (useIndex)\n            target = target.index(args.shift());\n        // Must reject if op rejects.\n        // If it's a write operation, must reject if tx.done rejects.\n        // Must reject with op rejection first.\n        // Must resolve with op value.\n        // Must handle both promises (no unhandled rejections)\n        return (await Promise.all([\n            target[targetFuncName](...args),\n            isWrite && tx.done,\n        ]))[0];\n    };\n    cachedMethods.set(prop, method);\n    return method;\n}\nreplaceTraps((oldTraps) => ({\n    ...oldTraps,\n    get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n    has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n    get(target, prop) {\n        if (!advanceMethodProps.includes(prop))\n            return target[prop];\n        let cachedFunc = methodMap[prop];\n        if (!cachedFunc) {\n            cachedFunc = methodMap[prop] = function (...args) {\n                advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n            };\n        }\n        return cachedFunc;\n    },\n};\nasync function* iterate(...args) {\n    // tslint:disable-next-line:no-this-assignment\n    let cursor = this;\n    if (!(cursor instanceof IDBCursor)) {\n        cursor = await cursor.openCursor(...args);\n    }\n    if (!cursor)\n        return;\n    cursor = cursor;\n    const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n    ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n    // Map this double-proxy back to the original, so other cursor methods work.\n    reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n    while (cursor) {\n        yield proxiedCursor;\n        // If one of the advancing methods was not called, call continue().\n        cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n        advanceResults.delete(proxiedCursor);\n    }\n}\nfunction isIteratorProp(target, prop) {\n    return ((prop === Symbol.asyncIterator &&\n        instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n        (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n    ...oldTraps,\n    get(target, prop, receiver) {\n        if (isIteratorProp(target, prop))\n            return iterate;\n        return oldTraps.get(target, prop, receiver);\n    },\n    has(target, prop) {\n        return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n    },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","export const IframeMessages = {\n  Loaded: \"sprigReplayIframeLoaded\",\n  Settings: \"sprigReplayIframeSettings\",\n  Snapshot: \"sprigReplayIframeTakeFullSnapshot\",\n  Teardown: \"sprigReplayTeardown\",\n};\n\nconst iframes: {\n  source: MessageEventSource | null;\n  origin: MessageEvent[\"origin\"];\n}[] = [];\n\nexport const initIframeManager = (\n  settings: Partial<\n    Parameters<Exclude<typeof window.rrwebRecord, undefined>>[0]\n  >,\n  replayLibraryUrl: string,\n) => {\n  window.addEventListener(\"message\", (event: MessageEvent) => {\n    if (event.data.type === IframeMessages.Loaded) {\n      iframes.push({\n        source: event.source,\n        origin: event.origin,\n      });\n      event.source?.postMessage(\n        {\n          type: IframeMessages.Settings,\n          settings,\n          replayLibraryUrl: replayLibraryUrl,\n        },\n        { targetOrigin: event.origin },\n      );\n    }\n  });\n};\n\nexport const requestChildIframeFullSnapshot = () => {\n  iframes.forEach((iframe) => {\n    iframe.source?.postMessage(\n      {\n        type: IframeMessages.Snapshot,\n      },\n      { targetOrigin: iframe.origin },\n    );\n  });\n};\n\nexport const requestChildIframeTeardown = () => {\n  iframes.forEach((iframe) => {\n    iframe.source?.postMessage(\n      {\n        type: IframeMessages.Teardown,\n      },\n      { targetOrigin: iframe.origin },\n    );\n  });\n};\n","import { Semaphore } from \"./semaphore\";\nimport { ChunkUpload, ChunkUploadInfo, EventDigest } from \"./types\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport { sprigFetch } from \"../../helpers/network\";\n\nimport type { Config } from \"../../types/config\";\n\nconst semaphore = new Semaphore(2);\nexport const initializeNetwork = (limitInflightRequests: number) =>\n  semaphore.setLimit(limitInflightRequests);\n\nexport const uploadChunk = async (chunk: ChunkUpload): Promise<string> => {\n  return semaphore.execute(async () => {\n    logger.info(\"UploadChunkStart\", {\n      chunkIndex: chunk.chunkIndex,\n      surveyId: chunk.surveyId,\n    });\n    const response = await sprigFetch(chunk.uploadUrl, {\n      body: chunk.data,\n      method: \"PUT\",\n    });\n\n    logger.http(\"UploadChunkEnd\", {\n      url: chunk.uploadUrl,\n      method: \"PUT\",\n      status_code: response.status,\n      reason: response.statusText ?? \"OK\",\n      chunkIndex: chunk.chunkIndex,\n      surveyId: chunk.surveyId,\n    });\n    const etag = response.headers?.get(\"ETag\");\n    if (!etag)\n      throw new Error(\n        `Upload response did not include etag for upload ${chunk.uploadId}, part ${chunk.chunkIndex}`,\n      );\n    return etag;\n  });\n};\n\nexport const markUploadComplete = async (\n  {\n    apiUrl,\n    surveyId,\n    uploadId,\n    etags,\n    headers,\n    responseGroupUuid,\n    replayDuration,\n    eventDigest,\n  }: {\n    apiUrl: string;\n    surveyId: number;\n    responseGroupUuid: string;\n    uploadId?: string;\n    etags?: ChunkUploadInfo[];\n    headers?: Config[\"headers\"];\n    replayDuration?: number;\n    eventDigest?: EventDigest[];\n  },\n  isMobile = false,\n) => {\n  // uploadId and etags required for web session replay\n  if (!isMobile && !uploadId && !etags) {\n    logger.error(\"UploadErr\", { isMobile, uploadId, etags });\n    return;\n  }\n\n  logger.info(\"MarkUploadComplete\", { surveyId });\n  const res = await sprigFetch(`${apiUrl}/sdk/1/completeSessionReplay`, {\n    method: \"POST\",\n    body: JSON.stringify({\n      etags,\n      uploadId,\n      responseGroupUuid,\n      surveyId,\n      replayDuration,\n      eventDigest,\n      userAgent: window?.navigator?.userAgent,\n    }),\n    headers,\n    shouldRetryRequest: true,\n  });\n  logger.info(\"MarkUploadDone\", { surveyId });\n  return res;\n};\n","export class Semaphore {\n  private awaitingResolvers: (() => void)[] = [];\n  private activeCount = 0;\n  constructor(private capacity: number) {}\n\n  async acquire() {\n    if (this.activeCount < this.capacity) {\n      this.activeCount++;\n      return;\n    }\n    return new Promise<void>((resolver) => {\n      this.awaitingResolvers.push(resolver);\n    });\n  }\n\n  release() {\n    const resolver = this.awaitingResolvers.shift();\n    if (resolver && this.activeCount <= this.capacity) {\n      resolver();\n    } else {\n      this.activeCount--;\n    }\n  }\n\n  async execute<T>(fn: () => Promise<T>) {\n    try {\n      await this.acquire();\n      return await fn();\n    } finally {\n      this.release();\n    }\n  }\n\n  setLimit(limit: number) {\n    this.capacity = limit;\n  }\n}\n","interface Component {\n  name?: string;\n  position: number | null;\n}\n\n// get the position of the given node among its previous sibling nodes that share the same tag name\nconst getPosition = (node: Element | Attr) => {\n  if (node instanceof Attr) {\n    return null;\n  }\n\n  let position = 1;\n  for (\n    let curNode = node.previousSibling;\n    curNode;\n    curNode = curNode.previousSibling\n  ) {\n    if (curNode.nodeName === node.nodeName) {\n      ++position;\n    }\n  }\n  return position;\n};\n\nexport const getXPath = (node: Element | Attr | null): string => {\n  if (node === null) {\n    return \"\";\n  }\n\n  const comps: Component[] = [];\n\n  if (node instanceof Document) {\n    return \"/\";\n  }\n\n  for (\n    let curNode: Element | Attr | null = node;\n    curNode && !(curNode instanceof Document);\n    curNode =\n      curNode instanceof Attr ? curNode.ownerElement : curNode.parentElement\n  ) {\n    if (curNode === null) {\n      break;\n    }\n\n    const comp: Component = (comps[comps.length] = {\n      name: undefined,\n      position: null,\n    });\n\n    switch (curNode.nodeType) {\n      case Node.TEXT_NODE:\n        comp.name = \"text()\";\n        break;\n      case Node.ATTRIBUTE_NODE:\n        comp.name = \"@\" + curNode.nodeName;\n        break;\n      case Node.PROCESSING_INSTRUCTION_NODE:\n        comp.name = \"processing-instruction()\";\n        break;\n      case Node.COMMENT_NODE:\n        comp.name = \"comment()\";\n        break;\n      case Node.ELEMENT_NODE:\n        comp.name = curNode.nodeName;\n        break;\n    }\n\n    comp.position = getPosition(curNode);\n  }\n\n  return (\n    \"/\" +\n    comps\n      .reverse()\n      .map((comp) =>\n        comp.position !== null\n          ? `/${comp.name}[${comp.position}]`\n          : `/${comp.name}`,\n      )\n      .join(\"\")\n  );\n};\n","export const cleanupText = (text: string) => {\n  if (!text) return text;\n  const cleanedText = text\n    .trim()\n    .substring(0, 500) // set initial limit\n    .replace(/\\s\\s+/g, \" \") // remove extra spaces\n    .replace(/\\r?\\n|\\r/g, \" \"); // remove new lines\n  return cleanedText.substring(0, 250); // set final limit\n};\n","import { getXPath } from \"./getXPath\";\nimport { cleanupText } from \"./utils\";\n\nimport type { CustomEvent } from \"./replayStorageHelpers\";\n\nconst userListenerOptions = { capture: true, passive: true };\n\nconst interestingTagnames = [\"a\", \"button\", \"input\", \"option\", \"li\", \"link\"];\nconst interestingKeys = [\"Escape\", \"Enter\", \"Backspace\", \"F5\", \"Tab\"];\n\nlet observerInitialized = false;\n\n// CUSTOM EVENTS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\ntype ClickType = \"left_click\" | \"right_click\";\n\ntype CustomEventRecorder = (name: CustomEvent, info: object) => void;\ntype ScrollHandler = (args: {\n  xPath: string;\n  x: number;\n  y: number;\n  elementAttributes: {\n    targetScrollWidth: number;\n    targetClientWidth: number;\n    targetScrollHeight: number;\n    targetClientHeight: number;\n  };\n}) => void;\n\nlet recordCustomEvent: CustomEventRecorder | null = null;\nlet handleScroll: ScrollHandler | null = null;\n\nconst RecordBackForward = (info: {\n  curUrl: string;\n  fromUrl: string;\n  currentPageTitle: string;\n}) => {\n  if (info.currentPageTitle) {\n    info.currentPageTitle = cleanupText(info.currentPageTitle);\n  }\n  recordCustomEvent?.(\"Sprig_BackForward\", info);\n};\n\nexport const RecordClick = (info: {\n  x: number;\n  y: number;\n  type: ClickType;\n  elementAttributes: Record<string, string>;\n  windowHeight: number;\n  windowWidth: number;\n  rect?: {\n    left: number;\n    top: number;\n    right: number;\n    bottom: number;\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n  };\n  xPath?: string;\n}) => {\n  if (info?.elementAttributes?.text) {\n    info.elementAttributes.text = cleanupText(info.elementAttributes.text);\n  }\n  recordCustomEvent?.(\"Sprig_Click\", info);\n};\n\nexport const RecordRefresh = (info: {\n  url: string;\n  currentPageTitle: string;\n}) => {\n  recordCustomEvent?.(\"Sprig_Refresh\", info);\n};\n\nexport const RecordKeystroke = (info: { key: string }) => {\n  recordCustomEvent?.(\"Sprig_Keystroke\", info);\n};\n\nconst getElementType = (e: HTMLElement) => {\n  if (!e.tagName) return \"No tagName\";\n  const type = e.getAttribute(\"type\");\n  return type ? `${type} ${e.tagName.toLowerCase()}` : e.tagName.toLowerCase();\n};\n\nconst getElementAttributes = (e: HTMLElement) => {\n  if (e.tagName?.toLowerCase() === \"html\") {\n    return { element: \"html\" };\n  }\n  const elementAttrs: Record<string, string> = {};\n  elementAttrs.element = getElementType(e);\n  return elementAttrs;\n};\n\nconst getTargetElementAttributes = (e: HTMLElement) => {\n  if (!e) return {};\n  const attrs = getElementAttributes(e);\n  const mergedAttributes: Record<string, string> = { ...attrs };\n  const parent = e.parentElement;\n  if (parent && interestingTagnames.includes(parent.tagName?.toLowerCase())) {\n    const parentAttrs = getElementAttributes(parent);\n    Object.assign(mergedAttributes, parentAttrs);\n  }\n\n  return mergedAttributes;\n};\n\nconst handleClickEvent = (type: ClickType, ev: MouseEvent) => {\n  let target = ev.target;\n  if (ev.target === window.document?.body && window.Sprig.pointerDownTarget) {\n    target = window.Sprig.pointerDownTarget;\n  }\n  RecordClick({\n    x: ev.x,\n    y: ev.y,\n    type,\n    elementAttributes: getTargetElementAttributes(target as HTMLElement),\n    windowHeight: window.innerHeight,\n    windowWidth: window.innerWidth,\n    ...(target instanceof HTMLElement\n      ? { rect: target?.getBoundingClientRect(), xPath: getXPath(target) }\n      : {}),\n  });\n};\n\nconst makeClickEventHandler = (type: ClickType) => {\n  return (ev: MouseEvent) => handleClickEvent(type, ev);\n};\n\nconst handleKeydown = (ev: KeyboardEvent) => {\n  if (interestingKeys.includes(ev.key)) {\n    RecordKeystroke({ key: ev.key });\n  }\n};\n\nconst recordReloadIfUsed = () => {\n  const pageAccessedByReload = window.performance\n    .getEntriesByType(\"navigation\")\n    .map((nav) => (nav as PerformanceNavigationTiming).type)\n    .includes(\"reload\");\n  if (pageAccessedByReload) {\n    RecordRefresh({\n      url: window.location.href,\n      currentPageTitle: document.title,\n    });\n  }\n};\n\nconst recordBackIfUsed = () => {\n  const pageAccessedByBack = window.performance\n    .getEntriesByType(\"navigation\")\n    .map((nav) => (nav as PerformanceNavigationTiming).type)\n    .includes(\"back_forward\");\n  if (pageAccessedByBack) {\n    RecordBackForward({\n      curUrl: window.location.href,\n      fromUrl: document.referrer,\n      currentPageTitle: document.title,\n    });\n  }\n};\nconst debounce = (func: (ev: Event) => void, delay: number) => {\n  let timer: number;\n  return (ev: Event) => {\n    clearTimeout(timer);\n    timer = window.setTimeout(() => func(ev), delay);\n  };\n};\n\nconst scrollListener = (ev: Event) => {\n  if (!(ev.target instanceof HTMLElement || ev.target instanceof Document))\n    return;\n\n  let scrollTarget = ev.target;\n  if (!(\"scrollTop\" in scrollTarget)) {\n    scrollTarget = scrollTarget.documentElement;\n  }\n  handleScroll?.({\n    xPath: getXPath(scrollTarget),\n    x: scrollTarget.scrollLeft,\n    y: scrollTarget.scrollTop,\n    elementAttributes: {\n      targetScrollWidth: scrollTarget.scrollWidth,\n      targetClientWidth: scrollTarget.clientWidth,\n      targetScrollHeight: scrollTarget.scrollHeight,\n      targetClientHeight: scrollTarget.clientHeight,\n    },\n  });\n};\nconst debouncedScrollListener = debounce(scrollListener, 750);\nconst leftClickListener = makeClickEventHandler(\"left_click\");\nconst rightClickListener = (ev: MouseEvent) => {\n  if (ev.button === 2) {\n    handleClickEvent(\"right_click\", ev);\n  }\n};\nconst pointerDownListener = (ev: MouseEvent) => {\n  if (window.Sprig) {\n    window.Sprig.pointerDownTarget = ev.target;\n  }\n};\n\nexport const initUserEventObserver = (\n  recordEvent: CustomEventRecorder,\n  scrollHandler: ScrollHandler,\n) => {\n  if (observerInitialized) return;\n  recordCustomEvent = recordEvent;\n  handleScroll = scrollHandler;\n  window.addEventListener(\"click\", leftClickListener, userListenerOptions);\n  window.addEventListener(\n    \"pointerdown\",\n    pointerDownListener,\n    userListenerOptions,\n  );\n  window.addEventListener(\"mousedown\", rightClickListener, userListenerOptions);\n  window.addEventListener(\"keydown\", handleKeydown, userListenerOptions);\n  window.addEventListener(\n    \"scroll\",\n    debouncedScrollListener,\n    userListenerOptions,\n  );\n  observerInitialized = true;\n  recordReloadIfUsed();\n  recordBackIfUsed();\n};\n\nexport const removeUserEventObserver = () => {\n  if (!observerInitialized) return;\n  window.removeEventListener(\"click\", leftClickListener, userListenerOptions);\n  window.removeEventListener(\n    \"pointerdown\",\n    pointerDownListener,\n    userListenerOptions,\n  );\n  window.removeEventListener(\n    \"mousedown\",\n    rightClickListener,\n    userListenerOptions,\n  );\n  window.removeEventListener(\"keydown\", handleKeydown, userListenerOptions);\n  window.removeEventListener(\n    \"scroll\",\n    debouncedScrollListener,\n    userListenerOptions,\n  );\n  observerInitialized = false;\n};\n","import { v4 as generateUuid } from \"uuid\";\n\nimport {\n  requestChildIframeFullSnapshot,\n  requestChildIframeTeardown,\n} from \"./iframeManager\";\nimport { markUploadComplete } from \"./network\";\nimport { replayStorage } from \"./ReplayStorage\";\nimport { EventDigest } from \"./types\";\nimport { removeUserEventObserver } from \"./userEventObserver\";\nimport { cleanupText } from \"./utils\";\nimport { checkUrlStillMatching } from \"../../controller/urlMatcher\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\nimport { Config } from \"../../types/config\";\n\nconst HEATMAP_INACTIVE_LIMIT_MS = 30000;\n\nexport const replayState: {\n  cleanupInterval?: number;\n  inactivityInterval?: number;\n  isRecording: boolean;\n  pendingCheckInterval?: number;\n  scrollEventUuids: Record<string, string>;\n  stopRecording?: () => void;\n} = {\n  isRecording: false,\n  scrollEventUuids: {},\n  stopRecording: () => {},\n};\n\nexport const idbExists = () =>\n  window.indexedDB && window.IDBKeyRange && window.CompressionStream;\n\n// GENERAL HELPERS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nconst MIN_GB = 0.5;\nexport const checkIDBNotSupported = async () => {\n  if (!idbExists()) {\n    return true;\n  }\n\n  if (window.navigator.storage?.estimate) {\n    try {\n      const { quota = 0, usage = 0 } =\n        await window.navigator.storage.estimate();\n      const availableGb = (quota - usage) / 1024 ** 3;\n      logger.info(\"Storage\", { availableGb });\n      return availableGb < MIN_GB;\n    } catch {\n      return true;\n    }\n  }\n  return false;\n};\n\nexport const getOrGenerateSessionId = () => {\n  const savedSessionId = sessionStorageHelper.getItem(\"sprig.sessionId\");\n\n  if (savedSessionId) {\n    logger.info(\"SessionIDFound\", { savedSessionId });\n    sessionStorageHelper.removeItem(\"sprig.sessionId\");\n    return savedSessionId;\n  }\n  const uuid = generateUuid();\n  logger.info(\"GeneratedSessionID\", { uuid });\n  return uuid;\n};\n\nexport const sessionId = getOrGenerateSessionId();\n\n// Mark or retrieve enabled state of recording\nexport const markReplayRecordingDisabled = () => {\n  sessionStorageHelper.setItem(\"sprig.disableReplayRecording\", \"disabled\");\n};\nexport const isReplayRecordingDisabled = () => {\n  return !!sessionStorageHelper.getItem(\"sprig.disableReplayRecording\");\n};\n\nexport const markReplayPaused = () => {\n  sessionStorageHelper.setItem(\"sprig.isReplayPaused\", \"true\");\n};\n\nexport const markReplayResumed = () => {\n  sessionStorageHelper.removeItem(\"sprig.isReplayPaused\");\n};\n\nexport const isReplayPaused = () => {\n  return !!sessionStorageHelper.getItem(\"sprig.isReplayPaused\");\n};\n\nwindow.addEventListener(\"beforeunload\", () => {\n  logger.info(\"BeforeUnload\", { sessionId });\n  // This is necessary, see commit message\n  sessionStorageHelper.setItem(\"sprig.sessionId\", sessionId);\n});\n\nexport const checkPendingHeatmapsUrl = () => {\n  if (isReplayRecordingDisabled())\n    return logger.debug(\"ReplayDisabled-PendingHeatmaps\");\n  return tryReplayAction(async () => {\n    const pendingUuids = (\n      await replayStorage.getPendingCaptures({\n        isHeatmap: true,\n      })\n    ).map((pendingCapture) => ({\n      eventId: pendingCapture.captureParams.eventId,\n      uuid: pendingCapture.uuid,\n    }));\n\n    const uuidsToMarkComplete = pendingUuids\n      .filter(({ eventId }) => !checkUrlStillMatching(eventId))\n      .map(({ uuid }) => uuid);\n\n    logger.info(\"PendingHeatmapsToComplete\", {\n      count: uuidsToMarkComplete.length,\n    });\n\n    if (uuidsToMarkComplete.length) {\n      await replayStorage.markPendingHeatmapsReady(uuidsToMarkComplete);\n      logger.info(\"MarkedPendingHeatmapsReady\");\n    }\n\n    return uuidsToMarkComplete.length;\n  }, \"Error marking pending heatmaps ready\");\n};\n\n// Heatmap recording should cut off after 30 seconds inactivity\nexport const trackHeatmapInactivity = (timestamp: number) => {\n  if (Date.now() - timestamp >= HEATMAP_INACTIVE_LIMIT_MS) {\n    tryReplayAction(\n      () => replayStorage.markPendingHeatmapsReady(),\n      \"Error in heatmap inactivity\",\n    );\n  }\n};\n\nexport type CustomEvent =\n  | \"Sprig_PageView\"\n  | \"Sprig_TrackEvent\"\n  | \"Sprig_ShowSurvey\"\n  | \"Sprig_SubmitSurvey\"\n  | \"Sprig_Click\"\n  | \"Sprig_Keystroke\"\n  | \"Sprig_BackForward\"\n  | \"Sprig_Refresh\"\n  | \"Sprig_Scroll\"\n  | \"Sprig_Meta\"\n  | \"Sprig_ReplayPaused\"\n  | \"Sprig_ReplayResumed\";\n\nexport const recordCustomEvent = (name: CustomEvent, info: object) => {\n  if (\n    isReplayRecordingDisabled() ||\n    !replayState.isRecording ||\n    isReplayPaused()\n  )\n    return;\n  try {\n    window.rrwebRecord?.addCustomEvent?.(name, info);\n  } catch (err) {\n    disableRecording(\"Error recording custom event\", err);\n  }\n};\n\nexport const RecordPageView = (info: {\n  url: string;\n  pageTitle?: string;\n  description?: string;\n  referrer?: string;\n}) => {\n  if (info.description) {\n    info.description = cleanupText(info.description);\n  }\n  recordCustomEvent(\"Sprig_PageView\", info);\n};\n\nexport const RecordEvent = (info: { name: string; url?: string }) => {\n  recordCustomEvent(\"Sprig_TrackEvent\", info);\n};\n\nexport const RecordSurveyShown = (info: { id: number; userAgent: string }) => {\n  recordCustomEvent(\"Sprig_ShowSurvey\", info);\n};\n\nexport const RecordSurveyComplete = (info: {\n  id: number;\n  userAgent: string;\n}) => {\n  recordCustomEvent(\"Sprig_SubmitSurvey\", info);\n};\n\n// Update existing scroll event if exists, otherwise create new\nexport const recordOrUpdateScrollEvent = async (info: {\n  xPath: string;\n  x: number;\n  y: number;\n  elementAttributes: {\n    targetScrollHeight: number;\n    targetScrollWidth: number;\n    targetClientHeight: number;\n    targetClientWidth: number;\n  };\n}) => {\n  const { x: newX, xPath, y: newY } = info;\n  const scrollEventUuid = replayState.scrollEventUuids[xPath];\n\n  if (scrollEventUuid) {\n    return tryReplayAction(async () => {\n      const db = await replayStorage.openDB();\n      const scrollRecord = await db.get(\"events\", scrollEventUuid);\n\n      if (scrollRecord?.event) {\n        const eventJson = JSON.parse(scrollRecord.event);\n        const newXGreater = newX > eventJson.data?.payload?.x;\n        const newYGreater = newY > eventJson.data?.payload?.y;\n\n        if (!(newXGreater || newYGreater)) return null;\n        if (newXGreater) {\n          eventJson.data.payload.x = newX;\n        }\n        if (newYGreater) {\n          eventJson.data.payload.y = newY;\n        }\n        eventJson.data.payload.elementAttributes = info.elementAttributes;\n        scrollRecord.event = JSON.stringify(eventJson);\n\n        await db.put(\"events\", scrollRecord);\n      } else {\n        recordCustomEvent(\"Sprig_Scroll\", info);\n      }\n    }, \"Error updating scroll event\");\n  } else {\n    recordCustomEvent(\"Sprig_Scroll\", info);\n  }\n};\n\nexport const recordReplayPaused = () => {\n  recordCustomEvent(\"Sprig_ReplayPaused\", {\n    timestamp: Date.now(),\n  });\n  markReplayPaused();\n};\n\nexport const recordReplayResumed = () => {\n  markReplayResumed();\n  recordCustomEvent(\"Sprig_ReplayResumed\", {\n    timestamp: Date.now(),\n  });\n};\n\n// TEARDOWN ACTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nexport const isReplayRecording = () => replayState.isRecording;\n\nexport const teardownReplay = () => {\n  if (replayState.stopRecording) {\n    replayState.stopRecording();\n    replayState.stopRecording = undefined;\n  }\n  replayState.isRecording = false;\n  (\n    [\"cleanupInterval\", \"inactivityInterval\", \"pendingCheckInterval\"] as const\n  ).forEach((interval) => {\n    if (replayState[interval]) {\n      clearInterval(replayState[interval]);\n      replayState[interval] = undefined;\n    }\n  });\n  removeUserEventObserver();\n  requestChildIframeTeardown();\n};\n\nconst errorsToNotReport = [\n  \"did not allow mutations\",\n  \"called in an invalid security context\",\n];\n\nconst shouldReportErrorAndClearDb = (errMessage: string) => {\n  if (!errMessage) return true;\n  for (const currMessage of errorsToNotReport) {\n    if (errMessage.toLowerCase().includes(currMessage)) return false;\n  }\n  return true;\n};\n\nconst clearAndMarkDisabled = (\n  message: string,\n  error: unknown,\n  {\n    reportError = true,\n    extraInfo = {},\n  }: { reportError: boolean; extraInfo?: object },\n) => {\n  if (isReplayRecordingDisabled() || !(error instanceof Error)) {\n    return;\n  }\n  markReplayRecordingDisabled();\n  if (error.name === \"VersionError\") {\n    logger.error(\"VersionErr\", { message });\n    replayStorage.deleteDB();\n    return;\n  }\n\n  if (shouldReportErrorAndClearDb(error?.message)) {\n    if (reportError) {\n      window.UserLeap.reportError(message, error, extraInfo);\n    }\n    replayStorage.clearAll();\n  }\n};\n\nexport const disableRecording = (\n  message: string,\n  err: unknown,\n  { reportError } = { reportError: true },\n) => {\n  teardownReplay();\n  logger.error(\"ReplayErr\", {\n    code: (err as DOMException).code,\n    name: (err as DOMException).name,\n  });\n  clearAndMarkDisabled(message, err, { reportError });\n};\n\nexport const tryReplayAction = async (\n  action: () => void | Promise<unknown>,\n  errMessage: string,\n) => {\n  try {\n    return await action();\n  } catch (err) {\n    disableRecording(errMessage, err);\n  }\n};\n\n/**\n * Calls rrweb takeFullSnapshot to provide a new checkpoint to start replays\n * from. This ensures replay will not capture excess data from lookback for\n * after replays and heatmaps.\n * @returns nothing - adds full snapshot to event queue\n */\nexport const recordFullSnapshot = () => {\n  if (!replayState.isRecording) return;\n  tryReplayAction(\n    () => window.rrwebRecord?.takeFullSnapshot?.(true),\n    \"Error recording full snapshot\",\n  );\n  requestChildIframeFullSnapshot();\n};\n\n// WINDOW SPRIG ACTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nexport const _completeSessionReplay = async ({\n  surveyId,\n  responseGroupUuid,\n  eventDigest,\n  headers,\n}: {\n  surveyId: number;\n  responseGroupUuid: string;\n  eventDigest?: EventDigest[];\n  headers: Config[\"headers\"];\n}) => {\n  if (!surveyId || !responseGroupUuid) return false;\n\n  const apiUrl = window.UserLeap._API_URL;\n\n  const result = await markUploadComplete(\n    {\n      surveyId,\n      responseGroupUuid,\n      eventDigest,\n      apiUrl,\n      headers,\n    },\n    true,\n  );\n  if (result?.error) return false;\n  return true;\n};\n","import { openDB, DBSchema, deleteDB, IDBPTransaction } from \"idb\";\n\nimport { disableRecording, idbExists, sessionId } from \"./replayStorageHelpers\";\nimport {\n  RecordedEvent,\n  ChunkUpload,\n  PendingCapture,\n  ChunkStatus,\n} from \"./types\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\n\nconst DEFAULT_EXPIRED_AT_MINUTES = 30;\nconst VERSION = 1;\nlet outstandingTransactions = 0;\n\ninterface ReplayDBSchema extends DBSchema {\n  events: {\n    key: string; // uuid\n    value: RecordedEvent;\n    indexes: {\n      timestamp: number;\n      sessionId: string;\n      \"[sessionId+timestamp]\": [string, number];\n    };\n  };\n  chunkUploads: {\n    key: string; // uuid\n    value: ChunkUpload;\n    indexes: {\n      timestamp: number;\n      sessionId: string;\n      \"[sessionId+status]\": [string, string];\n      \"[uploadId+status]\": [string, string];\n      \"[sessionId+status+uploadId]\": [string, string, string];\n    };\n  };\n  pendingCaptures: {\n    key: string; // uuid\n    value: PendingCapture;\n    indexes: {\n      sessionId: string;\n      timestamp: number;\n      \"[sessionId+targetTimestamp]\": [string, number];\n    };\n  };\n}\n\nexport type StoreName = \"events\" | \"chunkUploads\" | \"pendingCaptures\";\n\nconst deleteOldDbs = async () => {\n  if (!idbExists()) return;\n  void Promise.allSettled([\n    deleteDB(\"replayStorage\"),\n    deleteDB(\"sprig.replay\"),\n  ]);\n};\n\n// Execute the cleanup\nvoid deleteOldDbs();\n\nclass ReplayIDB {\n  openDB() {\n    return openDB<ReplayDBSchema>(\"sprigReplay\", VERSION, {\n      upgrade: (db, oldVersion, newVersion) => {\n        // fresh version\n        if (newVersion === 0) {\n          // reset pending count since were starting with a clean slate\n          sessionStorageHelper.setItem(\"sprig.pendingCount\", \"0\");\n        }\n\n        if (!db.objectStoreNames.contains(\"events\")) {\n          const events = db.createObjectStore(\"events\", {\n            keyPath: \"uuid\",\n          });\n          events.createIndex(\"sessionId\", \"sessionId\");\n          events.createIndex(\"timestamp\", \"timestamp\");\n          events.createIndex(\"[sessionId+timestamp]\", [\n            \"sessionId\",\n            \"timestamp\",\n          ]);\n        }\n\n        if (!db.objectStoreNames.contains(\"chunkUploads\")) {\n          const chunkUploads = db.createObjectStore(\"chunkUploads\", {\n            keyPath: \"uuid\",\n          });\n          chunkUploads.createIndex(\"sessionId\", \"sessionId\");\n          chunkUploads.createIndex(\"timestamp\", \"timestamp\");\n          chunkUploads.createIndex(\"[sessionId+status]\", [\n            \"sessionId\",\n            \"status\",\n          ]);\n          chunkUploads.createIndex(\"[uploadId+status]\", [\"uploadId\", \"status\"]);\n          chunkUploads.createIndex(\"[sessionId+status+uploadId]\", [\n            \"sessionId\",\n            \"status\",\n            \"uploadId\",\n          ]);\n        }\n\n        if (!db.objectStoreNames.contains(\"pendingCaptures\")) {\n          const pendingCaptures = db.createObjectStore(\"pendingCaptures\", {\n            keyPath: \"uuid\",\n          });\n          pendingCaptures.createIndex(\"sessionId\", \"sessionId\");\n          pendingCaptures.createIndex(\"timestamp\", \"timestamp\");\n          pendingCaptures.createIndex(\"[sessionId+targetTimestamp]\", [\n            \"sessionId\",\n            \"targetTimestamp\",\n          ]);\n        }\n      },\n    });\n  }\n\n  wrapTransactionWithCounter = (\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    transaction: IDBPTransaction<any, any, any>,\n  ) => {\n    const configuredLimit = window.Sprig?._config?.outstandingTransactionLimit;\n    const transLimit = configuredLimit === undefined ? 100 : configuredLimit;\n    if (transLimit && outstandingTransactions > transLimit) {\n      const message = \"Too many outstanding transactions\";\n      disableRecording(message, new Error(message), { reportError: false });\n    }\n    outstandingTransactions++;\n    transaction.done.finally(() => {\n      outstandingTransactions--;\n    });\n  };\n\n  getTransaction = async <S extends StoreName>(storeName: S) => {\n    const db = await this.openDB();\n    const trans = db.transaction(storeName, \"readwrite\");\n    this.wrapTransactionWithCounter(trans);\n    return trans;\n  };\n\n  async deleteDB() {\n    try {\n      await deleteDB(\"sprigReplay\");\n    } catch {\n      // ignore\n    }\n  }\n\n  async bulkAdd<S extends StoreName>(\n    storeName: S,\n    data: ReplayDBSchema[S][\"value\"][],\n  ) {\n    const tx = await this.getTransaction(storeName);\n    return Promise.all([...data.map((d) => tx.store.add(d)), tx.done]);\n  }\n\n  async clearAll() {\n    const tx = (await this.openDB()).transaction(\n      [\"events\", \"chunkUploads\", \"pendingCaptures\"],\n      \"readwrite\",\n    );\n    this.wrapTransactionWithCounter(tx);\n    return Promise.all([\n      tx.objectStore(\"events\").clear(),\n      tx.objectStore(\"chunkUploads\").clear(),\n      tx.objectStore(\"pendingCaptures\").clear(),\n    ]);\n  }\n\n  async deleteBySessionId<S extends StoreName>(storeName: S, sid: string) {\n    const range = IDBKeyRange.only(sid);\n    const tx = await this.getTransaction(storeName);\n    const index = tx.store.index(\"sessionId\");\n\n    for await (const cursor of index.iterate(range)) {\n      await cursor.delete();\n    }\n    await tx.done;\n  }\n\n  async updatePartial<S extends StoreName>(\n    storeName: S,\n    keyValue: ReplayDBSchema[S][\"key\"],\n    data: Partial<ReplayDBSchema[S][\"value\"]>,\n  ) {\n    const tx = await this.getTransaction(storeName);\n\n    const record = await tx.store.get(keyValue);\n    if (record) await tx.store.put({ ...record, ...data });\n\n    await tx.done;\n  }\n\n  // events\n  async deleteRowsBefore<S extends StoreName>(\n    storeName: S,\n    time: number,\n    shouldDelete: (item: ReplayDBSchema[S][\"value\"]) => boolean = () => true,\n  ) {\n    const range = IDBKeyRange.upperBound(time, true); // below but not including time\n    const tx = await this.getTransaction(storeName);\n    const index = tx.store.index(\"timestamp\");\n\n    for await (const cursor of index.iterate(range)) {\n      if (shouldDelete(cursor.value)) await cursor.delete();\n    }\n    await tx.done;\n  }\n\n  async getEventsBetween(start: number, end: number = Date.now()) {\n    if (start >= end) return Promise.resolve([]);\n\n    const range = IDBKeyRange.bound(\n      [sessionId, start],\n      [sessionId, end],\n      false, // including start\n      true, // not including end\n    );\n\n    return (await this.openDB()).getAllFromIndex(\n      \"events\",\n      \"[sessionId+timestamp]\",\n      range,\n    );\n  }\n\n  async updateEventsExpiredAt(\n    start: number,\n    end: number,\n    expiredAtMinutes = DEFAULT_EXPIRED_AT_MINUTES,\n  ) {\n    const currentTime = new Date();\n    const expiredAtValue = currentTime.setMinutes(\n      currentTime.getMinutes() +\n        (expiredAtMinutes ?? DEFAULT_EXPIRED_AT_MINUTES),\n    );\n\n    const tx = await this.getTransaction(\"events\");\n    const index = tx.store.index(\"[sessionId+timestamp]\");\n\n    const range = IDBKeyRange.bound(\n      [sessionId, start],\n      [sessionId, end],\n      false, // including start\n      true, // not including end\n    );\n\n    for await (const cursor of index.iterate(range)) {\n      await cursor.update({ ...cursor.value, expiredAt: expiredAtValue });\n    }\n    await tx.done;\n  }\n\n  // chunk uploads\n  async deleteChunkUploads(status: ChunkStatus, uploadId: string) {\n    const range = IDBKeyRange.only([uploadId, status]);\n    const tx = await this.getTransaction(\"chunkUploads\");\n    const index = tx.store.index(\"[uploadId+status]\");\n\n    let cursor = await index.openCursor(range);\n    while (cursor) {\n      cursor.delete();\n      cursor = await cursor.continue();\n    }\n\n    await tx.done;\n  }\n\n  async getChunkUploadsByStatus({\n    sessionId: sid,\n    status,\n    uploadId,\n  }:\n    | {\n        sessionId?: never;\n        status: ChunkStatus;\n        uploadId: string;\n      }\n    | {\n        sessionId: string;\n        status: ChunkStatus;\n        uploadId?: never;\n      }) {\n    const db = await this.openDB();\n    const tx = db.transaction(\"chunkUploads\", \"readonly\");\n    this.wrapTransactionWithCounter(tx);\n\n    const index = uploadId\n      ? tx.store.index(\"[uploadId+status]\")\n      : tx.store.index(\"[sessionId+status]\");\n    const range = uploadId\n      ? IDBKeyRange.only([uploadId, status])\n      : IDBKeyRange.only([sid, status]);\n\n    return index.getAll(range);\n  }\n\n  // pending captures\n  async getPendingCaptures(\n    options: {\n      beforePresent?: boolean;\n      isHeatmap?: boolean;\n      isBeforeType?: boolean;\n    } = {},\n  ) {\n    const db = await this.openDB();\n    const sessionIDs = await db.getAllFromIndex(\n      \"pendingCaptures\",\n      \"sessionId\",\n      sessionId,\n    );\n\n    return sessionIDs\n      .filter((p) => !options.beforePresent || p.targetTimestamp < Date.now())\n      .filter(\n        (p) =>\n          !options.isBeforeType ||\n          p.captureParams.replayParams.replayDurationType === \"before\",\n      )\n      .filter(\n        (p) => !options.isHeatmap || (p.captureParams.isHeatmap ?? false),\n      );\n  }\n\n  async markPendingCaptureToCanUpload(responseGroupId: string) {\n    const tx = await this.getTransaction(\"pendingCaptures\");\n    const index = tx.store.index(\"sessionId\");\n\n    for await (const cursor of index.iterate(sessionId)) {\n      const value = cursor.value;\n      if (value.captureParams.responseGroupId === responseGroupId) {\n        await cursor.update({ ...value, canUpload: true });\n      }\n    }\n\n    await tx.done;\n  }\n\n  /**\n   * Update pending heatmaps to upload the next time pendingCaptures is checked\n   */\n  async markPendingHeatmapsReady(uuids?: string[]) {\n    const numCapturesPendingInt = parseInt(\n      sessionStorageHelper.getItem(\"sprig.pendingCount\") ?? \"0\",\n    );\n    if (numCapturesPendingInt === 0) return null;\n    const now = Date.now();\n\n    const tx = await this.getTransaction(\"pendingCaptures\");\n    const index = tx.store.index(\"sessionId\");\n\n    for await (const cursor of index.iterate(sessionId)) {\n      const value = cursor.value;\n      if (\n        value.captureParams.isHeatmap &&\n        (!uuids || uuids.includes(value.uuid))\n      ) {\n        await cursor.update({\n          ...value,\n          targetTimestamp: now,\n          captureParams: {\n            ...value.captureParams,\n            triggerTimestamp: now,\n            replayParams: {\n              ...value.captureParams.replayParams,\n              replayDurationSeconds: Math.floor((now - value.timestamp) / 1000),\n            },\n          },\n        });\n      }\n    }\n\n    await tx.done;\n  }\n}\n\nexport const replayStorage = new ReplayIDB();\n","import { EventType, IncrementalSource, type eventWithTime } from \"@rrweb/types\";\n\nimport { replayStorage } from \"./ReplayStorage\";\nimport { CustomEvent } from \"./replayStorageHelpers\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport { sprigFetch, Result, getHttpHeaders } from \"../../helpers/network\";\nimport { AppConfig } from \"../../types/config\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\n\nconst UPLOAD_INTERVAL_MAX_MS = 35 * 1000;\nconst eventBuffer: eventWithTime[] = [];\nlet uploadUrls: string[] = [];\nlet disabled = false;\nlet alwaysOnMetadata: AlwaysOnMetadata;\nlet apiUrl: string;\nlet currentIndex = 0;\nlet isInit = false;\nlet inUnload = false;\nlet pendingUrlPromiseResolvers: ((url: string | undefined) => void)[] = [];\nlet isUrlRequestInflight = false;\nlet expirationTimestamp: number;\nlet maxDurationSeconds: number;\nlet triggerSnapshotAction: () => void;\nlet interval: number;\ntype AlwaysOnMetadata = Omit<AlwaysOnInitConfig, \"maxDurationSeconds\">;\n\ninterface MetaCustomEventPayload extends AlwaysOnMetadata {\n  visitorId: string;\n  timestamp: number;\n  index: number;\n  customMetadata?: AppConfig[\"customMetadata\"];\n}\n\nexport interface AlwaysOnInitConfig {\n  responseGroupUuid: string;\n  surveyId: number;\n  userAgent: string;\n  sdkVersion: string;\n  maxDurationSeconds: number;\n}\n\ninterface StoredAlwaysOnInfo {\n  disabled: boolean;\n  metadata: AlwaysOnMetadata;\n  uploadUrls: string[];\n  currentIndex: number;\n  expirationTimestamp: number;\n  pendingEventTimestamp?: number;\n}\n\nexport const isAlwaysOnActive = () => {\n  return isInit && !disabled && Date.now() <= expirationTimestamp;\n};\n\nexport const initAlwaysOn = ({\n  apiUrl: sprigApiUrl,\n  config,\n  triggerSnapshot,\n  forceInit = false,\n}: {\n  apiUrl: string;\n  config: AlwaysOnInitConfig;\n  triggerSnapshot: () => void;\n  forceInit?: boolean;\n}) => {\n  if (isInit && !forceInit) return;\n  if (!sessionStorageHelper.isStorageAvailable) {\n    disabled = true;\n    return;\n  }\n  uploadUrls = [];\n  pendingUrlPromiseResolvers.splice(0);\n  eventBuffer.splice(0);\n  currentIndex = 0;\n  triggerSnapshotAction = triggerSnapshot;\n  apiUrl = sprigApiUrl;\n  alwaysOnMetadata = {\n    responseGroupUuid: config.responseGroupUuid,\n    surveyId: config.surveyId,\n    userAgent: config.userAgent,\n    sdkVersion: config.sdkVersion,\n  };\n  maxDurationSeconds = config.maxDurationSeconds;\n\n  // Read any stored session state, then fetch upload URLs if we have none\n  readStoredAlwaysOnInfo();\n  if (!isInit) {\n    interval = window.setInterval(periodicActionCheck, 500);\n  }\n  isInit = true;\n};\n\nconst userInteractionSources: IncrementalSource[] = [\n  IncrementalSource.Drag,\n  IncrementalSource.Input,\n  IncrementalSource.MediaInteraction,\n  IncrementalSource.MouseInteraction,\n  IncrementalSource.MouseMove,\n  IncrementalSource.Scroll,\n  IncrementalSource.Selection,\n  IncrementalSource.TouchMove,\n];\n\nconst isEventUserInteraction = (e: eventWithTime) => {\n  return (\n    e.type === EventType.Custom ||\n    (e.type === EventType.IncrementalSnapshot &&\n      userInteractionSources.includes(e.data.source))\n  );\n};\n\nconst shouldUploadEventBuffer = (events: eventWithTime[]) => {\n  return events.some(isEventUserInteraction);\n};\n\n/**\n * This does two things\n * 1. Periodically checks if we need to request more urls\n *\n * 2. rrweb emits no events during inactivity, this means even the configured\n * periodic 30 second checkout will not happen until there is user activity of dom changes\n * AFTER 30 seconds.\n *\n * As a result we have to prompt it to do so as long as we have some content in the array buffer to\n * ensure periodic uploads.\n */\nconst periodicActionCheck = async () => {\n  if (!isAlwaysOnActive()) {\n    window.clearInterval(interval);\n    return;\n  }\n  fetchUrlsIfNeeded();\n  if (!shouldUploadEventBuffer(eventBuffer)) {\n    // In this case the whole array is basically empty, it has no user actions or changes, just a meta event and full snapshot\n    return;\n  }\n  const firstTimestamp = eventBuffer[0].timestamp;\n  const timeSinceFirstEvent = Date.now() - firstTimestamp;\n  if (timeSinceFirstEvent > UPLOAD_INTERVAL_MAX_MS) triggerSnapshotAction?.();\n};\n\n/**\n * Fetches more urls if we are out of them, and resolves any promises waiting for more\n */\nconst fetchUrlsIfNeeded = async () => {\n  if (uploadUrls.length || isUrlRequestInflight) return;\n  isUrlRequestInflight = true;\n  const urls = await fetchUploadUrls();\n  if (!urls) {\n    disabled = true;\n    return;\n  }\n  const promisesToFulfill = pendingUrlPromiseResolvers.splice(0, urls.length);\n  promisesToFulfill.forEach((resolve) => resolve(urls.shift()));\n  urls.forEach((u) => uploadUrls.push(u));\n  isUrlRequestInflight = false;\n};\n\n/**\n * Reads always-on state from sessionStorage and initiates an upload\n * if the state shows that we had a pending upload\n */\nconst readStoredAlwaysOnInfo = () => {\n  //TODO handle not being able to access sessionStorage\n  const info = sessionStorageHelper.getItem(\"sprig.alwayson.info\");\n  if (info) {\n    logger.info(\"Read stored session state\", info);\n    const storedState = JSON.parse(info) as StoredAlwaysOnInfo;\n    disabled = storedState.disabled;\n    alwaysOnMetadata = storedState.metadata;\n    uploadUrls = storedState.uploadUrls;\n    currentIndex = storedState.currentIndex;\n    expirationTimestamp = storedState.expirationTimestamp;\n    if (storedState.pendingEventTimestamp) {\n      logger.info(\n        `Uploading with pending timestamp: ${storedState.pendingEventTimestamp}`,\n      );\n      uploadPendingEventsFromTime(storedState.pendingEventTimestamp);\n    }\n  } else {\n    expirationTimestamp = maxDurationSeconds * 1000 + Date.now();\n  }\n};\n\n/**\n * Causes all events in IDB from the provided timestamp to Date.now() to\n * be uploaded as an always-on replay file\n */\nconst uploadPendingEventsFromTime = async (timestamp: number) => {\n  const now = Date.now();\n  const storedEvents = await replayStorage.getEventsBetween(timestamp, now);\n  const parsedEvents: eventWithTime[] = storedEvents.map((e) =>\n    JSON.parse(e.event),\n  );\n  if (!shouldUploadEventBuffer(parsedEvents)) return;\n  insertMetaEvent(parsedEvents);\n  const url = await getUploadUrl();\n  if (!url) return;\n  await uploadWithUrl(url, parsedEvents);\n};\n\n/**\n * Writes the current always-on state to sessionStorage.\n * To be done during page unload.\n */\nconst storeSessionInfo = () => {\n  //TODO handle not being able to access sessionStorage\n  let pendingEventTimestamp = undefined;\n  if (eventBuffer.length) {\n    pendingEventTimestamp = eventBuffer[0].timestamp;\n  }\n  const info: StoredAlwaysOnInfo = {\n    disabled,\n    metadata: alwaysOnMetadata,\n    uploadUrls,\n    currentIndex,\n    pendingEventTimestamp,\n    expirationTimestamp,\n  };\n  logger.info(\"Storing session state on unload\", info);\n  sessionStorageHelper.setItem(\"sprig.alwayson.info\", JSON.stringify(info));\n};\n\n/**\n * Similar to logic in replayController for compressing an array of events and\n * encoding for upload to s3. Could probably be factored out to be shared\n */\nconst compressEventArray = async (events: eventWithTime[]) => {\n  const encoder = new TextEncoder();\n  const cs: CompressionStream = new CompressionStream(\"gzip\");\n  const writer: WritableStreamDefaultWriter = cs.writable.getWriter();\n  const bufferArray = encoder.encode(JSON.stringify(events));\n  writer.write(bufferArray);\n  writer.close();\n  return new Uint8Array(await new Response(cs.readable).arrayBuffer());\n};\n\n/**\n * Helper that attempts the provided delegate, and if it throws disables Always-on replay\n * @param action The async action to atttempt\n * @param description Description that could show up in error messages in sentry\n * @returns\n */\nconst tryAndDisableOnFailure = async (\n  action: () => Promise<Result>,\n  description: string,\n) => {\n  try {\n    const result = await action();\n    if (!result.ok) throw new Error(`Error ${description}`);\n    return result;\n  } catch (err) {\n    disabled = true;\n  }\n};\n\n/**\n * Compresses the provided event array and uplaods to the provided URL with a PUT request\n * @param url\n * @param events\n */\nconst uploadWithUrl = async (url: string, events: eventWithTime[]) => {\n  if (!isAlwaysOnActive() || !url) return;\n  const data = await compressEventArray(events);\n  logger.info(\"Uploading always-on events with presigned url\");\n  await tryAndDisableOnFailure(\n    () =>\n      sprigFetch(url, {\n        body: data,\n        method: \"PUT\",\n      }),\n    \"uploading always-on with presigned url\",\n  );\n};\n\n/**\n * Fetches more presigned s3 upload urls from the API\n */\nconst fetchUploadUrls = async (): Promise<string[] | undefined> => {\n  if (!isAlwaysOnActive()) return;\n  const { surveyId, responseGroupUuid } = alwaysOnMetadata;\n  const body = {\n    responseGroupUuid,\n    surveyId,\n    index: currentIndex + 1,\n  };\n  logger.info(\"Fetching always-on upload urls\", body);\n  const res = await tryAndDisableOnFailure(\n    () =>\n      sprigFetch(`${apiUrl}/sdk/1/replayUrls`, {\n        method: \"POST\",\n        body: JSON.stringify(body),\n        headers: getHttpHeaders(window.UserLeap),\n      }),\n    \"fetching always-on signed urls\",\n  );\n  if (!res) return;\n  const urls = res.json.signedUrls;\n  logger.info(\"Fetched more always-on upload urls\", { body, urls });\n  return urls;\n};\n\n/**\n * Gets an upload URL. If we have none buffered then make a request to the API for more\n * if a request is already inflight, just await it.\n * @returns a presigned upload url string for s3\n */\nconst getUploadUrl = async (): Promise<string | undefined> => {\n  if (uploadUrls.length) return uploadUrls.shift();\n  const promise = new Promise<string | undefined>((res) => {\n    pendingUrlPromiseResolvers.push(res);\n  });\n  fetchUrlsIfNeeded();\n  return promise;\n};\n\nconst uploadArray = async () => {\n  const events = eventBuffer.splice(0);\n  if (!shouldUploadEventBuffer(events)) return;\n  logger.info(\"Capturing always-on event array to upload\");\n  insertMetaEvent(events);\n  const url = await getUploadUrl();\n  if (!url) return;\n  await uploadWithUrl(url, events);\n};\n\n/**\n * Inserts a custom meta event into the provided array. These meta\n * events are used to pass extra information about the replay to the lambda\n */\nconst insertMetaEvent = (array: eventWithTime[]) => {\n  const timestamp = array.length\n    ? array[array.length - 1].timestamp\n    : Date.now();\n  const index = currentIndex;\n  const customMetadata =\n    window.UserLeap?.config?.customMetadata ?? window.__cfg?.customMetadata;\n  currentIndex++;\n  array.push({\n    timestamp,\n    type: EventType.Custom,\n    data: {\n      tag: \"Sprig_Meta\" satisfies CustomEvent,\n      payload: {\n        ...alwaysOnMetadata,\n        index,\n        visitorId: window.UserLeap.visitorId ?? \"\",\n        timestamp,\n        customMetadata,\n      } satisfies MetaCustomEventPayload,\n    },\n  });\n};\n\nconst handleUnload = async () => {\n  inUnload = true;\n  if (!isAlwaysOnActive()) return;\n  logger.info(\"Always On handle page unload\");\n  storeSessionInfo();\n};\n\nexport const handleEvent = (\n  isValidFirstEvent: boolean,\n  event: eventWithTime,\n) => {\n  if (\n    !isAlwaysOnActive() ||\n    inUnload ||\n    (!isValidFirstEvent && !eventBuffer.length)\n  ) {\n    return;\n  }\n  // Whenever we get a new full snapshot, upload the current buffer\n  // This should happen every 30 seconds\n  if (isValidFirstEvent && eventBuffer.length) {\n    uploadArray();\n  }\n  eventBuffer.push(event);\n};\n\nwindow.addEventListener(\"beforeunload\", handleUnload);\n","import { PerformanceMetrics, registerMetric } from \"./metricsReporter\";\nimport { Metric } from \"./performanceMetric\";\n\nexport const timeAndReportAsyncAction = async <T>(\n  action: () => Promise<T>,\n  name: Metric,\n) => {\n  const start = performance.now();\n  let res: T;\n  try {\n    res = await action();\n  } finally {\n    const diff = performance.now() - start;\n    let metric = PerformanceMetrics[name];\n    if (!metric) {\n      metric = registerMetric(name);\n    }\n    metric.report(diff / 1000.0); // convert to seconds\n  }\n  return res;\n};\n\nexport const timeAndReportAction = (action: () => void, name: Metric) => {\n  const start = performance.now();\n  try {\n    action();\n  } finally {\n    const diff = performance.now() - start;\n    let metric = PerformanceMetrics[name];\n    if (!metric) {\n      metric = registerMetric(name);\n    }\n    metric.report(diff / 1000.0); // convert to seconds\n  }\n};\n","import { EventType } from \"@rrweb/types\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n  AlwaysOnInitConfig,\n  handleEvent,\n  initAlwaysOn,\n  isAlwaysOnActive,\n} from \"./alwaysOnController\";\nimport { initIframeManager } from \"./iframeManager\";\nimport { initializeNetwork, markUploadComplete, uploadChunk } from \"./network\";\nimport { replayStorage } from \"./ReplayStorage\";\nimport {\n  checkIDBNotSupported,\n  disableRecording,\n  isReplayRecordingDisabled,\n  markReplayRecordingDisabled,\n  recordCustomEvent,\n  recordFullSnapshot,\n  recordOrUpdateScrollEvent,\n  RecordSurveyComplete,\n  replayState,\n  sessionId,\n  teardownReplay,\n  trackHeatmapInactivity,\n  tryReplayAction,\n  isReplayPaused,\n} from \"./replayStorageHelpers\";\nimport {\n  ChunkUpload,\n  ChunkUploadInfo,\n  HeatmapCaptureParams,\n  PendingCapture,\n  RecordedEvent,\n  ReplayCaptureParams,\n} from \"./types\";\nimport { initUserEventObserver } from \"./userEventObserver\";\nimport { SprigEvent } from \"../../constants/sprigEvents\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport eventEmitter from \"../../helpers/eventEmitter\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\nimport { reportAndRegister } from \"../../helpers/metrics/metricsReporter\";\nimport {\n  timeAndReportAction,\n  timeAndReportAsyncAction,\n} from \"../../helpers/metrics/timedActionMetric\";\n\nlet replayTimeThreshold = 5000;\nlet replayBatchDuration = 60000;\nlet lastEventTimestamp = 0;\n\nconst REPLAY_LOOKBACK_BUFFER_SECONDS = 5;\nconst REPLAY_CHECKOUT_INTERVAL_SECONDS = 30;\nconst REPLAY_EVENT_LOOKBACK_SECONDS =\n  REPLAY_CHECKOUT_INTERVAL_SECONDS + REPLAY_LOOKBACK_BUFFER_SECONDS;\n\nlet numCapturesPendingStr: string | null;\nlet awaitingThrottledEventInsert = false;\nlet eventsToInsert: RecordedEvent[] = [];\n\nexport const initializeReplay = async ({\n  maxReplayDurationSeconds,\n  maxInflightRequests = 2,\n  replaySettings,\n  teardownAfter = false,\n  apiUrl,\n  alwaysOnConfig,\n}: {\n  maxReplayDurationSeconds: number;\n  maxInflightRequests?: number;\n  replaySettings?: {\n    batchDuration?: number;\n    minAvailableGb?: number;\n    minDuration?: number;\n  };\n  teardownAfter?: boolean;\n  apiUrl: string;\n  alwaysOnConfig?: AlwaysOnInitConfig;\n}) => {\n  if (alwaysOnConfig) {\n    initAlwaysOn({\n      apiUrl,\n      config: alwaysOnConfig,\n      triggerSnapshot: () => {\n        recordFullSnapshot();\n      },\n    });\n  }\n  numCapturesPendingStr = sessionStorageHelper.getItem(\"sprig.pendingCount\");\n  if (replayState.isRecording) return;\n  if (teardownAfter)\n    sessionStorageHelper.setItem(\"sprig.teardownAfterCapture\", \"true\");\n  if (isReplayRecordingDisabled()) return logger.debug(\"ReplayDisabled\");\n\n  if (await checkIDBNotSupported()) {\n    logger.debug(\"IDBNotSupported\");\n    return markReplayRecordingDisabled();\n  }\n  try {\n    const db = await replayStorage.openDB();\n    logger.info(\"DBVersion\", { version: db.version });\n  } catch (err) {\n    // Generally DomException would happen if a store already exists and you try to create it again, similar thing with indexes\n    // Or with if there's a version error or if the disk is full\n    /* c8 ignore start */\n    logger.error(\"ReplayOpenErr\", { name: (err as DOMException).name });\n    if ((err as DOMException).name === \"VersionError\") {\n      replayStorage.deleteDB();\n    }\n    return markReplayRecordingDisabled();\n    /* c8 ignore stop */\n  }\n\n  tryReplayAction(async () => {\n    await uploadReadyPendingCaptures(true);\n  }, \"Error uploading ready pending captures\");\n\n  const alwaysOnLookback = isAlwaysOnActive()\n    ? REPLAY_CHECKOUT_INTERVAL_SECONDS\n    : 0;\n  const recordingDuration = Math.max(\n    maxReplayDurationSeconds ?? 0,\n    alwaysOnLookback,\n  );\n  if (!recordingDuration) return logger.debug(\"MissingDuration\");\n\n  logger.debug(\"ReplayInit\");\n  await tryReplayAction(async () => {\n    if (replaySettings?.minDuration)\n      replayTimeThreshold = replaySettings.minDuration;\n\n    if (replaySettings?.batchDuration)\n      replayBatchDuration = replaySettings.batchDuration;\n\n    initializeNetwork(maxInflightRequests);\n\n    // Resume any uploads in progress\n    uploadAllUnfinishedChunks();\n    startPeriodicDataCleanup(\n      recordingDuration + REPLAY_EVENT_LOOKBACK_SECONDS,\n      30 * 60,\n      recordingDuration + REPLAY_EVENT_LOOKBACK_SECONDS,\n    );\n    intervalCheckForPendingCaptures();\n\n    const replayLibraryUrl =\n      window.UserLeap.replayLibraryURL ??\n      `${import.meta.env.VITE_CDN}/dependencies/record-2.0.0-alpha.17.min.js`;\n\n    /* c8 ignore start */\n    if (!__NPM_BUNDLED___) {\n      if (!window.rrwebRecord) {\n        const { record } = await import(\n          /* webpackIgnore: true */ /* @vite-ignore */\n          replayLibraryUrl\n        );\n        window.rrwebRecord = record;\n      }\n    }\n    const record = window.rrwebRecord;\n    if (!record) return logger.error(\"RecordScriptFailed\");\n    /* c8 ignore stop */\n\n    let isFirstEvent = true;\n    let lastMetaEventTimestamp = 0;\n    const settings: Partial<Parameters<typeof record>[0]> = {\n      checkoutEveryNms: REPLAY_CHECKOUT_INTERVAL_SECONDS * 1000,\n      sampling: {\n        input: \"last\",\n        scroll: 250,\n        media: 800,\n      },\n      ...replaySettings,\n    };\n    replayState.stopRecording = record({\n      emit: (event, isCheckout) => {\n        if (event.type === EventType.Custom) lastEventTimestamp = Date.now();\n\n        if (isReplayRecordingDisabled() || isReplayPaused()) return;\n        // Type 4 is a meta event\n        if (isCheckout && event.type === EventType.Meta) {\n          lastMetaEventTimestamp = performance.now();\n        } else if (\n          isCheckout &&\n          lastMetaEventTimestamp &&\n          event.type === EventType.FullSnapshot\n        ) {\n          const msElapsed = performance.now() - lastMetaEventTimestamp;\n          reportAndRegister(\"sdk_replay_snapshot_seconds\", msElapsed / 1000.0);\n        }\n        const isValidStart =\n          isFirstEvent || (!!isCheckout && event.type === EventType.Meta);\n        isFirstEvent = false;\n        handleEvent(isValidStart, event);\n        throttledInsertEvents({\n          uuid: uuid(),\n          event: JSON.stringify(event),\n          isValidStart,\n          timestamp: Date.now(),\n        });\n      },\n      ...settings,\n    }) as () => void;\n\n    // stopRecording will be undefined if the record function failed\n    replayState.isRecording = !!replayState.stopRecording;\n\n    // return early if recording has not yet started\n    if (!replayState.isRecording) return;\n\n    // listen for iframe load events and return the library url and settings\n    initIframeManager(settings, replayLibraryUrl);\n\n    eventEmitter.on(\"survey.complete\", (surveyId) => {\n      RecordSurveyComplete({\n        id: surveyId,\n        userAgent: window.navigator.userAgent,\n      });\n    });\n    initUserEventObserver(recordCustomEvent, recordOrUpdateScrollEvent);\n  }, \"Error initializing replay\");\n};\n\nconst throttledInsertEvents = (event: RecordedEvent) => {\n  if (event.event?.includes(\"Sprig_Scroll\")) {\n    const xPath = JSON.parse(event.event)?.data?.payload?.xPath;\n    if (!xPath) return;\n    replayState.scrollEventUuids[xPath] = event.uuid;\n  }\n  eventsToInsert.push(event);\n  if (!awaitingThrottledEventInsert) scheduleEventInsertion();\n};\n\nexport const batchStoreEvents = async (events: RecordedEvent[]) => {\n  const populatedEvents = events.map((currEvent) => {\n    return {\n      ...currEvent,\n      sessionId: currEvent.sessionId ?? sessionId,\n    };\n  });\n  if (populatedEvents.length === 0) return;\n\n  return tryReplayAction(\n    () => replayStorage.bulkAdd(\"events\", populatedEvents),\n    \"Error storing replay events\",\n  );\n};\n\nconst scheduleEventInsertion = () => {\n  awaitingThrottledEventInsert = true;\n  setTimeout(async () => {\n    if (isReplayRecordingDisabled() || isReplayPaused()) return;\n    const events = eventsToInsert;\n    eventsToInsert = [];\n    awaitingThrottledEventInsert = false;\n    timeAndReportAction(async () => {\n      await batchStoreEvents(events);\n    }, \"sdk_replay_add_event_batch_seconds\");\n  }, 500);\n};\n\nconst startPeriodicDataCleanup = (\n  cleanupEventSeconds: number,\n  cleanupChunkSeconds: number,\n  cleanupPendingCaptureSeconds: number,\n) => {\n  replayState.cleanupInterval = window.setInterval(() => {\n    const time = Date.now();\n\n    timeAndReportAsyncAction(\n      () =>\n        tryReplayAction(async () => {\n          if (isReplayRecordingDisabled()) return;\n          await Promise.all([\n            replayStorage.deleteRowsBefore(\n              \"events\",\n              time - cleanupEventSeconds * 1000,\n              (item: RecordedEvent) =>\n                item.expiredAt === undefined ||\n                item.expiredAt < time - cleanupEventSeconds * 1000,\n            ),\n            replayStorage.deleteRowsBefore(\n              \"chunkUploads\",\n              time - cleanupChunkSeconds * 1000,\n            ),\n            replayStorage.deleteRowsBefore(\n              \"pendingCaptures\",\n              time - cleanupPendingCaptureSeconds * 1000,\n              (item: PendingCapture) => !item.canUpload,\n            ),\n          ]);\n        }, \"Error deleting table rows\"),\n      \"sdk_replay_cleanup_seconds\",\n    );\n    logger.debug(\"CleanupComplete\");\n  }, 30_000);\n};\n\nconst intervalCheckForPendingCaptures = () => {\n  replayState.pendingCheckInterval = window.setInterval(async () => {\n    tryReplayAction(async () => {\n      await uploadReadyPendingCaptures();\n    }, \"Error initiating pending captures\");\n  }, 5000);\n};\n\nlet isCheckingPendingCaptures = false;\n\n// Get pending captures that have passed targetTimestamp, upload them, and remove from pendingCaptures\nexport const uploadReadyPendingCaptures = async (isBeforeType = false) => {\n  if (isCheckingPendingCaptures) {\n    return;\n  }\n  try {\n    isCheckingPendingCaptures = true;\n    const numCapturesPendingInt = parseInt(numCapturesPendingStr ?? \"0\");\n    if (numCapturesPendingInt === 0) return;\n\n    // get pending captures that are ready to be upload when time exceed capture time and has marked can upload\n    const readyCaptures = await replayStorage.getPendingCaptures({\n      beforePresent: true,\n      isBeforeType,\n    });\n\n    const db = await replayStorage.openDB();\n    await Promise.all(\n      readyCaptures.map(async (c) => {\n        await db.delete(\"pendingCaptures\", c.uuid);\n        return scheduleOrCaptureReplay(c.captureParams, c.canUpload);\n      }),\n    );\n    numCapturesPendingStr = (\n      numCapturesPendingInt - readyCaptures.length\n    ).toString();\n    sessionStorageHelper.setItem(\"sprig.pendingCount\", numCapturesPendingStr);\n  } finally {\n    isCheckingPendingCaptures = false;\n  }\n};\n\nconst getEventsBatch = async (\n  start: number,\n  targetBeginning: number,\n  targetEnd: number,\n  validStartFound: boolean,\n  batchDuration: number,\n) => {\n  const end = Math.min(start + batchDuration, targetEnd);\n  const events = await timeAndReportAsyncAction(\n    () => replayStorage.getEventsBetween(start, end),\n    \"sdk_replay_get_events_between_seconds\",\n  );\n\n  if (!events?.length) {\n    logger.debug(\"NoEventsFound\");\n    return { validStartFound, events: [] };\n  }\n  if (!validStartFound) {\n    logger.debug(\"ValidStartSearch\");\n    let replayStartIndex = -1;\n    events?.forEach((ev, index) => {\n      if (!ev.isValidStart) return;\n      const isBeforeTargetBeginning = ev.timestamp <= targetBeginning;\n      if (replayStartIndex < 0 || isBeforeTargetBeginning) {\n        replayStartIndex = index;\n      }\n    });\n    if (replayStartIndex < 0) {\n      logger.debug(\"ValidStartNotFound\");\n      return { validStartFound, events: [] };\n    }\n    return { validStartFound: true, events: events?.slice(replayStartIndex) };\n  }\n  return { validStartFound, events };\n};\n\nconst getFileChunks = (\n  fileData: Uint8Array,\n  minChunkSizeMb: number,\n  numAllocatedChunks: number,\n) => {\n  const fileSizeBytes = fileData.length;\n  // This is the minimum chunk size supported by s3 in bytes\n  const minChunkBytes = minChunkSizeMb * 1024 * 1024;\n  // This would be the chunk size if the file size were divided evenly between the preallocated chunk urls\n  const equallyDividedChunkSize = Math.ceil(fileSizeBytes / numAllocatedChunks);\n  // Our target chunk size is the max of these values\n  const chunkSizeBytes = Math.max(minChunkBytes, equallyDividedChunkSize);\n\n  const chunks = [];\n  let index = 0;\n  while (index < fileSizeBytes) {\n    chunks.push(fileData.slice(index, index + chunkSizeBytes));\n    index += chunkSizeBytes;\n  }\n  return chunks;\n};\n\nconst uploadChunks = (chunks: ChunkUpload[]) => {\n  return Promise.all(\n    chunks.map(async (chunk) => {\n      const etag = await uploadChunk(chunk);\n\n      await replayStorage.updatePartial(\"chunkUploads\", chunk.uuid, {\n        data: null,\n        etag: etag,\n        status: \"UploadComplete\",\n      });\n\n      return chunk.uploadId;\n    }),\n  );\n};\n\nconst markUploadCompleteIfFinished = async (uploadId: string) => {\n  const chunksForUpload = await replayStorage.getChunkUploadsByStatus({\n    status: \"UploadComplete\",\n    uploadId,\n  });\n  if (!chunksForUpload?.length) {\n    logger.info(\"NoChunksForUpload\", { uploadId });\n    return;\n  }\n\n  // prevent potential chunks with duplicate chunkIndex/partNumber\n  const dedupedChunks = chunksForUpload.reduce((acc, curr) => {\n    if (!acc.find((e) => e.chunkIndex === curr.chunkIndex)) {\n      acc.push(curr);\n    }\n    return acc;\n  }, [] as ChunkUpload[]);\n  dedupedChunks.sort((c1, c2) => c1.chunkIndex - c2.chunkIndex);\n\n  const etags = dedupedChunks\n    .map((c) => ({ ETag: c.etag, PartNumber: c.chunkIndex }))\n    .filter((c): c is ChunkUploadInfo => c.ETag !== null);\n  const chunk = dedupedChunks[0];\n\n  await markUploadComplete({\n    apiUrl: chunk.apiUrl,\n    surveyId: chunk.surveyId,\n    uploadId,\n    responseGroupUuid: chunk.responseGroupId,\n    etags,\n    headers: chunk.completeUploadHeaders,\n    replayDuration: chunk.replayDuration,\n  });\n\n  await replayStorage.deleteChunkUploads(\"UploadComplete\", uploadId);\n};\n\nconst uploadAllUnfinishedChunks = () => {\n  tryReplayAction(async () => {\n    const unfinishedChunks = await replayStorage.getChunkUploadsByStatus({\n      sessionId,\n      status: \"ReadyForUpload\",\n    });\n\n    if (!unfinishedChunks?.length) return;\n    const finishedUploadIds = await uploadChunks(unfinishedChunks);\n\n    if (finishedUploadIds?.length) {\n      await Promise.all(\n        finishedUploadIds.map((id) => {\n          if (id) return markUploadCompleteIfFinished(id);\n        }),\n      );\n    }\n  }, \"Error uploading unfinished chunks\");\n};\n\nconst uploadChunksAndMarkComplete = async (\n  uploadIds: string[],\n  chunks: ChunkUpload[],\n) => {\n  await uploadChunks(chunks);\n  await Promise.all(uploadIds.map((id) => markUploadCompleteIfFinished(id)));\n};\n\nconst getEvents = async (targetBeginning: number, targetEnd: number) => {\n  const encoder = new TextEncoder();\n  let fileData: Uint8Array | null = null;\n  const cs: CompressionStream = new CompressionStream(\"gzip\");\n  const writer: WritableStreamDefaultWriter = cs.writable.getWriter();\n  let written = false;\n  let validStartFound = false;\n  let [firstEventTime, lastEventTime] = [0, 0];\n  const eventsStart = targetBeginning - REPLAY_EVENT_LOOKBACK_SECONDS * 1000;\n  let events: RecordedEvent[] = [];\n\n  for (\n    let start = eventsStart;\n    start < targetEnd;\n    start += replayBatchDuration\n  ) {\n    ({ validStartFound, events } = await getEventsBatch(\n      start,\n      targetBeginning,\n      targetEnd,\n      validStartFound,\n      replayBatchDuration,\n    ));\n\n    if (!events?.length) {\n      logger.debug(\"NoEventsFound\");\n      continue;\n    }\n    if (firstEventTime === 0) {\n      firstEventTime = events[0].timestamp;\n    }\n    lastEventTime = events[events.length - 1].timestamp;\n\n    const eventStrs = events.map((e: RecordedEvent) => e.event);\n    eventStrs.push(`{\"timestamp\":${targetEnd}}`);\n    const combinedJson = `${written ? \",\" : \"[\"}${eventStrs}`;\n\n    const bufferArray = encoder.encode(combinedJson);\n    timeAndReportAction(() => {\n      writer.write(bufferArray);\n    }, \"sdk_replay_compression_seconds\");\n    written = true;\n  }\n\n  if (lastEventTime - firstEventTime < replayTimeThreshold) {\n    logger.debug(\"ReplayTooShort\");\n    return null;\n  }\n\n  const encodedCloseBrace = encoder.encode(\"]\");\n  writer.write(encodedCloseBrace);\n  writer.close();\n  fileData = new Uint8Array(await new Response(cs.readable).arrayBuffer());\n  return fileData;\n};\n\nconst getFileData = async (replayDuration: number, end?: number) => {\n  const targetEnd = end ?? Date.now();\n  const targetBeginning = targetEnd - replayDuration;\n\n  return getEvents(targetBeginning, targetEnd);\n};\n\nconst getFileChunkAndUpload = async (args: ReplayCaptureParams) => {\n  const {\n    surveyId,\n    responseGroupId,\n    visitorId,\n    apiUrl,\n    completeUploadHeaders,\n    replayParams,\n    triggerTimestamp,\n  } = args;\n  const fileData = await getFileData(\n    replayParams.replayDurationSeconds * 1000,\n    triggerTimestamp,\n  );\n  if (!fileData?.length) {\n    logger.info(\"FileDataEmpty\", { surveyId });\n    return;\n  }\n  const chunks = getFileChunks(\n    fileData,\n    replayParams.minimumChunkSizeMb,\n    replayParams.signedUrls.length,\n  );\n\n  const chunksToUpload = await Promise.all(\n    chunks.map(async (chunk, index) => {\n      const id = uuid();\n      const chunkToUpload: ChunkUpload = {\n        apiUrl,\n        chunkIndex: index + 1,\n        completeUploadHeaders,\n        etag: null,\n        responseGroupId,\n        status: \"ReadyForUpload\",\n        surveyId,\n        timestamp: triggerTimestamp,\n        totalChunks: chunks.length,\n        data: chunk,\n        uploadId: replayParams.uploadId,\n        uploadUrl: replayParams.signedUrls[index].url,\n        uuid: id,\n        visitorId,\n      };\n\n      const db = await replayStorage.openDB();\n      await db.add(\"chunkUploads\", {\n        ...chunkToUpload,\n        sessionId: chunkToUpload.sessionId ?? sessionId,\n      });\n      return chunkToUpload;\n    }),\n  );\n\n  await uploadChunksAndMarkComplete([replayParams.uploadId], chunksToUpload);\n};\n\n// also used when displaying questions in the top level controller\nexport const scheduleOrCaptureReplay = async (\n  args: ReplayCaptureParams,\n  canUpload?: boolean,\n) => {\n  if (isReplayRecordingDisabled())\n    return logger.debug(\"ReplayDisabled-ScheduleOrCapture\");\n\n  const {\n    isHeatmap,\n    isStandalone,\n    replayParams,\n    triggerTimestamp,\n    responseGroupId,\n  } = args;\n\n  // set up listener to listen for question being answered for after, before/after capture\n  // question may be answered prior to after capture finishing so the other listener never gets initiated to wait.\n  const callback = async () => {\n    setTimeout(\n      () => eventEmitter.removeListener(SprigEvent.QuestionAnswered, callback),\n      0,\n    );\n    tryReplayAction(async () => {\n      if (replayParams.replayDurationType === \"before\") {\n        await getFileChunkAndUpload(args);\n      } else {\n        await replayStorage.markPendingCaptureToCanUpload(responseGroupId);\n      }\n    }, \"Error in schedule/capture callback\");\n  };\n\n  tryReplayAction(async () => {\n    if (\n      replayParams.replayDurationType === \"after\" ||\n      replayParams.replayDurationType === \"beforeAndAfter\"\n    ) {\n      const hasIPS = !isStandalone && !isHeatmap;\n      if (hasIPS) {\n        eventEmitter.on(SprigEvent.QuestionAnswered, callback);\n      }\n      await scheduleCapture(args);\n      return;\n    }\n\n    const hasUploadableData = isStandalone || isHeatmap || canUpload;\n    if (hasUploadableData) {\n      await getFileChunkAndUpload(args);\n      if (isHeatmap) {\n        handleHeatmapCleanup();\n      }\n    } else {\n      // is IPS && replayDurationType === ReplayDurationType.Before\n      const bufferTime =\n        REPLAY_EVENT_LOOKBACK_SECONDS + replayParams.replayDurationSeconds;\n      // mark rows with expiredAt\n      const start = triggerTimestamp - bufferTime * 1000;\n      const end = triggerTimestamp;\n\n      await replayStorage.updateEventsExpiredAt(\n        start,\n        end,\n        replayParams.expirationTimeLimitMinutes,\n      );\n      eventEmitter.on(SprigEvent.QuestionAnswered, callback);\n    }\n  }, \"Error in scheduling/capturing replay\");\n};\n\nconst handleHeatmapCleanup = async () => {\n  if (!parseInt(numCapturesPendingStr ?? \"0\")) {\n    sessionStorageHelper.removeItem(\"sprig.isCapturingHeatmap\");\n  }\n  if (sessionStorageHelper.getItem(\"sprig.teardownAfterCapture\")) {\n    teardownReplay();\n    clearUserReplayData();\n    sessionStorageHelper.removeItem(\"sprig.teardownAfterCapture\");\n  }\n};\n\nexport const clearUserReplayData = async () => {\n  if (isReplayRecordingDisabled())\n    return logger.debug(\"ReplayDisabled-ClearData\");\n\n  return Promise.all([\n    replayStorage.deleteBySessionId(\"events\", sessionId),\n    replayStorage.deleteBySessionId(\"pendingCaptures\", sessionId),\n  ]).catch((err) => {\n    disableRecording(\"Error clearing user replay data\", err);\n  });\n};\n\n// also used when displaying questions in the top level controller\nexport const scheduleCapture = async (\n  args: ReplayCaptureParams | HeatmapCaptureParams,\n) => {\n  if (isReplayRecordingDisabled()) return;\n  const { isHeatmap, surveyId } = args;\n  const currPending = await replayStorage.getPendingCaptures();\n  const pendingForSurvey = currPending?.filter(\n    (curr) => curr.captureParams.surveyId === surveyId,\n  );\n  if (pendingForSurvey?.length) {\n    logger.info(\"PendingCaptureExists\", { surveyId });\n    return;\n  }\n  if (isHeatmap) {\n    // ensure heatmap replay starts right after trigger\n    recordFullSnapshot();\n    sessionStorageHelper.setItem(\"sprig.isCapturingHeatmap\", \"true\");\n\n    lastEventTimestamp = Date.now();\n    if (!replayState.inactivityInterval) {\n      replayState.inactivityInterval = window.setInterval(() => {\n        trackHeatmapInactivity(lastEventTimestamp);\n      }, 1000);\n    }\n  }\n  const argsCopy = { ...args, replayParams: { ...args.replayParams } };\n  if (args.replayParams.replayDurationType === \"beforeAndAfter\") {\n    argsCopy.replayParams.replayDurationSeconds *= 2;\n  }\n\n  argsCopy.replayParams.replayDurationType = \"before\";\n  const targetTimestamp =\n    args.triggerTimestamp + args.replayParams.replayDurationSeconds * 1000;\n\n  argsCopy.triggerTimestamp = targetTimestamp;\n\n  // update pending count for session\n  numCapturesPendingStr = (\n    parseInt(numCapturesPendingStr ?? \"0\") + 1\n  ).toString();\n  sessionStorageHelper.setItem(\"sprig.pendingCount\", numCapturesPendingStr);\n\n  const db = await replayStorage.openDB();\n  await db.add(\"pendingCaptures\", {\n    canUpload: false,\n    captureParams: argsCopy,\n    sessionId,\n    targetTimestamp,\n    timestamp: Date.now(),\n    uuid: uuid(),\n  });\n};\n","import { registerReplay } from \"../src/modules/moduleRegistry\";\nimport * as replayModule from \"../src/modules/replay\";\n\nregisterReplay(replayModule);\n","import { createUpload } from \"@mux/upchunk\";\nimport { record } from \"@rrweb/record\";\n\nwindow.UpChunk = {\n  createUpload: createUpload,\n};\nwindow.rrwebRecord = record;\n\nexport * from \"../sprig-browser/index\";\n"],"names":["xe","Object","create","q","defineProperty","Ue","getOwnPropertyDescriptor","Fe","getOwnPropertyNames","Ne","getPrototypeOf","De","prototype","hasOwnProperty","R","t","e","exports","Ce","Rt","ye","T","window","global","self","Se","Tt","Ee","ot","call","setTimeout","alert","confirm","prompt","toString","ve","zt","ke","M","replace","lt","n","split","r","length","i","a","indexOf","o","slice","toLowerCase","s","push","Re","Pt","we","arguments","ct","_e","_t","X","Te","pt","dt","ft","ze","uri","callback","C","Pe","Error","S","P","Be","u","response","responseText","responseType","responseXML","documentElement","nodeName","$","JSON","parse","clearTimeout","L","statusCode","V","h","useXDR","status","body","method","d","headers","url","p","rawRequest","getAllResponseHeaders","xhr","cors","XDomainRequest","XMLHttpRequest","c","y","data","f","I","sync","json","accept","Accept","stringify","onreadystatechange","readyState","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","code","setRequestHeader","beforeSend","send","default","toUpperCase","D","TypeError","ie","se","String","m","globalThis","g","this","message","Y","stack","console","warn","je","We","$e","Ve","qe","Ge","B","K","b","Z","J","AT_TARGET","Q","ee","value","enumerable","N","set","type","bubbles","Boolean","cancelable","composed","target","currentTarget","stopPropagationFlag","stopImmediatePropagationFlag","canceledFlag","inPassiveListenerFlag","dispatchFlag","timeStamp","Date","now","l","srcElement","eventPhase","stopPropagation","cancelBubble","stopImmediatePropagation","te","WeakMap","get","x","Event","setPrototypeOf","v","ne","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","HIERARCHY_REQUEST_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","NOT_FOUND_ERR","NOT_SUPPORTED_ERR","INUSE_ATTRIBUTE_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","VALIDATION_ERR","TYPE_MISMATCH_ERR","SECURITY_ERR","NETWORK_ERR","ABORT_ERR","URL_MISMATCH_ERR","QUOTA_EXCEEDED_ERR","TIMEOUT_ERR","INVALID_NODE_TYPE_ERR","DATA_CLONE_ERR","re","keys","configurable","w","ue","super","defaultPrevented","preventDefault","oe","original","le","E","returnValue","_","bind","ce","flags","he","pe","Qe","et","handleEvent","dispatchEvent","ErrorEvent","error","process","emit","de","listeners","fe","me","signal","removeEventListener","signalListener","cow","filter","splice","k","constructor","ge","U","capture","once","passive","be","aborted","attrCallback","attrListener","addEventListener","wrap","DOMException","ae","captureStackTrace","defineProperties","name","F","EventTarget","_a","Ae","__esModule","A","O","H","minChunkSize","maxChunkSize","j","W","readableStream","defaultChunkSize","_chunkSize","chunkSize","Symbol","asyncIterator","getReader","done","read","Uint8Array","Blob","size","chunkByteSize","releaseLock","Ct","Ie","Le","includes","St","attemptCount","attempts","retryCodes","z","endpoint","file","delayBeforeAttempt","dynamicChunkSize","maxFileBytes","maxFileSize","chunkCount","offline","_paused","success","nextChunkRangeStart","chunkedStreamIterable","stream","chunkedStreamIterator","totalChunks","Math","ceil","eventTarget","validateOptions","getEndpoint","then","sendChunks","dispatch","totalChunkSize","pause","currentXhr","CustomEvent","detail","File","endpointValue","Promise","resolve","upload","loaded","total","min","chunkNumber","xhrPromise","lastChunkStart","sendChunk","async","getTime","chunk","timeInterval","max","attemptsLeft","pendingChunk","sendChunkWithRetries","next","It","createUpload","__defProp","__publicField","obj","key","writable","__defProp$1","__publicField$1","NodeType$2","NodeType2","testableAccessors$1","Node","ShadowRoot","Element","MutationObserver","testableMethods$1","untaintedBasePrototype$1","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","every","accessor","_a2","_b","methodNames","isUntaintedMethods","iframeEl","document","createElement","appendChild","win","contentWindow","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","instance","cacheKey","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","childNodes","n2","parentNode","parentElement","textContent","contains","other","getRootNode","host","styleSheets","shadowRoot","querySelector","selectors","querySelectorAll","mutationObserver","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","rules","cssRules","cssText","Array","from","rule2","stringifyRule","href","join","sheetHref","importStringified","styleSheet","statement","layerName","supportsText","media","mediaText","absolutifyURLs","ruleStringified","selectorText","cssStringified","regex","Mirror","Map","getMeta","id","idNodeMap","nodeMetaMap","getId","delete","forEach","childNode","removeNodeFromMap","has","node2","meta","oldNode","getNode","maskInputValue","element","maskInputOptions","tagName","maskInputFn","text","actualType","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","URL","location","err","match","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","parts","pop","part","_id","tagNameRegex","RegExp","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","trim","getHref","isSVGElement","el","ownerSVGElement","customHref","a2","startsWith","setAttribute","transformAttribute","pos","collectCharacters","regEx","chars2","exec","substring","output","descriptorsStr","inParens","c2","charAt","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","closest","matches","serializeNode","options","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","hasNode","docId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","HTMLFormElement","processedTagName","attributes","len","i2","attr","stylesheet","find","rel","_cssText","sheet","innerText","checked","selected","rr_open_mode","__context","canvas","ctx","getContext","x2","width","height","getImageData","originalGetImageData","Uint32Array","buffer","some","pixel","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","getAttribute","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","complete","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","TEXT_NODE","parent","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","serializedNode","assign","add","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","getAugmentedNamespace$1","f2","a22","Reflect","construct","apply","picocolors_browser$1","x$1","create$1","isColorSupported","reset","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","__proto__","toStringTag","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","reason","plugin","endLine","endColumn","setMessage","color","css","mark","aside","lines","start","end","maxWidth","map","index2","number","gutter","spacing","showSourceCode","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","builder","params","rawValue","raws","afterName","nodes","block","between","detect","raw","buf","depth","step","last","child","before","left","right","string","prop","important","own","first","root2","root","rawCache","beforeAfter","walk","walkComments","walkDecls","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","isArray","Node$4$1","defaults","clone","append","postcssNode","input","insertAfter","overrides","insertBefore","keepBetween","opts","rangeBy","getProxyProcessor","toProxy","markDirty","index","stringRepresentation","positionInside","word","endIndex","defaultType","bookmark","foundSelf","remove","result2","inputs","fixed","emitInputs","inputsNextIndex","toJSON","inputId","input2","proxyCache","Proxy","stringifier2","node","node$1","Node$3$1","Declaration$4$1","declaration$1","nonSecure$1","nanoid","random","SourceMapConsumer","SourceMapConsumer$2$1","SourceMapGenerator","SourceMapGenerator$2$1","existsSync","existsSync$1","readFileSync","readFileSync$1","dirname","dirname$1$1","join$1","PreviousMap$2$1","loadAnnotation","inline","startWith","annotation","prev","loadMap","mapFile","consumerCache","decodeURIComponent","substr","lastMatch","Buffer","atob","encoding","sourceMapString","mappings","_mappings","sections","comments","lastIndexOf","getAnnotationURL","fromSourceMap","isMap","prevPath","loadFile","decodeInline","consumer","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath","fileURLToPath$1","pathToFileURL","pathToFileURL$1$1","isAbsolute","isAbsolute$1","resolve$1$1","nanoid$2","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","hasBOM","mapResolve","offset","fromOffset","col","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","protocol","sourceContentFor","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative","relative$1","resolve$2","sep","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","content","isInline","toBase64","outputFile","eol","previous","toUrl","applySourceMap","clearAnnotation","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","isSourcesContent","setSourcesContent","applyPrevMaps","isAnnotation","addAnnotation","noSource","mapping","sourcePath","withContent","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","encodeURIComponent","fileURL","encodeURI","Node$2$1","Comment$4$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","Node$1$1","cleanSource$1","markDirtyUp$1","proxyOf","Container$7$1","Container","children","normalize","cleanRaws","iterator","getIterator","indexes","condition","lastEach","args","cb","exist","existIndex","reverse","sample","selector","rebuild","unshift","pattern","decl","props","fast","each","e2","addToError","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","range","opt","warning$1","Warning$1$1","Result$3$1","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","prepend","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","ignore","root$1","list$2$1","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","values","sep2","rule$1","Declaration$2$1","tokenizer2$1","quote","escaped","escapePos","currentToken","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","position","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","shift","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","tokens","founded","entries","doubleColon","customProperty","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","cache","concat","checkMissedSemicolon","unexpectedClose","unclosedBlock","bracket","rule","unclosedBracket","freeSemicolon","atrule","emptyRule","endFile","clean","reduce","all","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRule","AtRuleExit","CommentExit","Declaration","DeclarationExit","DocumentExit","Once","OnceExit","prepare","Root","RootExit","Rule","RuleExit","NOT_VISITORS$1","isPromise$1","getEvents$1","toStack$1","events","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","result","helpers","postcss","plugins","reject","processing","runAsync","onRejected","catch","onFinally","postcssVersion","event","version","hasListener","promise","runOnRoot","handleError","prepareVisitors","visitTick","visitor","roots","subRoot","stringifier","generate","getAsyncError","walkSync","visitSync","onFulfilled","visit2","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","normalized","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","list","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","cloneNode","Node$4","Node$3","Declaration$4","declaration","nonSecure","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","Node$2","Comment$4","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","Node$1","cleanSource","markDirtyUp","Container$7","Container2","removeAll","container","LazyResult$4","Processor$3","Container$6","Document$3","document$1","Warning$2","warning","Warning$1","Result$3","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","LazyResult$3","Processor$2","Container$4","Root$5","list$2","list_1","Container$3","list$1","Rule$3","Declaration$2","tokenizer22","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","childNodes2","childIterator","firstChild","ownerDocument","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","fn","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","context","trailing","hookSetter","isRevoked","patch","replacement","wrapped","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_c","_d","scrollingElement","pageXOffset","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","isNodeInLinkedList","DoubleLinkedList","head","__ln","tail","moveKey","parentId","MutationBuffer","Set","mutations","processMutation","frozen","locked","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removes","addedSet","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","removeNode","payload","texts","genTextAreaValueMutation","attribute","style","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","attributeMap","movedMap","mutationCb","textarea","item","cn","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","deepDelete","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","lock","unlock","addsSet","r2","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","observer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","handler","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mutation","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","recordDOM","mousemoveHandler","threshold","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","restoreHandler","fonts","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","customElementObserver","define","pluginHandlers","plugin3","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","ids","getRemoteId","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","generateId","handleMessage","iframes","crossOriginIframeMap","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","getIds","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","recordArgs","hookHandler","setter","encodedJs","blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","postMessage","requestAnimationFrame","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","date","email","month","search","tel","time","week","select","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","isFrozen","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","initialOffset","CustomElement","addLoadListener","destroy","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","DismissReason","SprigEvent","EVENTS","FEEDBACK_BUTTON_LOADED","SDK_READY","SURVEY_APPEARED","SURVEY_CLOSED","SURVEY_DIMENSIONS","SURVEY_FADING_OUT","SURVEY_HEIGHT","SURVEY_WIDTH","SURVEY_PRESENTED","SURVEY_LIFE_CYCLE","SURVEY_WILL_CLOSE","SURVEY_WILL_PRESENT","QUESTION_ANSWERED","REPLAY_CAPTURE","CLOSE_SURVEY_ON_OVERLAY_CLICK","VISITOR_ID_UPDATED","DATA","DISMISS_REASONS","API","CLOSED","COMPLETE","PAGE_CHANGE","OVERRIDE","SURVEY_ID","getRandomValues","rnds8","rng","crypto","byteToHex","native","randomUUID","v4","rnds","arr","breadcrumbsLogger","breadcrumbs","toISOString","breadcrumb","category","addBreadcrumb","level","getTimeStamp","getIntercom","Intercom","widgets","ul_wasVisible","hide_default_launcher","ConflictingWidgets","disable","enable","MemoryLeakError","emitter","_Emitter","listenerCount","maxListeners","defaultMaxListeners","hasWarnedAboutPotentialMemoryLeak","internalEventName","onceListener","removeListener","_getListeners","_emitInternalEvent","nextListeners","memoryLeakWarning","addListener","_wrapOnceListener","prependListener","_removeListener","Emitter","eventEmitter","delay","ms","res","shouldDirectEmbed","platform","UserLeap","forceDirectEmbed","StorageHelper","storage","tempStorage","isStorageAvailable","setItem","removeItem","reportError","getItem","stringifiedObject","sessionStorageHelper","localStorageHelper","Deferred","modules","replay","getModuleHeaders","headerValue","NETWORK_CONFIG","killswitch","killswitchReason","isRateLimited","isViolatingCspPolicy","pendingRequestQueue","getInstallationMethodHeader","Sprig","_config","installationMethod","_gtm","_segment","cspViolationHandler","blockedURI","_API_URL","killNetworkRequests","getHttpHeaders","envId","userId","visitorId","partnerAnonymousId","mobileHeadersJSON","mobileHeaders","locale","previewMode","dropOrQueueRequest","shouldDropOnRateLimit","requestInfo","deferredRequest","sprigFetch","_options","retries","shouldRetryRequest","killswitchResponse","ok","info","fetch","rateLimitResetTime","resolveRequest","newAttempt","pow","VIEW_TAG","MOBILE_PLATFORM_HEADERS","PATH_VISITOR","PATH_ENV","authenticatedFetch","results","authHeader","tokenPieces","headerToken","envUuidMap","getItemObject","setItemObject","widgetSetLocalStorageCredentialsValue","VisitorIDUpdated","logMessage","field","savedIds","widgetGetVID","apiUrl","fillPaths","components","displayQuestions","responseJson","trackPageViewUrl","initializedHeatmapPrivacySettings","forceBrandedLogo","endCard","isFeedback","heatmap","productConfig","questions","responseGroupUid","surveyId","uuid","vid","sessionReplay","studyType","isMobileWebview","calculateIsMobileWebview","useMobileStyling","calculateUseMobileStyling","ReplayCapture","hasQuestions","uploadId","replayType","replayDurationType","seconds","replayDurationSeconds","generateVideoUploadUrlPayload","mediaRecordingUid","uuidv4","mediaType","questionId","updatedAt","isReplay","surveyState","scheduleOrCaptureReplay","responseGroupId","replayParams","completeUploadHeaders","triggerTimestamp","isStandalone","eventId","heatmapSurveyId","initializeReplay","maxReplayDurationSeconds","maxInflightRequests","maxInflightReplayRequests","teardownAfter","replaySettings","tryReplayAction","scheduleCapture","isHeatmap","logger","hasVideoVoiceQuestion","RecordSurveyShown","userAgent","navigator","SurveyWillPresent","frameId","contentWinDocHead","hasOverlay","containerFrame","verifyViewVersion","viewSdkVersion","removeContainer","platformIsWeb","shouldCreateDirectEmbedContainer","createContainer","removeContainerOnClose","SurveyLifeCycle","state","SurveyPresented","createFrame","config","apiURL","cards","configureExitOnOverlayClick","exit","CloseSurveyOnOverlayClick","eventEmitFn","fontFamily","fontFamilyURL","frame","mobileSDKVersion","previewKey","framePosition","desktopDisplay","placement","startingQuestionIdx","styleNonce","tabTitle","title","ulEvents","upchunkLibraryURL","viewDocument","viewWindow","visitorAttributes","externalUserId","viewStyles","feedbackCustomStyles","customStyles","__cfg","frameSrc","viewSDKURL","existingScript","getElementById","frameScript","scriptTag","nonce","makeSafeScriptTag","updateContainerDisplay","display","view","require","configure","HTMLScriptElement","surveyStatusPayload","isMobileSDK","windowWidth","windowDimensions","FRAME_ID","MARGIN","isFeedbackSlider","dataset","studyId","loadingContainer","getLoadingContainer","initiator","removeIFrameEventListeners","SurveyClosed","parseInt","SurveyWillClose","removeAllListeners","configureFrame","defaultFrameStyle","bottom","border","backgroundColor","zIndex","transition","styleConfig","showFeedbackCenter","framePositionStyle","maxHeight","overlayStyleMobile","setCenterModalPosition","margin","containerStyle","overflow","overlayStyleConfig","overlayStyle","setupIFrameEventListeners","firedHeight","setHeight","SurveyHeight","contentFrameHeight","firedWidth","setWidth","SurveyWidth","contentFrameWidth","exitOnOverlayClickMobile","exitOnOverlayClick","onclick","contentWinDoc","write","close","iframeBody","alignItems","eventListeners","SurveyFadingOut","off","MATCHERS_BY_TYPE","notContains","exactly","notExactly","legacy","checkUrlMatch","matchType","matcher","doesUrlMatch","checkUrlStillMatching","pageUrlEvents","currEvent","isHTMLElement","isTargetElement","HTMLElement","SVGElement","setSurveyStyles","elementId","styleString","styleTag","newStyleTag","getMinHeight","calculatedHeight","questionBody","scrollableHeight","scrollHeight","getHorizontalPaddingAndMargin","getComputedStyle","parseFloat","paddingLeft","paddingRight","marginLeft","marginRight","borderLeftWidth","borderRightWidth","calculateFrameDimensions","isDesktopWeb","isDirectEmbed","app","containerHeight","containerWidth","scrollableMinHeight","matrixGrid","setAppWidth","mainCard","mainContent","footer","topContainer","additional","containerStyles","marginHeight","marginTop","marginBottom","borderTopWidth","borderBottomWidth","scrollWidth","getFeedbackContainer","getLoadingSpinner","isSurveyOpen","isCenterModal","feedbackButton","loadingSurvey","currEventId","feedbackPlacement","FEEDBACK_PLACEMENTS","isFeedbackSurveyOpen","isErrorState","getFeedbackContainerWidth","moveFeedbackContainer","getWholeContainer","closeLoadingContainer","SurveyAppeared","hideLoadingAnimation","constructLoadingContainer","loadingAnimationDiv","disabled","getLoadingSpinnerContainer","loadingSpinner","role","innerHTML","openLoadingContainer","createFeedbackButton","feedbackButtonOptions","previewQuestionsJson","buttonTheme","feedbackLabel","surveyUuid","feedbackContainer","verticalPlacement","horizontalPlacement","feedbackButtonLabel","errorState","SurveyCloseRequested","FeedbackClosed","feedbackStudyInfo","createErrorState","feedbackErrorState","FeedbackButtonLoaded","feedbackLoading","isOnQuestionsTab","paragraph","ldIntegration","_ldData","optimizely","_optimizelyData","isOverride","experiments","exp","variation","newKey","transformExperimentId","experimentId","getAndSetWebOptimizelyExperiments","getExperimentStates","isActive","transformExperiments","expId","setOptimizelyExperiment","SprigQueue","ul","queue","flush","action","Function","actionName","actionFunc","enabled","disableChecking","WebMetricNames","onThresholdTripped","thresholdsByMetric","MetricsReporter","_isWebMetric","findExceededThreshold","collect","thresholds","valueExceedsThreshold","PerformanceMetrics","registerMetric","metric","reportAndRegister","report","initPerformanceReporting","reportingIntervalSeconds","postMetrics","setInterval","domSizeMetric","htmlCharsMetric","calcNumberOfDomNodes","firstElementChild","nextElementSibling","measureEventQueueLatency","intervalMs","reporter","performance","latency","nodeAddedMetric","nodeRemovedMetric","attributeChangeMetric","charDataMetric","countMap","countNodesRecursive","countNodeListRecursive","handleMutation","handleMutations","interval","initMetrics","isWeb","thresholdTrippedAction","isReplayRecording","disableRecording","metricName","initMutationMetrics","APP_MODES","dismissOnPageChangeEventTypes","sessionProvidedAttributes","EMAIL_ATTRIBUTE_KEY","PAGE_URL_EVENT_NAME","prevUrl","locationChangeHandler","interactiveEvents","dismissOnPageChange","navigation","localStorageUrl","loadCredentials","trackedUrl","trackPageView","removeInteractiveEventListener","addInteractiveEventListeners","checkPendingHeatmapsUrl","uploadReadyPendingCaptures","PageChange","INTERACTIVE_LISTENER_OPTIONS","handlersForActiveEvents","properties","combinedHandler","interactiveEventsHandler","envIdCredMap","fallbackToAnonVisitor","anonVisitorId","showSurveyCallback","calledFromApi","documentDescription","RecordPageView","description","referrer","pageTitle","shouldTrackPage","debugMode","metadata","_queue","bindTrackingEvents","historyRef","Backbone","history","pushState","ret","replaceState","getQuestions","submitAnswers","mode","searchParams","isMobile","previewLanguage","surveyid","surveytemplateid","surveyTemplateId","widgetInitialize","mute","currentIndex","randomIndex","floor","tmp","__enableUserLeapAPIActions","identifyAndTrackHelper","anonymousId","requireUserIdForTracking","trackStartUrl","optimizelyEnabled","OptimizelyIntegration","getAllOptimizelyExperiments","launchDarklyEnabled","LaunchDarklyIntegration","getAllLaunchDarklyVariations","eventProperties","RecordEvent","delayingSurvey","errorMessage","responseBody","invalidPreviewKey","shouldShowSurvey","trackStartUrlString","startUrl","currentURL","hostname","overrideSurveyStyles","apiActions","Override","_previewSurvey","_reviewSurvey","unmute","unpause","Closed","trackHistory","setAttributes","identifyAndSetAttributes","putUserBody","addSurveyListener","removeSurveyListener","clearUserReplayData","setPartnerAnonymousId","applyFeedbackStyles","button","parsedWidth","parsedHeight","SurveyDimensions","isPaused","_Sprig","jsonData","client","notificationCenter","addNotificationListener","experiment","insertExperiment","setLDFlagsVariations","setVisitorAttribute","setEmail","uploadEndpoint","uploadResponse","responseGroupUuid","eventDigest","_completeSessionReplay","pauseReplayRecording","isReplayPaused","recordReplayPaused","resumeReplayRecording","recordReplayResumed","recordFullSnapshot","extraInfo","bodyInfo","pde","screenWidth","screen","screenHeight","language","sprigInitializer","SprigLoggerCallback","URLSearchParams","load","outstandingTransactionLimit","appId","credentials","sampleRate","sampled","queueItems","cachedToken","remoteConfig","metricsReportingEnabled","mobileMetricsReportingEnabled","metricsReportingIntervalSeconds","metricThresholds","alwaysOnConfig","alwaysOnReplay","sdkVersion","maxDurationSeconds","SDKReady","metricsReportingInterval","metricsThresholds","maxMobileReplayDurationSeconds","mobileReplaySettings","UPDATES","attachEvent","SprigAPI","logoutUser","teardown","sprig","environmentId","apiMethodName","instanceOfAny","object","constructors","idbProxyableTypes","cursorAdvanceMethods","transactionDoneMap","transformCache","reverseTransformCache","idbProxyTraps","IDBTransaction","objectStoreNames","objectStore","replaceTraps","wrapFunction","IDBCursor","advance","continue","continuePrimaryKey","unwrap","request","transformCachableValue","tx","oncomplete","IDBDatabase","IDBObjectStore","IDBIndex","IDBRequest","onsuccess","deleteDB","blocked","indexedDB","deleteDatabase","onblocked","oldVersion","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","storeName","transaction","store","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","openCursor","proxiedCursor","isIteratorProp","IframeMessages","semaphore","capacity","awaitingResolvers","activeCount","acquire","resolver","release","limit","markUploadComplete","etags","replayDuration","Attr","curNode","getXPath","comps","ownerElement","comp","ATTRIBUTE_NODE","PROCESSING_INSTRUCTION_NODE","cleanupText","userListenerOptions","interestingTagnames","interestingKeys","observerInitialized","recordCustomEvent","handleScroll","getElementAttributes","elementAttrs","getTargetElementAttributes","mergedAttributes","parentAttrs","handleClickEvent","ev","pointerDownTarget","elementAttributes","windowHeight","rect","xPath","handleKeydown","recordReloadIfUsed","getEntriesByType","nav","currentPageTitle","recordBackIfUsed","curUrl","debouncedScrollListener","scrollTarget","targetScrollWidth","targetClientWidth","targetScrollHeight","targetClientHeight","leftClickListener","rightClickListener","pointerDownListener","replayState","isRecording","scrollEventUuids","stopRecording","idbExists","IDBKeyRange","CompressionStream","sessionId","savedSessionId","generateUuid","getOrGenerateSessionId","markReplayRecordingDisabled","isReplayRecordingDisabled","rrwebRecord","recordOrUpdateScrollEvent","newX","newY","scrollEventUuid","db","replayStorage","openDB","scrollRecord","eventJson","newXGreater","newYGreater","put","teardownReplay","clearInterval","targetOrigin","errorsToNotReport","clearAndMarkDisabled","errMessage","currMessage","clearAll","outstandingTransactions","allSettled","wrapTransactionWithCounter","configuredLimit","transLimit","finally","getTransaction","trans","upgrade","blocking","terminated","openPromise","onupgradeneeded","newVersion","onclose","onversionchange","createObjectStore","keyPath","createIndex","chunkUploads","pendingCaptures","sid","only","keyValue","deleteRowsBefore","shouldDelete","upperBound","bound","getAllFromIndex","updateEventsExpiredAt","expiredAtMinutes","expiredAtValue","setMinutes","getMinutes","update","expiredAt","deleteChunkUploads","getAll","beforePresent","targetTimestamp","isBeforeType","captureParams","canUpload","uuids","eventBuffer","alwaysOnMetadata","expirationTimestamp","triggerSnapshotAction","uploadUrls","isInit","inUnload","pendingUrlPromiseResolvers","isUrlRequestInflight","isAlwaysOnActive","initAlwaysOn","sprigApiUrl","triggerSnapshot","forceInit","readStoredAlwaysOnInfo","periodicActionCheck","userInteractionSources","isEventUserInteraction","shouldUploadEventBuffer","fetchUrlsIfNeeded","firstTimestamp","urls","fetchUploadUrls","storedState","pendingEventTimestamp","uploadPendingEventsFromTime","parsedEvents","getEventsBetween","insertMetaEvent","getUploadUrl","uploadWithUrl","tryAndDisableOnFailure","encoder","TextEncoder","cs","writer","getWriter","bufferArray","encode","Response","readable","arrayBuffer","signedUrls","customMetadata","isValidFirstEvent","uploadArray","storeSessionInfo","timeAndReportAsyncAction","diff","timeAndReportAction","replayTimeThreshold","replayBatchDuration","lastEventTimestamp","numCapturesPendingStr","awaitingThrottledEventInsert","eventsToInsert","throttledInsertEvents","scheduleEventInsertion","populatedEvents","bulkAdd","startPeriodicDataCleanup","cleanupEventSeconds","cleanupChunkSeconds","cleanupPendingCaptureSeconds","cleanupInterval","intervalCheckForPendingCaptures","pendingCheckInterval","isCheckingPendingCaptures","numCapturesPendingInt","readyCaptures","getPendingCaptures","getEventsBatch","targetBeginning","targetEnd","validStartFound","batchDuration","replayStartIndex","isValidStart","isBeforeTargetBeginning","uploadChunks","chunks","etag","execute","chunkIndex","uploadUrl","http","status_code","statusText","updatePartial","markUploadCompleteIfFinished","chunksForUpload","getChunkUploadsByStatus","dedupedChunks","acc","curr","sort","c1","ETag","PartNumber","uploadAllUnfinishedChunks","unfinishedChunks","finishedUploadIds","getFileData","fileData","written","firstEventTime","lastEventTime","REPLAY_EVENT_LOOKBACK_SECONDS","eventStrs","combinedJson","encodedCloseBrace","getFileChunkAndUpload","minChunkSizeMb","numAllocatedChunks","fileSizeBytes","minChunkBytes","equallyDividedChunkSize","chunkSizeBytes","minimumChunkSizeMb","chunksToUpload","chunkToUpload","uploadIds","QuestionAnswered","markPendingCaptureToCanUpload","handleHeatmapCleanup","bufferTime","REPLAY_CHECKOUT_INTERVAL_SECONDS","expirationTimeLimitMinutes","deleteBySessionId","currPending","pendingForSurvey","inactivityInterval","markPendingHeatmapsReady","argsCopy","uuidsToMarkComplete","pendingCapture","estimate","quota","usage","availableGb","alwaysOnLookback","recordingDuration","limitInflightRequests","minDuration","setLimit","replayLibraryUrl","replayLibraryURL","isFirstEvent","lastMetaEventTimestamp","settings","recordEvent","msElapsed","replayModule","UpChunk","cardsGroup","groupId","card"],"mappings":"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","x_google_ignoreList":[0,1,3,4,5,6,10,35,36]}