stormcloud-video-player 0.8.71 → 0.8.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -325,6 +325,10 @@ function toNumber(val) {
325
325
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
326
326
  return Number.isNaN(n) ? void 0 : n;
327
327
  }
328
+ function getDateRangeDurationSeconds(attrs) {
329
+ var _toNumber;
330
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
331
+ }
328
332
  function decodeId3ValueToText(value) {
329
333
  try {
330
334
  if (typeof value === "string") return value;
@@ -1199,11 +1203,13 @@ var HlsEngine = /*#__PURE__*/ function() {
1199
1203
  }
1200
1204
  }
1201
1205
  if (!tag) continue;
1206
+ if (tag.includes("EXT-X-CUE-OUT-CONT")) continue;
1202
1207
  if (tag.includes("EXT-X-CUE-OUT") || tag.includes("EXT-X-DATERANGE")) {
1203
- var attrs = tag.includes("EXT-X-DATERANGE") ? parseAttributeList(value) : {};
1208
+ var isDateRange = tag.includes("EXT-X-DATERANGE");
1209
+ var attrs = isDateRange ? parseAttributeList(value) : {};
1204
1210
  var hasScteOut = tag.includes("EXT-X-CUE-OUT") || "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
1205
1211
  if (hasScteOut) {
1206
- var durationSeconds = parseCueOutDuration(value);
1212
+ var durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);
1207
1213
  var marker = _object_spread_props(_object_spread({
1208
1214
  type: "start"
1209
1215
  }, durationSeconds !== void 0 ? {
@@ -1377,7 +1383,7 @@ var HlsEngine = /*#__PURE__*/ function() {
1377
1383
  var hasScteOut = "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
1378
1384
  var hasScteIn = "SCTE35-IN" in attrs || attrs["SCTE35-IN"] !== void 0;
1379
1385
  var klass = String((_attrs_CLASS = attrs["CLASS"]) !== null && _attrs_CLASS !== void 0 ? _attrs_CLASS : "");
1380
- var duration = toNumber(attrs["DURATION"]);
1386
+ var duration = getDateRangeDurationSeconds(attrs);
1381
1387
  if (hasScteOut || /com\.apple\.hls\.cue/i.test(klass)) {
1382
1388
  var marker2 = _object_spread_props(_object_spread({
1383
1389
  type: "start"
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\HlsEngine.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","HlsEngine_exports","HlsEngine","module","exports","import_hls","require","parseCueOutDuration","num","parseFloat","trim","Number","isNaN","match","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","e","elapsed","duration","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","startsWith","endsWith","slice","toNumber","val","n","decodeId3ValueToText","decoder","TextDecoder","fatal","text","decode","test","out","i","length","String","fromCharCode","getFragmentStartSeconds","frag","candidates","start","startPTS","candidate","isFinite","parseScte35FromId3","tag","cueOutMatch","arg","dur","marker","type","ptsSeconds","durationSeconds","raw","id3","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","Uint8Array","bin","parseScte35Binary","normalizeFragmentPayload","payload","ArrayBuffer","isView","view","buffer","byteOffset","byteLength","detectTsPacketFormat","data","packetSizes","packetSize","tsPayloadOffset","offset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","Math","min","programNumber","pid","add","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","has","size","firstKey","values","next","delete","addScte35SectionMarker","markers","source","push","appendScte35Bytes","bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","set","Array","parseScte35FromTsPackets","packetInfo","sectionAssemblers","Map","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","buf","bytePos","bitPos","readBits","numBits","result","remainingInByte","toRead","currentByte","shift","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","flags","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_command_type","splice_event_id","segmentation_event_id","config","video","cueManager","timing","callbacks","isLiveStream","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","debug","debugAdTiming","shouldUseNativeHls","getStreamType","canNative","canPlayType","allowNativeHls","setupNativeHls","adBehavior","src","lowLatencyMode","console","log","isLive","autoplay","play","catch","setupHls","hls","default","enableWorker","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","on","Events","MEDIA_ATTACHED","loadSource","MANIFEST_PARSED","_","_data","minSegments","levels","some","level","details","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","isInAdBreak","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","entry","idx","indexOf","substring","includes","earlyDetection","onScte35Cue","createScte35CueContext","FRAG_BUFFERED","err","warn","FRAG_PARSING_METADATA","id3Tags","samples","map","s","pts","forEach","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","sn","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","ERROR","ErrorTypes","NETWORK_ERROR","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","attachMedia","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","updatePtsDrift","readiness","payloadData","fragmentSn","fragmentStartSeconds","processedTsScte35Sections","context","getLiveSyncPosition","pos","liveSyncPosition","restartLoadAt","position","stopLoad","error","reloadLiveStream","detachMedia","destroy","removeAttribute","load","recreateDelayMs","window","setTimeout"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAIA,WAAWC,OAAOC,MAAM;AAC5B,IAAIC,YAAYF,OAAOG,cAAc;AACrC,IAAIC,mBAAmBJ,OAAOK,wBAAwB;AACtD,IAAIC,oBAAoBN,OAAOO,mBAAmB;AAClD,IAAIC,eAAeR,OAAOS,cAAc;AACxC,IAAIC,eAAeV,OAAOW,SAAS,CAACC,cAAc;AAClD,IAAIC,WAAW,kBAACC,QAAQC;IACtB,IAAK,IAAIC,QAAQD,IACfb,UAAUY,QAAQE,MAAM;QAAEC,KAAKF,GAAG,CAACC,KAAK;QAAEE,YAAY;IAAK;AAC/D;AACA,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCpB,UAAUkB,IAAII,KAAK;oBAAEP,KAAK,SAALA;+BAAWI,IAAI,CAACG,IAAI;;oBAAEN,YAAY,CAAEK,CAAAA,OAAOnB,iBAAiBiB,MAAMG,IAAG,KAAMD,KAAKL,UAAU;gBAAC;;YAFpH,QAAK,YAAWZ,kBAAkBe,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIM,UAAU,iBAACC,KAAKC,YAAYd;WAAYA,SAASa,OAAO,OAAO5B,SAASS,aAAamB,QAAQ,CAAC,GAAGR,YACnG,sEAAsE;IACtE,iEAAiE;IACjE,sEAAsE;IACtE,qEAAqE;IACrES,cAAc,CAACD,OAAO,CAACA,IAAIE,UAAU,GAAG3B,UAAUY,QAAQ,WAAW;QAAEgB,OAAOH;QAAKT,YAAY;IAAK,KAAKJ,QACzGa;;AAEF,IAAII,eAAe,sBAACJ;WAAQR,YAAYjB,UAAU,CAAC,GAAG,cAAc;QAAE4B,OAAO;IAAK,IAAIH;;AAEtF,0BAA0B;AAC1B,IAAIK,oBAAoB,CAAC;AACzBnB,SAASmB,mBAAmB;IAC1BC,WAAW,SAAXA;eAAiBA;;AACnB;AACAC,OAAOC,OAAO,GAAGJ,aAAaC;AAC9B,IAAII,aAAaV,QAAQW,QAAQ,WAAW;AAE5C,6BAA6B;AAC7B,SAASC,oBAAoBR,KAAK;IAChC,IAAMS,MAAMC,WAAWV,MAAMW,IAAI;IACjC,IAAI,CAACC,OAAOC,KAAK,CAACJ,MAAM,OAAOA;IAC/B,IAAMK,QAAQd,MAAMc,KAAK,CAAC,2CAA2Cd,MAAMc,KAAK,CAAC;IACjF,IAAIA,SAASA,KAAK,CAAC,EAAE,IAAI,MAAM;QAC7B,IAAMC,OAAOD,KAAK,CAAC,EAAE;QACrB,IAAME,IAAIN,WAAWK;QACrB,OAAOH,OAAOC,KAAK,CAACG,KAAK,KAAK,IAAIA;IACpC;IACA,OAAO,KAAK;AACd;AACA,SAASC,gBAAgBjB,KAAK;IAC5B,IAAMkB,MAAM,CAAC;IACb,IAAMC,eAAenB,MAAMc,KAAK,CAAC;IACjC,IAAMM,gBAAgBpB,MAAMc,KAAK,CAAC;IAClC,IAAIK,gBAAgBA,YAAY,CAAC,EAAE,IAAI,MAAM;QAC3C,IAAME,IAAIX,WAAWS,YAAY,CAAC,EAAE;QACpC,IAAI,CAACP,OAAOC,KAAK,CAACQ,IAAIH,IAAII,OAAO,GAAGD;IACtC;IACA,IAAID,iBAAiBA,aAAa,CAAC,EAAE,IAAI,MAAM;QAC7C,IAAMJ,IAAIN,WAAWU,aAAa,CAAC,EAAE;QACrC,IAAI,CAACR,OAAOC,KAAK,CAACG,IAAIE,IAAIK,QAAQ,GAAGP;IACvC;IACA,IAAI,CAAE,CAAA,aAAaE,GAAE,KAAM,CAAE,CAAA,cAAcA,GAAE,GAAI;QAC/C,IAAMM,aAAaxB,MAAMc,KAAK,CAAC;QAC/B,IAAIU,cAAcA,UAAU,CAAC,EAAE,IAAIA,UAAU,CAAC,EAAE,EAAE;YAChD,IAAMF,UAAUZ,WAAWc,UAAU,CAAC,EAAE;YACxC,IAAMD,WAAWb,WAAWc,UAAU,CAAC,EAAE;YACzC,IAAI,CAACZ,OAAOC,KAAK,CAACS,YAAY,CAAE,CAAA,aAAaJ,GAAE,GAAIA,IAAII,OAAO,GAAGA;YACjE,IAAI,CAACV,OAAOC,KAAK,CAACU,aAAa,CAAE,CAAA,cAAcL,GAAE,GAAIA,IAAIK,QAAQ,GAAGA;QACtE;IACF;IACA,IAAI,aAAaL,OAAO,cAAcA,KAAK,OAAOA;IAClD,OAAO,KAAK;AACd;AACA,SAASO,mBAAmBzB,KAAK;IAC/B,IAAM0B,QAAQ,CAAC;IACf,IAAMC,QAAQ;IACd,IAAIb;IACJ,MAAO,AAACA,CAAAA,QAAQa,MAAMC,IAAI,CAAC5B,MAAK,MAAO,KAAM;YAC/Bc,SACCA,MAAAA;QADb,IAAMpB,OAAMoB,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;QACxB,IAAIe,UAASf,QAAAA,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAYA,KAAK,CAAC,EAAE,cAApBA,kBAAAA,OAAwB;QACrC,IAAIe,OAAOC,UAAU,CAAC,QAAQD,OAAOE,QAAQ,CAAC,MAAM;YAClDF,SAASA,OAAOG,KAAK,CAAC,GAAG,CAAC;QAC5B;QACA,IAAItC,KAAK;YACPgC,KAAK,CAAChC,IAAI,GAAGmC;QACf;IACF;IACA,OAAOH;AACT;AACA,SAASO,SAASC,GAAG;IACnB,IAAIA,OAAO,MAAM,OAAO,KAAK;IAC7B,IAAMC,IAAI,OAAOD,QAAQ,WAAWxB,WAAWwB,OAAOtB,OAAOsB;IAC7D,OAAOtB,OAAOC,KAAK,CAACsB,KAAK,KAAK,IAAIA;AACpC;AACA,SAASC,qBAAqBpC,KAAK;IACjC,IAAI;QACF,IAAI,OAAOA,UAAU,UAAU,OAAOA;QACtC,IAAMqC,UAAU,IAAIC,YAAY,SAAS;YAAEC,OAAO;QAAM;QACxD,IAAMC,OAAOH,QAAQI,MAAM,CAACzC;QAC5B,IAAIwC,QAAQ,cAAcE,IAAI,CAACF,OAAO,OAAOA;QAC7C,IAAIG,MAAM;QACV,IAAK,IAAIC,IAAI,GAAGA,IAAI5C,MAAM6C,MAAM,EAAED,IAChCD,OAAOG,OAAOC,YAAY,CAAC/C,KAAK,CAAC4C,EAAE;QACrC,OAAOD;IACT,EAAE,eAAM;QACN,OAAO,KAAK;IACd;AACF;AACA,SAASK,wBAAwBC,IAAI;IACnC,IAAMC,aAAa;QAACD,iBAAAA,2BAAAA,KAAME,KAAK;QAAEF,iBAAAA,2BAAAA,KAAMG,QAAQ;KAAC;QAC3C,kCAAA,2BAAA;;QAAL,QAAK,YAAmBF,+BAAnB,SAAA,6BAAA,QAAA,yBAAA,iCAA+B;YAA/B,IAAMG,YAAN;YACH,IAAI,OAAOA,cAAc,YAAYzC,OAAO0C,QAAQ,CAACD,YAAY;gBAC/D,OAAOA;YACT;QACF;;QAJK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAKL,OAAO,KAAK;AACd;AACA,SAASE,mBAAmBC,GAAG;IAC7B,IAAMhB,OAAOJ,qBAAqBoB,IAAIxD,KAAK;IAC3C,IAAI,CAACwC,MAAM,OAAO,KAAK;IACvB,IAAMiB,cAAcjB,KAAK1B,KAAK,CAAC,qCAAqC0B,KAAK1B,KAAK,CAAC;IAC/E,IAAI2C,aAAa;YACFA;QAAb,IAAMC,MAAM,EAACD,gBAAAA,WAAW,CAAC,EAAE,cAAdA,2BAAAA,gBAAkB,IAAI9C,IAAI;QACvC,IAAMgD,MAAMnD,oBAAoBkD;QAChC,IAAME,SAAS;YACbC,MAAM;WACHL,IAAIM,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYN,IAAIM,UAAU;QAAC,IAAI,CAAC,GAC9DH,QAAQ,KAAK,IAAI;YAAEI,iBAAiBJ;QAAI,IAAI,CAAC;YAChDK,KAAK;gBAAEC,KAAKzB;YAAK;;QAEnB,OAAOoB;IACT;IACA,IAAMM,kBAAkB1B,KAAK1B,KAAK,CAAC;IACnC,IAAIoD,iBAAiB;YACNA;QAAb,IAAMR,OAAM,EAACQ,oBAAAA,eAAe,CAAC,EAAE,cAAlBA,+BAAAA,oBAAsB,IAAIvD,IAAI;QAC3C,IAAMwD,OAAOlD,gBAAgByC;QAC7B,IAAME,UAAS;YACbC,MAAM;WACHL,IAAIM,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYN,IAAIM,UAAU;QAAC,IAAI,CAAC,GAC9DK,CAAAA,iBAAAA,2BAAAA,KAAM5C,QAAQ,MAAK,KAAK,IAAI;YAAEwC,iBAAiBI,KAAK5C,QAAQ;QAAC,IAAI,CAAC;YACrEyC,KAAK;gBAAEC,KAAKzB;YAAK;;QAEnB,OAAOoB;IACT;IACA,IAAMQ,aAAa5B,KAAK1B,KAAK,CAAC,sBAAsB0B,KAAK1B,KAAK,CAAC;IAC/D,IAAIsD,YAAY;QACd,IAAMR,UAAS;YACbC,MAAM;WACHL,IAAIM,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYN,IAAIM,UAAU;QAAC,IAAI,CAAC;YACjEE,KAAK;gBAAEC,KAAKzB;YAAK;;QAEnB,OAAOoB;IACT;IACA,IAAMS,iBAAiB7B,KAAK1B,KAAK,CAAC;IAClC,IAAIuD,gBAAgB;YACeA,kBAGZ3C;QAHrB,IAAMA,QAAQD,oBAAmB4C,mBAAAA,cAAc,CAAC,EAAE,cAAjBA,8BAAAA,mBAAqB;QACtD,IAAMC,aAAa,gBAAgB5C,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;QACzE,IAAM6C,YAAY,eAAe7C,SAASA,KAAK,CAAC,YAAY,KAAK,KAAK;QACtE,IAAM8C,QAAQ1B,QAAOpB,eAAAA,KAAK,CAAC,QAAQ,cAAdA,0BAAAA,eAAkB;QACvC,IAAMH,WAAWU,SAASP,KAAK,CAAC,WAAW;QAC3C,IAAI4C,cAAc,wBAAwB5B,IAAI,CAAC8B,QAAQ;YACrD,IAAMZ,UAAS;gBACbC,MAAM;eACHL,IAAIM,UAAU,KAAK,KAAK,IAAI;gBAAEA,YAAYN,IAAIM,UAAU;YAAC,IAAI,CAAC,GAC9DvC,aAAa,KAAK,IAAI;gBAAEwC,iBAAiBxC;YAAS,IAAI,CAAC;gBAC1DyC,KAAK;oBAAEC,KAAKzB;oBAAMd,OAAAA;gBAAM;;YAE1B,OAAOkC;QACT;QACA,IAAIW,WAAW;YACb,IAAMX,UAAS;gBACbC,MAAM;eACHL,IAAIM,UAAU,KAAK,KAAK,IAAI;gBAAEA,YAAYN,IAAIM,UAAU;YAAC,IAAI,CAAC;gBACjEE,KAAK;oBAAEC,KAAKzB;oBAAMd,OAAAA;gBAAM;;YAE1B,OAAOkC;QACT;IACF;IACA,IAAI,cAAclB,IAAI,CAACF,OAAO;QAC5B,IAAMoB,UAAS;YACbC,MAAM;WACHL,IAAIM,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYN,IAAIM,UAAU;QAAC,IAAI,CAAC;YACjEE,KAAK;gBAAEC,KAAKzB;YAAK;;QAEnB,OAAOoB;IACT;IACA,IAAI,aAAalB,IAAI,CAACF,OAAO;QAC3B,IAAMoB,UAAS;YACbC,MAAM;WACHL,IAAIM,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYN,IAAIM,UAAU;QAAC,IAAI,CAAC;YACjEE,KAAK;gBAAEC,KAAKzB;YAAK;;QAEnB,OAAOoB;IACT;IACA,IAAIJ,AAAS,YAATA,IAAIxD,KAAK,EAAYyE,aAAY;QACnC,IAAMC,MAAMC,kBAAkBnB,IAAIxD,KAAK;QACvC,IAAI0E,KAAK,OAAOA;IAClB;IACA,OAAO,KAAK;AACd;AACA,SAASE,yBAAyBC,OAAO;IACvC,IAAIA,AAAO,YAAPA,SAAmBJ,aAAY;QACjC,OAAOI;IACT;IACA,IAAIA,AAAO,YAAPA,SAAmBC,cAAa;QAClC,OAAO,IAAIL,WAAWI;IACxB;IACA,IAAIC,YAAYC,MAAM,CAACF,UAAU;QAC/B,IAAMG,OAAOH;QACb,OAAO,IAAIJ,WAAWO,KAAKC,MAAM,EAAED,KAAKE,UAAU,EAAEF,KAAKG,UAAU;IACrE;IACA,OAAO,KAAK;AACd;AACA,SAASC,qBAAqBC,IAAI;IAChC,IAAMC,cAAc;QAAC;QAAK;QAAK;KAAI;QAC9B,kCAAA,2BAAA;;QAAL,QAAK,YAAoBA,gCAApB,SAAA,6BAAA,QAAA,yBAAA,iCAAiC;YAAjC,IAAMC,aAAN;YACH,IAAMC,kBAAkBD,eAAe,MAAM,IAAI;YACjD,IAAK,IAAIE,SAAS,GAAGA,SAASF,YAAYE,SAAU;gBAClD,IAAIC,iBAAiB;gBACrB,IAAK,IAAIC,cAAcF,QAAQE,cAAcH,kBAAkBH,KAAKxC,MAAM,IAAI6C,iBAAiB,GAAGC,eAAeJ,WAAY;oBAC3H,IAAIF,IAAI,CAACM,cAAcH,gBAAgB,KAAK,IAAI;wBAC9C;oBACF;oBACAE;gBACF;gBACA,IAAIA,kBAAkB,GAAG;oBACvB,OAAO;wBAAED,QAAAA;wBAAQF,YAAAA;wBAAYC,iBAAAA;oBAAgB;gBAC/C;YACF;QACF;;QAdK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAeL,OAAO,KAAK;AACd;AACA,SAASI,mBAAmBf,OAAO,EAAEgB,gBAAgB;IACnD,IAAI,CAACA,kBAAkB;QACrB,OAAO,KAAK;IACd;IACA,IAAMC,eAAejB,OAAO,CAAC,EAAE;IAC/B,IAAIiB,gBAAgB,MAAM;QACxB,OAAO,KAAK;IACd;IACA,IAAMC,eAAe,IAAID;IACzB,OAAOC,eAAelB,QAAQhC,MAAM,GAAGkD,eAAe,KAAK;AAC7D;AACA,SAASC,oBAAoBX,IAAI,EAAEI,MAAM;QAC9BJ,QAAqCA;IAA9C,OAAO,AAAC,CAAA,EAACA,SAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,oBAAAA,SAAoB,KAAK,EAAC,KAAM,MAAKA,UAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,qBAAAA,UAAoB;AACpE;AACA,SAASY,gBAAgBpB,OAAO,EAAEgB,gBAAgB,EAAEK,OAAO;IACzD,IAAMH,eAAeH,mBAAmBf,SAASgB;IACjD,IAAIE,gBAAgB,QAAQA,eAAe,KAAKlB,QAAQhC,MAAM,EAAE;QAC9D;IACF;IACA,IAAIgC,OAAO,CAACkB,aAAa,KAAK,GAAG;QAC/B;IACF;IACA,IAAMI,gBAAgBH,oBAAoBnB,SAASkB;IACnD,IAAMK,aAAaC,KAAKC,GAAG,CACzBzB,QAAQhC,MAAM,EACdkD,eAAe,IAAII;IAErB,IAAK,IAAIV,SAASM,eAAe,GAAGN,SAAS,KAAKW,aAAa,GAAGX,UAAU,EAAG;YACtDZ,iBAA8BA,WACvCA,YAAwCA;QADtD,IAAM0B,gBAAgB,EAAC1B,kBAAAA,OAAO,CAACY,OAAO,cAAfZ,6BAAAA,kBAAmB,MAAM,MAAKA,YAAAA,OAAO,CAACY,SAAS,EAAE,cAAnBZ,uBAAAA,YAAuB;QAC5E,IAAM2B,MAAM,AAAC,CAAA,EAAC3B,aAAAA,OAAO,CAACY,SAAS,EAAE,cAAnBZ,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACY,SAAS,EAAE,cAAnBZ,wBAAAA,aAAuB;QAC7E,IAAI0B,kBAAkB,GAAG;YACvBL,QAAQO,GAAG,CAACD;QACd;IACF;AACF;AACA,SAASE,0BAA0BrB,IAAI,EAAElC,KAAK,EAAEwD,GAAG;IACjD,IAAIlB,SAAStC;IACb,MAAOsC,SAAS,KAAKkB,IAAK;YACZtB,cACGA,QAObA,uBACAA,SACAA,SACAA;QAXF,IAAM7B,OAAM6B,eAAAA,IAAI,CAACI,OAAO,cAAZJ,0BAAAA,eAAgB;QAC5B,IAAMxC,UAASwC,SAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,oBAAAA,SAAoB;QACnC,IAAMuB,kBAAkBnB,SAAS;QACjC,IAAMoB,gBAAgBD,kBAAkB/D;QACxC,IAAIgE,gBAAgBF,KAAK;YACvB,OAAO;QACT;QACA,IAAMG,eAAejE,UAAU,IAAIC,OAAOC,YAAY,EACpDsC,wBAAAA,IAAI,CAACuB,gBAAgB,cAArBvB,mCAAAA,wBAAyB,IACzBA,UAAAA,IAAI,CAACuB,kBAAkB,EAAE,cAAzBvB,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAACuB,kBAAkB,EAAE,cAAzBvB,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAACuB,kBAAkB,EAAE,cAAzBvB,qBAAAA,UAA6B,KAC3B;QACJ,IAAI7B,QAAQ,OAAOsD,iBAAiB,UAAUA,iBAAiB,QAAQ;YACrE,OAAO;QACT;QACArB,SAASoB;IACX;IACA,OAAO;AACT;AACA,SAASE,gBAAgBlC,OAAO,EAAEgB,gBAAgB,EAAEmB,YAAY;QAalCnC,WAA+CA;IAZ3E,IAAMkB,eAAeH,mBAAmBf,SAASgB;IACjD,IAAIE,gBAAgB,QAAQA,eAAe,MAAMlB,QAAQhC,MAAM,EAAE;QAC/D;IACF;IACA,IAAIgC,OAAO,CAACkB,aAAa,KAAK,GAAG;QAC/B;IACF;IACA,IAAMI,gBAAgBH,oBAAoBnB,SAASkB;IACnD,IAAMK,aAAaC,KAAKC,GAAG,CACzBzB,QAAQhC,MAAM,EACdkD,eAAe,IAAII;IAErB,IAAMc,oBAAoB,AAAC,CAAA,EAACpC,YAAAA,OAAO,CAACkB,eAAe,GAAG,cAA1BlB,uBAAAA,YAA8B,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACkB,eAAe,GAAG,cAA1BlB,wBAAAA,aAA8B;IACzG,IAAIY,SAASM,eAAe,KAAKkB;IACjC,MAAOxB,SAAS,KAAKW,aAAa,EAAG;YAChBvB,iBACKA,YAAwCA,YACzCA,YAAwCA;QAF/D,IAAMqC,cAAarC,kBAAAA,OAAO,CAACY,OAAO,cAAfZ,6BAAAA,kBAAmB;QACtC,IAAMsC,gBAAgB,AAAC,CAAA,EAACtC,aAAAA,OAAO,CAACY,SAAS,EAAE,cAAnBZ,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACY,SAAS,EAAE,cAAnBZ,wBAAAA,aAAuB;QACvF,IAAMuC,eAAe,AAAC,CAAA,EAACvC,aAAAA,OAAO,CAACY,SAAS,EAAE,cAAnBZ,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACY,SAAS,EAAE,cAAnBZ,wBAAAA,aAAuB;QACtF,IAAM+B,kBAAkBnB,SAAS;QACjC,IAAMoB,gBAAgBR,KAAKC,GAAG,CAACM,kBAAkBQ,cAAchB,aAAa;QAC5E,IAAIc,eAAe,OAAOA,eAAe,KAAKR,0BAA0B7B,SAAS+B,iBAAiBC,gBAAgB;YAChHG,aAAaP,GAAG,CAACU;QACnB;QACA1B,SAASmB,kBAAkBQ;IAC7B;AACF;AACA,SAASC,4BAA4BC,OAAO,EAAEC,iBAAiB;IAC7D,IAAIC,WAAW;IACf,IAAK,IAAI5E,IAAI,GAAGA,IAAI0E,QAAQzE,MAAM,EAAED,IAAK;YACX0E;QAA5BE,WAAWA,WAAW,OAAMF,aAAAA,OAAO,CAAC1E,EAAE,cAAV0E,wBAAAA,aAAc,OAAO;IACnD;IACA,IAAM5H,MAAM,AAAC,GAAoB8H,OAAlBF,QAAQzE,MAAM,EAAC,KAAY,OAAT2E;IACjC,IAAID,kBAAkBE,GAAG,CAAC/H,MAAM;QAC9B,OAAO;IACT;IACA6H,kBAAkBd,GAAG,CAAC/G;IACtB,IAAI6H,kBAAkBG,IAAI,GAAG,KAAK;QAChC,IAAMC,WAAWJ,kBAAkBK,MAAM,GAAGC,IAAI,GAAG7H,KAAK;QACxD,IAAI2H,UAAU;YACZJ,kBAAkBO,MAAM,CAACH;QAC3B;IACF;IACA,OAAO;AACT;AACA,SAASI,uBAAuBT,OAAO,EAAEU,OAAO,EAAET,iBAAiB;IACjE,IAAID,OAAO,CAAC,EAAE,KAAK,OAAOD,4BAA4BC,SAASC,oBAAoB;QACjF;IACF;IACA,IAAM3D,SAASe,kBAAkB2C;IACjC,IAAI,CAAC1D,QAAQ;QACX;IACF;IACAA,OAAOI,GAAG,GAAG,wCACR,SAAOJ,OAAOI,GAAG,MAAK,YAAYJ,OAAOI,GAAG,GAAGJ,OAAOI,GAAG,GAAG,CAAC;QAChEiE,QAAQ;;IAEVD,QAAQE,IAAI,CAACtE;AACf;AACA,SAASuE,kBAAkB3B,GAAG,EAAE4B,KAAK,EAAEC,UAAU,EAAEL,OAAO,EAAET,iBAAiB;IAC3E,IAAMe,YAAYD,WAAWlJ,GAAG,CAACqH;IACjC,IAAI,CAAC8B,WAAW;QACd;IACF;IACA,IAAK,IAAI1F,IAAI,GAAGA,IAAIwF,MAAMvF,MAAM,IAAIyF,UAAUF,KAAK,CAACvF,MAAM,GAAGyF,UAAUC,cAAc,EAAE3F,IAAK;YACrEwF;QAArBE,UAAUF,KAAK,CAACF,IAAI,EAACE,WAAAA,KAAK,CAACxF,EAAE,cAARwF,sBAAAA,WAAY;IACnC;IACA,IAAIE,UAAUF,KAAK,CAACvF,MAAM,IAAIyF,UAAUC,cAAc,EAAE;QACtDF,WAAWP,MAAM,CAACtB;QAClBuB,uBAAuB,IAAItD,WAAW6D,UAAUF,KAAK,GAAGJ,SAAST;IACnE;AACF;AACA,SAASiB,iCAAiChC,GAAG,EAAE3B,OAAO,EAAEgB,gBAAgB,EAAEwC,UAAU,EAAEL,OAAO,EAAET,iBAAiB;IAC9G,IAAI1C,QAAQhC,MAAM,KAAK,GAAG;QACxB;IACF;IACA,IAAI4C,SAAS;IACb,IAAII,kBAAkB;YACChB;QAArB,IAAMiB,gBAAejB,YAAAA,OAAO,CAAC,EAAE,cAAVA,uBAAAA,YAAc;QACnC,IAAM4D,oBAAoBJ,WAAWlJ,GAAG,CAACqH;QACzC,IAAIiC,qBAAqB3C,eAAe,GAAG;YACzCqC,kBACE3B,KACA3B,QAAQ6D,QAAQ,CAAC,GAAGrC,KAAKC,GAAG,CAAC,IAAIR,cAAcjB,QAAQhC,MAAM,IAC7DwF,YACAL,SACAT;QAEJ;QACAc,WAAWP,MAAM,CAACtB;QAClBf,SAAS,IAAIK;IACf,OAAO;QACLqC,kBAAkB3B,KAAK3B,SAASwD,YAAYL,SAAST;QACrD;IACF;IACA,MAAO9B,SAAS,KAAKZ,QAAQhC,MAAM,CAAE;QACnC,IAAM8F,UAAU9D,OAAO,CAACY,OAAO;QAC/B,IAAIkD,WAAW,QAAQA,YAAY,KAAK;YACtC;QACF;QACA,IAAMxC,gBAAgBH,oBAAoBnB,SAASY;QACnD,IAAMmD,cAAc,IAAIzC;QACxB,IAAIA,iBAAiB,KAAKyC,eAAe,GAAG;YAC1C;QACF;QACA,IAAInD,SAASmD,eAAe/D,QAAQhC,MAAM,EAAE;YAC1CkF,uBACElD,QAAQ6D,QAAQ,CAACjD,QAAQA,SAASmD,cAClCZ,SACAT;YAEF9B,UAAUmD;QACZ,OAAO;YACLP,WAAWQ,GAAG,CAACrC,KAAK;gBAClB4B,OAAOU,MAAMvJ,IAAI,CAACsF,QAAQ6D,QAAQ,CAACjD;gBACnC8C,gBAAgBK;YAClB;YACA;QACF;IACF;AACF;AACA,SAASG,yBAAyB1D,IAAI,EAAE2B,YAAY,EAAEd,OAAO,EAAEqB,iBAAiB;IAC9E,IAAMyB,aAAa5D,qBAAqBC;IACxC,IAAI,CAAC2D,YAAY;QACf,OAAO,EAAE;IACX;IACA,IAAMhB,UAAU,EAAE;IAClB,IAAMiB,oBAAoB,aAAa,GAAG,IAAIC;IAC9C,IAAK,IAAIvD,cAAcqD,WAAWvD,MAAM,EAAEE,cAAcqD,WAAWzD,UAAU,IAAIF,KAAKxC,MAAM,EAAE8C,eAAeqD,WAAWzD,UAAU,CAAE;QAClI,IAAM4D,UAAUxD,cAAcqD,WAAWxD,eAAe;QACxD,IAAIH,IAAI,CAAC8D,QAAQ,KAAK,IAAI;YACxB;QACF;QACA,IAAMC,aAAa/D,IAAI,CAAC8D,UAAU,EAAE;QACpC,IAAME,YAAYhE,IAAI,CAAC8D,UAAU,EAAE;QACnC,IAAMG,aAAajE,IAAI,CAAC8D,UAAU,EAAE;QACpC,IAAIC,cAAc,QAAQC,aAAa,QAAQC,cAAc,QAAQ,AAACF,CAAAA,aAAa,GAAE,MAAO,GAAG;YAC7F;QACF;QACA,IAAMvD,mBAAmB,AAACuD,CAAAA,aAAa,EAAC,MAAO;QAC/C,IAAM5C,MAAM,AAAC4C,CAAAA,aAAa,EAAC,KAAM,IAAIC;QACrC,IAAME,yBAAyBD,cAAc,IAAI;QACjD,IAAME,aAAaD,2BAA2B,KAAKA,2BAA2B;QAC9E,IAAI,CAACC,YAAY;YACf;QACF;QACA,IAAIC,eAAeN,UAAU;QAC7B,IAAII,2BAA2B,GAAG;YAChC,IAAMG,mBAAmBrE,IAAI,CAACoE,aAAa;YAC3C,IAAIC,oBAAoB,MAAM;gBAC5B;YACF;YACAD,gBAAgB,IAAIC;QACtB;QACA,IAAMC,aAAatD,KAAKC,GAAG,CAAC6C,UAAU,KAAK9D,KAAKxC,MAAM;QACtD,IAAI4G,gBAAgBE,cAAcF,gBAAgBpE,KAAKxC,MAAM,EAAE;YAC7D;QACF;QACA,IAAMgC,UAAUQ,KAAKqD,QAAQ,CAACe,cAAcE;QAC5C,IAAInD,QAAQ,GAAG;YACbP,gBAAgBpB,SAASgB,kBAAkBK;QAC7C,OAAO,IAAIA,QAAQuB,GAAG,CAACjB,MAAM;YAC3BO,gBAAgBlC,SAASgB,kBAAkBmB;QAC7C,OAAO,IAAIA,aAAaS,GAAG,CAACjB,MAAM;YAChCgC,iCACEhC,KACA3B,SACAgB,kBACAoD,mBACAjB,SACAT;QAEJ;IACF;IACA,OAAOS;AACT;AACA,IAAI4B,0BAAY;aAAZA,UACUC,GAAG;gCADbD;QAEA,IAAI,CAACC,GAAG,GAAGA;QACX,IAAI,CAACC,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAG;;;;YAEhBC,KAAAA;mBAAAA,SAAAA,SAASC,OAAO;gBACd,IAAIC,SAAS;gBACb,MAAOD,UAAU,EAAG;oBAClB,IAAI,IAAI,CAACH,OAAO,IAAI,IAAI,CAACD,GAAG,CAAChH,MAAM,EAAE,OAAOqH;oBAC5C,IAAMC,kBAAkB,IAAI,IAAI,CAACJ,MAAM;oBACvC,IAAMK,SAAS/D,KAAKC,GAAG,CAAC2D,SAASE;oBACjC,IAAME,cAAc,IAAI,CAACR,GAAG,CAAC,IAAI,CAACC,OAAO,CAAC;oBAC1C,IAAMQ,QAAQH,kBAAkBC;oBAChC,IAAMG,OAAO,AAAC,CAAA,KAAKH,MAAK,IAAK,IAAI;oBACjC,IAAMI,OAAOH,eAAeC,QAAQC;oBACpCL,SAASA,UAAUE,SAASI;oBAC5B,IAAI,CAACT,MAAM,IAAIK;oBACf,IAAI,IAAI,CAACL,MAAM,IAAI,GAAG;wBACpB,IAAI,CAACA,MAAM,GAAG;wBACd,IAAI,CAACD,OAAO,IAAI;oBAClB;oBACAG,WAAWG;gBACb;gBACA,OAAOF,WAAW;YACpB;;;YACAO,KAAAA;mBAAAA,SAAAA,SAAStI,CAAC;gBACR,IAAI,CAAC6H,QAAQ,CAAC7H;YAChB;;;YACIuI,KAAAA;iBAAJ;gBACE,OAAO,IAAI,CAACX,MAAM,KAAK,IAAI,IAAI,CAACD,OAAO,GAAG,IAAI,CAACA,OAAO,GAAG;YAC3D;;;;;AAEF,SAASa,eAAeC,CAAC,EAAEC,kBAAkB;IAC3C,IAAMC,oBAAoBF,EAAEZ,QAAQ,CAAC,OAAO;IAC5C,IAAI,CAACc,mBAAmB;QACtBF,EAAEZ,QAAQ,CAAC;QACX,OAAO,KAAK;IACd;IACAY,EAAEZ,QAAQ,CAAC;IACX,IAAMe,OAAOH,EAAEZ,QAAQ,CAAC;IACxB,IAAMgB,MAAMJ,EAAEZ,QAAQ,CAAC;IACvB,IAAMiB,WAAW,AAACF,CAAAA,OAAO,aAAaC,MAAMH,kBAAiB,IAAK;IAClE,OAAOI,WAAW;AACpB;AACA,SAASC,iCAAiCC,kBAAkB;IAC1D,OAAQA;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT;YACE,OAAO,KAAK;IAChB;AACF;AACA,SAASC,kCAAkCC,UAAU;QAKjDA,cACAA,eACAA,eACAA,eAK2BA,eAAmCA,eAA+BA,eAA6BA,eAClGA,eAIZA,eAwBiBA,oBAKJA;IA9C3B,IAAIA,WAAWxI,MAAM,GAAG,IAAI;QAC1B,OAAO,KAAK;IACd;IACA,IAAMyI,aAAaxI,OAAOC,YAAY,EACpCsI,eAAAA,UAAU,CAAC,EAAE,cAAbA,0BAAAA,eAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAEnB,IAAIC,eAAe,QAAQ;QACzB,OAAO,KAAK;IACd;IACA,IAAMC,sBAAsB,EAACF,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,KAAK,WAAY,CAAA,EAACA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,MAAM,EAAC,IAAM,CAAA,EAACA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,MAAM,CAAA,MAAMA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAC7I,IAAMG,kBAAkB,AAAC,CAAA,EAACH,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,KAAK,GAAE,MAAO;IACzD,IAAIG,iBAAiB;QACnB,OAAO,KAAK;IACd;IACA,IAAMC,SAAQJ,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAC/B,IAAMK,0BAA0B,AAACD,CAAAA,QAAQ,GAAE,MAAO;IAClD,IAAME,2BAA2B,AAACF,CAAAA,QAAQ,EAAC,MAAO;IAClD,IAAIhG,SAAS;IACb,IAAI,CAACiG,yBAAyB;YACLL;QAAvB,IAAMO,kBAAiBP,sBAAAA,UAAU,CAAC5F,OAAO,cAAlB4F,iCAAAA,sBAAsB;QAC7C5F,UAAU,IAAImG,iBAAiB;QAC/B,IAAInG,SAAS4F,WAAWxI,MAAM,EAAE;YAC9B,OAAO,KAAK;QACd;IACF;IACA,IAAIkB,kBAAkB,KAAK;IAC3B,IAAI4H,0BAA0B;YAILN,qBAAyCA,gBAA4CA,gBAAwCA,gBAAsCA;QAH1L,IAAI5F,SAAS,IAAI4F,WAAWxI,MAAM,EAAE;YAClC,OAAO,KAAK;QACd;QACA,IAAMgJ,gBAAgB,EAACR,sBAAAA,UAAU,CAAC5F,OAAO,cAAlB4F,iCAAAA,sBAAsB,KAAK,aAAa,EAACA,iBAAAA,UAAU,CAAC5F,SAAS,EAAE,cAAtB4F,4BAAAA,iBAA0B,KAAK,WAAY,CAAA,EAACA,iBAAAA,UAAU,CAAC5F,SAAS,EAAE,cAAtB4F,4BAAAA,iBAA0B,MAAM,EAAC,IAAM,CAAA,EAACA,iBAAAA,UAAU,CAAC5F,SAAS,EAAE,cAAtB4F,4BAAAA,iBAA0B,MAAM,CAAA,MAAMA,iBAAAA,UAAU,CAAC5F,SAAS,EAAE,cAAtB4F,4BAAAA,iBAA0B;QACpNtH,kBAAkB8H,gBAAgB;QAClCpG,UAAU;IACZ;IACA,IAAIA,SAAS,IAAI4F,WAAWxI,MAAM,EAAE;QAClC,OAAO,KAAK;IACd;IACA4C,UAAU;IACV,IAAMqG,0BAAyBT,qBAAAA,UAAU,CAAC5F,OAAO,cAAlB4F,gCAAAA,qBAAsB;IACrD5F,UAAU,IAAIqG;IACd,IAAIrG,UAAU4F,WAAWxI,MAAM,EAAE;QAC/B,OAAO,KAAK;IACd;IACA,IAAMsI,sBAAqBE,sBAAAA,UAAU,CAAC5F,OAAO,cAAlB4F,iCAAAA,sBAAsB;IACjD,IAAMU,aAAab,iCAAiCC;IACpD,IAAI,CAACY,YAAY;QACf,OAAO,KAAK;IACd;IACA,OAAO;QACLlI,MAAMkI;OACHhI,oBAAoB,KAAK,IAAI;QAAEA,iBAAAA;IAAgB,IAAI,CAAC;QACvDwH,qBAAAA;;AAEJ;AACA,SAASS,mCAAmC3G,IAAI,EAAEI,MAAM;QAIxBJ,cAA2BA;IAHzD,IAAII,SAAS,IAAIJ,KAAKxC,MAAM,EAAE;QAC5B,OAAO,KAAK;IACd;IACA,IAAMoJ,uBAAuB,EAAC5G,eAAAA,IAAI,CAACI,OAAO,cAAZJ,0BAAAA,eAAgB,MAAM,MAAKA,SAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,oBAAAA,SAAoB;IAC7E,IAAI6G,mBAAmBzG,SAAS;IAChC,IAAMoB,gBAAgBR,KAAKC,GAAG,CAC5BjB,KAAKxC,MAAM,EACXqJ,mBAAmBD;IAErB,MAAOC,mBAAmB,KAAKrF,cAAe;YACtBxB,wBACGA;QADzB,IAAM8G,iBAAgB9G,yBAAAA,IAAI,CAAC6G,iBAAiB,cAAtB7G,oCAAAA,yBAA0B;QAChD,IAAM+G,oBAAmB/G,UAAAA,IAAI,CAAC6G,mBAAmB,EAAE,cAA1B7G,qBAAAA,UAA8B;QACvD,IAAMgH,sBAAsBH,mBAAmB;QAC/C,IAAMI,oBAAoBD,sBAAsBD;QAChD,IAAIE,oBAAoBzF,eAAe;YACrC,OAAO,KAAK;QACd;QACA,IAAIsF,kBAAkB,GAAG;YACvB,IAAMI,mBAAmBnB,kCACvB/F,KAAKqD,QAAQ,CAAC2D,qBAAqBC;YAErC,IAAIC,kBAAkB;gBACpB,OAAOA;YACT;QACF;QACAL,mBAAmBI;IACrB;IACA,OAAO,KAAK;AACd;AACA,SAAS3H,kBAAkBU,IAAI;IAC7B,IAAMuF,IAAI,IAAIhB,UAAUvE;IACxB,IAAMsD,UAAUiC,EAAEZ,QAAQ,CAAC;IAC3B,IAAIrB,YAAY,KAAK,OAAO,KAAK;IACjCiC,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACX,IAAM7D,gBAAgByE,EAAEZ,QAAQ,CAAC;IACjC,IAAI7D,iBAAiB,KAAKd,KAAKxC,MAAM,GAAG,IAAIsD,eAAe;QACzD,OAAO,KAAK;IACd;IACAyE,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACX,IAAMwC,aAAa5B,EAAEZ,QAAQ,CAAC;IAC9B,IAAMyC,YAAY7B,EAAEZ,QAAQ,CAAC;IAC7B,IAAMa,qBAAqB2B,aAAa,aAAaC;IACrD7B,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACX,IAAM0C,sBAAsB9B,EAAEZ,QAAQ,CAAC;IACvC,IAAM2C,oBAAoB/B,EAAEZ,QAAQ,CAAC;IACrC,IAAI+B;IACJ,IAAIhI,kBAAkB,KAAK;IAC3B,IAAID,aAAa,KAAK;IACtB,IAAI8I,gBAAgB,KAAK;IACzB,IAAMC,mBAAmBjC,EAAEF,YAAY;IACvC,IAAIiC,sBAAsB,GAAG;QAC3BC,gBAAgBhC,EAAEZ,QAAQ,CAAC;QAC3B,IAAM8C,SAASlC,EAAEZ,QAAQ,CAAC,OAAO;QACjCY,EAAEZ,QAAQ,CAAC;QACX,IAAI8C,QAAQ,OAAO,KAAK;QACxB,IAAMC,eAAenC,EAAEZ,QAAQ,CAAC,OAAO;QACvC,IAAMgD,oBAAoBpC,EAAEZ,QAAQ,CAAC,OAAO;QAC5C,IAAMiD,eAAerC,EAAEZ,QAAQ,CAAC,OAAO;QACvC,IAAMkD,sBAAsBtC,EAAEZ,QAAQ,CAAC,OAAO;QAC9CY,EAAEZ,QAAQ,CAAC;QACX+B,aAAagB,eAAe,UAAU;QACtC,IAAIC,qBAAqB,CAACE,qBAAqB;YAC7CpJ,aAAa6G,eAAeC,GAAGC;QACjC,OAAO,IAAI,CAACmC,mBAAmB;YAC7B,IAAMpB,iBAAiBhB,EAAEZ,QAAQ,CAAC;YAClC,IAAK,IAAIpH,IAAI,GAAGA,IAAIgJ,gBAAgBhJ,IAAK;gBACvCgI,EAAEZ,QAAQ,CAAC;gBACX,IAAI,CAACkD,qBAAqB;oBACxB,IAAMC,sBAAsBxC,eAAeC,GAAGC;oBAC9C,IAAI/G,eAAe,KAAK,GAAG;wBACzBA,aAAaqJ;oBACf;gBACF;YACF;QACF;QACA,IAAIF,cAAc;YAChBrC,EAAEZ,QAAQ,CAAC;YACXY,EAAEZ,QAAQ,CAAC;YACX,IAAMe,OAAOH,EAAEZ,QAAQ,CAAC;YACxB,IAAMgB,MAAMJ,EAAEZ,QAAQ,CAAC;YACvB,IAAM6B,gBAAgBd,OAAO,aAAaC;YAC1CjH,kBAAkB8H,gBAAgB;QACpC;QACAjB,EAAEZ,QAAQ,CAAC;QACXY,EAAEZ,QAAQ,CAAC;QACXY,EAAEZ,QAAQ,CAAC;IACb,OAAO,IAAI2C,sBAAsB,GAAG;QAClC7I,aAAa6G,eAAeC,GAAGC;IACjC,OAAO;QACL,OAAO,KAAK;IACd;IACA,IAAMuC,2BAA2BV,wBAAwB,OAAO9B,EAAEF,YAAY,GAAGmC,mBAAmBH;IACpG,IAAMH,mBAAmBP,mCACvB3G,MACA+H;IAEF,IAAIb,kBAAkB;QACpBR,aAAaQ,iBAAiB1I,IAAI;QAClC,IAAIE,oBAAoB,KAAK,GAAG;YAC9BA,kBAAkBwI,iBAAiBxI,eAAe;QACpD;IACF;IACA,IAAI,CAACgI,YAAY;QACf,OAAO,KAAK;IACd;IACA,IAAMnI,SAAS;QACbC,MAAMkI;OACHjI,eAAe,KAAK,IAAI;QAAEA,YAAAA;IAAW,IAAI,CAAC,GAC1CC,oBAAoB,KAAK,IAAI;QAAEA,iBAAAA;IAAgB,IAAI,CAAC;QACvDC,KAAK;YACHqJ,qBAAqBV;WAClBC,kBAAkB,KAAK,IAAI;YAAEU,iBAAiBV;QAAc,IAAI,CAAC,GACjEL,CAAAA,6BAAAA,uCAAAA,iBAAkBhB,mBAAmB,MAAK,KAAK,IAAI;YAAEgC,uBAAuBhB,iBAAiBhB,mBAAmB;QAAC,IAAI,CAAC;;IAG7H,OAAO3H;AACT;AAEA,0BAA0B;AAC1B,IAAIzD,0BAAY;aAAZA,UACUqN,MAAM,EAAEC,KAAK,EAAEC,UAAU,EAAEC,MAAM,EAAEC,SAAS;gCADtDzN;QAEA,IAAI,CAAC0N,YAAY,GAAG;QACpB,IAAI,CAACC,aAAa,GAAG;QACrB,IAAI,CAACC,kBAAkB,GAAG;QAC1B,IAAI,CAACC,mBAAmB,GAAG;QAC3B,IAAI,CAACC,qBAAqB,GAAG;QAC7B,IAAI,CAACC,4BAA4B,GAAG;QACpC,IAAI,CAACC,yBAAyB,GAAG;QACjC,IAAI,CAACC,qBAAqB,GAAG;QAC7B,IAAI,CAACZ,MAAM,GAAGA;QACd,IAAI,CAACC,KAAK,GAAGA;QACb,IAAI,CAACC,UAAU,GAAGA;QAClB,IAAI,CAACC,MAAM,GAAGA;QACd,IAAI,CAACC,SAAS,GAAGA;;;;YAEfS,KAAAA;iBAAJ;gBACE,OAAO,CAAC,CAAC,IAAI,CAACb,MAAM,CAACc,aAAa;YACpC;;;YACAC,KAAAA;mBAAAA,SAAAA,mBAAmBC,aAAa;gBAC9B,IAAMtH,aAAasH;gBACnB,IAAItH,eAAe,SAAS;oBAC1B,OAAO;gBACT;gBACA,IAAMuH,YAAY,IAAI,CAAChB,KAAK,CAACiB,WAAW,CAAC;gBACzC,OAAO,CAAC,CAAE,CAAA,IAAI,CAAClB,MAAM,CAACmB,cAAc,IAAIF,SAAQ;YAClD;;;YACMG,KAAAA;mBAAN,SAAMA;;wBAIgB,2BAA6B,6BAEzCC,YAWA;;;;gCAhBR,IAAI,CAACf,aAAa,GAAG;gCACrB,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACP,MAAM,CAACsB,GAAG;gCACzC,IAAI,CAACrB,KAAK,CAACqB,GAAG,GAAG,IAAI,CAACtB,MAAM,CAACsB,GAAG;gCAChC,IAAI,CAACjB,YAAY,IAAG,4BAAA,IAAI,CAACL,MAAM,CAACK,YAAY,cAAxB,uCAAA,6BAA6B,8BAAA,IAAI,CAACL,MAAM,CAACuB,cAAc,cAA1B,yCAAA,8BAA8B;gCAC/E,IAAI,IAAI,CAACV,KAAK,EAAE;oCACRQ,aAAa,IAAI,CAAChB,YAAY,GAAG,iDAAiD;oCACxFmB,QAAQC,GAAG,CACT,sDACA;wCACEC,QAAQ,IAAI,CAACrB,YAAY;wCACzBc,gBAAgB,IAAI,CAACnB,MAAM,CAACmB,cAAc;wCAC1CE,YAAAA;oCACF;gCAEJ;qCACI,IAAI,CAACrB,MAAM,CAAC2B,QAAQ,EAApB;;;;gCACF;;qCAAM,mBAAA,IAAI,CAAC1B,KAAK,CAAC2B,IAAI,gBAAf,uCAAA,iBAAmBC,KAAK,CAAC,YAC/B;;;gCADA;;;;;;;;gBAGJ;;;;YACAC,KAAAA;mBAAAA,SAAAA;;gBACE,IAAI,CAACC,GAAG,GAAG,IAAIjP,WAAWkP,OAAO,CAAC;oBAChCC,cAAc;oBACdC,kBAAkB;oBAClBC,sBAAsB;oBACtBZ,gBAAgB,CAAC,CAAC,IAAI,CAACvB,MAAM,CAACuB,cAAc;oBAC5Ca,yBAAyB;oBACzBC,iBAAiB;oBACjBC,oBAAoB;oBACpBC,eAAe,KAAK,MAAM;oBAC1BC,eAAe;oBACfC,0BAA0B;oBAC1BC,aAAa;oBACbC,eAAe;oBACfC,eAAe,CAAC;gBAClB;gBACA,IAAI,CAACb,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAACC,cAAc,EAAE;wBACpD;qBAAA,YAAA,MAAKhB,GAAG,cAAR,gCAAA,UAAUiB,UAAU,CAAC,MAAKhD,MAAM,CAACsB,GAAG;gBACtC;gBACA,IAAI,CAACS,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAACG,eAAe,EAAE,SAAOC,GAAGC;;4BAC3C,iCASA,oCAT6B,kBAAA,WAS3CC,aAWI;;;;oCApBV,IAAI,CAAC/C,YAAY,IAAG,4BAAA,IAAI,CAACL,MAAM,CAACK,YAAY,cAAxB,uCAAA,qCAA6B,YAAA,IAAI,CAAC0B,GAAG,cAAR,iCAAA,mBAAA,UAAUsB,MAAM,cAAhB,uCAAA,iBAAkBC,IAAI,CACrE,SAACC;4CAAUA,gBAAiCA;+CAAjCA,CAAAA,kBAAAA,6BAAAA,iBAAAA,MAAOC,OAAO,cAAdD,qCAAAA,eAAgBE,IAAI,MAAK,QAAQF,CAAAA,kBAAAA,6BAAAA,kBAAAA,MAAOC,OAAO,cAAdD,sCAAAA,gBAAgBlN,IAAI,MAAK;6EAClE;oCACL;;wCAAM,IAAI,CAAC+J,SAAS,CAACsD,gBAAgB,CAAC,IAAI,CAACrD,YAAY;;;oCAAvD;oCACA,IAAI,CAACI,qBAAqB,GAAG;oCAC7B,IAAI,CAACE,yBAAyB,GAAG;oCACjC,IAAI,CAACD,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAACV,MAAM,CAAC2B,QAAQ;oCAC1D,IAAI,CAACf,qBAAqB,GAAG;oCAC7B,IAAI,CAAC+C,wBAAwB,GAAG,KAAK;oCAC/BP,eAAc,qCAAA,IAAI,CAACpD,MAAM,CAAC4D,qBAAqB,cAAjC,gDAAA,qCAAqC;oCACzD,IAAI,IAAI,CAAC/C,KAAK,EAAE;wCACdW,QAAQC,GAAG,CACT,uCACA2B,aACA;oCAEJ;yCACIA,CAAAA,gBAAgB,KAAK,CAAC,IAAI,CAACpD,MAAM,CAAC2B,QAAO,AAAC,GAA1CyB;;;;oCACF,IAAI,CAACzC,yBAAyB,GAAG;yCAC7B,IAAI,CAACX,MAAM,CAAC2B,QAAQ,EAApB;;;;oCACF;;yCAAM,mBAAA,IAAI,CAAC1B,KAAK,CAAC2B,IAAI,gBAAf,uCAAA,iBAAmBC,KAAK,CAAC,YAC/B;;;oCADA;;;oCAIJ,IAAI,CAACrB,mBAAmB,GAAG;;;;;;oBAC7B;;gBACA,IAAI,CAACuB,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAACe,YAAY,EAAE,SAACC,MAAMjM;oBACzD,MAAKkM,yBAAyB,CAAClM,iBAAAA,2BAAAA,KAAM2L,OAAO;oBAC5C,IAAI,MAAKpD,SAAS,CAAC4D,WAAW,MAAM,MAAK5D,SAAS,CAAC6D,iBAAiB,IAAI;wBACtE;oBACF;oBACA,IAAMT,UAAU3L,iBAAAA,2BAAAA,KAAM2L,OAAO;oBAC7B,IAAI,CAACA,WAAW,CAACA,QAAQU,SAAS,IAAIV,QAAQU,SAAS,CAAC7O,MAAM,KAAK,GAAG;wBACpE;oBACF;oBACA,IAAM8O,kBAAkBtL,KAAKC,GAAG,CAAC,GAAG0K,QAAQU,SAAS,CAAC7O,MAAM;oBAC5D,IAAK,IAAID,IAAI,GAAGA,IAAI+O,iBAAiB/O,IAAK;wBACxC,IAAMK,OAAO+N,QAAQU,SAAS,CAAC9O,EAAE;wBACjC,IAAMgP,UAAU3O,iBAAAA,2BAAAA,KAAM2O,OAAO;wBAC7B,IAAI,CAAC9I,MAAM+I,OAAO,CAACD,UAAU;4BACxB,kCAAA,2BAAA;;4BAAL,QAAK,YAAeA,4BAAf,SAAA,6BAAA,QAAA,yBAAA,iCAAwB;gCAAxB,IAAME,QAAN;gCACH,IAAItO,MAAM;gCACV,IAAIxD,QAAQ;gCACZ,IAAI8I,MAAM+I,OAAO,CAACC,QAAQ;wCACXA,SACEA;oCADftO,MAAMV,QAAOgP,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;oCACzB9R,QAAQ8C,QAAOgP,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAY;gCAC7B,OAAO,IAAI,OAAOA,UAAU,UAAU;oCACpC,IAAMC,MAAMD,MAAME,OAAO,CAAC;oCAC1B,IAAID,OAAO,GAAG;wCACZvO,MAAMsO,MAAMG,SAAS,CAAC,GAAGF;wCACzB/R,QAAQ8R,MAAMG,SAAS,CAACF,MAAM;oCAChC,OAAO;wCACLvO,MAAMsO;oCACR;gCACF;gCACA,IAAI,CAACtO,KAAK;gCACV,IAAIA,IAAI0O,QAAQ,CAAC,oBAAoB1O,IAAI0O,QAAQ,CAAC,oBAAoB;oCACpE,IAAMxQ,QAAQ8B,IAAI0O,QAAQ,CAAC,qBAAqBzQ,mBAAmBzB,SAAS,CAAC;oCAC7E,IAAMsE,aAAad,IAAI0O,QAAQ,CAAC,oBAAoB,gBAAgBxQ,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;oCAC1G,IAAI4C,YAAY;wCACd,IAAMP,kBAAkBvD,oBAAoBR;wCAC5C,IAAM4D,SAAS;4CACbC,MAAM;2CACHE,oBAAoB,KAAK,IAAI;4CAAEA,iBAAAA;wCAAgB,IAAI,CAAC;4CACvDC,KAAK;gDAAER,KAAAA;gDAAKxD,OAAAA;gDAAOmS,gBAAgB;4CAAK;;wCAE1C,IAAI,MAAK9D,KAAK,EAAE;4CACdW,QAAQC,GAAG,CAAC,sFAAsFrM,GAAG;wCACvG;wCACA,MAAKgL,SAAS,CAACwE,WAAW,CAACxO,QAAQ,mBAC9B,MAAK8J,UAAU,CAAC2E,sBAAsB,CAAC,YAAY,SAASpP;wCAEjE;oCACF;gCACF;4BACF;;4BAnCK;4BAAA;;;qCAAA,6BAAA;oCAAA;;;oCAAA;0CAAA;;;;oBAoCP;gBACF;gBACA,IAAI,CAACsM,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAACgC,aAAa,EAAE,SAAOhB,MAAMX;;mCAK5C,oCAAdC,aAcI;;;;;oCAlBV,IAAI,IAAI,CAACzC,yBAAyB,EAAE;wCAClC;;;oCACF;oCACA,IAAI,CAACF,qBAAqB;oCACpB2C,eAAc,qCAAA,IAAI,CAACpD,MAAM,CAAC4D,qBAAqB,cAAjC,gDAAA,qCAAqC;oCACzD,IAAI,IAAI,CAAC/C,KAAK,EAAE;wCACdW,QAAQC,GAAG,CACT,AAAC,4CAAyE2B,OAA9B,IAAI,CAAC3C,qBAAqB,EAAC,KAAe,OAAZ2C;oCAE9E;yCACI,CAAA,IAAI,CAAC3C,qBAAqB,IAAI2C,WAAU,GAAxC;;;;oCACF,IAAI,CAACzC,yBAAyB,GAAG;yCAC7B,IAAI,CAACD,4BAA4B,EAAjC;;;;oCACF,IAAI,IAAI,CAACG,KAAK,EAAE;wCACdW,QAAQC,GAAG,CACT,AAAC,oDAA8E,OAA3B,IAAI,CAAChB,qBAAqB,EAAC;oCAEnF;oCACA;;yCAAM,mBAAA,IAAI,CAACR,KAAK,CAAC2B,IAAI,gBAAf,uCAAA,iBAAmBC,KAAK,CAAC,SAACkD;4CAC9B,IAAI,MAAKlE,KAAK,EAAE;gDACdW,QAAQwD,IAAI,CAAC,4CAA4CD;4CAC3D;wCACF;;;oCAJA;;;;;;;;oBAON;;gBACA,IAAI,CAAChD,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAACmC,qBAAqB,EAAE,SAACnB,MAAMjM;oBAClE,IAAMqN,UAAU,AAACrN,CAAAA,CAAAA,iBAAAA,2BAAAA,KAAMsN,OAAO,KAAI,EAAC,AAAC,EAAEC,GAAG,CAAC,SAACC;+BAAO;4BAChDnT,KAAK;4BACLM,KAAK,EAAE6S,cAAAA,wBAAAA,EAAGxN,IAAI;4BACdvB,UAAU,EAAE+O,cAAAA,wBAAAA,EAAGC,GAAG;wBACpB;;oBACAJ,QAAQK,OAAO,CAAC,SAACvP;+BAAQ,MAAKwP,QAAQ,CAACxP;;gBACzC;gBACA,IAAI,CAAC+L,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAAC2C,WAAW,EAAE,SAAC3B,MAAMjM;wBAG/CA;oBAFT,MAAK6N,4BAA4B,CAC/B7N,iBAAAA,2BAAAA,KAAMR,OAAO,EACb,QAAOQ,iBAAAA,4BAAAA,aAAAA,KAAMpC,IAAI,cAAVoC,iCAAAA,WAAY8N,EAAE,MAAK,WAAW9N,KAAKpC,IAAI,CAACkQ,EAAE,GAAG,KAAK,GACzDnQ,wBAAwBqC,iBAAAA,2BAAAA,KAAMpC,IAAI;gBAEtC;gBACA,IAAI,CAACsM,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAAC8C,cAAc,EAAE,SAAC9B,MAAMjM;wBAGlDA;oBAFT,MAAK6N,4BAA4B,CAC/B7N,iBAAAA,2BAAAA,KAAMR,OAAO,EACb,QAAOQ,iBAAAA,4BAAAA,aAAAA,KAAMpC,IAAI,cAAVoC,iCAAAA,WAAY8N,EAAE,MAAK,WAAW9N,KAAKpC,IAAI,CAACkQ,EAAE,GAAG,KAAK,GACzDnQ,wBAAwBqC,iBAAAA,2BAAAA,KAAMpC,IAAI;gBAEtC;gBACA,IAAI,CAACsM,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAAC+C,YAAY,EAAE,SAAC/B,MAAMjM;oBACzD,IAAMpC,OAAOoC,iBAAAA,2BAAAA,KAAMpC,IAAI;oBACvB,IAAM2O,UAAU3O,iBAAAA,2BAAAA,KAAM2O,OAAO;oBAC7B,IAAI,CAAC9I,MAAM+I,OAAO,CAACD,UAAU;wBAC3B,MAAKhE,SAAS,CAAC0F,8BAA8B,CAACrQ;wBAC9C;oBACF;wBACK,kCAAA,2BAAA;;wBAAL,QAAK,YAAe2O,4BAAf,SAAA,6BAAA,QAAA,yBAAA,iCAAwB;4BAAxB,IAAME,QAAN;4BACH,IAAItO,MAAM;4BACV,IAAIxD,QAAQ;4BACZ,IAAI8I,MAAM+I,OAAO,CAACC,QAAQ;oCACXA,SACEA;gCADftO,MAAMV,QAAOgP,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;gCACzB9R,QAAQ8C,QAAOgP,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAY;4BAC7B,OAAO,IAAI,OAAOA,UAAU,UAAU;gCACpC,IAAMC,MAAMD,MAAME,OAAO,CAAC;gCAC1B,IAAID,OAAO,GAAG;oCACZvO,MAAMsO,MAAMG,SAAS,CAAC,GAAGF;oCACzB/R,QAAQ8R,MAAMG,SAAS,CAACF,MAAM;gCAChC,OAAO;oCACLvO,MAAMsO;oCACN9R,QAAQ;gCACV;4BACF;4BACA,IAAI,CAACwD,KAAK;4BACV,IAAIA,IAAI0O,QAAQ,CAAC,uBAAuB;gCACtC,IAAMqB,OAAOtS,gBAAgBjB;gCAC7B,IAAM4D,SAAS;oCACbC,MAAM;mCACH0P,CAAAA,iBAAAA,2BAAAA,KAAMhS,QAAQ,MAAK,KAAK,IAAI;oCAAEwC,iBAAiBwP,KAAKhS,QAAQ;gCAAC,IAAI,CAAC,GAClEgS,CAAAA,iBAAAA,2BAAAA,KAAMjS,OAAO,MAAK,KAAK,IAAI;oCAAEwC,YAAYyP,KAAKjS,OAAO;gCAAC,IAAI,CAAC;oCAC9D0C,KAAK;wCAAER,KAAAA;wCAAKxD,OAAAA;oCAAM;;gCAEpB,MAAK4N,SAAS,CAACwE,WAAW,CAACxO,QAAQ,mBAC9B,MAAK8J,UAAU,CAAC2E,sBAAsB,CAAC,YAAY,YAAYpP;4BAEtE,OAAO,IAAIO,IAAI0O,QAAQ,CAAC,kBAAkB;gCACxC,IAAMnO,kBAAkBvD,oBAAoBR;gCAC5C,IAAM4D,UAAS;oCACbC,MAAM;mCACHE,oBAAoB,KAAK,IAAI;oCAAEA,iBAAAA;gCAAgB,IAAI,CAAC;oCACvDC,KAAK;wCAAER,KAAAA;wCAAKxD,OAAAA;oCAAM;;gCAEpB,MAAK4N,SAAS,CAACwE,WAAW,CAACxO,SAAQ,mBAC9B,MAAK8J,UAAU,CAAC2E,sBAAsB,CAAC,YAAY,YAAYpP;4BAEtE,OAAO,IAAIO,IAAI0O,QAAQ,CAAC,iBAAiB;gCACvC,MAAKtE,SAAS,CAACwE,WAAW,CACxB;oCAAEvO,MAAM;oCAAOG,KAAK;wCAAER,KAAAA;wCAAKxD,OAAAA;oCAAM;gCAAE,GACnC,mBACK,MAAK0N,UAAU,CAAC2E,sBAAsB,CAAC,YAAY,YAAYpP;4BAGxE,OAAO,IAAIO,IAAI0O,QAAQ,CAAC,oBAAoB;oCAIrBxQ;gCAHrB,IAAMA,QAAQD,mBAAmBzB;gCACjC,IAAMsE,aAAa,gBAAgB5C,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;gCACzE,IAAM6C,YAAY,eAAe7C,SAASA,KAAK,CAAC,YAAY,KAAK,KAAK;gCACtE,IAAM8C,QAAQ1B,QAAOpB,eAAAA,KAAK,CAAC,QAAQ,cAAdA,0BAAAA,eAAkB;gCACvC,IAAMH,WAAWU,SAASP,KAAK,CAAC,WAAW;gCAC3C,IAAI4C,cAAc,wBAAwB5B,IAAI,CAAC8B,QAAQ;oCACrD,IAAMZ,UAAS;wCACbC,MAAM;uCACHtC,aAAa,KAAK,IAAI;wCAAEwC,iBAAiBxC;oCAAS,IAAI,CAAC;wCAC1DyC,KAAK;4CAAER,KAAAA;4CAAKxD,OAAAA;4CAAO0B,OAAAA;wCAAM;;oCAE3B,MAAKkM,SAAS,CAACwE,WAAW,CAACxO,SAAQ,mBAC9B,MAAK8J,UAAU,CAAC2E,sBAAsB,CAAC,YAAY,YAAYpP;gCAEtE;gCACA,IAAIsB,WAAW;oCACb,MAAKqJ,SAAS,CAACwE,WAAW,CACxB;wCAAEvO,MAAM;wCAAOG,KAAK;4CAAER,KAAAA;4CAAKxD,OAAAA;4CAAO0B,OAAAA;wCAAM;oCAAE,GAC1C,mBACK,MAAKgM,UAAU,CAAC2E,sBAAsB,CAAC,YAAY,YAAYpP;gCAGxE;4BACF;wBACF;;wBAtEK;wBAAA;;;iCAAA,6BAAA;gCAAA;;;gCAAA;sCAAA;;;;oBAuEL,MAAK2K,SAAS,CAAC0F,8BAA8B,CAACrQ;gBAChD;gBACA,IAAI,CAACsM,GAAG,CAACc,EAAE,CAAC/P,WAAWkP,OAAO,CAACc,MAAM,CAACkD,KAAK,EAAE,SAAClC,MAAMjM;oBAClD,IAAIA,iBAAAA,2BAAAA,KAAM9C,KAAK,EAAE;wBACf,OAAQ8C,KAAKxB,IAAI;4BACf,KAAKvD,WAAWkP,OAAO,CAACiE,UAAU,CAACC,aAAa;oCAC9C;iCAAA,YAAA,MAAKnE,GAAG,cAAR,gCAAA,UAAUoE,SAAS;gCACnB;4BACF,KAAKrT,WAAWkP,OAAO,CAACiE,UAAU,CAACG,WAAW;oCAC5C;iCAAA,aAAA,MAAKrE,GAAG,cAAR,iCAAA,WAAUsE,iBAAiB;gCAC3B;4BACF;gCACE,MAAKjG,SAAS,CAACkG,cAAc;gCAC7B;wBACJ;oBACF;gBACF;gBACA,IAAI,CAACvE,GAAG,CAACwE,WAAW,CAAC,IAAI,CAACtG,KAAK;YACjC;;;YACAuG,KAAAA;mBAAAA,SAAAA;gBACE,OAAO,IAAI,CAAC7C,wBAAwB;YACtC;;;YACAI,KAAAA;mBAAAA,SAAAA,0BAA0BP,OAAO;gBAC/B,IAAI,IAAI,CAAC5C,qBAAqB,IAAI,CAAC,IAAI,CAACmB,GAAG,EAAE;oBAC3C;gBACF;gBACA,IAAI,CAACyB,SAAS;oBACZ;gBACF;gBACA,IAAIA,QAAQC,IAAI,KAAK,MAAM;oBACzB,IAAI,CAAC7C,qBAAqB,GAAG;oBAC7B,IAAI,CAAC+C,wBAAwB,GAAG;oBAChC;gBACF;gBACA,IAAM8C,uBAAuB,IAAI,CAACA,oBAAoB,CAACjD;gBACvD,IAAMkD,gBAAgBD,wBAAwB,CAAC,CAAC,IAAI,CAACzG,MAAM,CAACuB,cAAc;gBAC1E,IAAI,CAACoC,wBAAwB,GAAG+C;gBAChC,IAAI,CAAC9F,qBAAqB,GAAG;gBAC7B,IAAM+F,MAAM,IAAI,CAAC5E,GAAG,CAAC/B,MAAM;gBAC3B,IAAI0G,eAAe;oBACjBC,IAAIvE,uBAAuB,GAAG;oBAC9BuE,IAAInE,aAAa,GAAG;oBACpB,OAAOmE,IAAIC,gBAAgB;gBAC7B,OAAO;oBACLD,IAAIvE,uBAAuB,GAAG;oBAC9BuE,IAAInE,aAAa,GAAG;oBACpB,OAAOmE,IAAIC,gBAAgB;oBAC3BD,IAAIE,qBAAqB,GAAG;gBAC9B;gBACA,IAAI,IAAI,CAAChG,KAAK,EAAE;wBAUM2C;oBATpBhC,QAAQC,GAAG,CACT,AAAC,iDAAqH,OAArEiF,gBAAgB,yBAAyB,8BAC1F;wBACED,sBAAAA;wBACAK,yBAAyB,CAAC,CAAC,IAAI,CAAC9G,MAAM,CAACuB,cAAc;wBACrDwF,gBAAgBvD,QAAQuD,cAAc;wBACtCC,YAAYxD,QAAQwD,UAAU;wBAC9BC,cAAczD,QAAQyD,YAAY;wBAClCC,gBAAgB5L,MAAM+I,OAAO,CAACb,QAAQ2D,QAAQ,IAAI3D,QAAQ2D,QAAQ,CAAC9R,MAAM,GAAG;wBAC5E+R,cAAc,GAAE5D,0BAAAA,QAAQ6D,cAAc,cAAtB7D,qCAAAA,0BAA0BA,QAAQ4D,cAAc;wBAChEhF,yBAAyBuE,IAAIvE,uBAAuB;wBACpDI,eAAemE,IAAInE,aAAa;oBAClC;gBAEJ;YACF;;;YACAiE,KAAAA;mBAAAA,SAAAA,qBAAqBjD,OAAO;gBAC1B,IAAI,CAACA,SAAS;oBACZ,OAAO;gBACT;gBACA,IAAM8D,WAAWhM,MAAM+I,OAAO,CAACb,QAAQ2D,QAAQ,KAAK3D,QAAQ2D,QAAQ,CAAC9R,MAAM,GAAG;gBAC9E,IAAMkS,gBAAgB,OAAO/D,QAAQwD,UAAU,KAAK,YAAYxD,QAAQwD,UAAU,GAAG;gBACrF,IAAMQ,kBAAkB,OAAOhE,QAAQyD,YAAY,KAAK,YAAYzD,QAAQyD,YAAY,GAAG;gBAC3F,IAAMF,iBAAiBvD,QAAQuD,cAAc,KAAK;gBAClD,OAAOO,YAAYC,iBAAiBC,mBAAmBT;YACzD;;;YACAvB,KAAAA;mBAAAA,SAAAA,SAASxP,GAAG;gBACV,IAAI,OAAOA,IAAIM,UAAU,KAAK,UAAU;oBACtC,IAAI,CAAC6J,MAAM,CAACsH,cAAc,CAACzR,IAAIM,UAAU;gBAC3C;gBACA,IAAMF,SAASL,mBAAmBC;gBAClC,IAAII,QAAQ;oBACV,IAAI,CAACgK,SAAS,CAACwE,WAAW,CAACxO,QAAQ;wBACjCqE,QAAQ;wBACRiN,WAAW;oBACb;gBACF;YACF;;;YACAhC,KAAAA;mBAAAA,SAAAA,6BAA6BiC,WAAW,EAAEC,UAAU,EAAEC,oBAAoB;;gBACxE,IAAMxQ,UAAUD,yBAAyBuQ;gBACzC,IAAI,CAACtQ,SAAS;oBACZ;gBACF;gBACA,IAAMmD,UAAUe,yBACdlE,SACA,IAAI,CAAC6I,UAAU,CAAC1G,YAAY,EAC5B,IAAI,CAAC0G,UAAU,CAACxH,OAAO,EACvB,IAAI,CAACwH,UAAU,CAAC4H,yBAAyB;gBAE3CtN,QAAQ+K,OAAO,CAAC,SAACnP;oBACf,IAAM2R,UAAU;wBACdtN,QAAQ;wBACRiN,WAAW;oBACb;oBACA,IAAIE,eAAe,KAAK,GAAG;wBACzBG,QAAQH,UAAU,GAAGA;oBACvB;oBACA,IAAIC,yBAAyB,KAAK,GAAG;wBACnCE,QAAQF,oBAAoB,GAAGA;oBACjC;oBACA,MAAKzH,SAAS,CAACwE,WAAW,CAACxO,QAAQ2R;gBACrC;YACF;;;YACAC,KAAAA;mBAAAA,SAAAA;oBACc;gBAAZ,IAAMC,OAAM,YAAA,IAAI,CAAClG,GAAG,cAAR,gCAAA,UAAUmG,gBAAgB;gBACtC,OAAO,OAAOD,QAAQ,YAAY7U,OAAO0C,QAAQ,CAACmS,OAAOA,MAAM,KAAK;YACtE;;;YACAE,KAAAA;mBAAAA,SAAAA,cAAcC,QAAQ;gBACpB,IAAI,CAAC,IAAI,CAACrG,GAAG,EAAE;oBACb;gBACF;gBACA,IAAI;oBACF,IAAI,CAACA,GAAG,CAACsG,QAAQ;oBACjB,IAAI,CAACtG,GAAG,CAACoE,SAAS,CAACiC;gBACrB,EAAE,OAAOE,OAAO;oBACd,IAAI,IAAI,CAACzH,KAAK,EAAE;wBACdW,QAAQwD,IAAI,CAAC,oEAAoEsD;oBACnF;gBACF;YACF;;;YACAjC,KAAAA;mBAAAA,SAAAA;gBACE,IAAI,CAAC,IAAI,CAACtE,GAAG,EAAE;oBACb;gBACF;gBACA,IAAI;oBACF,IAAI,CAACA,GAAG,CAACsE,iBAAiB;gBAC5B,EAAE,OAAOiC,OAAO;oBACd,IAAI,IAAI,CAACzH,KAAK,EAAE;wBACdW,QAAQwD,IAAI,CAAC,uDAAuDsD;oBACtE;gBACF;YACF;;;YACAC,KAAAA;mBAAAA,SAAAA;;gBACE,IAAMxG,MAAM,IAAI,CAACA,GAAG;gBACpB,IAAI,CAACA,KAAK;oBACR;gBACF;gBACA,IAAI,IAAI,CAAClB,KAAK,EAAE;oBACdW,QAAQC,GAAG,CACT;gBAEJ;gBACA,IAAI;oBACF,IAAI,CAACjB,mBAAmB,GAAG;oBAC3BuB,IAAIsG,QAAQ;oBACZtG,IAAIyG,WAAW;oBACfzG,IAAI0G,OAAO;oBACX,IAAI,CAAC1G,GAAG,GAAG,KAAK;oBAChB,IAAI;wBACF,IAAI,CAAC9B,KAAK,CAACyI,eAAe,CAAC;wBAC3B,IAAI,CAACzI,KAAK,CAAC0I,IAAI;oBACjB,EAAE,OAAOL,OAAO;wBACd9G,QAAQwD,IAAI,CAAC,iEAAiEsD;oBAChF;gBACF,EAAE,OAAOA,OAAO;oBACd,IAAI,CAAC9H,mBAAmB,GAAG;oBAC3B,IAAI,CAACuB,GAAG,GAAG,KAAK;oBAChB,IAAI,IAAI,CAAClB,KAAK,EAAE;wBACdW,QAAQwD,IAAI,CAAC,mEAAmEsD;oBAClF;oBACA;gBACF;gBACA,IAAMM,kBAAkB;gBACxBC,OAAOC,UAAU,CAAC;oBAChB,IAAI,MAAK/G,GAAG,EAAE;wBACZ,MAAKvB,mBAAmB,GAAG;wBAC3B;oBACF;oBACA,IAAI;wBACF,MAAKsB,QAAQ;oBACf,EAAE,OAAOwG,OAAO;wBACd,MAAK9H,mBAAmB,GAAG;wBAC3B,IAAI,MAAKK,KAAK,EAAE;4BACdW,QAAQwD,IAAI,CAAC,0EAA0EsD;wBACzF;oBACF;gBACF,GAAGM;YACL;;;YACAH,KAAAA;mBAAAA,SAAAA;oBACE;iBAAA,YAAA,IAAI,CAAC1G,GAAG,cAAR,gCAAA,UAAU0G,OAAO;gBACjB,IAAI,CAAC1G,GAAG,GAAG,KAAK;YAClB;;;;;AAEF,6DAA6D;AAC7D,KAAMnP,CAAAA,OAAOC,OAAO,GAAG;IACrBF,WAAAA;AACF,CAAA","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/HlsEngine.ts\nvar HlsEngine_exports = {};\n__export(HlsEngine_exports, {\n HlsEngine: () => HlsEngine\n});\nmodule.exports = __toCommonJS(HlsEngine_exports);\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/HlsEngine.ts\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n HlsEngine\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\HlsEngine.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","HlsEngine_exports","HlsEngine","module","exports","import_hls","require","parseCueOutDuration","num","parseFloat","trim","Number","isNaN","match","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","e","elapsed","duration","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","startsWith","endsWith","slice","toNumber","val","n","getDateRangeDurationSeconds","decodeId3ValueToText","decoder","TextDecoder","fatal","text","decode","test","out","i","length","String","fromCharCode","getFragmentStartSeconds","frag","candidates","start","startPTS","candidate","isFinite","parseScte35FromId3","tag","cueOutMatch","arg","dur","marker","type","ptsSeconds","durationSeconds","raw","id3","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","Uint8Array","bin","parseScte35Binary","normalizeFragmentPayload","payload","ArrayBuffer","isView","view","buffer","byteOffset","byteLength","detectTsPacketFormat","data","packetSizes","packetSize","tsPayloadOffset","offset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","Math","min","programNumber","pid","add","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","has","size","firstKey","values","next","delete","addScte35SectionMarker","markers","source","push","appendScte35Bytes","bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","set","Array","parseScte35FromTsPackets","packetInfo","sectionAssemblers","Map","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","buf","bytePos","bitPos","readBits","numBits","result","remainingInByte","toRead","currentByte","shift","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","flags","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_command_type","splice_event_id","segmentation_event_id","config","video","cueManager","timing","callbacks","isLiveStream","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","debug","debugAdTiming","shouldUseNativeHls","getStreamType","canNative","canPlayType","allowNativeHls","setupNativeHls","adBehavior","src","lowLatencyMode","console","log","isLive","autoplay","play","catch","setupHls","hls","default","enableWorker","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","on","Events","MEDIA_ATTACHED","loadSource","MANIFEST_PARSED","_","_data","minSegments","levels","some","level","details","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","isInAdBreak","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","entry","idx","indexOf","substring","includes","isDateRange","earlyDetection","onScte35Cue","createScte35CueContext","FRAG_BUFFERED","err","warn","FRAG_PARSING_METADATA","id3Tags","samples","map","s","pts","forEach","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","sn","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","ERROR","ErrorTypes","NETWORK_ERROR","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","attachMedia","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","updatePtsDrift","readiness","payloadData","fragmentSn","fragmentStartSeconds","processedTsScte35Sections","context","getLiveSyncPosition","pos","liveSyncPosition","restartLoadAt","position","stopLoad","error","reloadLiveStream","detachMedia","destroy","removeAttribute","load","recreateDelayMs","window","setTimeout"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/HlsEngine.ts\nvar HlsEngine_exports = {};\n__export(HlsEngine_exports, {\n HlsEngine: () => HlsEngine\n});\nmodule.exports = __toCommonJS(HlsEngine_exports);\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/HlsEngine.ts\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n HlsEngine\n});\n"]}
@@ -130,6 +130,9 @@ __export(Scte35Parser_exports, {
130
130
  detectTsPacketFormat: function detectTsPacketFormat1() {
131
131
  return detectTsPacketFormat;
132
132
  },
133
+ getDateRangeDurationSeconds: function getDateRangeDurationSeconds1() {
134
+ return getDateRangeDurationSeconds;
135
+ },
133
136
  getFragmentStartSeconds: function getFragmentStartSeconds1() {
134
137
  return getFragmentStartSeconds;
135
138
  },
@@ -219,6 +222,10 @@ function toNumber(val) {
219
222
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
220
223
  return Number.isNaN(n) ? void 0 : n;
221
224
  }
225
+ function getDateRangeDurationSeconds(attrs) {
226
+ var _toNumber;
227
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
228
+ }
222
229
  function isManifestBasedMarker(marker) {
223
230
  var raw = marker.raw;
224
231
  if (!raw) return false;
@@ -925,6 +932,7 @@ function parseScte35Binary(data) {
925
932
  0 && (module.exports = {
926
933
  decodeId3ValueToText: decodeId3ValueToText,
927
934
  detectTsPacketFormat: detectTsPacketFormat,
935
+ getDateRangeDurationSeconds: getDateRangeDurationSeconds,
928
936
  getFragmentStartSeconds: getFragmentStartSeconds,
929
937
  isManifestBasedMarker: isManifestBasedMarker,
930
938
  normalizeFragmentPayload: normalizeFragmentPayload,