diff --git a/dashboard-ui/bower_components/hls.js/.bower.json b/dashboard-ui/bower_components/hls.js/.bower.json index 2b6ab70318..f9d7480067 100644 --- a/dashboard-ui/bower_components/hls.js/.bower.json +++ b/dashboard-ui/bower_components/hls.js/.bower.json @@ -1,6 +1,6 @@ { "name": "hls.js", - "version": "0.3.13", + "version": "0.3.14", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", "authors": [ @@ -15,11 +15,11 @@ "test", "tests" ], - "_release": "0.3.13", + "_release": "0.3.14", "_resolution": { "type": "version", - "tag": "v0.3.13", - "commit": "a7aa29605b6814b2f99c1e07db0fcb5bf9cd890a" + "tag": "v0.3.14", + "commit": "1806e59551b0639c50efa348cac92dc41c8a7dea" }, "_source": "git://github.com/dailymotion/hls.js.git", "_target": "~0.3.11", diff --git a/dashboard-ui/bower_components/hls.js/API.md b/dashboard-ui/bower_components/hls.js/API.md index f35d343b25..1567735bd9 100644 --- a/dashboard-ui/bower_components/hls.js/API.md +++ b/dashboard-ui/bower_components/hls.js/API.md @@ -197,7 +197,7 @@ configuration parameters could be provided to hls.js upon instantiation of Hls O manifestLoadingRetryDelay : 500, fpsDroppedMonitoringPeriod : 5000, fpsDroppedMonitoringThreshold : 0.2, - appendErrorMaxRetry : 200, + appendErrorMaxRetry : 3, loader : customLoader, fLoader: customFragmentLoader, pLoader: customPlaylistLoader, @@ -275,7 +275,7 @@ any I/O error will trigger retries every 500ms,1s,2s,4s,8s, ... capped to 64s (e max nb of append retry #### ```appendErrorMaxRetry``` -(default 200) +(default 3) max number of sourceBuffer.appendBuffer() retry upon error. such error could happen in loop with UHD streams, when internal buffer is full. (Quota Exceeding Error will be triggered). in that case we need to wait for the browser to evict some data before being able to append buffer correctly. diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.js b/dashboard-ui/bower_components/hls.js/dist/hls.js index 0d4dc1710c..ee6b5d27d6 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.js +++ b/dashboard-ui/bower_components/hls.js/dist/hls.js @@ -1194,26 +1194,30 @@ var MSEMediaController = (function () { this.appendError = 0; } catch (err) { // in case any error occured while appending, put back segment in mp4segments table - //logger.error(`error while trying to append buffer:${err.message},try appending later`); + _utilsLogger.logger.error('error while trying to append buffer:' + err.message + ',try appending later'); this.mp4segments.unshift(segment); - if (this.appendError) { - this.appendError++; - } else { - this.appendError = 1; - } - var event = { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_APPEND_ERROR, frag: this.fragCurrent }; - /* with UHD content, we could get loop of quota exceeded error until - browser is able to evict some data from sourcebuffer. retrying help recovering this - */ - if (this.appendError > this.config.appendErrorMaxRetry) { - _utilsLogger.logger.log('fail ' + this.config.appendErrorMaxRetry + ' times to append segment in sourceBuffer'); - event.fatal = true; - hls.trigger(_events2['default'].ERROR, event); - this.state = State.ERROR; - return; - } else { - event.fatal = false; - hls.trigger(_events2['default'].ERROR, event); + // just discard QuotaExceededError for now, and wait for the natural browser buffer eviction + //http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror + if (err.code !== 22) { + if (this.appendError) { + this.appendError++; + } else { + this.appendError = 1; + } + var event = { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_APPEND_ERROR, frag: this.fragCurrent }; + /* with UHD content, we could get loop of quota exceeded error until + browser is able to evict some data from sourcebuffer. retrying help recovering this + */ + if (this.appendError > this.config.appendErrorMaxRetry) { + _utilsLogger.logger.log('fail ' + this.config.appendErrorMaxRetry + ' times to append segment in sourceBuffer'); + event.fatal = true; + hls.trigger(_events2['default'].ERROR, event); + this.state = State.ERROR; + return; + } else { + event.fatal = false; + hls.trigger(_events2['default'].ERROR, event); + } } } this.state = State.APPENDING; @@ -4760,7 +4764,7 @@ var Hls = (function () { manifestLoadingRetryDelay: 1000, // fpsDroppedMonitoringPeriod: 5000, // fpsDroppedMonitoringThreshold: 0.2, - appendErrorMaxRetry: 200, + appendErrorMaxRetry: 3, loader: _utilsXhrLoader2['default'], fLoader: undefined, pLoader: undefined, @@ -5657,6 +5661,7 @@ var MP4 = (function () { var payload = Array.prototype.slice.call(arguments, 1), size = 0, i = payload.length, + len = i, result, view; // calculate the total size we need to allocate @@ -5668,7 +5673,7 @@ var MP4 = (function () { view.setUint32(0, result.byteLength); result.set(type, 4); // copy the payload into the result - for (i = 0, size = 8; i < payload.length; i++) { + for (i = 0, size = 8; i < len; i++) { result.set(payload[i], size); size += payload[i].byteLength; } @@ -5824,7 +5829,10 @@ var MP4 = (function () { 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes 0xE0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets ].concat(sps).concat([track.pps.length // numOfPictureParameterSets - ]).concat(pps))); // "PPS" + ]).concat(pps))), + // "PPS" + width = track.width, + height = track.height; //console.log('avcc:' + Hex.hexDump(avcc)); return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, // reserved 0x00, 0x00, 0x00, // reserved @@ -5832,8 +5840,8 @@ var MP4 = (function () { 0x00, 0x00, // pre_defined 0x00, 0x00, // reserved 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined - track.width >> 8 & 0xFF, track.width & 0xff, // width - track.height >> 8 & 0xFF, track.height & 0xff, // height + width >> 8 & 0xFF, width & 0xff, // width + height >> 8 & 0xFF, height & 0xff, // height 0x00, 0x48, 0x00, 0x00, // horizresolution 0x00, 0x48, 0x00, 0x00, // vertresolution 0x00, 0x00, 0x00, 0x00, // reserved @@ -5849,16 +5857,17 @@ var MP4 = (function () { }, { key: 'esds', value: function esds(track) { + var configlen = track.config.length; return new Uint8Array([0x00, // version 0 0x00, 0x00, 0x00, // flags 0x03, // descriptor_type - 0x17 + track.config.length, // length + 0x17 + configlen, // length 0x00, 0x01, //es_id 0x00, // stream_priority 0x04, // descriptor_type - 0x0f + track.config.length, // length + 0x0f + configlen, // length 0x40, //codec : mpeg4_audio 0x15, // stream_type 0x00, 0x00, 0x00, // buffer_size @@ -5866,11 +5875,12 @@ var MP4 = (function () { 0x00, 0x00, 0x00, 0x00, // avgBitrate 0x05 // descriptor_type - ].concat([track.config.length]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor + ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor } }, { key: 'mp4a', value: function mp4a(track) { + var audiosamplerate = track.audiosamplerate; return MP4.box(MP4.types.mp4a, new Uint8Array([0x00, 0x00, 0x00, // reserved 0x00, 0x00, 0x00, // reserved 0x00, 0x01, // data_reference_index @@ -5878,7 +5888,7 @@ var MP4 = (function () { 0x00, track.channelCount, // channelcount 0x00, 0x10, // sampleSize:16bits 0x00, 0x00, 0x00, 0x00, // reserved2 - track.audiosamplerate >> 8 & 0xFF, track.audiosamplerate & 0xff, // + audiosamplerate >> 8 & 0xFF, audiosamplerate & 0xff, // 0x00, 0x00]), MP4.box(MP4.types.esds, MP4.esds(track))); } }, { @@ -5893,30 +5903,35 @@ var MP4 = (function () { }, { key: 'tkhd', value: function tkhd(track) { + var id = track.id, + duration = track.duration, + width = track.width, + height = track.height; return MP4.box(MP4.types.tkhd, new Uint8Array([0x00, // version 0 0x00, 0x00, 0x07, // flags 0x00, 0x00, 0x00, 0x00, // creation_time 0x00, 0x00, 0x00, 0x00, // modification_time - track.id >> 24 & 0xFF, track.id >> 16 & 0xFF, track.id >> 8 & 0xFF, track.id & 0xFF, // track_ID + id >> 24 & 0xFF, id >> 16 & 0xFF, id >> 8 & 0xFF, id & 0xFF, // track_ID 0x00, 0x00, 0x00, 0x00, // reserved - track.duration >> 24, track.duration >> 16 & 0xFF, track.duration >> 8 & 0xFF, track.duration & 0xFF, // duration + duration >> 24, duration >> 16 & 0xFF, duration >> 8 & 0xFF, duration & 0xFF, // duration 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved 0x00, 0x00, // layer 0x00, 0x00, // alternate_group 0x00, 0x00, // non-audio track volume 0x00, 0x00, // reserved 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix - track.width >> 8 & 0xFF, track.width & 0xFF, 0x00, 0x00, // width - track.height >> 8 & 0xFF, track.height & 0xFF, 0x00, 0x00 // height + width >> 8 & 0xFF, width & 0xFF, 0x00, 0x00, // width + height >> 8 & 0xFF, height & 0xFF, 0x00, 0x00 // height ])); } }, { key: 'traf', value: function traf(track, baseMediaDecodeTime) { - var sampleDependencyTable = MP4.sdtp(track); + var sampleDependencyTable = MP4.sdtp(track), + id = track.id; return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, // version 0 0x00, 0x00, 0x00, // flags - track.id >> 24, track.id >> 16 & 0XFF, track.id >> 8 & 0XFF, track.id & 0xFF])), // track_ID + id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF])), // track_ID MP4.box(MP4.types.tfdt, new Uint8Array([0x00, // version 0 0x00, 0x00, 0x00, // flags baseMediaDecodeTime >> 24, baseMediaDecodeTime >> 16 & 0XFF, baseMediaDecodeTime >> 8 & 0XFF, baseMediaDecodeTime & 0xFF])), // baseMediaDecodeTime @@ -5943,9 +5958,10 @@ var MP4 = (function () { }, { key: 'trex', value: function trex(track) { + var id = track.id; return MP4.box(MP4.types.trex, new Uint8Array([0x00, // version 0 0x00, 0x00, 0x00, // flags - track.id >> 24, track.id >> 16 & 0XFF, track.id >> 8 & 0XFF, track.id & 0xFF, // track_ID + id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF, // track_ID 0x00, 0x00, 0x00, 0x01, // default_sample_description_index 0x00, 0x00, 0x00, 0x00, // default_sample_duration 0x00, 0x00, 0x00, 0x00, // default_sample_size @@ -5955,21 +5971,32 @@ var MP4 = (function () { }, { key: 'trun', value: function trun(track, offset) { - var samples, sample, i, array; - samples = track.samples || []; - array = new Uint8Array(12 + 16 * samples.length); - offset += 8 + array.byteLength; + var samples = track.samples || [], + len = samples.length, + arraylen = 12 + 16 * len, + array = new Uint8Array(arraylen), + i, + sample, + duration, + size, + flags, + cts; + offset += 8 + arraylen; array.set([0x00, // version 0 0x00, 0x0f, 0x01, // flags - samples.length >>> 24 & 0xFF, samples.length >>> 16 & 0xFF, samples.length >>> 8 & 0xFF, samples.length & 0xFF, // sample_count + len >>> 24 & 0xFF, len >>> 16 & 0xFF, len >>> 8 & 0xFF, len & 0xFF, // sample_count offset >>> 24 & 0xFF, offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF // data_offset ], 0); - for (i = 0; i < samples.length; i++) { + for (i = 0; i < len; i++) { sample = samples[i]; - array.set([sample.duration >>> 24 & 0xFF, sample.duration >>> 16 & 0xFF, sample.duration >>> 8 & 0xFF, sample.duration & 0xFF, // sample_duration - sample.size >>> 24 & 0xFF, sample.size >>> 16 & 0xFF, sample.size >>> 8 & 0xFF, sample.size & 0xFF, // sample_size - sample.flags.isLeading << 2 | sample.flags.dependsOn, sample.flags.isDependedOn << 6 | sample.flags.hasRedundancy << 4 | sample.flags.paddingValue << 1 | sample.flags.isNonSync, sample.flags.degradPrio & 0xF0 << 8, sample.flags.degradPrio & 0x0F, // sample_flags - sample.cts >>> 24 & 0xFF, sample.cts >>> 16 & 0xFF, sample.cts >>> 8 & 0xFF, sample.cts & 0xFF // sample_composition_time_offset + duration = sample.duration; + size = sample.size; + flags = sample.flags; + cts = sample.cts; + array.set([duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, // sample_duration + size >>> 24 & 0xFF, size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, // sample_size + flags.isLeading << 2 | sample.flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xF0 << 8, flags.degradPrio & 0x0F, // sample_flags + cts >>> 24 & 0xFF, cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF // sample_composition_time_offset ], 12 + 16 * i); } return MP4.box(MP4.types.trun, array); diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.js.map b/dashboard-ui/bower_components/hls.js/dist/hls.js.map index 0e9cd9eda1..e5422bd30e 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.js.map +++ b/dashboard-ui/bower_components/hls.js/dist/hls.js.map @@ -32,7 +32,7 @@ "src/utils/xhr-loader.js" ], "names": [], - "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;sBCnDkB,WAAW;;;;IAEvB,aAAa;AAEN,WAFP,aAAa,CAEL,GAAG,EAAE;0BAFb,aAAa;;AAGf,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC5B,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AACzB,QAAI,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,OAAG,CAAC,EAAE,CAAC,oBAAM,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;GAC9C;;eATG,aAAa;;WAWV,mBAAG;AACR,UAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACpD;;;WAEqB,gCAAC,KAAK,EAAE,IAAI,EAAE;AAClC,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,UAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;AAC/B,YAAI,CAAC,iBAAiB,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA,GAAI,IAAI,CAAC;AACrE,YAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC,YAAI,CAAC,MAAM,GAAG,AAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAI,IAAI,CAAC,iBAAiB,CAAC;;OAE3D;KACF;;;;;SAGmB,eAAG;AACrB,aAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;;;SAGmB,aAAC,QAAQ,EAAE;AAC7B,UAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;KACnC;;;SAEgB,eAAG;AAClB,UAAI,MAAM,GAAG,IAAI,CAAC,MAAM;UAAE,GAAG,GAAG,IAAI,CAAC,GAAG;UAAC,UAAU;UAAE,CAAC;UAAE,YAAY,CAAC;AACrE,UAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,CAAC,EAAE;AACjC,oBAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;OACtC,MAAM;AACL,oBAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;OACvC;;AAED,UAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;AAC9B,YAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAC,YAAY,CAAC,CAAC;AAC3D,YAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;AACrC,cAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SAC1B,MAAM;AACL,iBAAO,SAAS,CAAC;SAClB;OACF;;;;;AAKD,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE;;;;AAIlC,YAAI,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5B,oBAAU,GAAG,GAAG,GAAG,MAAM,CAAC;SAC3B,MAAM;AACL,oBAAU,GAAG,GAAG,GAAG,MAAM,CAAC;SAC3B;AACD,YAAI,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AACtC,iBAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3B;OACF;AACD,aAAO,CAAC,GAAG,CAAC,CAAC;KACd;SAEgB,aAAC,SAAS,EAAE;AAC3B,UAAI,CAAC,cAAc,GAAG,SAAS,CAAC;KACjC;;;SAzEG,aAAa;;;qBA4EJ,aAAa;;;;;;;;;;;;;;;;;;;;sBC9EV,WAAW;;;;2BACR,iBAAiB;;sBACC,WAAW;;IAE5C,eAAe;AAER,WAFP,eAAe,CAEP,GAAG,EAAE;0BAFb,eAAe;;AAGjB,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,QAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,OAAG,CAAC,EAAE,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,OAAG,CAAC,EAAE,CAAC,oBAAM,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,OAAG,CAAC,EAAE,CAAC,oBAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;GACjD;;eAZG,eAAe;;WAcZ,mBAAG;AACR,UAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,SAAG,CAAC,GAAG,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAG,CAAC,GAAG,CAAC,oBAAM,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,SAAG,CAAC,GAAG,CAAC,oBAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,UAAI,IAAI,CAAC,KAAK,EAAE;AACf,qBAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAC1B;AACD,UAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;KACxB;;;WAEe,0BAAC,KAAK,EAAE,IAAI,EAAE;AAC5B,UAAI,OAAO,GAAG,EAAE;UAAE,MAAM,GAAG,EAAE;UAAE,YAAY;UAAE,CAAC;UAAE,UAAU,GAAG,EAAE;UAAE,eAAe,GAAG,KAAK;UAAE,eAAe,GAAG,KAAK,CAAC;;;AAGlH,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK,EAAI;AAC3B,YAAG,KAAK,CAAC,UAAU,EAAE;AACnB,yBAAe,GAAG,IAAI,CAAC;SACxB;AACD,YAAG,KAAK,CAAC,UAAU,EAAE;AACnB,yBAAe,GAAG,IAAI,CAAC;SACxB;AACD,YAAI,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjD,YAAI,gBAAgB,KAAK,SAAS,EAAE;AAClC,oBAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AAC3C,eAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,eAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAChB,iBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB,MAAM;AACL,iBAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC/C;OACF,CAAC,CAAC;;;AAGH,UAAG,eAAe,IAAI,eAAe,EAAE;AACrC,eAAO,CAAC,OAAO,CAAC,UAAA,KAAK,EAAI;AACvB,cAAG,KAAK,CAAC,UAAU,EAAE;AACnB,kBAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;WACpB;SACF,CAAC,CAAC;OACJ,MAAM;AACL,cAAM,GAAG,OAAO,CAAC;OAClB;;;AAGD,YAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAS,KAAK,EAAE;AACrC,YAAI,cAAc,GAAG,SAAjB,cAAc,CAAY,KAAK,EAAE;AAAE,iBAAO,WAAW,CAAC,eAAe,uBAAqB,KAAK,CAAG,CAAC;SAAC,CAAC;AACzG,YAAI,UAAU,GAAG,KAAK,CAAC,UAAU;YAAE,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;;AAEjE,eAAO,CAAC,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,CAAA,KACzC,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,CAAA,AAAC,CAAC;OACpD,CAAC,CAAC;;;AAGH,kBAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;;AAEjC,YAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1B,eAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;OAC9B,CAAC,CAAC;AACH,UAAI,CAAC,OAAO,GAAG,MAAM,CAAC;;AAEtB,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,YAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,EAAE;AACtC,cAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACrB,8BAAO,GAAG,sBAAoB,MAAM,CAAC,MAAM,uCAAkC,YAAY,CAAG,CAAC;AAC7F,gBAAM;SACP;OACF;AACD,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,eAAe,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;AACjH,aAAO;KACR;;;WAgBc,0BAAC,QAAQ,EAAE;;AAExB,UAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;;AAEnD,YAAI,IAAI,CAAC,KAAK,EAAE;AACf,uBAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,cAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SAClB;AACD,YAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACvB,4BAAO,GAAG,yBAAuB,QAAQ,CAAG,CAAC;AAC7C,YAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,YAAY,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;AACxD,YAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;;AAEnC,YAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;;AAE9D,8BAAO,GAAG,qCAAmC,QAAQ,CAAG,CAAC;AACzD,cAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACxB,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,aAAa,EAAE,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC;SAC5F;OACF,MAAM;;AAEL,YAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAG,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAC,CAAC,CAAC;OACtK;KACH;;;WAiCO,iBAAC,KAAK,EAAE,IAAI,EAAE;AACnB,UAAG,IAAI,CAAC,KAAK,EAAE;AACb,eAAO;OACR;;AAED,UAAI,OAAO,GAAG,IAAI,CAAC,OAAO;UAAE,GAAG,GAAG,IAAI,CAAC,GAAG;UAAE,OAAO;UAAE,KAAK,CAAC;;AAE3D,cAAO,OAAO;AACZ,aAAK,qBAAa,eAAe,CAAC;AAClC,aAAK,qBAAa,iBAAiB,CAAC;AACpC,aAAK,qBAAa,uBAAuB,CAAC;AAC1C,aAAK,qBAAa,cAAc,CAAC;AACjC,aAAK,qBAAa,gBAAgB;AAC/B,iBAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,gBAAM;AAAA,AACT,aAAK,qBAAa,gBAAgB,CAAC;AACnC,aAAK,qBAAa,kBAAkB;AAClC,iBAAO,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,gBAAM;AAAA,AACR;AACE,gBAAM;AAAA,OACT;;;;;AAKD,UAAI,OAAO,KAAK,SAAS,EAAE;AACzB,aAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9B,YAAI,KAAK,CAAC,KAAK,GAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,AAAC,EAAE;AACxC,eAAK,CAAC,KAAK,EAAE,CAAC;AACd,eAAK,CAAC,OAAO,GAAG,SAAS,CAAC;AAC1B,8BAAO,IAAI,uBAAqB,OAAO,mBAAc,OAAO,2CAAsC,KAAK,CAAC,KAAK,CAAG,CAAC;SAClH,MAAM;;AAEL,cAAI,WAAW,GAAI,AAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,IAAK,OAAO,AAAC,CAAC;AAC1D,cAAI,WAAW,EAAE;AACf,gCAAO,IAAI,uBAAqB,OAAO,+CAA4C,CAAC;AACpF,eAAG,CAAC,aAAa,CAAC,aAAa,GAAG,CAAC,CAAC;WACrC,MAAM,IAAG,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AACtD,gCAAO,IAAI,uBAAqB,OAAO,8BAA2B,CAAC;WACpE,MAAM;AACL,gCAAO,KAAK,qBAAmB,OAAO,YAAS,CAAC;AAChD,gBAAI,CAAC,MAAM,GAAG,SAAS,CAAC;;AAExB,gBAAI,IAAI,CAAC,KAAK,EAAE;AACd,2BAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,kBAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACnB;;AAED,gBAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,eAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;WAC1B;SACF;OACF;KACF;;;WAEY,uBAAC,KAAK,EAAE,IAAI,EAAE;;AAEzB,UAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;;AAGpC,YAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;OAC3E;AACD,UAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEpC,qBAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,YAAI,CAAC,KAAK,GAAG,IAAI,CAAC;OACnB;KACF;;;WAEG,gBAAG;AACL,UAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,UAAI,OAAO,KAAK,SAAS,EAAE;AACzB,YAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACvD,YAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,aAAa,EAAE,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC;OAC3F;KACF;;;WAEY,yBAAG;AACd,UAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;AAC5B,eAAO,IAAI,CAAC,YAAY,CAAC;OAC1B,MAAM;AACN,eAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC;OAC5C;KACF;;;SA1JS,eAAG;AACX,aAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;;SAEQ,eAAG;AACV,aAAO,IAAI,CAAC,MAAM,CAAC;KACpB;SAEQ,aAAC,QAAQ,EAAE;AAClB,UAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE;AAC5E,YAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;OACjC;KACF;;;SA2Bc,eAAG;AAChB,aAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;SAEc,aAAC,QAAQ,EAAE;AACxB,UAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC7B,UAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;AACnB,YAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;OACvB;KACF;;;SAEa,eAAG;AACf,aAAO,IAAI,CAAC,WAAW,CAAC;KACzB;SAEa,aAAC,QAAQ,EAAE;AACvB,UAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;KAC7B;;;SAEa,eAAG;AACf,UAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AAClC,eAAO,IAAI,CAAC,WAAW,CAAC;OACzB,MAAM;AACL,eAAO,IAAI,CAAC,WAAW,CAAC;OACzB;KACF;SAEa,aAAC,QAAQ,EAAE;AACvB,UAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;KAC7B;;;SA1JG,eAAe;;;qBAmPN,eAAe;;;;;;;;;;;;;;;;;;;;4BCvPV,kBAAkB;;;;sBACpB,WAAW;;;;2BACR,iBAAiB;;iCACb,wBAAwB;;;;iCACzB,wBAAwB;;;;sBACT,WAAW;;AAElD,IAAM,KAAK,GAAG;AACZ,OAAK,EAAG,CAAC,CAAC;AACV,UAAQ,EAAG,CAAC,CAAC;AACb,MAAI,EAAG,CAAC;AACR,aAAW,EAAG,CAAC;AACf,cAAY,EAAG,CAAC;AAChB,eAAa,EAAG,CAAC;AACjB,SAAO,EAAG,CAAC;AACX,QAAM,EAAG,CAAC;AACV,WAAS,EAAG,CAAC;AACb,iBAAe,EAAG,CAAC;CACpB,CAAC;;IAEI,kBAAkB;AAEX,WAFP,kBAAkB,CAEV,GAAG,EAAE;0BAFb,kBAAkB;;AAGpB,QAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB,QAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;AAEf,QAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAI,CAAC,KAAK,GAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAE9C,QAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,QAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,QAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,QAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,OAAG,CAAC,EAAE,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,OAAG,CAAC,EAAE,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,OAAG,CAAC,EAAE,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;GAC1C;;eAxBG,kBAAkB;;WA0Bf,mBAAG;AACR,UAAI,CAAC,IAAI,EAAE,CAAC;AACZ,UAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,SAAG,CAAC,GAAG,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,SAAG,CAAC,GAAG,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,SAAG,CAAC,GAAG,CAAC,oBAAM,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,UAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;KACzB;;;WAEQ,qBAAG;AACV,UAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAI,IAAI,CAAC,eAAe,EAAE;AACxB,8BAAO,GAAG,gBAAc,IAAI,CAAC,eAAe,CAAG,CAAC;AAChD,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,gCAAO,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC7B,gBAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;WACnB;AACD,cAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;SACzB,MAAM;AACL,cAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACzB,cAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC7B;AACD,YAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;AAClE,YAAI,CAAC,IAAI,EAAE,CAAC;OACb,MAAM;AACL,4BAAO,IAAI,CAAC,0EAA0E,CAAC,CAAC;OACzF;KACF;;;WAEY,yBAAG;AACd,UAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,UAAI,CAAC,IAAI,EAAE,CAAC;AACZ,UAAI,CAAC,OAAO,GAAG,8BAAY,GAAG,CAAC,CAAC;AAChC,UAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C,UAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAChB,SAAG,CAAC,EAAE,CAAC,oBAAM,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,SAAG,CAAC,EAAE,CAAC,oBAAM,yBAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,SAAG,CAAC,EAAE,CAAC,oBAAM,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAG,CAAC,EAAE,CAAC,oBAAM,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,SAAG,CAAC,EAAE,CAAC,oBAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAG,CAAC,EAAE,CAAC,oBAAM,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,SAAG,CAAC,EAAE,CAAC,oBAAM,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;;;WAEG,gBAAG;AACL,UAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,UAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,UAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,UAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5B,UAAI,IAAI,EAAE;AACR,YAAI,IAAI,CAAC,MAAM,EAAE;AACf,cAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;SACrB;AACD,YAAI,CAAC,WAAW,GAAG,IAAI,CAAC;OACzB;AACD,UAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,UAAI,IAAI,CAAC,YAAY,EAAE;AACrB,aAAI,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AACjC,cAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACjC,cAAI;AACF,gBAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACxC,cAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,cAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;WAC7C,CAAC,OAAM,GAAG,EAAE,EACZ;SACF;AACD,YAAI,CAAC,YAAY,GAAG,IAAI,CAAC;OAC1B;AACD,UAAI,IAAI,CAAC,KAAK,EAAE;AACd,qBAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,YAAI,CAAC,KAAK,GAAG,IAAI,CAAC;OACnB;AACD,UAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvB,YAAI,CAAC,OAAO,GAAG,IAAI,CAAC;OACrB;AACD,UAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,SAAG,CAAC,GAAG,CAAC,oBAAM,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,SAAG,CAAC,GAAG,CAAC,oBAAM,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,SAAG,CAAC,GAAG,CAAC,oBAAM,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAG,CAAC,GAAG,CAAC,oBAAM,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,SAAG,CAAC,GAAG,CAAC,oBAAM,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,SAAG,CAAC,GAAG,CAAC,oBAAM,yBAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,SAAG,CAAC,GAAG,CAAC,oBAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;;;WAEG,gBAAG;AACL,UAAI,GAAG;UAAE,KAAK;UAAE,YAAY;UAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAC7C,cAAO,IAAI,CAAC,KAAK;AACf,aAAK,KAAK,CAAC,KAAK;;AAEd,gBAAM;AAAA,AACR,aAAK,KAAK,CAAC,QAAQ;;AAEjB,cAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AACjC,cAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;;AAE1B,gBAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,gBAAI,CAAC,eAAe,GAAG,IAAI,CAAC;WAC7B;;AAED,cAAI,CAAC,KAAK,GAAG,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;AACjD,cAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;AACjC,cAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,gBAAM;AAAA,AACR,aAAK,KAAK,CAAC,IAAI;;AAEb,cAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,kBAAM;WACP;;;;;AAKD,cAAI,IAAI,CAAC,cAAc,EAAE;AACvB,eAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;WAC9B,MAAM;AACL,eAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;WAC7B;;AAED,cAAI,IAAI,CAAC,sBAAsB,KAAK,KAAK,EAAE;AACzC,iBAAK,GAAG,IAAI,CAAC,UAAU,CAAC;WACzB,MAAM;;AAEL,iBAAK,GAAG,GAAG,CAAC,aAAa,CAAC;WAC3B;AACD,cAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC;cACrC,SAAS,GAAG,UAAU,CAAC,GAAG;cAC1B,SAAS,GAAG,UAAU,CAAC,GAAG;cAC1B,YAAY,GAAG,IAAI,CAAC,YAAY;cAChC,SAAS,CAAC;;AAEd,cAAI,AAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,cAAc,CAAC,SAAS,CAAC,EAAE;AAClD,qBAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC9G,qBAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;WACjE,MAAM;AACL,qBAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;WACzC;;AAED,cAAI,SAAS,GAAG,SAAS,EAAE;;AAEzB,eAAG,CAAC,aAAa,GAAG,KAAK,CAAC;AAC1B,gBAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,wBAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;;AAE1C,gBAAI,OAAO,YAAY,KAAK,WAAW,EAAE;AACvC,kBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;AACjC,oBAAM;aACP;;AAED,gBAAI,SAAS,GAAG,YAAY,CAAC,SAAS;gBAClC,OAAO,GAAG,SAAS,CAAC,MAAM;gBAC1B,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;gBAC1B,GAAG,GAAG,SAAS,CAAC,OAAO,GAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,GAAC,CAAC,CAAC,CAAC,QAAQ;gBAChE,KAAI,YAAA,CAAC;;;AAGT,gBAAI,YAAY,CAAC,IAAI,EAAE;;;AAGrB,kBAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,GAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,GAAC,YAAY,CAAC,cAAc,CAAC,EAAE;AACrG,oBAAI,CAAC,iBAAiB,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAC3I,oCAAO,GAAG,kBAAgB,SAAS,sGAAiG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAG,CAAC;AACzK,yBAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;eACtC;AACD,kBAAI,IAAI,CAAC,sBAAsB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;;;;AAKzD,oBAAI,YAAY,EAAE;AAChB,sBAAI,QAAQ,GAAG,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;AACnC,sBAAI,QAAQ,IAAI,YAAY,CAAC,OAAO,IAAI,QAAQ,IAAI,YAAY,CAAC,KAAK,EAAE;AACtE,yBAAI,GAAG,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AAClD,wCAAO,GAAG,iEAA+D,KAAI,CAAC,EAAE,CAAG,CAAC;mBACrF;iBACF;AACD,oBAAI,CAAC,KAAI,EAAE;;;;AAIT,uBAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,sCAAO,GAAG,qEAAmE,KAAI,CAAC,EAAE,CAAG,CAAC;iBACzF;eACF;aACF,MAAM;;AAEL,kBAAI,SAAS,GAAG,KAAK,EAAE;AACrB,qBAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;eACrB;aACF;AACD,gBAAI,CAAC,KAAI,EAAE;AACT,kBAAI,SAAS,CAAC;AACd,kBAAI,SAAS,GAAG,GAAG,EAAE;AACnB,yBAAS,GAAG,+BAAa,MAAM,CAAC,SAAS,EAAE,UAAC,SAAS,EAAK;;;AAGxD,sBAAI,AAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,IAAK,SAAS,EAAE;AACvD,2BAAO,CAAC,CAAC;mBACV,MACI,IAAI,SAAS,CAAC,KAAK,GAAG,SAAS,EAAE;AACpC,2BAAO,CAAC,CAAC,CAAC;mBACX;AACD,yBAAO,CAAC,CAAC;iBACV,CAAC,CAAC;eACJ,MAAM;;AAEL,yBAAS,GAAG,SAAS,CAAC,OAAO,GAAC,CAAC,CAAC,CAAC;eAClC;AACD,kBAAI,SAAS,EAAE;AACb,qBAAI,GAAG,SAAS,CAAC;AACjB,qBAAK,GAAG,SAAS,CAAC,KAAK,CAAC;;AAExB,oBAAI,YAAY,IAAI,KAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,IAAI,KAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,EAAE;AACpF,sBAAI,KAAI,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE;AAChC,yBAAI,GAAG,SAAS,CAAC,KAAI,CAAC,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AACrD,wCAAO,GAAG,qCAAmC,KAAI,CAAC,EAAE,CAAG,CAAC;mBACzD,MAAM;;AAEL,wBAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACtB,0BAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,0BAAI,WAAW,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,EAAE;;AAEpD,4BAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAC3B,4BAAI,EAAE,AAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAM,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,AAAC,EAAE;AACzE,8CAAO,GAAG,CAAC,+DAA+D,CAAC,CAAC;;AAE5E,qCAAW,CAAC,WAAW,EAAE,CAAC;yBAC3B;uBACF;qBACF;AACD,yBAAI,GAAG,IAAI,CAAC;mBACb;iBACF;eACF;aACF;AACD,gBAAG,KAAI,EAAE;;AAEP,kBAAI,AAAC,KAAI,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,IAAM,KAAI,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,AAAC,EAAE;AACpE,oCAAO,GAAG,sBAAoB,KAAI,CAAC,EAAE,aAAQ,YAAY,CAAC,OAAO,UAAK,YAAY,CAAC,KAAK,gBAAW,KAAK,CAAG,CAAC;AAC5G,oBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;AAC/B,mBAAG,CAAC,OAAO,CAAC,oBAAM,WAAW,EAAE,EAAC,IAAI,EAAE,KAAI,EAAC,CAAC,CAAC;eAC9C,MAAM;AACL,oCAAO,GAAG,cAAY,KAAI,CAAC,EAAE,aAAQ,YAAY,CAAC,OAAO,UAAK,YAAY,CAAC,KAAK,gBAAW,KAAK,sBAAiB,GAAG,mBAAc,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAG,CAAC;AAC1J,qBAAI,CAAC,SAAS,GAAG,GAAG,CAAC,gBAAgB,CAAC;AACtC,oBAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,uBAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAC9E,uBAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;iBACnC;;AAED,oBAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AAClC,sBAAI,CAAC,WAAW,EAAE,CAAC;iBACpB,MAAM;AACL,sBAAI,CAAC,WAAW,GAAG,CAAC,CAAC;iBACtB;AACD,oBAAI,KAAI,CAAC,WAAW,EAAE;AACpB,uBAAI,CAAC,WAAW,EAAE,CAAC;AACnB,sBAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAExD,sBAAI,KAAI,CAAC,WAAW,GAAG,YAAY,IAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,KAAI,CAAC,OAAO,CAAC,GAAG,YAAY,AAAC,EAAE;AACjG,uBAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAI,EAAC,CAAC,CAAC;AAClI,2BAAO;mBACR;iBACF,MAAM;AACL,uBAAI,CAAC,WAAW,GAAG,CAAC,CAAC;iBACtB;AACD,qBAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,oBAAI,CAAC,WAAW,GAAG,KAAI,CAAC;AACxB,oBAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,mBAAG,CAAC,OAAO,CAAC,oBAAM,YAAY,EAAE,EAAC,IAAI,EAAE,KAAI,EAAC,CAAC,CAAC;AAC9C,oBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;eACjC;aACF;WACF;AACD,gBAAM;AAAA,AACR,aAAK,KAAK,CAAC,aAAa;AACtB,eAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAEhC,cAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AAC1B,gBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;WACzB;AACD,gBAAM;AAAA,AACR,aAAK,KAAK,CAAC,YAAY;;;;;;AAMrB,cAAI,CAAC,GAAG,IAAI,CAAC,KAAK;cAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;;;AAG3C,cAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,CAAA,AAAC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/G,gBAAI,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAErD,gBAAI,YAAY,GAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,AAAC,EAAE;AACxC,kBAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC;AACjD,kBAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;AAClC,oBAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;eAChC;AACD,iBAAG,GAAG,CAAC,CAAC,WAAW,CAAC;AACpB,kBAAI,eAAe,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAA,GAAI,QAAQ,CAAC;AAClE,kBAAI,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AAC/D,kBAAI,wBAAwB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAA,AAAC,CAAC;;;AAGvG,kBAAI,qBAAqB,GAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,AAAC,IAAI,eAAe,GAAG,qBAAqB,IAAI,eAAe,GAAG,wBAAwB,EAAE;;AAExI,oCAAO,IAAI,CAAC,0CAA0C,CAAC,CAAC;AACxD,oCAAO,GAAG,sEAAoE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,SAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAG,CAAC;;AAEvL,oBAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,mBAAG,CAAC,OAAO,CAAC,oBAAM,2BAA2B,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;;AAE7D,oBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;eACzB;aACF;WACF;AACD,gBAAM;AAAA,AACR,aAAK,KAAK,CAAC,OAAO;;AAEhB,gBAAM;AAAA,AACR,aAAK,KAAK,CAAC,MAAM,CAAC;AAClB,aAAK,KAAK,CAAC,SAAS;AAClB,cAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACpB,kCAAO,KAAK,CAAC,wEAAwE,CAAC,CAAC;AACvF,kBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,qBAAO;aACR;;iBAEI,IAAI,AAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,IACjE,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,AAAC,EAAE;;;eAGjE,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAClC,sBAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACvC,sBAAI;;AAEF,wBAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3D,wBAAI,CAAC,WAAW,GAAG,CAAC,CAAC;mBACtB,CAAC,OAAM,GAAG,EAAE;;;AAGX,wBAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClC,wBAAI,IAAI,CAAC,WAAW,EAAE;AACpB,0BAAI,CAAC,WAAW,EAAE,CAAC;qBACpB,MAAM;AACL,0BAAI,CAAC,WAAW,GAAG,CAAC,CAAC;qBACtB;AACD,wBAAI,KAAK,GAAG,EAAC,IAAI,EAAE,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAC,CAAC;;;;AAI9G,wBAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACtD,0CAAO,GAAG,WAAS,IAAI,CAAC,MAAM,CAAC,mBAAmB,8CAA2C,CAAC;AAC9F,2BAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,yBAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AAChC,0BAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,6BAAO;qBACR,MAAM;AACL,2BAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,yBAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,KAAK,CAAC,CAAC;qBACjC;mBACF;AACD,sBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;iBAC9B;WACF,MAAM;;AAEL,gBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;WACzB;AACD,gBAAM;AAAA,AACR,aAAK,KAAK,CAAC,eAAe;;AAExB,iBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC5B,gBAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;AAE/B,gBAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;;AAE5C,kBAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aACzB,MAAM;;AAEL,oBAAM;aACP;WACF;AACD,cAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEhC,gBAAI,IAAI,CAAC,eAAe,EAAE;AACxB,kBAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;;AAED,gBAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;;AAExB,gBAAI,CAAC,YAAY,GAAG,IAAI,CAAC;WAC1B;;;;AAID,gBAAM;AAAA,AACR;AACE,gBAAM;AAAA,OACT;;AAED,UAAI,CAAC,qBAAqB,EAAE,CAAC;;AAE7B,UAAI,CAAC,YAAY,EAAE,CAAC;KACrB;;;WAGS,oBAAC,GAAG,EAAC,eAAe,EAAE;AAC9B,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK;UAClB,SAAS,GAAG,KAAK,CAAC,QAAQ;UAC1B,QAAQ,GAAG,EAAE;UAAC,CAAC,CAAC;AACpB,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;OACnE;AACD,aAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAC,GAAG,EAAC,eAAe,CAAC,CAAC;KACxD;;;WAEW,sBAAC,QAAQ,EAAC,GAAG,EAAC,eAAe,EAAE;AACzC,UAAI,SAAS,GAAG,EAAE;;;AAEd,eAAS;UAAC,WAAW;UAAE,SAAS;UAAC,eAAe;UAAC,CAAC,CAAC;;AAEvD,cAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;AAC5B,YAAI,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC7B,YAAI,IAAI,EAAE;AACR,iBAAO,IAAI,CAAC;SACb,MAAM;AACL,iBAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;SACtB;OACF,CAAC,CAAC;;;;AAIH,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAI,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;AAC/B,YAAG,OAAO,EAAE;AACV,cAAI,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;;AAEzC,cAAG,AAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,GAAI,eAAe,EAAE;;;;;AAKlD,gBAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,EAAE;AAC5B,uBAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;aAC9C;WACF,MAAM;;AAEL,qBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;WAC7B;SACF,MAAM;;AAEL,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7B;OACF;AACD,WAAK,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnF,YAAI,KAAK,GAAI,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;YAC3B,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;;AAE3B,YAAI,AAAC,GAAG,GAAG,eAAe,IAAK,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE;;AAEjD,qBAAW,GAAG,KAAK,CAAC;AACpB,mBAAS,GAAG,GAAG,GAAG,eAAe,CAAC;AAClC,mBAAS,GAAG,SAAS,GAAG,GAAG,CAAC;SAC7B,MAAM,IAAI,AAAC,GAAG,GAAG,eAAe,GAAI,KAAK,EAAE;AAC1C,yBAAe,GAAG,KAAK,CAAC;SACzB;OACF;AACD,aAAO,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAG,eAAe,EAAC,CAAC;KAC1F;;;WAEa,wBAAC,QAAQ,EAAE;AACvB,UAAI,CAAC,EAAE,KAAK,CAAC;AACb,WAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChD,aAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,EAAE;AACpD,iBAAO,KAAK,CAAC;SACd;OACF;AACD,aAAO,IAAI,CAAC;KACb;;;WAqBmB,8BAAC,KAAK,EAAE;AAC1B,UAAI,KAAK,EAAE;;AAET,eAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;OAC7C;AACD,aAAO,IAAI,CAAC;KACb;;;WAWS,oBAAC,QAAQ,EAAE;AACnB,UAAI,CAAC,GAAG,IAAI,CAAC,KAAK;UAAE,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC1C,WAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,YAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAChE,iBAAO,IAAI,CAAC;SACb;OACF;AACD,aAAO,KAAK,CAAC;KACd;;;WAEoB,iCAAG;AACtB,UAAI,YAAY;UAAE,WAAW;UAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAClD,UAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;AACpC,mBAAW,GAAG,KAAK,CAAC,WAAW,CAAC;;;;;;;AAOhC,YAAG,WAAW,GAAG,KAAK,CAAC,YAAY,GAAC,IAAI,CAAC,eAAe,EAAE;AACxD,cAAI,CAAC,eAAe,GAAG,WAAW,CAAC;SACpC;AACD,YAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AAChC,sBAAY,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SACjD,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE;;;;;;AAM7C,sBAAY,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;SACvD;AACD,YAAI,YAAY,EAAE;AAChB,cAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC;AACpC,cAAI,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;AACpC,gBAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,gBAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,YAAY,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;WAC3D;SACF;OACF;KACF;;;;;;;;;;;WASU,qBAAC,WAAW,EAAE,SAAS,EAAE;AAClC,UAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC;;;AAGlD,UAAI,IAAI,CAAC,kBAAkB,EAAE,GAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,AAAC,IAAI,IAAI,CAAC,YAAY,EAAE;AAClF,aAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAClC,YAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7B,cAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;AAChB,iBAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,sBAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAE5B,kBAAI,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,iBAAiB,EAAE;AACzG,0BAAU,GAAG,WAAW,CAAC;AACzB,wBAAQ,GAAG,SAAS,CAAC;eACtB,MAAM;AACL,0BAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC7C,wBAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;eACxC;;;;;;AAMD,kBAAI,QAAQ,GAAG,UAAU,GAAG,GAAG,EAAE;AAC/B,oCAAO,GAAG,YAAU,IAAI,UAAK,UAAU,SAAI,QAAQ,eAAU,QAAQ,SAAI,MAAM,eAAU,IAAI,CAAC,KAAK,CAAC,WAAW,CAAG,CAAC;AACnH,kBAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAChC,uBAAO,KAAK,CAAC;eACd;aACF;WACF,MAAM;;;;AAIL,mBAAO,KAAK,CAAC;WACd;SACF;OACF;;;;;;AAMD,UAAI,QAAQ,GAAG,EAAE;UAAC,KAAK,CAAC;AACxB,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,aAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAI,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAA,GAAI,CAAC,CAAC,EAAE;AAClD,kBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;OACF;AACD,UAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,0BAAO,GAAG,CAAC,gBAAgB,CAAC,CAAC;;AAE7B,aAAO,IAAI,CAAC;KACb;;;;;;;;;;WAQmB,gCAAG;AACrB,0BAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACnC,UAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1C,YAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;OACpB;AACD,UAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,UAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;AACrC,mBAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;OAC5B;AACD,UAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;AAExB,UAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC5B,UAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,EAAC,CAAC,CAAC;;AAEhE,UAAI,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;;AAEnC,UAAI,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAE7D,UAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;;;;;;;WAOsB,mCAAG;AACxB,UAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,UAAI,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC;AACjC,UAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;OACnB;KACF;;;WAEc,2BAAG;;;;;;AAMhB,UAAI,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC;AACxC,kBAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC3D,UAAI,YAAY,EAAE;;;AAGhB,YAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,EAAC,CAAC,CAAC;OAC/D;AACD,UAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;;AAEtB,YAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa;YAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAChH,YAAI,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;AACpC,oBAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,GAAG,YAAY,CAAA,AAAC,GAAG,CAAC,CAAC;SACxF,MAAM;AACL,oBAAU,GAAG,CAAC,CAAC;SAChB;OACF,MAAM;AACL,kBAAU,GAAG,CAAC,CAAC;OAChB;;;AAGD,eAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;AACrE,UAAI,SAAS,EAAE;;AAEb,iBAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACjD,YAAI,SAAS,EAAE;;AAEb,cAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,iBAAiB,EAAC,CAAC,CAAC;;AAE9E,cAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,cAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;AACrC,uBAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;WAC5B;AACD,cAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;OACF;AACD,UAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC1B,YAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;;AAE5B,YAAI,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;;AAEnC,YAAI,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAE7D,YAAI,CAAC,IAAI,EAAE,CAAC;OACb;KACF;;;WAEe,0BAAC,KAAK,EAAE,IAAI,EAAE;AAC5B,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;AAEpC,UAAI,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;;AAE9C,UAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,UAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,UAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,QAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;AAE/C,WAAK,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;KACrC;;;WAEe,4BAAG;AACjB,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,UAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,4BAAO,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACjE,YAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;OAC/C;;;AAGD,UAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,UAAI,MAAM,EAAE;;AAER,cAAM,CAAC,OAAO,CAAC,UAAA,KAAK,EAAI;AACtB,cAAG,KAAK,CAAC,OAAO,EAAE;AAChB,iBAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAI;AAC1C,sBAAQ,CAAC,WAAW,GAAG,SAAS,CAAC;aAClC,CAAC,CAAC;WACJ;SACJ,CAAC,CAAC;OACJ;AACD,UAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1B,UAAI,EAAE,EAAE;AACN,YAAI,EAAE,CAAC,UAAU,KAAK,MAAM,EAAE;AAC5B,cAAI;;;;;AAKF,cAAE,CAAC,WAAW,EAAE,CAAC;WAClB,CAAC,OAAM,GAAG,EAAE;AACX,gCAAO,IAAI,uBAAqB,GAAG,CAAC,OAAO,gCAA6B,CAAC;WAC1E;SACF;AACD,UAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,UAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,UAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;AAElD,YAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AACpB,YAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;AAExB,YAAI,KAAK,EAAE;AACT,eAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,eAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,eAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9D,eAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,cAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC5D;AACD,YAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,YAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,YAAI,CAAC,IAAI,EAAE,CAAC;OACb;AACD,UAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC5C,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,cAAc,CAAC,CAAC;KACxC;;;WAEa,0BAAG;AACf,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,EAAE;;;AAGrC,YAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE;AACzD,8BAAO,GAAG,CAAC,iFAAiF,CAAC,CAAC;AAC9F,cAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,cAAI,WAAW,EAAE;AACf,gBAAI,WAAW,CAAC,MAAM,EAAE;AACtB,yBAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;aAC5B;AACD,gBAAI,CAAC,WAAW,GAAG,IAAI,CAAC;WACzB;AACD,cAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;AAEzB,cAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;SACzB;OACF;AACD,UAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;OAC/C;;AAED,UAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AAClC,YAAI,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;OAC9D;;AAED,UAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;WAEY,yBAAG;;AAEd,UAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;WAEc,2BAAG;AAChB,UAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,aAAa,EAAE;AACjD,YAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;OAC7C;AACD,UAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,UAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;WAEW,wBAAG;AACb,0BAAO,GAAG,CAAC,aAAa,CAAC,CAAC;;AAE1B,UAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;KAC/C;;;WAGe,0BAAC,KAAK,EAAE,IAAI,EAAE;AAC5B,UAAI,GAAG,GAAG,KAAK;UAAE,KAAK,GAAG,KAAK;UAAE,MAAM,CAAC;AACvC,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK,EAAI;;AAE3B,cAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACtB,YAAI,MAAM,EAAE;AACV,cAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,eAAG,GAAG,IAAI,CAAC;WACZ;AACD,cAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,iBAAK,GAAG,IAAI,CAAC;WACd;SACF;OACF,CAAC,CAAC;AACH,UAAI,CAAC,gBAAgB,GAAI,GAAG,IAAI,KAAK,AAAC,CAAC;AACvC,UAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,4BAAO,GAAG,CAAC,wEAAwE,CAAC,CAAC;OACtF;AACD,UAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,UAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,UAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,UAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3C,YAAI,CAAC,SAAS,EAAE,CAAC;OAClB;KACF;;;WAEY,uBAAC,KAAK,EAAC,IAAI,EAAE;AACxB,UAAI,UAAU,GAAG,IAAI,CAAC,OAAO;UACzB,UAAU,GAAG,IAAI,CAAC,KAAK;UACvB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;UAClC,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC;;AAExC,0BAAO,GAAG,YAAU,UAAU,iBAAY,UAAU,CAAC,OAAO,SAAI,UAAU,CAAC,KAAK,mBAAc,QAAQ,CAAG,CAAC;;AAE1G,UAAI,UAAU,CAAC,IAAI,EAAE;AACnB,YAAI,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;AAClC,YAAI,UAAU,EAAE;;AAEd,yCAAY,YAAY,CAAC,UAAU,EAAC,UAAU,CAAC,CAAC;AAChD,cAAI,UAAU,CAAC,QAAQ,EAAE;AACvB,gCAAO,GAAG,4BAA0B,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAG,CAAC;WACjF,MAAM;AACL,gCAAO,GAAG,CAAC,+CAA+C,CAAC,CAAC;WAC7D;SACF,MAAM;AACL,oBAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC5B,8BAAO,GAAG,CAAC,6CAA6C,CAAC,CAAC;SAC3D;OACF,MAAM;AACL,kBAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;OAC7B;;AAED,cAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;AAC9B,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,aAAa,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;;;AAGlF,UAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;;AAEnC,YAAI,UAAU,CAAC,IAAI,EAAE;AACnB,cAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;SAC5G;AACD,YAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;AAC3C,YAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;OAC9B;;AAED,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,EAAE;AACtC,YAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;OACzB;;AAED,UAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;WAEU,uBAAG;AACZ,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;AACpC,YAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,YAAI,CAAC,IAAI,EAAE,CAAC;OACb;KACF;;;WAEW,sBAAC,KAAK,EAAE,IAAI,EAAE;AACxB,UAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,IACjC,WAAW,IACX,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,IACrC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,EAAE;AACnC,YAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;;AAEjC,cAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,cAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,cAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAC9D,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,aAAa,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;SAC/E,MAAM;AACL,cAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;;AAE3B,cAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,cAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;cACtC,OAAO,GAAG,YAAY,CAAC,OAAO;cAC9B,QAAQ,GAAG,OAAO,CAAC,aAAa;cAChC,KAAK,GAAG,WAAW,CAAC,KAAK;cACzB,KAAK,GAAG,WAAW,CAAC,KAAK;cACzB,EAAE,GAAG,WAAW,CAAC,EAAE;cACnB,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;AACzC,cAAG,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE;AACpC,gCAAO,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC5C,gBAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAI,CAAC,CAAC,EAAE;AACxC,wBAAU,GAAG,WAAW,CAAC;aAC1B,MAAM;AACL,wBAAU,GAAG,WAAW,CAAC;aAC1B;WACF;AACD,8BAAO,GAAG,eAAa,EAAE,aAAQ,OAAO,CAAC,OAAO,UAAK,OAAO,CAAC,KAAK,gBAAW,KAAK,CAAG,CAAC;AACtF,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;SAC3I;OACF;KACF;;;WAEY,uBAAC,KAAK,EAAE,IAAI,EAAE;AACzB,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE;;;AAGhC,YAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU;YAAE,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU;YAAE,EAAE,CAAC;AACzG,YAAG,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE;AACpC,8BAAO,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC5C,cAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAI,CAAC,CAAC,EAAE;AACxC,sBAAU,GAAG,WAAW,CAAC;WAC1B,MAAM;AACL,sBAAU,GAAG,WAAW,CAAC;WAC1B;SACF;AACD,4BAAO,GAAG,mDAAiD,UAAU,SAAI,IAAI,CAAC,UAAU,mBAAc,UAAU,SAAI,IAAI,CAAC,UAAU,CAAG,CAAC;;;AAGvI,YAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC7D,oBAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC9B;;AAED,YAAI,UAAU,KAAK,SAAS,IAAK,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC9D,oBAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC9B;;;AAGD,YAAI,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC3C,YAAI,IAAI,CAAC,gBAAgB,IACtB,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAC3B,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAC5B,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAChC,oBAAU,GAAG,WAAW,CAAC;SAC1B;AACD,YAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,cAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,8BAAO,GAAG,4CAA0C,UAAU,SAAI,UAAU,CAAG,CAAC;;AAEhF,cAAI,UAAU,EAAE;AACd,cAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,uBAAqB,UAAU,CAAG,CAAC;AAClG,cAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,cAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;WAC1C;AACD,cAAI,UAAU,EAAE;AACd,cAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,uBAAqB,UAAU,CAAG,CAAC;AAClG,cAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,cAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;WAC1C;SACF;AACD,YAAI,UAAU,EAAE;AACd,cAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;SAC9D;AACD,YAAG,UAAU,EAAE;AACb,cAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;SAC9D;;AAED,YAAI,CAAC,IAAI,EAAE,CAAC;OACb;KACF;;;WAEY,uBAAC,KAAK,EAAE,IAAI,EAAE;AACzB,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE;AAChC,YAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,YAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5B,4BAAO,GAAG,2DAAyD,IAAI,CAAC,IAAI,SAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAI,IAAI,CAAC,EAAE,CAAG,CAAC;AACvM,YAAI,KAAK,GAAG,+BAAY,aAAa,CAAC,KAAK,CAAC,OAAO,EAAC,IAAI,CAAC,EAAE,EAAC,IAAI,CAAC,QAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvF,YAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,iBAAiB,EAAE,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;;AAErG,YAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;AAC1D,YAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;AAC1D,YAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;AACpC,YAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;;;AAG7F,YAAI,CAAC,IAAI,EAAE,CAAC;OACb,MAAM;AACL,4BAAO,IAAI,uCAAqC,KAAK,CAAG,CAAC;OAC1D;KACF;;;WAEW,wBAAG;AACb,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE;AAChC,YAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1B,YAAI,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;;AAEvC,YAAI,CAAC,IAAI,EAAE,CAAC;OACb;KACF;;;WAEM,iBAAC,KAAK,EAAE,IAAI,EAAE;AACnB,cAAO,IAAI,CAAC,OAAO;;AAEjB,aAAK,qBAAa,eAAe,CAAC;AAClC,aAAK,qBAAa,iBAAiB,CAAC;AACpC,aAAK,qBAAa,uBAAuB,CAAC;AAC1C,aAAK,qBAAa,gBAAgB,CAAC;AACnC,aAAK,qBAAa,kBAAkB,CAAC;AACrC,aAAK,qBAAa,cAAc,CAAC;AACjC,aAAK,qBAAa,gBAAgB;;AAEhC,8BAAO,IAAI,uBAAqB,IAAI,CAAC,OAAO,uCAAiC,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA,gBAAa,CAAC;AACxH,cAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AACnD,gBAAM;AAAA,AACR;AACE,gBAAM;AAAA,OACT;KACF;;;WAEY,yBAAG;;AAEd,UAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAG;AACpE,YAAI,IAAI,GAAG,IAAI,CAAC,WAAW;YAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAChD,YAAI,IAAI,EAAE;AACR,cAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,eAAK,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AACpC,cAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAA,AAAC,CAAC,CAAC;AACpF,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,aAAa,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;AAClE,8BAAO,GAAG,uBAAqB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAG,CAAC;AAC/E,cAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;SACzB;OACF;AACD,UAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;WAES,wBAAG;AACX,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,UAAG,KAAK,EAAE;;AAER,YAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;;AAElC,YAAG,UAAU,EAAE;;AAEb,cAAI,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC/C,cAAG,iBAAiB,EAAE;AACpB,gBAAG,KAAK,CAAC,QAAQ,IAAI,iBAAiB,EAAE;AACtC,mBAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC;AACtC,kBAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;aACpC;WACF,MAAM,IAAG,UAAU,GAAG,CAAC,EAAG;;;;;;;AAOzB,gBAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACpC,gBAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;;AAEhD,gBAAG,UAAU,CAAC,GAAG,KAAK,CAAC,EAAE;;AAEvB,kBAAI,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC;AAC3C,kBAAG,eAAe,IAAK,eAAe,GAAG,WAAW,GAAG,GAAG,AAAC,EAAE;;;AAG3D,oCAAO,GAAG,8BAA4B,WAAW,YAAO,eAAe,CAAG,CAAC;AAC3E,qBAAK,CAAC,WAAW,GAAG,eAAe,CAAC;eACrC;aACF;WACF;SACF;OACF;KACF;;;WAEa,0BAAG;AACf,UAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;KAC5C;;;WAEc,yBAAC,KAAK,EAAE;AACrB,0BAAO,KAAK,yBAAuB,KAAK,CAAG,CAAC;AAC5C,UAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;;;;AAIzB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAC,CAAC,CAAC;KACnJ;;;WAEiB,4BAAC,CAAC,EAAE;AACpB,UAAI,GAAG,GAAG,EAAE;UAAE,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,WAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,EAAE,EAAE;AACxB,WAAG,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;OAChD;AACD,aAAO,GAAG,CAAC;KACZ;;;WAEgB,6BAAG;AAClB,0BAAO,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAClC,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,cAAc,CAAC,CAAC;AACvC,UAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,UAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,UAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,UAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,WAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnD,WAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,WAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3D,WAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,UAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3C,YAAI,CAAC,SAAS,EAAE,CAAC;OAClB;;AAED,UAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAChE;;;WAEiB,8BAAG;AACnB,0BAAO,GAAG,CAAC,qBAAqB,CAAC,CAAC;KACnC;;;WAEiB,8BAAG;AACnB,0BAAO,GAAG,CAAC,oBAAoB,CAAC,CAAC;KAClC;;;SAtqBe,eAAG;AACjB,UAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACxD,YAAI,KAAK,EAAE;AACT,iBAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACzB;OACF;AACD,aAAO,CAAC,CAAC,CAAC;KACX;;;SAEkB,eAAG;AACpB,UAAI,IAAI,CAAC,KAAK,EAAE;;AAEd,eAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;OAC/E,MAAM;AACL,eAAO,IAAI,CAAC;OACb;KACF;;;SAUY,eAAG;AACd,UAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACjC,UAAI,KAAK,EAAE;AACT,eAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;OACzB,MAAM;AACL,eAAO,CAAC,CAAC,CAAC;OACX;KACF;;;SAhiBG,kBAAkB;;;qBAsqCT,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICzpC3B,GAAG;;;;;;;;;;AASI,WATP,GAAG,CASK,GAAG,EAAE;0BATb,GAAG;;;;;;;;;;;;;;AAsBL,QAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC;;AAEnD,QAAI,CAAC,WAAW,EAAE,CAAC;;AAEnB,QAAI,CAAC;QAAE,CAAC;QAAE,GAAG;QACb,MAAM;QAAE,MAAM;QACd,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,CAAC,MAAM;QAAE,IAAI,GAAG,CAAC,CAAC;;AAE9B,QAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AAChD,YAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,MAAM,CAAC,CAAC;KACnD;;AAED,UAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,UAAM,GAAG,EAAE,CAAC;AACZ,QAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;AAG7B,SAAK,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzC,SAAG,GAAG,MAAM,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;;;AAGlB,UAAI,CAAC,GAAC,MAAM,KAAK,CAAC,IAAK,MAAM,KAAK,CAAC,IAAI,CAAC,GAAC,MAAM,KAAK,CAAC,AAAC,EAAE;AACtD,WAAG,GAAG,IAAI,CAAC,GAAG,KAAG,EAAE,CAAC,IAAE,EAAE,GAAG,IAAI,CAAC,GAAG,IAAE,EAAE,GAAC,GAAG,CAAC,IAAE,EAAE,GAAG,IAAI,CAAC,GAAG,IAAE,CAAC,GAAC,GAAG,CAAC,IAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAC,GAAG,CAAC,CAAC;;;AAGvF,YAAI,CAAC,GAAC,MAAM,KAAK,CAAC,EAAE;AAClB,aAAG,GAAG,GAAG,IAAE,CAAC,GAAG,GAAG,KAAG,EAAE,GAAG,IAAI,IAAE,EAAE,CAAC;AACnC,cAAI,GAAG,IAAI,IAAE,CAAC,GAAG,CAAC,IAAI,IAAE,CAAC,CAAA,GAAE,GAAG,CAAC;SAChC;OACF;;AAED,YAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAC,MAAM,CAAC,GAAG,GAAG,CAAC;KACpC;;;AAGD,SAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;AACvB,SAAG,GAAG,MAAM,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,UAAI,CAAC,IAAE,CAAC,IAAI,CAAC,GAAC,CAAC,EAAE;AACf,cAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;OACjB,MAAM;AACL,cAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAG,EAAE,CAAO,CAAC,GAC3C,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAE,EAAE,GAAI,GAAG,CAAC,CAAC,GACjC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAE,CAAC,GAAK,GAAG,CAAC,CAAC,GACjC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAQ,GAAG,CAAC,CAAC,CAAC;OACrC;KACF;GACF;;;;;;;;eArEG,GAAG;;WA4EI,uBAAG;AACZ,UAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;UAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;UAC1D,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;UAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;UACzC,CAAC;UAAE,CAAC;UAAE,IAAI;UAAE,CAAC,GAAC,EAAE;UAAE,EAAE,GAAC,EAAE;UAAE,EAAE;UAAE,EAAE;UAAE,EAAE;UAAE,CAAC;UAAE,IAAI;UAAE,IAAI,CAAC;;;AAGnD,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACxB,UAAE,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAE,CAAC,GAAG,CAAC,CAAC,IAAE,CAAC,CAAA,GAAE,GAAG,CAAA,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC;OACtC;;AAED,WAAK,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;AAE/D,SAAC,GAAG,IAAI,GAAG,IAAI,IAAE,CAAC,GAAG,IAAI,IAAE,CAAC,GAAG,IAAI,IAAE,CAAC,GAAG,IAAI,IAAE,CAAC,CAAC;AACjD,SAAC,GAAG,CAAC,IAAE,CAAC,GAAG,CAAC,GAAC,GAAG,GAAG,EAAE,CAAC;AACtB,YAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACZ,eAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;;AAGf,UAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAI,GAAG,EAAE,GAAC,SAAS,GAAG,EAAE,GAAC,OAAO,GAAG,EAAE,GAAC,KAAK,GAAG,CAAC,GAAC,SAAS,CAAC;AAC1D,YAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAC,KAAK,GAAG,CAAC,GAAC,SAAS,CAAC;;AAEhC,aAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtB,kBAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,IAAE,EAAE,GAAG,IAAI,KAAG,CAAC,CAAC;AAC5C,kBAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,IAAE,EAAE,GAAG,IAAI,KAAG,CAAC,CAAC;SAC7C;OACF;;;AAGD,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtB,gBAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OACpC;KACF;;;;;;;;;;;;;;;;WAcM,iBAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE;AACnE,UAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;;AAEtB,OAAC,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;UACvB,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;UACvB,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;UACvB,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;UACvB,EAAE;UAAE,EAAE;UAAE,EAAE;UAEV,YAAY,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;;AACjC,OAAC;UACD,MAAM,GAAG,CAAC;UACV,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;;AAGvB,YAAM,GAAM,KAAK,CAAC,CAAC,CAAC;UACpB,MAAM,GAAM,KAAK,CAAC,CAAC,CAAC;UACpB,MAAM,GAAM,KAAK,CAAC,CAAC,CAAC;UACpB,MAAM,GAAM,KAAK,CAAC,CAAC,CAAC;UACpB,IAAI,GAAI,KAAK,CAAC,CAAC,CAAC,CAAC;;;AAGjB,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AACjC,UAAE,GAAG,MAAM,CAAC,CAAC,KAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/F,UAAE,GAAG,MAAM,CAAC,CAAC,KAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnG,UAAE,GAAG,MAAM,CAAC,CAAC,KAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnG,SAAC,GAAI,MAAM,CAAC,CAAC,KAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAE,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnG,cAAM,IAAI,CAAC,CAAC;AACZ,SAAC,GAAC,EAAE,CAAC,AAAC,CAAC,GAAC,EAAE,CAAC,AAAC,CAAC,GAAC,EAAE,CAAC;OAClB;;;AAGD,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtB,WAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,GAAI,MAAM,CAAC,GACpB,IAAI,CAAC,CAAC,KAAG,EAAE,CAAO,IAAE,EAAE,GACtB,IAAI,CAAC,CAAC,IAAE,EAAE,GAAI,GAAG,CAAC,IAAE,EAAE,GACtB,IAAI,CAAC,CAAC,IAAE,CAAC,GAAK,GAAG,CAAC,IAAE,CAAC,GACrB,IAAI,CAAC,CAAC,GAAQ,GAAG,CAAC,GAClB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAChB,UAAE,GAAC,CAAC,CAAC,AAAC,CAAC,GAAC,CAAC,CAAC,AAAC,CAAC,GAAC,CAAC,CAAC,AAAC,CAAC,GAAC,CAAC,CAAC,AAAC,CAAC,GAAC,EAAE,CAAC;OAC3B;KACF;;;SApKG,GAAG;;;qBAuKM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCtKF,OAAO;;;;IAEjB,eAAe;AAER,WAFP,eAAe,CAEP,GAAG,EAAE,UAAU,EAAE;0BAFzB,eAAe;;AAGjB,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,EAAE,GAAG,UAAU,CAAC;GACtB;;;;;;;eALG,eAAe;;WAWf,cAAC,IAAI,EAAE;AACT,aAAO,AAAC,IAAI,IAAI,EAAE,GACf,CAAC,IAAI,GAAG,MAAM,CAAA,IAAK,CAAC,AAAC,GACrB,CAAC,IAAI,GAAG,QAAQ,CAAA,IAAK,CAAC,AAAC,GACvB,IAAI,KAAK,EAAE,AAAC,CAAC;KACjB;;;;;;;;;;;;;;;;WAeQ,mBAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE;AACpC;;AAEE,iBAAW,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;UAEjG,QAAQ,GAAG,qBAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;AAGnD,eAAS,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;UAChD,WAAW,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;;;;AAI9C,WAAK;UAAE,KAAK;UAAE,KAAK;UAAE,KAAK;UAC1B,UAAU;UAAE,UAAU;UAAE,UAAU;UAAE,UAAU;;;AAG9C,YAAM,CAAC;;;;AAIP,WAAK,GAAG,EAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxB,WAAK,GAAG,EAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxB,WAAK,GAAG,EAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxB,WAAK,GAAG,EAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;;;AAIxB,WAAK,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE;;;AAGzD,kBAAU,GAAG,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,kBAAU,GAAG,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,kBAAU,GAAG,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,kBAAU,GAAG,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;;AAGlD,gBAAQ,CAAC,OAAO,CAAC,UAAU,EACvB,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,MAAM,CAAC,CAAC;;;;AAIZ,mBAAW,CAAC,MAAM,CAAC,GAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;AACjE,mBAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACrE,mBAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACrE,mBAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;;;AAGrE,aAAK,GAAG,UAAU,CAAC;AACnB,aAAK,GAAG,UAAU,CAAC;AACnB,aAAK,GAAG,UAAU,CAAC;AACnB,aAAK,GAAG,UAAU,CAAC;OACpB;;AAED,aAAO,SAAS,CAAC;KAClB;;;WAEW,sBAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE;AAClD,UAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAChC,GAAG,EACH,UAAU,CAAC,CAAC;AAChB,eAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;KAC5C;;;WAEM,iBAAC,SAAS,EAAE;AACjB,UACE,IAAI,GAAG,CAAC,GAAG,IAAI;;;AAEjB,iBAAW,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC;UACvC,SAAS,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;UAChD,CAAC,GAAG,CAAC,CAAC;;;AAGN,UAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,UAAI,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;AACzB,UAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;;AAEjF,WAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE;AAChD,kBAAU,GAAG,IAAI,WAAW,CAAC,CACzB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAChC,CAAC,CAAC;AACH,YAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;OAClF;;AAED,aAAO,SAAS,CAAC;KAClB;;;SA3HG,eAAe;;;qBA8HN,eAAe;;;;;;;;;;;;;;;;;;;;+BClKF,oBAAoB;;;;sBACT,WAAW;;2BAC7B,iBAAiB;;IAEhC,SAAS;AAEF,WAFP,SAAS,CAED,GAAG,EAAE;0BAFb,SAAS;;AAGX,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI;AACF,UAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACtD,UAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,YAAY,CAAC;AACjE,UAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KACtC,CAAC,OAAO,CAAC,EAAE;AACV,UAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;GACF;;eAXG,SAAS;;WAaN,mBAAG,EACT;;;WAEM,iBAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE;AAC/B,UAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC9D,YAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;OACjD,MAAM;AACL,YAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;OAClD;KACF;;;WAEiB,4BAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE;;;AAC1C,0BAAO,GAAG,CAAC,6BAA6B,CAAC,CAAC;;AAE1C,UAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAG,SAAS,EAAE,MAAM,EAAG,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CACvF,IAAI,CAAC,UAAC,WAAW,EAAK;AACpB,cAAK,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAG,SAAS,EAAE,EAAE,EAAG,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAC1E,IAAI,CAAC,QAAQ,CAAC,SACT,CAAE,UAAC,GAAG,EAAK;AACd,gBAAK,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;SACrD,CAAC,CAAC;OACN,CAAC,SACC,CAAE,UAAC,GAAG,EAAK;AACd,cAAK,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;OACrD,CAAC,CAAC;KACJ;;;WAEgB,2BAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC3C,0BAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;;AAEtD,UAAI,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,UAAI,GAAG,GAAG,IAAI,WAAW,CAAC,CACtB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CACrB,CAAC,CAAC;;AAEH,UAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChC,UAAI,EAAE,GAAG,IAAI,WAAW,CAAC,CACrB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CACrB,CAAC,CAAC;;AAEH,UAAI,SAAS,GAAG,iCAAoB,GAAG,EAAE,EAAE,CAAC,CAAC;AAC7C,cAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;KAC1C;;;WAEe,0BAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE;AAC7C,UAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACrC,4BAAO,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAC7C,YAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,YAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;OACjD,MACI;AACH,4BAAO,KAAK,yBAAuB,GAAG,CAAC,OAAO,CAAG,CAAC;AAClD,YAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,IAAI,EAAG,mBAAW,WAAW,EAAE,OAAO,EAAG,qBAAa,kBAAkB,EAAE,KAAK,EAAG,IAAI,EAAE,MAAM,EAAG,GAAG,CAAC,OAAO,EAAC,CAAC,CAAC;OAC/I;KACF;;;SAzEG,SAAS;;;qBA6EA,SAAS;;;;;;;;;;;;;;;;;;;2BClFH,iBAAiB;;wBACtB,cAAc;;;;sBACS,WAAW;;IAE3C,UAAU;AAEJ,WAFN,UAAU,CAEH,QAAQ,EAAC,YAAY,EAAE;0BAF9B,UAAU;;AAGb,QAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAI,CAAC,SAAS,GAAG,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAG,EAAE,EAAE,GAAG,EAAG,CAAC,EAAC,CAAC;GACpF;;eAPI,UAAU;;;;WA0BX,cAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE;AACtE,UAAI,GAAG,GAAG,0BAAQ,IAAI,CAAC;UAAE,eAAe;UAAC,GAAG;UAAE,KAAK,GAAG,IAAI,CAAC,SAAS;UAAE,GAAG,GAAG,GAAG,CAAC,SAAS;UAAE,MAAM;UAAE,SAAS;UAAC,aAAa;UAAC,aAAa;UAAC,KAAK;UAAC,SAAS,CAAC;;AAEzJ,WAAK,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,GAAG,GAAG,CAAC,EAAE,eAAe,EAAE,EAAE;AAClG,YAAI,AAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAK,CAAC,IAAI,CAAC,eAAe,GAAC,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,IAAI,EAAE;AACjF,gBAAM;SACP;OACF;;AAED,UAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC1B,cAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;AACpE,aAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,aAAK,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1C,aAAK,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACzC,aAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,aAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,aAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;AACnD,4BAAO,GAAG,mBAAiB,KAAK,CAAC,KAAK,cAAS,MAAM,CAAC,UAAU,oBAAe,MAAM,CAAC,YAAY,CAAG,CAAC;OACvG;AACD,eAAS,GAAG,CAAC,CAAC;AACd,aAAO,AAAC,eAAe,GAAG,CAAC,GAAI,GAAG,EAAE;;AAElC,qBAAa,GAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,EAAE,AAAC,CAAC;;AAE3D,qBAAa,IAAK,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,AAAC,CAAC;;AAElD,qBAAa,IAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,AAAC,CAAC;AAC5D,qBAAa,GAAI,CAAC,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,AAAC,GAAG,CAAC,GAAG,CAAC,AAAC,CAAC;AAC/D,qBAAa,IAAI,aAAa,CAAC;AAC/B,aAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAC,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;;;AAG9E,YAAI,AAAC,aAAa,GAAG,CAAC,IAAM,AAAC,eAAe,GAAG,aAAa,GAAG,aAAa,IAAK,GAAG,AAAC,EAAE;AACrF,mBAAS,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,aAAa,EAAE,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;AAC5I,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,eAAK,CAAC,GAAG,IAAI,aAAa,CAAC;AAC3B,yBAAe,IAAI,aAAa,GAAG,aAAa,CAAC;AACjD,mBAAS,EAAE,CAAC;;AAEZ,iBAAQ,eAAe,GAAI,GAAG,GAAG,CAAC,AAAC,EAAE,eAAe,EAAE,EAAE;AACtD,gBAAI,AAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,IAAI,AAAC,EAAE;AACrF,oBAAM;aACP;WACF;SACF,MAAM;AACL,gBAAM;SACP;OACF;AACD,UAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAC,EAAC,OAAO,EAAG,EAAE,EAAC,EAAE,EAAC,OAAO,EAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAG,GAAG,EAAE,IAAI,EAAG,GAAG,CAAC,OAAO,EAAC,CAAE,EAAC,EAAE,UAAU,CAAC,CAAC;KAC3H;;;WAEiB,4BAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE;AAC3C,UAAI,cAAc;;AACd,wBAAkB;;AAClB,iCAA2B;;AAC3B,sBAAgB;;AAChB,YAAM;UACN,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE;UAC7C,kBAAkB,GAAG,CACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,EACX,IAAI,CAAC,CAAC;;AAEd,oBAAc,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,CAAA,GAAI,CAAC,CAAC;AACvD,wBAAkB,GAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,AAAC,CAAC;AACvD,UAAG,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,GAAC,CAAC,EAAE;AACnD,YAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAiC,kBAAkB,AAAE,EAAC,CAAC,CAAC;AACvL,eAAO;OACR;AACD,sBAAgB,GAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,AAAC,CAAC;;AAEpD,sBAAgB,IAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,AAAC,CAAC;AACtD,0BAAO,GAAG,qBAAmB,UAAU,wBAAmB,cAAc,wBAAmB,kBAAkB,SAAI,kBAAkB,CAAC,kBAAkB,CAAC,0BAAqB,gBAAgB,CAAG,CAAC;;AAEhM,UAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AACvC,YAAI,kBAAkB,IAAI,CAAC,EAAE;AAC3B,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;;;;AAItB,qCAA2B,GAAG,kBAAkB,GAAG,CAAC,CAAC;SACtD,MAAM;AACL,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,qCAA2B,GAAG,kBAAkB,CAAC;SAClD;;OAEF,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,qCAA2B,GAAG,kBAAkB,CAAC;SAClD,MAAM;;;;AAIL,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEtB,cAAI,AAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAM,CAAC,UAAU,IAAI,kBAAkB,IAAI,CAAC,AAAC,EAAE;;;;AAItG,uCAA2B,GAAG,kBAAkB,GAAG,CAAC,CAAC;WACtD,MAAM;;AAEL,gBAAI,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,kBAAkB,IAAI,CAAC,IAAI,gBAAgB,KAAK,CAAC,CAAA,AAAC,EAAE;AAC/G,4BAAc,GAAG,CAAC,CAAC;AACnB,oBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;aACvB;AACD,uCAA2B,GAAG,kBAAkB,CAAC;WAClD;SACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCD,YAAM,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC,CAAC;;AAEhC,YAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;AAC9C,YAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;;AAE9C,YAAM,CAAC,CAAC,CAAC,IAAI,gBAAgB,IAAI,CAAC,CAAC;AACnC,UAAI,cAAc,KAAK,CAAC,EAAE;;AAExB,cAAM,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;AACvD,cAAM,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;;;AAGtD,cAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,cAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OACf;AACD,aAAO,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAG,UAAU,GAAG,cAAc,AAAC,EAAC,CAAC;KACnJ;;;WAEM,mBAAG,EACT;;;WA3LW,eAAC,IAAI,EAAE;;AAEjB,UAAI,GAAG,GAAG,0BAAQ,IAAI,CAAC;UAAE,eAAe;UAAC,GAAG,CAAC;AAC7C,UAAG,GAAG,CAAC,YAAY,EAAE;;AAEnB,aAAK,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,GAAG,GAAG,CAAC,EAAE,eAAe,EAAE,EAAE;AAClG,cAAI,AAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAK,CAAC,IAAI,CAAC,eAAe,GAAC,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,IAAI,EAAE;;AAEjF,mBAAO,IAAI,CAAC;WACb;SACF;OACF;AACD,aAAO,KAAK,CAAC;KACd;;;SAtBI,UAAU;;;qBAwMF,UAAU;;;;;;;;;;;;;;;;;;;;sBC3MP,WAAW;;;;sBACU,WAAW;;+BAC3B,qBAAqB;;;;8BACtB,oBAAoB;;;;IAEpC,aAAa;AAEN,WAFP,aAAa,CAEL,GAAG,EAAC,OAAO,EAAE;0BAFrB,aAAa;;AAGf,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,OAAO,GAAG,OAAO,CAAC;GACxB;;eALG,aAAa;;WAOV,mBAAG;AACR,UAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,UAAI,OAAO,EAAE;AACX,eAAO,CAAC,OAAO,EAAE,CAAC;OACnB;KACF;;;WAEG,cAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE;AACtE,UAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,UAAI,CAAC,OAAO,EAAE;;AAEZ,YAAI,4BAAU,KAAK,CAAC,IAAI,CAAC,EAAE;AACzB,iBAAO,GAAG,IAAI,CAAC,OAAO,GAAG,gCAAc,IAAI,CAAC,GAAG,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/D,MAAM,IAAG,6BAAW,KAAK,CAAC,IAAI,CAAC,EAAE;AAChC,iBAAO,GAAG,IAAI,CAAC,OAAO,GAAG,iCAAe,IAAI,CAAC,GAAG,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChE,MAAM;AACL,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAG,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,sCAAsC,EAAC,CAAC,CAAC;AACtK,iBAAO;SACR;OACF;AACD,aAAO,CAAC,IAAI,CAAC,IAAI,EAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,QAAQ,CAAC,CAAC;KAC1E;;;SA5BG,aAAa;;;qBA+BJ,aAAa;;;;;;;;;;;;;;;;;kCCnCD,yBAAyB;;;;sBACjC,WAAW;;;;uBACJ,QAAQ;;;;+BACV,sBAAsB;;;;AAE9C,IAAI,aAAa,GAAG,SAAhB,aAAa,CAAa,IAAI,EAAE;;AAElC,MAAI,QAAQ,GAAG,yBAAkB,CAAC;AAClC,UAAQ,CAAC,OAAO,GAAG,SAAS,OAAO,CAAE,KAAK,EAAW;sCAAN,IAAI;AAAJ,UAAI;;;AACjD,YAAQ,CAAC,IAAI,MAAA,CAAb,QAAQ,GAAM,KAAK,EAAE,KAAK,SAAK,IAAI,EAAC,CAAC;GACtC,CAAC;;AAEF,UAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,CAAE,KAAK,EAAW;uCAAN,IAAI;AAAJ,UAAI;;;AACzC,YAAQ,CAAC,cAAc,MAAA,CAAvB,QAAQ,GAAgB,KAAK,SAAK,IAAI,EAAC,CAAC;GACzC,CAAC;AACF,MAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;;AAE7C,YAAQ,EAAE,CAAC,IAAI,CAAC,GAAG;AACjB,WAAK,MAAM;AACT,YAAI,CAAC,OAAO,GAAG,oCAAkB,QAAQ,+BAAY,CAAC;AACtD,cAAM;AAAA,AACR,WAAK,OAAO;AACV,YAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;AACnB,YAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7I,cAAM;AAAA,AACR;AACE,cAAM;AAAA,KACT;GACF,CAAC,CAAC;;;AAGH,UAAQ,CAAC,EAAE,CAAC,oBAAM,yBAAyB,EAAE,UAAS,EAAE,EAAE,IAAI,EAAE;AAC9D,QAAI,OAAO,GAAG,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC;AAC1B,QAAI,eAAe,GAAG,EAAE,CAAC;AACzB,QAAI,IAAI,CAAC,UAAU,EAAE;AACnB,aAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,aAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1C,aAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACnD,qBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KACzC;AACD,QAAI,IAAI,CAAC,UAAU,EAAE;AACnB,aAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,aAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1C,aAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,aAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,qBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KACzC;;AAED,QAAI,CAAC,WAAW,CAAC,OAAO,EAAC,eAAe,CAAC,CAAC;GAC3C,CAAC,CAAC;;AAEH,UAAQ,CAAC,EAAE,CAAC,oBAAM,iBAAiB,EAAE,UAAS,EAAE,EAAE,IAAI,EAAE;AACtD,QAAI,OAAO,GAAG,EAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC;;AAEpM,QAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;GACzD,CAAC,CAAC;;AAEH,UAAQ,CAAC,EAAE,CAAC,oBAAM,WAAW,EAAE,UAAS,KAAK,EAAE;AAC7C,QAAI,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;GAClC,CAAC,CAAC;;AAEH,UAAQ,CAAC,EAAE,CAAC,oBAAM,KAAK,EAAE,UAAS,KAAK,EAAE,IAAI,EAAE;AAC7C,QAAI,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;GAC9C,CAAC,CAAC;;AAEH,UAAQ,CAAC,EAAE,CAAC,oBAAM,qBAAqB,EAAE,UAAS,KAAK,EAAE,IAAI,EAAE;AAC7D,QAAI,OAAO,GAAG,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;AACpD,QAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;GAC3B,CAAC,CAAC;CACJ,CAAC;;qBAEa,aAAa;;;;;;;;;;;;;;;;sBC5EV,WAAW;;;;kCACH,yBAAyB;;;;kCACzB,yBAAyB;;;;2BAC9B,iBAAiB;;+BACf,sBAAsB;;;;8BACvB,oBAAoB;;;;IAEpC,OAAO;AAEA,WAFP,OAAO,CAEC,GAAG,EAAE;0BAFb,OAAO;;AAGT,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,GAAG,CAAC,MAAM,CAAC,YAAY,IAAK,OAAO,MAAM,AAAC,KAAK,WAAW,AAAC,EAAE;AAC7D,0BAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACpC,UAAI;AACF,YAAI,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACjC,YAAI,CAAC,CAAC,GAAG,IAAI,iCAAe,CAAC;AAC7B,YAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,YAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,YAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,GAAG,EAAE,MAAM,EAAC,CAAC,CAAC;OACnC,CAAC,OAAM,GAAG,EAAE;AACX,4BAAO,KAAK,CAAC,mEAAmE,CAAC,CAAC;AAClF,YAAI,CAAC,OAAO,GAAG,oCAAkB,GAAG,+BAAY,CAAC;OAClD;KACF,MAAM;AACL,UAAI,CAAC,OAAO,GAAG,oCAAkB,GAAG,+BAAY,CAAC;KAClD;AACD,QAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;GAChC;;eApBG,OAAO;;WAsBJ,mBAAG;AACR,UAAI,IAAI,CAAC,CAAC,EAAE;AACV,YAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,YAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACnB,YAAI,CAAC,CAAC,GAAG,IAAI,CAAC;OACf,MAAM;AACL,YAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvB,YAAI,CAAC,OAAO,GAAG,IAAI,CAAC;OACrB;AACD,UAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACzB,YAAI,CAAC,SAAS,GAAG,IAAI,CAAC;OACvB;KACF;;;WAEY,uBAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE;AAC/E,UAAI,IAAI,CAAC,CAAC,EAAE;;AAEV,YAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;OACnL,MAAM;AACL,YAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;OACtG;KACF;;;WAEG,cAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;AACnF,UAAI,AAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAM,WAAW,IAAI,IAAI,AAAC,IAAK,WAAW,CAAC,GAAG,IAAI,IAAI,AAAC,IAAK,WAAW,CAAC,MAAM,KAAK,SAAS,AAAC,EAAE;AACrH,YAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;AAC1B,cAAI,CAAC,SAAS,GAAG,gCAAc,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1C;;AAED,YAAI,SAAS,GAAG,IAAI,CAAC;AACrB,YAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,UAAS,aAAa,EAAC;AACnF,mBAAS,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;SACrG,CAAC,CAAC;OACJ,MAAM;AACL,YAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;OACvF;KACF;;;WAEc,yBAAC,EAAE,EAAE;;AAElB,cAAO,EAAE,CAAC,IAAI,CAAC,KAAK;AAClB,aAAK,oBAAM,yBAAyB;AAClC,cAAI,GAAG,GAAG,EAAE,CAAC;AACb,cAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACrB,eAAG,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,eAAG,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,eAAG,CAAC,iBAAiB,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;WACnD;AACD,cAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACrB,eAAG,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,eAAG,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,eAAG,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,eAAG,CAAC,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;WACvC;AACD,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,yBAAyB,EAAE,GAAG,CAAC,CAAC;AACvD,gBAAM;AAAA,AACR,aAAK,oBAAM,iBAAiB;AAC1B,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,iBAAiB,EAAC;AACvC,gBAAI,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,gBAAI,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,oBAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ;AAC1B,kBAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;AACtB,oBAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ;AAC1B,kBAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;AACtB,gBAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI;AAClB,cAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;WACf,CAAC,CAAC;AACH,gBAAM;AAAA,AACN,aAAK,oBAAM,qBAAqB;AAChC,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,qBAAqB,EAAE;AAC5C,mBAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO;WACzB,CAAC,CAAC;AACH,gBAAM;AAAA,AACR;AACE,cAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,gBAAM;AAAA,OACT;KACF;;;SApGG,OAAO;;;qBAuGE,OAAO;;;;;;;;;;;;;;;;;;2BC1GD,iBAAiB;;IAEhC,SAAS;AAEF,WAFP,SAAS,CAED,IAAI,EAAE;0BAFd,SAAS;;AAGX,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEjB,QAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAE3C,QAAI,CAAC,IAAI,GAAG,CAAC,CAAC;;AAEd,QAAI,CAAC,aAAa,GAAG,CAAC,CAAC;GACxB;;;;eAVG,SAAS;;WAaL,oBAAG;AACT,UACE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc;UACrD,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;UAChC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACpD,UAAI,cAAc,KAAK,CAAC,EAAE;AACxB,cAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;OACvC;AACD,kBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC;AAC1E,UAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAE3D,UAAI,CAAC,aAAa,GAAG,cAAc,GAAG,CAAC,CAAC;AACxC,UAAI,CAAC,cAAc,IAAI,cAAc,CAAC;KACvC;;;;;WAGO,kBAAC,KAAK,EAAE;AACd,UAAI,SAAS,CAAC;AACd,UAAI,IAAI,CAAC,aAAa,GAAG,KAAK,EAAE;AAC9B,YAAI,CAAC,IAAI,KAAK,KAAK,CAAC;AACpB,YAAI,CAAC,aAAa,IAAI,KAAK,CAAC;OAC7B,MAAM;AACL,aAAK,IAAI,IAAI,CAAC,aAAa,CAAC;AAC5B,iBAAS,GAAG,KAAK,IAAI,CAAC,CAAC;AACvB,aAAK,IAAK,SAAS,IAAI,CAAC,AAAC,CAAC;AAC1B,YAAI,CAAC,cAAc,IAAI,SAAS,CAAC;AACjC,YAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,YAAI,CAAC,IAAI,KAAK,KAAK,CAAC;AACpB,YAAI,CAAC,aAAa,IAAI,KAAK,CAAC;OAC7B;KACF;;;;;WAGO,kBAAC,IAAI,EAAE;AACb,UACE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;;AACzC,UAAI,GAAG,IAAI,CAAC,IAAI,KAAM,EAAE,GAAG,IAAI,AAAC,CAAC;AACnC,UAAI,IAAI,GAAG,EAAE,EAAE;AACb,4BAAO,KAAK,CAAC,yCAAyC,CAAC,CAAC;OACzD;AACD,UAAI,CAAC,aAAa,IAAI,IAAI,CAAC;AAC3B,UAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;AAC1B,YAAI,CAAC,IAAI,KAAK,IAAI,CAAC;OACpB,MAAM,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AAClC,YAAI,CAAC,QAAQ,EAAE,CAAC;OACjB;AACD,UAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACnB,UAAI,IAAI,GAAG,CAAC,EAAE;AACZ,eAAO,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OAC3C,MAAM;AACL,eAAO,IAAI,CAAC;OACb;KACF;;;;;WAGK,kBAAG;AACP,UAAI,gBAAgB,CAAC;AACrB,WAAK,gBAAgB,GAAG,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,gBAAgB,EAAE;AACpF,YAAI,CAAC,MAAM,IAAI,CAAC,IAAI,GAAI,UAAU,KAAK,gBAAgB,CAAC,AAAC,EAAE;;AAEzD,cAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC;AAC/B,cAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC;AACvC,iBAAO,gBAAgB,CAAC;SACzB;OACF;;AAED,UAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,aAAO,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;KACzC;;;;;WAGM,mBAAG;AACR,UAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KAClC;;;;;WAGK,kBAAG;AACP,UAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KAClC;;;;;WAGM,mBAAG;AACR,UAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACxB,aAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACnC;;;;;WAGK,kBAAG;AACP,UAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1B,UAAI,IAAI,GAAG,IAAI,EAAE;;AAEf,eAAO,AAAC,CAAC,GAAG,IAAI,KAAM,CAAC,CAAC;OACzB,MAAM;AACL,iBAAO,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA,AAAC,CAAC;SAC1B;KACF;;;;;;WAIU,uBAAG;AACZ,aAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC/B;;;;;WAGQ,qBAAG;AACV,aAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzB;;;;;;;;;;;WASc,yBAAC,KAAK,EAAE;AACrB,UACE,SAAS,GAAG,CAAC;UACb,SAAS,GAAG,CAAC;UACb,CAAC;UACD,UAAU,CAAC;AACb,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAI,SAAS,KAAK,CAAC,EAAE;AACnB,oBAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC3B,mBAAS,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,GAAG,CAAA,GAAI,GAAG,CAAC;SAClD;AACD,iBAAS,GAAG,AAAC,SAAS,KAAK,CAAC,GAAI,SAAS,GAAG,SAAS,CAAC;OACvD;KACF;;;;;;;;;;;;;WAWM,mBAAG;AACR,UACE,mBAAmB,GAAG,CAAC;UACvB,oBAAoB,GAAG,CAAC;UACxB,kBAAkB,GAAG,CAAC;UACtB,qBAAqB,GAAG,CAAC;UACzB,QAAQ,GAAG,CAAC;UACZ,UAAU;UAAC,aAAa;UAAC,QAAQ;UACjC,8BAA8B;UAAE,mBAAmB;UACnD,yBAAyB;UACzB,gBAAgB;UAChB,gBAAgB;UAChB,CAAC,CAAC;AACJ,UAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B,mBAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjC,UAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjB,cAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,UAAI,CAAC,OAAO,EAAE,CAAC;;AAEf,UAAI,UAAU,KAAK,GAAG,IAClB,UAAU,KAAK,GAAG,IAClB,UAAU,KAAK,GAAG,IAClB,UAAU,KAAK,GAAG,EAAE;AACtB,YAAI,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACrC,YAAI,eAAe,KAAK,CAAC,EAAE;AACzB,cAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClB;AACD,YAAI,CAAC,OAAO,EAAE,CAAC;AACf,YAAI,CAAC,OAAO,EAAE,CAAC;AACf,YAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjB,YAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;AACtB,0BAAgB,GAAG,AAAC,eAAe,KAAK,CAAC,GAAI,CAAC,GAAG,EAAE,CAAC;AACpD,eAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;AACtB,kBAAI,CAAC,GAAG,CAAC,EAAE;AACT,oBAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;eAC1B,MAAM;AACL,oBAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;eAC1B;aACF;WACF;SACF;OACF;AACD,UAAI,CAAC,OAAO,EAAE,CAAC;AACf,UAAI,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACrC,UAAI,eAAe,KAAK,CAAC,EAAE;AACzB,YAAI,CAAC,OAAO,EAAE,CAAC;OAChB,MAAM,IAAI,eAAe,KAAK,CAAC,EAAE;AAChC,cAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjB,cAAI,CAAC,MAAM,EAAE,CAAC;AACd,cAAI,CAAC,MAAM,EAAE,CAAC;AACd,wCAA8B,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,eAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,8BAA8B,EAAE,CAAC,EAAE,EAAE;AAClD,gBAAI,CAAC,MAAM,EAAE,CAAC;WACf;SACF;AACD,UAAI,CAAC,OAAO,EAAE,CAAC;AACf,UAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjB,yBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACrC,+BAAyB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3C,sBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpC,UAAI,gBAAgB,KAAK,CAAC,EAAE;AAC1B,YAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;OAClB;AACD,UAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjB,UAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;AACtB,2BAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACrC,4BAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACtC,0BAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,6BAAqB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;OACxC;AACD,UAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;AAEtB,YAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;AAEtB,cAAI,QAAQ,YAAA,CAAC;AACb,cAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACxC,kBAAQ,cAAc;;AAEpB,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,CAAC;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AAClC,iBAAK,EAAE;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AACnC,iBAAK,EAAE;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AACnC,iBAAK,EAAE;AAAE,sBAAQ,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AACnC,iBAAK,EAAE;AAAE,sBAAQ,GAAG,CAAC,GAAG,EAAC,EAAE,CAAC,CAAC,AAAC,MAAM;AAAA,AACpC,iBAAK,EAAE;AAAE,sBAAQ,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,AAAC,MAAM;AAAA,AACjC,iBAAK,EAAE;AAAE,sBAAQ,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,AAAC,MAAM;AAAA,AACjC,iBAAK,EAAE;AAAE,sBAAQ,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,AAAC,MAAM;AAAA,AACjC,iBAAK,GAAG;AAAE;AACR,wBAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAChG,sBAAM;eACP;AAAA,WACF;AACD,cAAI,QAAQ,EAAE;AACZ,oBAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;WACtC;SACF;OACF;AACD,aAAO;AACL,aAAK,EAAE,CAAC,AAAC,CAAC,mBAAmB,GAAG,CAAC,CAAA,GAAI,EAAE,GAAI,mBAAmB,GAAG,CAAC,GAAG,oBAAoB,GAAG,CAAC,CAAA,GAAI,QAAQ;AACzG,cAAM,EAAE,AAAC,CAAC,CAAC,GAAG,gBAAgB,CAAA,IAAK,yBAAyB,GAAG,CAAC,CAAA,AAAC,GAAG,EAAE,GAAK,CAAC,gBAAgB,GAAE,CAAC,GAAG,CAAC,CAAA,IAAK,kBAAkB,GAAG,qBAAqB,CAAA,AAAC,AAAC;OACrJ,CAAC;KACH;;;WAEY,yBAAG;;AAEd,UAAI,CAAC,SAAS,EAAE,CAAC;;AAEjB,UAAI,CAAC,OAAO,EAAE,CAAC;;AAEf,aAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACvB;;;SA9QG,SAAS;;;qBAiRA,SAAS;;;;;;;;;;;;;;;;;2BCpRH,iBAAiB;;;;IAG/B,GAAG;AAEG,WAFN,GAAG,CAEI,IAAI,EAAE;0BAFb,GAAG;;AAGN,QAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAI,MAAM,GAAG,CAAC;QAAE,KAAK;QAAC,KAAK;QAAC,KAAK;QAAC,KAAK;QAAC,OAAO;QAAC,MAAM;QAAC,MAAM;QAAC,GAAG,CAAC;AAChE,OAAG;AACD,YAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;AACrC,YAAM,IAAE,CAAC,CAAC;;AAER,UAAI,MAAM,KAAK,KAAK,EAAE;;AAElB,cAAM,IAAI,CAAC,CAAC;;AAEZ,aAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;AAC9B,aAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;AAC9B,aAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;AAC9B,aAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;AAC9B,eAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAA,IAAK,KAAK,IAAI,EAAE,CAAA,AAAC,IAAI,KAAK,IAAI,CAAC,CAAA,AAAC,GAAG,KAAK,CAAC;AAC/D,cAAM,GAAG,MAAM,GAAG,OAAO,CAAC;;;;AAI1B,YAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAC,MAAM,CAAC,CAAC;AAC1C,cAAM,GAAG,MAAM,CAAC;OACnB,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE;;AAEzB,cAAM,IAAI,CAAC,CAAC;AACR,4BAAO,GAAG,6BAA2B,MAAM,CAAG,CAAC;OACtD,MAAM;AACH,cAAM,IAAI,CAAC,CAAC;AACZ,WAAG,GAAG,MAAM,CAAC;AACT,YAAI,GAAG,EAAE;;AAEL,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,gCAAO,IAAI,CAAC,iCAAiC,CAAC,CAAC;WAClD;AACD,cAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACnB,cAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC;SACxC;AACL,eAAO;OACV;KACJ,QAAQ,IAAI,EAAE;GAClB;;eA1CI,GAAG;;WA4CD,iBAAC,IAAI,EAAC,KAAK,EAAC,GAAG,EAAE;;AAEtB,UAAI,MAAM,GAAG,EAAE;UAAC,MAAM,GAAG,KAAK;UAAE,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;AAClD,SAAG;AACD,cAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;OAC/C,QAAO,MAAM,GAAG,GAAG,EAAE;AACtB,aAAO,MAAM,CAAC;KACf;;;WAEc,yBAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE;AAClC,UAAI,KAAK,EAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,EAAC,SAAS,CAAC;AAC7C,aAAM,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE;AAC1B,aAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;AACpC,cAAM,IAAG,CAAC,CAAC;;AAEX,cAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GACnB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GACpB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GACnB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;;AAEzB,gBAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAClB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;;AAE3B,gBAAQ,GAAG,MAAM,CAAC;;AAElB,gBAAO,KAAK;AACV,eAAK,MAAM;;;AAGP,gBAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC,MAAM,EAAC,EAAE,CAAC,KAAK,8CAA8C,EAAE;AACjF,oBAAM,IAAE,EAAE,CAAC;;;AAGX,oBAAM,IAAG,CAAC,CAAC;;;AAGX,kBAAI,QAAQ,GAAI,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC;AACrC,kBAAI,CAAC,aAAa,GAAG,IAAI,CAAC;;AAE1B,uBAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA,IACpB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA,AAAC,IACrB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAK,CAAC,CAAA,AAAC,GACtB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA,GAAG,EAAE,CAAC;;AAEjC,kBAAI,QAAQ,EAAE;AACV,yBAAS,IAAM,WAAW,CAAC;eAC9B;AACD,uBAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAClC,kCAAO,KAAK,2BAAyB,SAAS,CAAG,CAAC;AAClD,kBAAI,CAAC,UAAU,GAAG,SAAS,CAAC;aAC/B;AACD,kBAAM;AAAA,AACV;AACI,kBAAM;AAAA,SACX;OACF;KACF;;;SAEe,eAAG;AACjB,aAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;;SAEY,eAAG;AACd,aAAO,IAAI,CAAC,UAAU,CAAC;KACxB;;;SAES,eAAG;AACX,aAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;;SAEU,eAAG;AACZ,aAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;;SApHI,GAAG;;;qBAwHK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;sBCnHC,WAAW;;;;yBACP,cAAc;;;;;;2BAEf,iBAAiB;;sBACC,WAAW;;IAE5C,SAAS;AAEH,WAFN,SAAS,CAEF,QAAQ,EAAC,YAAY,EAAE;0BAF9B,SAAS;;AAGZ,QAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;GAChD;;eARI,SAAS;;WAmBH,uBAAG;AACZ,UAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,UAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjB,UAAI,CAAC,SAAS,GAAG,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAG,EAAE,EAAE,GAAG,EAAG,CAAC,EAAE,MAAM,EAAG,CAAC,EAAC,CAAC;AAC/F,UAAI,CAAC,SAAS,GAAG,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAG,EAAE,EAAE,GAAG,EAAG,CAAC,EAAC,CAAC;AACnF,UAAI,CAAC,SAAS,GAAG,EAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAG,EAAE,EAAE,GAAG,EAAG,CAAC,EAAC,CAAC;AACjF,UAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KAC5B;;;WAEkB,+BAAG;AACpB,UAAI,CAAC,WAAW,EAAE,CAAC;AACnB,UAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;KACpC;;;;;WAGG,cAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE;AACtE,UAAI,OAAO;UAAE,OAAO;UAAE,OAAO;UACzB,KAAK;UAAE,GAAG,GAAG,IAAI,CAAC,MAAM;UAAE,GAAG;UAAE,GAAG;UAAE,GAAG;UAAE,MAAM,CAAC;AACpD,UAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,UAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,UAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,UAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,UAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,UAAI,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE;AACtB,4BAAO,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACrC,YAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,YAAI,CAAC,MAAM,GAAG,EAAE,CAAC;OAClB,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AACnC,4BAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACpC,YAAI,CAAC,WAAW,EAAE,CAAC;AACnB,YAAI,CAAC,SAAS,GAAG,KAAK,CAAC;OACxB,MAAM,IAAI,EAAE,KAAM,IAAI,CAAC,MAAM,GAAC,CAAC,AAAC,EAAE;AACjC,YAAI,CAAC,UAAU,GAAG,IAAI,CAAC;OACxB;AACD,UAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;AAEjB,UAAG,CAAC,IAAI,CAAC,UAAU,EAAE;;AAEnB,YAAI,CAAC,WAAW,GAAG,IAAI,CAAC;OACzB;;AAED,UAAI,SAAS,GAAG,IAAI,CAAC,SAAS;UAC1B,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE;UACzB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE;UACzB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;;AAE9B,WAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE;AACzC,YAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AACxB,aAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,AAAC,CAAC;;AAEjC,aAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,CAAA,GAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACxD,aAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;;AAEpC,cAAI,GAAG,GAAG,CAAC,EAAE;AACX,kBAAM,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;;AAErC,gBAAI,MAAM,KAAM,KAAK,GAAG,GAAG,AAAC,EAAE;AAC5B,uBAAS;aACV;WACF,MAAM;AACL,kBAAM,GAAG,KAAK,GAAG,CAAC,CAAC;WACpB;AACD,cAAI,SAAS,EAAE;AACb,gBAAI,GAAG,KAAK,KAAK,EAAE;AACjB,kBAAI,GAAG,EAAE;AACP,oBAAI,OAAO,EAAE;AACX,sBAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC5C;AACD,uBAAO,GAAG,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;eAC/B;AACD,kBAAI,OAAO,EAAE;AACX,uBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,uBAAO,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;eACtC;aACF,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AACxB,kBAAI,GAAG,EAAE;AACP,oBAAI,OAAO,EAAE;AACX,sBAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC5C;AACD,uBAAO,GAAG,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;eAC/B;AACD,kBAAI,OAAO,EAAE;AACX,uBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,uBAAO,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;eACtC;aACF,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AACxB,kBAAI,GAAG,EAAE;AACP,oBAAI,OAAO,EAAE;AACX,sBAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC5C;AACD,uBAAO,GAAG,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;eAC/B;AACD,kBAAI,OAAO,EAAE;AACX,uBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,uBAAO,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;eACtC;aACF;WACF,MAAM;AACL,gBAAI,GAAG,EAAE;AACP,oBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;AACD,gBAAI,GAAG,KAAK,CAAC,EAAE;AACb,kBAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAC9B,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE;AAC9B,kBAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7B,uBAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC,mBAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1B,mBAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1B,mBAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;aAC3B;WACF;SACF,MAAM;AACL,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAG,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAC,CAAC,CAAC;SAC1K;OACF;;AAED,UAAI,OAAO,EAAE;AACX,YAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;OAC5C;AACD,UAAI,OAAO,EAAE;AACX,YAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;OAC5C;AACD,UAAI,OAAO,EAAE;AACX,YAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;OAC5C;AACD,UAAI,CAAC,KAAK,EAAE,CAAC;KACd;;;WAEI,iBAAG;AACN,UAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACrG;;;WAEM,mBAAG;AACR,UAAI,CAAC,WAAW,EAAE,CAAC;AACnB,UAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC1C,UAAI,CAAC,SAAS,GAAG,CAAC,CAAC;KACpB;;;WAEQ,mBAAC,IAAI,EAAE,MAAM,EAAE;;AAEtB,UAAI,CAAC,MAAM,GAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;;KAEpE;;;WAEQ,mBAAC,IAAI,EAAE,MAAM,EAAE;AACtB,UAAI,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC;AACpD,mBAAa,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClE,cAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC;;;AAG1C,uBAAiB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;;AAExE,YAAM,IAAI,EAAE,GAAG,iBAAiB,CAAC;AACjC,aAAO,MAAM,GAAG,QAAQ,EAAE;AACxB,WAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxD,gBAAO,IAAI,CAAC,MAAM,CAAC;;AAEjB,eAAK,IAAI;;AAEP,gBAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;AACxB,kBAAM;AAAA;AAER,eAAK,IAAI;;AAEP,gBAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;AACxB,kBAAM;AAAA;AAER,eAAK,IAAI;;AAEP,gBAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;AACxB,kBAAM;AAAA,AACR;AACA,gCAAO,GAAG,CAAC,qBAAqB,GAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,kBAAM;AAAA,SACP;;;AAGD,cAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,GAAI,CAAC,CAAC;OACnE;KACF;;;WAEQ,mBAAC,MAAM,EAAE;AAChB,UAAI,CAAC,GAAG,CAAC;UAAE,IAAI;UAAE,QAAQ;UAAE,SAAS;UAAE,MAAM;UAAE,SAAS;UAAE,OAAO;UAAE,MAAM;UAAE,MAAM;UAAE,kBAAkB,CAAC;;AAErG,UAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,eAAS,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA,IAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,AAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,UAAI,SAAS,KAAK,CAAC,EAAE;AACnB,cAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,GAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,YAAI,QAAQ,GAAG,IAAI,EAAE;;;;AAInB,gBAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA,GAAI,SAAS;AACnC,WAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAI,OAAO;AAC3B,WAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAI,KAAK;AACzB,WAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAI,GAAG;AACvB,WAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAI,CAAC,CAAC;;AAEtB,cAAI,MAAM,GAAG,UAAU,EAAE;;AAEvB,kBAAM,IAAI,UAAU,CAAC;WACtB;AACH,cAAI,QAAQ,GAAG,IAAI,EAAE;AACnB,kBAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAK,SAAS;AACrC,aAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAK,OAAO;AAC5B,aAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAK,KAAK;AAC1B,aAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAK,GAAG;AACxB,aAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA,GAAK,CAAC,CAAC;;AAEzB,gBAAI,MAAM,GAAG,UAAU,EAAE;;AAEvB,oBAAM,IAAI,UAAU,CAAC;aACtB;WACF,MAAM;AACL,kBAAM,GAAG,MAAM,CAAC;WACjB;SACF;AACD,iBAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,0BAAkB,GAAG,SAAS,GAAG,CAAC,CAAC;;AAEnC,cAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC7D,cAAM,CAAC,IAAI,IAAI,kBAAkB,CAAC;;AAElC,eAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;AAEtC,eAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;AACzB,cAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,iBAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACrB,WAAC,IAAI,IAAI,CAAC,UAAU,CAAC;SACtB;AACD,eAAO,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAC,CAAC;OAC/D,MAAM;AACL,eAAO,IAAI,CAAC;OACb;KACF;;;WAEW,sBAAC,GAAG,EAAE;;;AAChB,UAAI,KAAK,GAAG,IAAI,CAAC,SAAS;UACtB,OAAO,GAAG,KAAK,CAAC,OAAO;UACvB,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;UACpC,MAAM,GAAG,EAAE;UACX,KAAK,GAAG,KAAK;UACb,GAAG,GAAG,KAAK;UACX,MAAM,GAAG,CAAC;UACV,SAAS;UACT,IAAI,CAAC;;AAET,UAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE5C,YAAI,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,YAAI,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,YAAI,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzE,WAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1B,WAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,gBAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AACpB,qBAAa,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AAClD,aAAK,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;OAClC;;AAED,SAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAChB,UAAI,WAAW,GAAG,EAAE,CAAC;AACrB,WAAK,CAAC,OAAO,CAAC,UAAA,IAAI,EAAI;AACpB,gBAAO,IAAI,CAAC,IAAI;;AAEb,eAAK,CAAC;AACJ,gBAAI,GAAG,IAAI,CAAC;AACZ,gBAAG,KAAK,EAAE;AACT,yBAAW,IAAI,MAAM,CAAC;aACtB;AACD,kBAAM;AAAA;AAET,eAAK,CAAC;AACJ,gBAAI,GAAG,IAAI,CAAC;AACZ,gBAAG,KAAK,EAAE;AACR,yBAAW,IAAI,MAAM,CAAC;aACvB;AACD,eAAG,GAAG,IAAI,CAAC;AACX,kBAAM;AAAA,AACR,eAAK,CAAC;AACJ,gBAAI,GAAG,IAAI,CAAC;AACZ,gBAAG,KAAK,EAAE;AACR,yBAAW,IAAI,MAAM,CAAC;aACvB;AACD,kBAAM;AAAA;AAER,eAAK,CAAC;AACJ,gBAAI,GAAG,IAAI,CAAC;AACZ,gBAAG,KAAK,EAAE;AACR,yBAAW,IAAI,MAAM,CAAC;aACvB;AACD,gBAAG,CAAC,KAAK,CAAC,GAAG,EAAE;AACb,kBAAI,gBAAgB,GAAG,2BAAc,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,kBAAI,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACxC,mBAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,mBAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,mBAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,mBAAK,CAAC,SAAS,GAAG,MAAK,OAAO,CAAC,SAAS,CAAC;AACzC,mBAAK,CAAC,QAAQ,GAAG,MAAK,OAAO,CAAC,SAAS,GAAG,MAAK,SAAS,CAAC;AACzD,kBAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,kBAAI,WAAW,GAAG,OAAO,CAAC;AAC1B,mBAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,oBAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,oBAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAChB,mBAAC,GAAG,GAAG,GAAG,CAAC,CAAC;iBACb;AACD,2BAAW,IAAI,CAAC,CAAC;eAClB;AACD,mBAAK,CAAC,KAAK,GAAG,WAAW,CAAC;aAC3B;AACD,kBAAM;AAAA;AAER,eAAK,CAAC;AACJ,gBAAI,GAAG,IAAI,CAAC;AACZ,gBAAG,KAAK,EAAE;AACR,yBAAW,IAAI,MAAM,CAAC;aACvB;AACD,gBAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AACd,mBAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;AACD,kBAAM;AAAA,AACR,eAAK,CAAC;AACJ,gBAAI,GAAG,IAAI,CAAC;AACZ,gBAAG,KAAK,EAAE;AACR,yBAAW,IAAI,MAAM,CAAC;aACvB;AACD,kBAAM;AAAA,AACR;AACE,gBAAI,GAAG,KAAK,CAAC;AACb,uBAAW,IAAI,cAAc,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChD,kBAAM;AAAA,SACT;AACD,YAAG,IAAI,EAAE;AACP,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,gBAAM,IAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SAC9B;OACF,CAAC,CAAC;AACH,UAAG,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE;AAC9B,4BAAO,GAAG,CAAC,WAAW,CAAC,CAAC;OACzB;;;AAGD,UAAI,MAAM,CAAC,MAAM,EAAE;;AAEjB,YAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,EAAG;AAC9B,mBAAS,GAAG,EAAC,KAAK,EAAE,EAAE,KAAK,EAAG,MAAM,EAAE,MAAM,EAAG,MAAM,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC;AAC9F,iBAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,eAAK,CAAC,GAAG,IAAI,MAAM,CAAC;AACpB,eAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;SAC/B;OACF;KACF;;;WAGY,uBAAC,KAAK,EAAE;AACnB,UAAI,CAAC,GAAG,CAAC;UAAE,GAAG,GAAG,KAAK,CAAC,UAAU;UAAE,KAAK;UAAE,QAAQ;UAAE,KAAK,GAAG,CAAC,CAAC;AAC9D,UAAI,KAAK,GAAG,EAAE;UAAE,IAAI;UAAE,QAAQ;UAAE,aAAa;UAAE,YAAY,CAAC;;AAE5D,aAAO,CAAC,GAAG,GAAG,EAAE;AACd,aAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;AAEnB,gBAAQ,KAAK;AACX,eAAK,CAAC;AACJ,gBAAI,KAAK,KAAK,CAAC,EAAE;AACf,mBAAK,GAAG,CAAC,CAAC;aACX;AACD,kBAAM;AAAA,AACR,eAAK,CAAC;AACJ,gBAAI,KAAK,KAAK,CAAC,EAAE;AACf,mBAAK,GAAG,CAAC,CAAC;aACX,MAAM;AACL,mBAAK,GAAG,CAAC,CAAC;aACX;AACD,kBAAM;AAAA,AACR,eAAK,CAAC,CAAC;AACP,eAAK,CAAC;AACJ,gBAAI,KAAK,KAAK,CAAC,EAAE;AACf,mBAAK,GAAG,CAAC,CAAC;aACX,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACtB,sBAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;;AAE3B,kBAAI,aAAa,EAAE;AACjB,oBAAI,GAAG,EAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC;;AAEhF,qBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;eAClB,MAAM;;AAEL,wBAAQ,GAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC1B,oBAAI,QAAQ,EAAE;;AAEZ,sBAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;AACjC,wBAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9E,wBAAI,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,wBAAI,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;AAC9D,uBAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1B,uBAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,4BAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AACpB,iCAAa,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC;AACvC,wBAAI,CAAC,SAAS,CAAC,GAAG,IAAI,QAAQ,CAAC;mBAChC;iBACF;eACF;AACD,2BAAa,GAAG,CAAC,CAAC;AAClB,0BAAY,GAAG,QAAQ,CAAC;AACxB,kBAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;;AAEpC,iBAAC,GAAG,GAAG,CAAC;eACT;AACD,mBAAK,GAAG,CAAC,CAAC;aACX,MAAM;AACL,mBAAK,GAAG,CAAC,CAAC;aACX;AACD,kBAAM;AAAA,AACR;AACE,kBAAM;AAAA,SACT;OACF;AACD,UAAI,aAAa,EAAE;AACjB,YAAI,GAAG,EAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC;AACtE,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;OAElB;AACD,aAAO,KAAK,CAAC;KACd;;;WAEW,sBAAC,GAAG,EAAE;AAChB,UAAI,KAAK,GAAG,IAAI,CAAC,SAAS;UAAE,SAAS;UAAE,IAAI,GAAG,GAAG,CAAC,IAAI;UAAE,MAAM;UAAE,aAAa;UAAE,eAAe;UAAE,aAAa;UAAE,KAAK;UAAE,SAAS;UAAE,GAAG,CAAC;AACrI,UAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACxE,WAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7B,WAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC3C,YAAI,GAAG,GAAG,CAAC;OACZ;;AAED,WAAK,eAAe,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,GAAG,GAAG,CAAC,EAAE,eAAe,EAAE,EAAE;AACzF,YAAI,AAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAK,CAAC,IAAI,CAAC,eAAe,GAAC,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,IAAI,EAAE;AACjF,gBAAM;SACP;OACF;;AAED,UAAI,eAAe,EAAE;AACnB,YAAI,MAAM,EAAE,KAAK,CAAC;AAClB,YAAI,eAAe,GAAG,GAAG,GAAG,CAAC,EAAE;AAC7B,gBAAM,sDAAoD,eAAe,AAAE,CAAC;AAC5E,eAAK,GAAG,KAAK,CAAC;SACf,MAAM;AACL,gBAAM,GAAG,iCAAiC,CAAC;AAC3C,eAAK,GAAG,IAAI,CAAC;SACd;AACD,YAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;AAC3I,YAAI,KAAK,EAAE;AACT,iBAAO;SACR;OACF;AACD,UAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC1B,cAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACzE,aAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,aAAK,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1C,aAAK,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACzC,aAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,aAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,aAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzD,4BAAO,GAAG,mBAAiB,KAAK,CAAC,KAAK,cAAS,MAAM,CAAC,UAAU,oBAAe,MAAM,CAAC,YAAY,CAAG,CAAC;OACvG;AACD,eAAS,GAAG,CAAC,CAAC;AACd,aAAO,AAAC,eAAe,GAAG,CAAC,GAAI,GAAG,EAAE;;AAElC,qBAAa,GAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,EAAE,AAAC,CAAC;;AAE3D,qBAAa,IAAK,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,AAAC,CAAC;;AAElD,qBAAa,IAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,AAAC,CAAC;AAC5D,qBAAa,GAAI,CAAC,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,AAAC,GAAG,CAAC,GAAG,CAAC,AAAC,CAAC;AAC/D,qBAAa,IAAI,aAAa,CAAC;AAC/B,aAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;;;AAG5F,YAAI,AAAC,aAAa,GAAG,CAAC,IAAM,AAAC,eAAe,GAAG,aAAa,GAAG,aAAa,IAAK,GAAG,AAAC,EAAE;AACrF,mBAAS,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,aAAa,EAAE,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;AAC5I,cAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC,cAAI,CAAC,SAAS,CAAC,GAAG,IAAI,aAAa,CAAC;AACpC,yBAAe,IAAI,aAAa,GAAG,aAAa,CAAC;AACjD,mBAAS,EAAE,CAAC;;AAEZ,iBAAQ,eAAe,GAAI,GAAG,GAAG,CAAC,AAAC,EAAE,eAAe,EAAE,EAAE;AACtD,gBAAI,AAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,IAAI,AAAC,EAAE;AACrF,oBAAM;aACP;WACF;SACF,MAAM;AACL,gBAAM;SACP;OACF;AACD,UAAI,eAAe,GAAG,GAAG,EAAE;AACzB,YAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;OACxD,MAAM;AACL,YAAI,CAAC,WAAW,GAAG,IAAI,CAAC;OACzB;KACF;;;WAEiB,4BAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE;AAC3C,UAAI,cAAc;;AACd,wBAAkB;;AAClB,iCAA2B;;AAC3B,sBAAgB;;AAChB,YAAM;UACN,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE;UAC7C,kBAAkB,GAAG,CACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,EACX,IAAI,CAAC,CAAC;;AAEd,oBAAc,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,CAAA,GAAI,CAAC,CAAC;AACvD,wBAAkB,GAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,AAAC,CAAC;AACvD,UAAG,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,GAAC,CAAC,EAAE;AACnD,YAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAiC,kBAAkB,AAAE,EAAC,CAAC,CAAC;AACvL,eAAO;OACR;AACD,sBAAgB,GAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,IAAK,CAAC,AAAC,CAAC;;AAEpD,sBAAgB,IAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA,KAAM,CAAC,AAAC,CAAC;AACtD,0BAAO,GAAG,qBAAmB,UAAU,wBAAmB,cAAc,wBAAmB,kBAAkB,SAAI,kBAAkB,CAAC,kBAAkB,CAAC,0BAAqB,gBAAgB,CAAG,CAAC;;AAEhM,UAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AACvC,YAAI,kBAAkB,IAAI,CAAC,EAAE;AAC3B,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;;;;AAItB,qCAA2B,GAAG,kBAAkB,GAAG,CAAC,CAAC;SACtD,MAAM;AACL,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,qCAA2B,GAAG,kBAAkB,CAAC;SAClD;;OAEF,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,qCAA2B,GAAG,kBAAkB,CAAC;SAClD,MAAM;;;;AAIL,wBAAc,GAAG,CAAC,CAAC;AACnB,gBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEtB,cAAI,AAAC,UAAU,KAAK,AAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IACvC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,AAAC,IACxD,CAAC,UAAU,IAAI,kBAAkB,IAAI,CAAC,AAAC,EAAE;;;;AAI5C,uCAA2B,GAAG,kBAAkB,GAAG,CAAC,CAAC;WACtD,MAAM;;;AAGL,gBAAI,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,kBAAkB,IAAI,CAAC,IAAI,gBAAgB,KAAK,CAAC,CAAA,AAAC,IAC1G,CAAC,UAAU,IAAI,gBAAgB,KAAK,CAAC,AAAC,EAAE;AAC3C,4BAAc,GAAG,CAAC,CAAC;AACnB,oBAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;aACvB;AACD,uCAA2B,GAAG,kBAAkB,CAAC;WAClD;SACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCD,YAAM,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC,CAAC;;AAEhC,YAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;AAC9C,YAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;;AAE9C,YAAM,CAAC,CAAC,CAAC,IAAI,gBAAgB,IAAI,CAAC,CAAC;AACnC,UAAI,cAAc,KAAK,CAAC,EAAE;;AAExB,cAAM,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;AACvD,cAAM,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAA,IAAK,CAAC,CAAC;;;AAGtD,cAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,cAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OACf;AACD,aAAO,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAG,UAAU,GAAG,cAAc,AAAC,EAAC,CAAC;KACnJ;;;WAEW,sBAAC,GAAG,EAAE;AAChB,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClC;;;WAznBW,eAAC,IAAI,EAAE;;AAEjB,UAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AAC1F,eAAO,IAAI,CAAC;OACb,MAAM;AACL,eAAO,KAAK,CAAC;OACd;KACF;;;SAjBI,SAAS;;;qBAsoBD,SAAS;;;;;;;;;ACvpBjB,IAAM,UAAU,GAAG;;AAExB,eAAa,EAAE,iBAAiB;;AAEhC,aAAW,EAAE,eAAe;;AAE5B,aAAW,EAAE,eAAe;CAC7B,CAAC;;;AAEK,IAAM,YAAY,GAAG;;AAE1B,qBAAmB,EAAE,mBAAmB;;AAExC,uBAAqB,EAAE,qBAAqB;;AAE5C,wBAAsB,EAAE,sBAAsB;;AAE9C,kBAAgB,EAAE,gBAAgB;;AAElC,oBAAkB,EAAE,kBAAkB;;AAEtC,oBAAkB,EAAE,kBAAkB;;AAEtC,iBAAe,EAAE,eAAe;;AAEhC,yBAAuB,EAAE,sBAAsB;;AAE/C,mBAAiB,EAAE,iBAAiB;;AAEpC,oBAAkB,EAAE,kBAAkB;;AAEtC,oBAAkB,EAAE,kBAAkB;;AAEtC,gBAAc,EAAE,cAAc;;AAE9B,kBAAgB,EAAE,gBAAgB;;AAElC,qBAAmB,EAAE,mBAAmB;;AAExC,wBAAsB,EAAE,sBAAsB;CAC/C,CAAC;;;;;;;;;qBCxCa;;AAEb,iBAAe,EAAE,mBAAmB;;AAEpC,gBAAc,EAAE,kBAAkB;;AAElC,iBAAe,EAAE,mBAAmB;;AAEpC,gBAAc,EAAE,kBAAkB;;AAElC,kBAAgB,EAAE,oBAAoB;;AAEtC,iBAAe,EAAE,mBAAmB;;AAEpC,iBAAe,EAAE,mBAAmB;;AAEpC,eAAa,EAAE,iBAAiB;;AAEhC,cAAY,EAAE,gBAAgB;;AAE9B,eAAa,EAAE,iBAAiB;;AAEhC,mBAAiB,EAAE,eAAe;;AAElC,cAAY,EAAE,gBAAgB;;AAE9B,cAAY,EAAE,gBAAgB;;AAE9B,oBAAkB,EAAE,qBAAqB;;AAEzC,6BAA2B,EAAE,6BAA6B;;AAE1D,aAAW,EAAE,eAAe;;AAE5B,2BAAyB,EAAE,2BAA2B;;AAEtD,uBAAqB,EAAE,uBAAuB;;AAE9C,mBAAiB,EAAE,oBAAoB;;AAEvC,aAAW,EAAE,eAAe;;AAE5B,eAAa,EAAE,iBAAiB;;AAEhC,cAAY,EAAE,gBAAgB;;AAE9B,UAAQ,EAAE,YAAY;;AAEtB,OAAK,EAAE,UAAU;;AAEjB,YAAU,EAAE,eAAe;;AAE3B,aAAW,EAAE,eAAe;;AAE5B,YAAU,EAAE,cAAc;CAC3B;;;;;;;;;;;;;;;;;;2BCnDoB,iBAAiB;;IAEhC,WAAW;WAAX,WAAW;0BAAX,WAAW;;;eAAX,WAAW;;WAEI,sBAAC,UAAU,EAAC,UAAU,EAAE;AACzC,UAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAC,UAAU,CAAC,OAAO,CAAC,GAAC,UAAU,CAAC,OAAO;UAC1E,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAC,UAAU,CAAC,KAAK,CAAC,GAAC,UAAU,CAAC,OAAO;UACpE,KAAK,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO;UAC/C,YAAY,GAAG,UAAU,CAAC,SAAS;UACnC,YAAY,GAAG,UAAU,CAAC,SAAS;UACnC,QAAQ,GAAE,CAAC;UACX,OAAO,CAAC;;;AAGZ,UAAK,GAAG,GAAG,KAAK,EAAE;AAChB,kBAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC5B,eAAO;OACR;;AAED,WAAI,IAAI,CAAC,GAAG,KAAK,EAAG,CAAC,IAAI,GAAG,EAAG,CAAC,EAAE,EAAE;AAClC,YAAI,OAAO,GAAG,YAAY,CAAC,KAAK,GAAC,CAAC,CAAC;YAC/B,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAQ,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AACnC,YAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC5B,iBAAO,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACpD,iBAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAChC,iBAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACpC,iBAAO,GAAG,OAAO,CAAC;SACnB;OACF;;AAED,UAAG,QAAQ,EAAE;AACX,4BAAO,GAAG,gEAAgE,CAAC;AAC3E,aAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE;AACzC,sBAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC;SAChC;OACF;;;AAGD,UAAG,OAAO,EAAE;AACV,mBAAW,CAAC,aAAa,CAAC,UAAU,EAAC,OAAO,CAAC,EAAE,EAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;OAClF,MAAM;;AAEL,YAAI,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACxC,aAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE;AACzC,sBAAY,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC;SAClC;OACF;;;AAGD,gBAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AAC1C,aAAO;KACR;;;WAEmB,uBAAC,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAC,MAAM,EAAE;AAC/C,UAAI,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;;AAEhC,UAAI,EAAE,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE;AAC9C,eAAO,CAAC,CAAC;OACV;AACD,aAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,eAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC9B,UAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAC1B,UAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACxB,gBAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,cAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;OACxC;;AAED,UAAI,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;;AAElC,UAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtC,UAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,UAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;;AAElC,WAAI,CAAC,GAAG,OAAO,EAAG,CAAC,GAAG,CAAC,EAAG,CAAC,EAAE,EAAE;AAC7B,mBAAW,CAAC,SAAS,CAAC,SAAS,EAAC,CAAC,EAAC,CAAC,GAAC,CAAC,CAAC,CAAC;OACxC;;;AAGD,WAAI,CAAC,GAAG,OAAO,EAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAG,CAAC,EAAE,EAAE;AAChD,mBAAW,CAAC,SAAS,CAAC,SAAS,EAAC,CAAC,EAAC,CAAC,GAAC,CAAC,CAAC,CAAC;OACxC;AACD,aAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;;;AAGxB,aAAO,KAAK,CAAC;KACd;;;WAEe,mBAAC,SAAS,EAAC,OAAO,EAAE,KAAK,EAAE;AACzC,UAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;UAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;UAAE,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAEzF,UAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;;;AAGpB,YAAI,KAAK,GAAG,OAAO,EAAE;AACnB,kBAAQ,CAAC,QAAQ,GAAG,SAAS,GAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,cAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE;AACxB,gCAAO,KAAK,qCAAmC,QAAQ,0EAAuE,CAAC;WAChI;SACF,MAAM;AACL,gBAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;AAC7C,cAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE;AACtB,gCAAO,KAAK,qCAAmC,MAAM,0EAAuE,CAAC;WAC9H;SACF;OACF,MAAM;;AAEL,YAAI,KAAK,GAAG,OAAO,EAAE;AACnB,gBAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;SACnD,MAAM;AACL,gBAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;SACjD;OACF;KACF;;;SA/GG,WAAW;;;qBAkHF,WAAW;;;;;;;ACrH1B,YAAY,CAAC;;;;;;;;;;;;sBAEK,UAAU;;;;sBACW,UAAU;;oCACtB,0BAA0B;;;;oCAC1B,0BAA0B;;;;uCACxB,6BAA6B;;;;4CAC3B,mCAAmC;;;;yCACrC,+BAA+B;;;;;;2BAE3B,gBAAgB;;8BAC3B,oBAAoB;;;;uBACjB,QAAQ;;;;+BACX,qBAAqB;;;;IAErC,GAAG;eAAH,GAAG;;WAEW,uBAAG;AACnB,aAAQ,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,2CAA2C,CAAC,CAAE;KAChH;;;SAEgB,eAAG;AAClB,iCAAa;KACd;;;SAEoB,eAAG;AACtB,gCAAkB;KACnB;;;SAEsB,eAAG;AACxB,kCAAoB;KACrB;;;AAEU,WAlBP,GAAG,GAkBkB;QAAb,MAAM,yDAAG,EAAE;;0BAlBnB,GAAG;;AAmBN,QAAI,aAAa,GAAG;AACjB,mBAAa,EAAE,IAAI;AACnB,WAAK,EAAE,KAAK;AACZ,qBAAe,EAAE,EAAE;AACnB,mBAAa,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;AAC/B,2BAAqB,EAAC,CAAC;AACvB,iCAA2B,EAAE,QAAQ;AACrC,wBAAkB,EAAE,GAAG;AACvB,kBAAY,EAAE,IAAI;AAClB,uBAAiB,EAAE,IAAI;AACvB,wBAAkB,EAAE,KAAK;AACzB,yBAAmB,EAAE,CAAC;AACtB,2BAAqB,EAAE,IAAI;AAC3B,8BAAwB,EAAE,CAAC;AAC3B,4BAAsB,EAAE,KAAK;AAC7B,6BAAuB,EAAE,CAAC;AAC1B,+BAAyB,EAAE,IAAI;;;AAG/B,yBAAmB,EAAE,GAAG;AACxB,YAAM,6BAAW;AACjB,aAAO,EAAE,SAAS;AAClB,aAAO,EAAE,SAAS;AAClB,mBAAa,sCAAgB;AAC7B,qBAAe,2CAAoB;KACpC,CAAC;AACF,SAAK,IAAI,IAAI,IAAI,aAAa,EAAE;AAC5B,UAAI,IAAI,IAAI,MAAM,EAAE;AAAE,iBAAS;OAAE;AACjC,YAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;KACtC;;AAED,QAAI,MAAM,CAAC,2BAA2B,KAAK,SAAS,IAAI,MAAM,CAAC,2BAA2B,IAAI,MAAM,CAAC,qBAAqB,EAAE;AAC1H,YAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;KAC5G;;AAED,iCAAW,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,QAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;AAErB,QAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,yBAAkB,CAAC;AAClD,YAAQ,CAAC,OAAO,GAAG,SAAS,OAAO,CAAE,KAAK,EAAW;wCAAN,IAAI;AAAJ,YAAI;;;AACjD,cAAQ,CAAC,IAAI,MAAA,CAAb,QAAQ,GAAM,KAAK,EAAE,KAAK,SAAK,IAAI,EAAC,CAAC;KACtC,CAAC;;AAEF,YAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,CAAE,KAAK,EAAW;yCAAN,IAAI;AAAJ,YAAI;;;AACzC,cAAQ,CAAC,cAAc,MAAA,CAAvB,QAAQ,GAAgB,KAAK,SAAK,IAAI,EAAC,CAAC;KACzC,CAAC;AACF,QAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAI,CAAC,cAAc,GAAG,sCAAmB,IAAI,CAAC,CAAC;AAC/C,QAAI,CAAC,cAAc,GAAG,sCAAmB,IAAI,CAAC,CAAC;AAC/C,QAAI,CAAC,eAAe,GAAG,2CAAoB,IAAI,CAAC,CAAC;AACjD,QAAI,CAAC,aAAa,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACpD,QAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACxD,QAAI,CAAC,SAAS,GAAG,iCAAc,IAAI,CAAC,CAAC;;GAEtC;;eA3EG,GAAG;;WA6EA,mBAAG;AACR,0BAAO,GAAG,CAAC,SAAS,CAAC,CAAC;AACtB,UAAI,CAAC,OAAO,CAAC,oBAAM,UAAU,CAAC,CAAC;AAC/B,UAAI,CAAC,WAAW,EAAE,CAAC;AACnB,UAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC9B,UAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC9B,UAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAC/B,UAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAC/B,UAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;AAEzB,UAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAChB,UAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;KACpC;;;WAEU,qBAAC,KAAK,EAAE;AACjB,0BAAO,GAAG,CAAC,aAAa,CAAC,CAAC;AAC1B,UAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,UAAI,CAAC,OAAO,CAAC,oBAAM,eAAe,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;KACrD;;;WAEU,uBAAG;AACZ,0BAAO,GAAG,CAAC,aAAa,CAAC,CAAC;AAC1B,UAAI,CAAC,OAAO,CAAC,oBAAM,eAAe,CAAC,CAAC;AACpC,UAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;;;WAES,oBAAC,GAAG,EAAE;AACd,0BAAO,GAAG,iBAAe,GAAG,CAAG,CAAC;AAChC,UAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;AAEf,UAAI,CAAC,OAAO,CAAC,oBAAM,gBAAgB,EAAE,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,CAAC;KAClD;;;WAEQ,qBAAG;AACV,0BAAO,GAAG,CAAC,WAAW,CAAC,CAAC;AACxB,UAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC;;;WAEa,0BAAG;AACf,0BAAO,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC7B,UAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;KACvC;;;WAEgB,6BAAG;AAClB,0BAAO,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAChC,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,UAAI,CAAC,WAAW,EAAE,CAAC;AACnB,UAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;;;;;SAGS,eAAG;AACX,aAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;KACpC;;;;;SAGe,eAAG;AACjB,aAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;KAC1C;;;SAGe,aAAC,QAAQ,EAAE;AACzB,0BAAO,GAAG,uBAAqB,QAAQ,CAAG,CAAC;AAC3C,UAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,UAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;KAC7C;;;;;SAGY,eAAG;AACd,aAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;KACvC;;;SAGY,aAAC,QAAQ,EAAE;AACtB,0BAAO,GAAG,oBAAkB,QAAQ,CAAG,CAAC;AACxC,UAAI,CAAC,eAAe,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5C,UAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;KACxC;;;;;SAGY,eAAG;AACd,aAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;KACnC;;;SAGY,aAAC,QAAQ,EAAE;AACtB,0BAAO,GAAG,oBAAkB,QAAQ,CAAG,CAAC;AACxC,UAAI,CAAC,eAAe,CAAC,WAAW,GAAG,QAAQ,CAAC;KAC7C;;;;;SAGgB,eAAG;AAClB,aAAO,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;KAC7C;;;SAGgB,aAAC,KAAK,EAAE;AACvB,UAAI,CAAC,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;KACpC;;;;;;SAIa,eAAG;AACf,aAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;KACxC;;;;SAIa,aAAC,QAAQ,EAAE;AACvB,0BAAO,GAAG,qBAAmB,QAAQ,CAAG,CAAC;AACzC,UAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC;KAC5C;;;;;;;;SAMa,eAAG;AACf,aAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;KACxC;;;;;;SAMa,aAAC,QAAQ,EAAE;AACvB,0BAAO,GAAG,qBAAmB,QAAQ,CAAG,CAAC;AACzC,UAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC;KAC5C;;;;;SAGmB,eAAG;AACrB,aAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;KAC5C;;;SAGmB,aAAC,QAAQ,EAAE;AAC7B,0BAAO,GAAG,2BAAyB,QAAQ,CAAG,CAAC;AAC/C,UAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,QAAQ,CAAC;KAChD;;;;;SAGmB,eAAG;AACrB,aAAQ,IAAI,CAAC,eAAe,CAAC,WAAW,KAAK,CAAC,CAAC,CAAE;KAClD;;;;;SAGc,eAAG;AAChB,aAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;KACzC;;;SAlOG,GAAG;;;qBAqOM,GAAG;;;;;;;;;;;;;;;;;;;;sBCnPA,WAAW;;;;sBACU,WAAW;;IAE5C,cAAc;AAEP,WAFP,cAAc,CAEN,GAAG,EAAE;0BAFb,cAAc;;AAGhB,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,OAAG,CAAC,EAAE,CAAC,oBAAM,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;GACvC;;eANG,cAAc;;WAQX,mBAAG;AACR,UAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACtB,YAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB;AACD,UAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C;;;WAEY,uBAAC,KAAK,EAAE,IAAI,EAAE;AACzB,UAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACrB,UAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,UAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,UAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,UAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,MAAM,CAAC,OAAO,AAAC,KAAK,WAAW,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5H,UAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;KACzP;;;WAEU,qBAAC,KAAK,EAAE,KAAK,EAAE;AACxB,UAAI,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3C,WAAK,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;;AAElC,UAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC7B,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,WAAW,EAAE,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;KACxF;;;WAEQ,mBAAC,KAAK,EAAE;AACf,UAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,qBAAa,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;KACxJ;;;WAEU,uBAAG;AACZ,UAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,qBAAa,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;KACzI;;;WAEW,sBAAC,KAAK,EAAE,KAAK,EAAE;AACzB,UAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,kBAAkB,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;KAC7E;;;SA9CG,cAAc;;;qBAiDL,cAAc;;;;;;;;;;;;;;;;;;;;sBCpDX,WAAW;;;;sBACU,WAAW;;IAE5C,SAAS;AAEF,WAFP,SAAS,CAED,GAAG,EAAE;0BAFb,SAAS;;AAGX,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,OAAG,CAAC,EAAE,CAAC,oBAAM,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;GACvC;;eARG,SAAS;;WAUN,mBAAG;AACR,UAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACtB,YAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB;AACD,UAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7C;;;WAEkB,6BAAC,KAAK,EAAE,IAAI,EAAE;AAC/B,UAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;UAC5B,WAAW,GAAG,IAAI,CAAC,WAAW;UAC9B,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;;AAExB,UAAI,GAAG,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AACvD,YAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,YAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtD,YAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AACtB,YAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;OACpP,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;;AAE1B,mBAAW,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,YAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,UAAU,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;OAClD;KACJ;;;WAEU,qBAAC,KAAK,EAAE;AACjB,UAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACrB,UAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAEtF,UAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACxB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,UAAU,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;KAClD;;;WAEQ,mBAAC,KAAK,EAAE;AACf,UAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,qBAAa,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;KACvJ;;;WAEU,uBAAG;AACZ,UAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,qBAAa,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;KACxI;;;WAEW,wBAAG,EAEd;;;SAxDG,SAAS;;;qBA2DA,SAAS;;;;;;;;;;;;;;;;;;;;sBC9DN,WAAW;;;;sBACU,WAAW;;wBAC5B,cAAc;;;;;;IAG9B,cAAc;AAEP,WAFP,cAAc,CAEN,GAAG,EAAE;0BAFb,cAAc;;AAGhB,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,OAAG,CAAC,EAAE,CAAC,oBAAM,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,OAAG,CAAC,EAAE,CAAC,oBAAM,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;GACxC;;eARG,cAAc;;WAUX,mBAAG;AACR,UAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACtB,YAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB;AACD,UAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAC1B,UAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,UAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9C;;;WAEgB,2BAAC,KAAK,EAAE,IAAI,EAAE;AAC7B,UAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC3B;;;WAEa,wBAAC,KAAK,EAAE,IAAI,EAAE;AAC1B,UAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KAC1C;;;WAEG,cAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAClB,UAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,UAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,UAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AACd,UAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,UAAI,CAAC,MAAM,GAAG,OAAO,MAAM,CAAC,OAAO,AAAC,KAAK,WAAW,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9G,UAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;KACjN;;;WAEM,iBAAC,GAAG,EAAE,OAAO,EAAE;AACpB,aAAO,sBAAU,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KACjD;;;WAEkB,6BAAC,MAAM,EAAE,OAAO,EAAE;AACnC,UAAI,MAAM,GAAG,EAAE;UAAE,KAAK,GAAI,EAAE;UAAE,MAAM;UAAE,MAAM;UAAE,KAAK,CAAC;;AAEpD,UAAI,EAAE,GAAG,6KAA6K,CAAC;AACvL,aAAO,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,IAAK,IAAI,EAAC;AACxC,cAAM,CAAC,KAAK,EAAE,CAAC;AACf,cAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAS,CAAC,EAAE;AAAE,iBAAQ,CAAC,KAAK,SAAS,CAAE;SAAE,CAAC,CAAC;AAClE,aAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAChD,eAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,kBAAQ,MAAM,CAAC,KAAK,EAAE;AACpB,iBAAK,KAAK;AACR,mBAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACvC,mBAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,oBAAM;AAAA,AACR,iBAAK,MAAM;AACT,mBAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACzC,oBAAM;AAAA,AACR,iBAAK,MAAM;AACT,mBAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,oBAAM;AAAA,AACR,iBAAK,QAAQ;AACX,oBAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,qBAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,qBAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,oBAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAChC,uBAAK,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBAC7C,MAAM;AACL,uBAAK,CAAC,UAAU,GAAG,KAAK,CAAC;iBAC1B;eACF;AACD,oBAAM;AAAA,AACR;AACE,oBAAM;AAAA,WACT;SACF;AACD,cAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnB,aAAK,GAAG,EAAE,CAAC;OACZ;AACD,aAAO,MAAM,CAAC;KACf;;;WAEW,sBAAC,KAAK,EAAE;AAClB,UAAI,MAAM;UAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,UAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,cAAM,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC;AAC/B,cAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjD,cAAM,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA,CAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;OACvE,MAAM;AACL,cAAM,GAAG,KAAK,CAAC;OAChB;AACD,aAAO,MAAM,CAAC;KACf;;;WAEoB,+BAAC,MAAM,EAAE,MAAM,EAAE;AACpC,UAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,UAAI,MAAM,EAAE;AACV,cAAM,CAAC,KAAK,EAAE,CAAC;AACf,cAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAS,CAAC,EAAE;AAAE,iBAAQ,CAAC,KAAK,SAAS,CAAE;SAAE,CAAC,CAAC;AAClE,YAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,iBAAO,MAAM,CAAC,CAAC,CAAC,CAAC;SAClB;OACF;AACD,aAAO,IAAI,CAAC;KACb;;;WAEO,kBAAC,GAAG,EAAE;AACZ,aAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KACxC;;;WAEiB,4BAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AACtC,UAAI,SAAS,GAAG,CAAC;UAAE,aAAa,GAAG,CAAC;UAAE,KAAK,GAAG,EAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAC;UAAE,MAAM;UAAE,MAAM;UAAE,EAAE,GAAG,CAAC;UAAE,IAAI;UAAE,kBAAkB;UAAE,oBAAoB,CAAC;AAC5K,UAAI,QAAQ,GAAG,EAAC,MAAM,EAAG,IAAI,EAAE,GAAG,EAAG,IAAI,EAAE,EAAE,EAAG,IAAI,EAAE,GAAG,EAAG,IAAI,EAAC,CAAC;AAClE,YAAM,GAAG,4PAA4P,CAAC;AACtQ,aAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,KAAM,IAAI,EAAE;AAC9C,cAAM,CAAC,KAAK,EAAE,CAAC;AACf,cAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAS,CAAC,EAAE;AAAE,iBAAQ,CAAC,KAAK,SAAS,CAAE;SAAE,CAAC,CAAC;AAClE,gBAAQ,MAAM,CAAC,CAAC,CAAC;AACf,eAAK,gBAAgB;AACnB,qBAAS,GAAG,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,kBAAM;AAAA,AACR,eAAK,gBAAgB;AACnB,iBAAK,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,kBAAM;AAAA,AACR,eAAK,SAAS;AACZ,iBAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AACnB,kBAAM;AAAA,AACR,eAAK,KAAK;AACR,cAAE,EAAE,CAAC;AACL,kBAAM;AAAA,AACR,eAAK,WAAW;AACd,gBAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,gBAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,kCAAoB,GAAG,kBAAkB,CAAC;aAC3C,MAAM;AACL,kCAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5C;AACD,8BAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;AAChE,gBAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACnF,gBAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACrB,kBAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AACjD,kBAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AAC7C,kBAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC7C;AACD,kBAAM;AAAA,AACR,eAAK,KAAK;AACR,gBAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AACpB,kBAAI,eAAe;kBACf,EAAE,GAAG,SAAS,EAAE,CAAC;AACrB,kBAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnD,+BAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1C,oBAAI,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,qBAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC5B,2BAAS,CAAC,CAAC,CAAC,GAAG,AAAC,EAAE,IAAI,CAAC,IAAE,EAAE,GAAC,CAAC,CAAA,AAAC,GAAI,IAAI,CAAC;iBACxC;AACD,+BAAe,CAAC,EAAE,GAAG,SAAS,CAAC;eAChC,MAAM;AACL,+BAAe,GAAG,QAAQ,CAAC;eAC5B;AACD,mBAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAG,eAAe,EAAC,CAAC,CAAC;AACzQ,2BAAa,IAAI,QAAQ,CAAC;AAC1B,kCAAoB,GAAG,IAAI,CAAC;aAC7B;AACD,kBAAM;AAAA,AACR,eAAK,KAAK;;AAER,gBAAI,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAI,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,kBAAkB,CAAC;gBAC7E,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,CAAC;gBAC7E,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAC1E,gBAAI,aAAa,EAAE;AACjB,sBAAQ,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC5D,kBAAI,AAAC,UAAU,IAAM,aAAa,KAAK,SAAS,AAAC,EAAE;AACjD,wBAAQ,CAAC,MAAM,GAAG,aAAa,CAAC;;AAEhC,wBAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACjD,wBAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;;AAEpB,oBAAI,SAAS,EAAE;AACb,0BAAQ,CAAC,EAAE,GAAG,SAAS,CAAC;AACxB,sBAAI,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACxC,4BAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;mBACxC;AACD,0BAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,0BAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,0BAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,0BAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,0BAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,0BAAQ,CAAC,EAAE,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;iBAC5C;eACF;aACF;AACD,kBAAM;AAAA,AACR;AACE,kBAAM;AAAA,SACT;OACF;;AAED,WAAK,CAAC,aAAa,GAAG,aAAa,CAAC;AACpC,WAAK,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC;AAC5B,aAAO,KAAK,CAAC;KACd;;;WAEU,qBAAC,KAAK,EAAE,KAAK,EAAE;AACxB,UAAI,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY;UAAE,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW;UAAE,EAAE,GAAG,IAAI,CAAC,EAAE;UAAE,GAAG,GAAG,IAAI,CAAC,GAAG;UAAE,GAAG,GAAG,IAAI,CAAC,GAAG;UAAE,MAAM,CAAC;;AAE3I,UAAI,GAAG,KAAK,SAAS,EAAE;;AAErB,WAAG,GAAG,IAAI,CAAC,GAAG,CAAC;OAChB;AACD,WAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAChC,WAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/E,UAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACnC,YAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;;;AAIlC,cAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;AACpB,eAAG,CAAC,OAAO,CAAC,oBAAM,eAAe,EAAE,EAAC,MAAM,EAAE,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;WACpF,MAAM;AACL,gBAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC5D,iBAAK,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAClC,eAAG,CAAC,OAAO,CAAC,oBAAM,YAAY,EAAE,EAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;WAC5F;SACF,MAAM;AACL,gBAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;AAE/C,cAAI,MAAM,CAAC,MAAM,EAAE;AACjB,eAAG,CAAC,OAAO,CAAC,oBAAM,eAAe,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;WAC9E,MAAM;AACL,eAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,qBAAa,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,4BAA4B,EAAC,CAAC,CAAC;WACvK;SACF;OACF,MAAM;AACL,WAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,qBAAa,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,EAAC,CAAC,CAAC;OAChK;KACF;;;WAEQ,mBAAC,KAAK,EAAE;AACf,UAAI,OAAO,EAAE,KAAK,CAAC;AACnB,UAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;AACpB,eAAO,GAAG,qBAAa,mBAAmB,CAAC;AAC3C,aAAK,GAAG,IAAI,CAAC;OACd,MAAM;AACL,eAAO,GAAG,qBAAa,gBAAgB,CAAC;AACxC,aAAK,GAAG,KAAK,CAAC;OACf;AACD,UAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAC,CAAC,CAAC;KAClM;;;WAEU,uBAAG;AACZ,UAAI,OAAO,EAAE,KAAK,CAAC;AACnB,UAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;AACpB,eAAO,GAAG,qBAAa,qBAAqB,CAAC;AAC7C,aAAK,GAAG,IAAI,CAAC;OACd,MAAM;AACL,eAAO,GAAG,qBAAa,kBAAkB,CAAC;AAC1C,aAAK,GAAG,KAAK,CAAC;OACf;AACF,UAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,UAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAE,mBAAW,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAC,CAAC,CAAC;KAClK;;;SAvQG,cAAc;;;qBA0QL,cAAc;;;;;;;;;;;;;;;;;;;IC9QvB,GAAG;WAAH,GAAG;0BAAH,GAAG;;;eAAH,GAAG;;WACI,gBAAG;AACZ,SAAG,CAAC,KAAK,GAAG;AACV,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;AACR,YAAI,EAAE,EAAE;OACT,CAAC;;AAEF,UAAI,CAAC,CAAC;AACN,WAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE;AACnB,YAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAC/B,aAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CACb,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACf,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACf,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACf,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAChB,CAAC;SACH;OACF;;AAED,SAAG,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,CAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAClB,CAAC,CAAC;;AAEH,SAAG,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,CAC9B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAClB,CAAC,CAAC;;AAEH,SAAG,CAAC,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAEjD,SAAG,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,CAC9B,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;OAC7B,CAAC,CAAC;;AAEH,SAAG,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,CAC9B,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;OAC7B,CAAC,CAAC;;AAEH,SAAG,CAAC,UAAU,GAAG;AACf,eAAO,EAAE,GAAG,CAAC,UAAU;AACvB,eAAO,EAAE,GAAG,CAAC,UAAU;OACxB,CAAC;;AAEF,SAAG,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CACxB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;OACjB,CAAC,CAAC;AACH,SAAG,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CACxB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;OACvB,CAAC,CAAC;AACH,SAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACpB,SAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACpB,SAAG,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CACxB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvB,CAAC,CAAC;;AACH,SAAG,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CACxB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI;OACX,CAAC,CAAC;AACH,SAAG,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CACxB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI;OACX,CAAC,CAAC;;AAEH,SAAG,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CACxB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;;AAE3B,SAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AACxG,SAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KACvE;;;WAES,aAAC,IAAI,EAAE;AACjB,UACE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;UAClD,IAAI,GAAG,CAAC;UACR,CAAC,GAAG,OAAO,CAAC,MAAM;UAClB,MAAM;UACN,IAAI,CAAC;;AAEL,aAAO,CAAC,EAAE,EAAE;AACV,YAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;OAC/B;AACD,YAAM,GAAG,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAClC,UAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,UAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,YAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;AAEpB,WAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,cAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7B,YAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;OAC/B;AACD,aAAO,MAAM,CAAC;KACf;;;WAEU,cAAC,IAAI,EAAE;AAChB,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;;;WAEU,cAAC,IAAI,EAAE;AAChB,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACtC;;;WAEU,cAAC,SAAS,EAAE,QAAQ,EAAE;AAC/B,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CAC5C,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,AAAC,eAAS,IAAI,EAAE,GAAI,IAAI,EACxB,AAAC,SAAS,IAAI,EAAE,GAAI,IAAI,EACxB,AAAC,SAAS,IAAK,CAAC,GAAI,IAAI,EACxB,SAAS,GAAG,IAAI;AACf,cAAQ,IAAI,EAAE,EACf,AAAC,QAAQ,IAAI,EAAE,GAAI,IAAI,EACvB,AAAC,QAAQ,IAAK,CAAC,GAAI,IAAI,EACvB,QAAQ,GAAG,IAAI;AACf,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,CACX,CAAC,CAAC,CAAC;KACL;;;WAEU,cAAC,KAAK,EAAE;AACjB,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAClH;;;WAEU,cAAC,cAAc,EAAE;AAC1B,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CAC5C,IAAI,EACJ,IAAI,EAAE,IAAI,EAAE,IAAI;AACf,oBAAc,IAAI,EAAE,EACrB,AAAC,cAAc,IAAI,EAAE,GAAI,IAAI,EAC7B,AAAC,cAAc,IAAK,CAAC,GAAI,IAAI,EAC7B,cAAc,GAAG,IAAI,CACtB,CAAC,CAAC,CAAC;KACL;;;;WAEU,cAAC,KAAK,EAAE;AACjB,UAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,eAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;OAC9F,MAAM;AACL,eAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;OAC9F;KACF;;;WAEU,cAAC,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE;AAC1C,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAC,mBAAmB,CAAC,CAAC,CAAC;KACnF;;;;;;;WAIU,cAAC,MAAM,EAAE;AAClB,UACE,CAAC,GAAG,MAAM,CAAC,MAAM;UACjB,KAAK,GAAG,EAAE,CAAC;;AAEb,aAAO,CAAC,EAAE,EAAE;AACV,aAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;OAChC;;AAED,aAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACxI;;;WAEU,cAAC,MAAM,EAAE;AAClB,UACE,CAAC,GAAG,MAAM,CAAC,MAAM;UACjB,KAAK,GAAG,EAAE,CAAC;;AAEb,aAAO,CAAC,EAAE,EAAE;AACV,aAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;OAChC;AACD,aAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KAC5D;;;WAEU,cAAC,SAAS,EAAC,QAAQ,EAAE;AAC9B,UACE,KAAK,GAAG,IAAI,UAAU,CAAC,CACrB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,AAAC,eAAS,IAAI,EAAE,GAAI,IAAI,EACxB,AAAC,SAAS,IAAI,EAAE,GAAI,IAAI,EACxB,AAAC,SAAS,IAAK,CAAC,GAAI,IAAI,EACxB,SAAS,GAAG,IAAI;AAChB,AAAC,cAAQ,IAAI,EAAE,GAAI,IAAI,EACvB,AAAC,QAAQ,IAAI,EAAE,GAAI,IAAI,EACvB,AAAC,QAAQ,IAAK,CAAC,GAAI,IAAI,EACvB,QAAQ,GAAG,IAAI;AACf,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;OACvB,CAAC,CAAC;AACL,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACvC;;;WAEU,cAAC,KAAK,EAAE;AACjB,UACE,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE;UAC7B,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;UAC1C,KAAK;UACL,CAAC,CAAC;;;AAGJ,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,aAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,aAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,AAAC,KAAK,CAAC,SAAS,IAAI,CAAC,GACjC,KAAK,CAAC,YAAY,IAAI,CAAC,AAAC,GACxB,KAAK,CAAC,aAAa,AAAC,CAAC;OACzB;;AAED,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACvC;;;WAEU,cAAC,KAAK,EAAE;AACjB,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7L;;;WAEU,cAAC,KAAK,EAAE;AACjB,UAAI,GAAG,GAAG,EAAE;UAAE,GAAG,GAAG,EAAE;UAAE,CAAC;UAAE,IAAI;UAAE,GAAG,CAAC;;;AAGrC,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,WAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACtB,WAAG,CAAC,IAAI,CAAC,AAAC,GAAG,KAAK,CAAC,GAAI,IAAI,CAAC,CAAC;AAC7B,WAAG,CAAC,IAAI,CAAE,GAAG,GAAG,IAAI,CAAE,CAAC;AACvB,WAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;OACpD;;;AAGD,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,WAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACtB,WAAG,CAAC,IAAI,CAAC,AAAC,GAAG,KAAK,CAAC,GAAI,IAAI,CAAC,CAAC;AAC7B,WAAG,CAAC,IAAI,CAAE,GAAG,GAAG,IAAI,CAAE,CAAC;AACvB,WAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;OACpD;;AAED,UAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CAC1C,IAAI;AACJ,SAAG,CAAC,CAAC,CAAC;AACN,SAAG,CAAC,CAAC,CAAC;AACN,SAAG,CAAC,CAAC,CAAC;AACN,UAAI,GAAG,CAAC;AACR,UAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM;OACxB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CACnB,KAAK,CAAC,GAAG,CAAC,MAAM;OACjB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAEvB,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CAC1C,IAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,AAAC,WAAK,CAAC,KAAK,IAAI,CAAC,GAAI,IAAI,EACzB,KAAK,CAAC,KAAK,GAAG,IAAI;AAClB,AAAC,WAAK,CAAC,MAAM,IAAI,CAAC,GAAI,IAAI,EAC1B,KAAK,CAAC,MAAM,GAAG,IAAI;AACnB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI;AACV,UAAI,EACJ,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,CAAC,CAAC;AACV,UAAI,EACJ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CACrC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;OAC1B,CAAC;KACT;;;WAEU,cAAC,KAAK,EAAE;AACjB,aAAO,IAAI,UAAU,CAAC,CACpB,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;;AAEhB,UAAI;AACJ,UAAI,GAAC,KAAK,CAAC,MAAM,CAAC,MAAM;AACxB,UAAI,EAAE,IAAI;AACV,UAAI;;AAEJ,UAAI;AACJ,UAAI,GAAC,KAAK,CAAC,MAAM,CAAC,MAAM;AACxB,UAAI;AACJ,UAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;;AAEtB,UAAI;OACH,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KACpF;;;WAEU,cAAC,KAAK,EAAE;AACb,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CAC9C,IAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,KAAK,CAAC,YAAY;AACxB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,AAAC,WAAK,CAAC,eAAe,IAAI,CAAC,GAAI,IAAI,EACnC,KAAK,CAAC,eAAe,GAAG,IAAI;AAC5B,UAAI,EAAE,IAAI,CAAC,CAAC,EACZ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC/C;;;WAEU,cAAC,KAAK,EAAE;AACjB,UAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,eAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;OAC3D,MAAM;AACL,eAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;OAC3D;KACF;;;WAEU,cAAC,KAAK,EAAE;AACjB,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CAC5C,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,AAAC,WAAK,CAAC,EAAE,IAAI,EAAE,GAAI,IAAI,EACvB,AAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAI,IAAI,EACvB,AAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAI,IAAI,EACtB,KAAK,CAAC,EAAE,GAAG,IAAI;AACf,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACrB,WAAK,CAAC,QAAQ,IAAI,EAAE,EACrB,AAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,GAAI,IAAI,EAC7B,AAAC,KAAK,CAAC,QAAQ,IAAK,CAAC,GAAI,IAAI,EAC7B,KAAK,CAAC,QAAQ,GAAG,IAAI;AACrB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI;AACV,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,AAAC,WAAK,CAAC,KAAK,IAAI,CAAC,GAAI,IAAI,EACzB,KAAK,CAAC,KAAK,GAAG,IAAI,EAClB,IAAI,EAAE,IAAI;AACV,AAAC,WAAK,CAAC,MAAM,IAAI,CAAC,GAAI,IAAI,EAC1B,KAAK,CAAC,MAAM,GAAG,IAAI,EACnB,IAAI,EAAE,IAAI;OACX,CAAC,CAAC,CAAC;KACL;;;WAEU,cAAC,KAAK,EAAC,mBAAmB,EAAE;AACrC,UAAI,qBAAqB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAClB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CACrC,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AACf,WAAK,CAAC,EAAE,IAAI,EAAE,EACf,AAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAI,IAAI,EACvB,AAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAI,IAAI,EACrB,KAAK,CAAC,EAAE,GAAG,IAAI,CACjB,CAAC,CAAC;AACH,SAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CACrC,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AACf,yBAAmB,IAAG,EAAE,EACzB,AAAC,mBAAmB,IAAI,EAAE,GAAI,IAAI,EAClC,AAAC,mBAAmB,IAAI,CAAC,GAAI,IAAI,EAChC,mBAAmB,GAAG,IAAI,CAC5B,CAAC,CAAC;AACH,SAAG,CAAC,IAAI,CAAC,KAAK,EACT,qBAAqB,CAAC,MAAM,GAC5B,EAAE;AACF,QAAE;AACF,OAAC;AACD,QAAE;AACF,OAAC;AACD,OAAC,CAAC;AACP,2BAAqB,CAAC,CAAC;KACnC;;;;;;;;;WAOU,cAAC,KAAK,EAAE;AACjB,WAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC;AAC9C,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAClE;;;WAEU,cAAC,KAAK,EAAE;AACjB,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,CAC5C,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,WAAK,CAAC,EAAE,IAAI,EAAE,EACf,AAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAI,IAAI,EACvB,AAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAI,IAAI,EACrB,KAAK,CAAC,EAAE,GAAG,IAAI;AACf,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtB,UAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;OACvB,CAAC,CAAC,CAAC;KACL;;;WAEU,cAAC,KAAK,EAAE,MAAM,EAAE;AACzB,UAAI,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;AAC9B,aAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;AAC9B,WAAK,GAAG,IAAI,UAAU,CAAC,EAAE,GAAI,EAAE,GAAG,OAAO,CAAC,MAAM,AAAC,CAAC,CAAC;AACnD,YAAM,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;AAC/B,WAAK,CAAC,GAAG,CAAC,CACR,IAAI;AACJ,UAAI,EAAE,IAAI,EAAE,IAAI;AAChB,AAAC,aAAO,CAAC,MAAM,KAAK,EAAE,GAAI,IAAI,EAC9B,AAAC,OAAO,CAAC,MAAM,KAAK,EAAE,GAAI,IAAI,EAC9B,AAAC,OAAO,CAAC,MAAM,KAAK,CAAC,GAAI,IAAI,EAC7B,OAAO,CAAC,MAAM,GAAG,IAAI;AACrB,AAAC,YAAM,KAAK,EAAE,GAAI,IAAI,EACtB,AAAC,MAAM,KAAK,EAAE,GAAI,IAAI,EACtB,AAAC,MAAM,KAAK,CAAC,GAAI,IAAI,EACrB,MAAM,GAAG,IAAI;OACd,EAAC,CAAC,CAAC,CAAC;AACL,WAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,cAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,aAAK,CAAC,GAAG,CAAC,CACR,AAAC,MAAM,CAAC,QAAQ,KAAK,EAAE,GAAI,IAAI,EAC/B,AAAC,MAAM,CAAC,QAAQ,KAAK,EAAE,GAAI,IAAI,EAC/B,AAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,GAAI,IAAI,EAC9B,MAAM,CAAC,QAAQ,GAAG,IAAI;AACtB,AAAC,cAAM,CAAC,IAAI,KAAK,EAAE,GAAI,IAAI,EAC3B,AAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAI,IAAI,EAC3B,AAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAI,IAAI,EAC1B,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,AAAC,cAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,GAAI,MAAM,CAAC,KAAK,CAAC,SAAS,EACtD,AAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,GAC5B,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,AAAC,GAChC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,AAAC,GAChC,MAAM,CAAC,KAAK,CAAC,SAAS,EACxB,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,EACnC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI;AAC9B,AAAC,cAAM,CAAC,GAAG,KAAK,EAAE,GAAI,IAAI,EAC1B,AAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAI,IAAI,EAC1B,AAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAI,IAAI,EACzB,MAAM,CAAC,GAAG,GAAG,IAAI;SAClB,EAAC,EAAE,GAAC,EAAE,GAAC,CAAC,CAAC,CAAC;OACZ;AACD,aAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACvC;;;WAEiB,qBAAC,MAAM,EAAE;AACzB,UAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AACd,WAAG,CAAC,IAAI,EAAE,CAAC;OACZ;AACD,UAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;UAAE,MAAM,CAAC;AACrC,YAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AAChE,YAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,YAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,aAAO,MAAM,CAAC;KACf;;;SAzjBG,GAAG;;;qBA4jBM,GAAG;;;;;;;;;;;;;;;;;;;;sBC5jBA,WAAW;;;;2BACR,iBAAiB;;iCACtB,wBAAwB;;;;sBACD,WAAW;;IAE5C,UAAU;AACH,WADP,UAAU,CACF,QAAQ,EAAE;0BADlB,UAAU;;AAEZ,QAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC5B,QAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC;GACnE;;eAPG,UAAU;;WAaP,mBAAG,EACT;;;WAEkB,+BAAG;AACpB,UAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/E;;;WAEU,uBAAG;AACZ,UAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;;;WAEI,eAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAE,UAAU,EAAE;;AAE3D,UAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAI,CAAC,UAAU,CAAC,UAAU,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC;OACnD;;AAED,UAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7B,YAAI,CAAC,UAAU,CAAC,UAAU,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC;OACnD;;AAED,UAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7B,YAAI,CAAC,UAAU,CAAC,UAAU,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC;OACnD;;AAED,UAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3B,YAAI,CAAC,QAAQ,CAAC,QAAQ,EAAC,UAAU,CAAC,CAAC;OACpC;;AAED,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAM,WAAW,CAAC,CAAC;KAC1C;;;WAES,oBAAC,UAAU,EAAC,UAAU,EAAC,UAAU,EAAE;AAC3C,UAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;UACxB,YAAY,GAAG,UAAU,CAAC,OAAO;UACjC,YAAY,GAAG,UAAU,CAAC,OAAO;UACjC,OAAO,GAAG,YAAY,CAAC,MAAM;UAC7B,OAAO,GAAG,YAAY,CAAC,MAAM;UAC7B,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;;AAEtC,UAAG,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;AACjC,gBAAQ,CAAC,OAAO,CAAC,oBAAM,KAAK,EAAE,EAAC,IAAI,EAAG,mBAAW,WAAW,EAAE,OAAO,EAAE,qBAAa,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAC,CAAC,CAAC;OAChK,MAAM,IAAI,OAAO,KAAK,CAAC,EAAE;;AAExB,YAAI,UAAU,CAAC,MAAM,EAAE;AACpB,kBAAQ,CAAC,OAAO,CAAC,oBAAM,yBAAyB,EAAE;AACjD,qBAAS,EAAE,+BAAI,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;AACxC,sBAAU,EAAG,UAAU,CAAC,KAAK;AAC7B,6BAAiB,EAAG,UAAU,CAAC,YAAY;WAC5C,CAAC,CAAC;AACH,cAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;AACD,YAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAE/B,cAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,cAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,GAAG,UAAU,CAAC;SACjE;OACF,MACD,IAAI,OAAO,KAAK,CAAC,EAAE;;AAEjB,YAAI,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE;AACnC,kBAAQ,CAAC,OAAO,CAAC,oBAAM,yBAAyB,EAAE;AACjD,qBAAS,EAAE,+BAAI,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;AACxC,sBAAU,EAAE,UAAU,CAAC,KAAK;AAC5B,sBAAU,EAAE,UAAU,CAAC,KAAK;AAC5B,uBAAW,EAAE,UAAU,CAAC,MAAM;WAC/B,CAAC,CAAC;AACH,cAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,cAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAE/B,gBAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,gBAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,GAAG,UAAU,CAAC;WACjE;SACF;OACF,MAAM;;AAEL,YAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE;AACvD,kBAAQ,CAAC,OAAO,CAAC,oBAAM,yBAAyB,EAAE;AAClD,qBAAS,EAAE,+BAAI,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;AACxC,sBAAU,EAAE,UAAU,CAAC,KAAK;AAC5B,6BAAiB,EAAE,UAAU,CAAC,YAAY;AAC1C,qBAAS,EAAE,+BAAI,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;AACxC,sBAAU,EAAE,UAAU,CAAC,KAAK;AAC5B,sBAAU,EAAE,UAAU,CAAC,KAAK;AAC5B,uBAAW,EAAE,UAAU,CAAC,MAAM;WAC/B,CAAC,CAAC;AACH,cAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,cAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAE/B,gBAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AAC/F,gBAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;WAChG;SACF;OACF;KACF;;;WAES,oBAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;AACxC,UAAI,IAAI;UACJ,CAAC,GAAG,CAAC;UACL,YAAY,GAAG,IAAI,CAAC,aAAa;UACjC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;UAC5C,SAAS;UACT,SAAS;UACT,eAAe;UACf,IAAI;UACJ,IAAI;UAAE,IAAI;UACV,QAAQ;UAAE,QAAQ;UAAE,OAAO;UAC3B,GAAG;UAAE,GAAG;UAAE,OAAO;UAAE,OAAO;UAC1B,OAAO,GAAG,EAAE,CAAC;;;AAGjB,UAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,GAAI,CAAC,GAAG,KAAK,CAAC,MAAM,AAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,UAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,UAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,UAAI,CAAC,GAAG,CAAC,+BAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5B,aAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3B,iBAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAClC,uBAAe,GAAG,CAAC,CAAC;;AAEpB,eAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AACnC,cAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACrC,cAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,WAAC,IAAI,CAAC,CAAC;AACP,cAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvB,WAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1B,yBAAe,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SAC7C;AACD,WAAG,GAAG,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpC,WAAG,GAAG,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;;;;AAIpC,YAAI,OAAO,KAAK,SAAS,EAAE;AACzB,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,mBAAS,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA,GAAI,kBAAkB,CAAC;AAC9D,cAAI,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE;;AAE1B,qBAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;WACxB;SACF,MAAM;AACL,cAAI,UAAU,GAAG,IAAI,CAAC,UAAU;cAAC,KAAK,CAAC;;AAEvC,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC9C,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC9C,eAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,UAAU,CAAA,GAAI,EAAE,CAAC,CAAC;;AAEhD,cAAI,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;AACvC,gBAAI,KAAK,EAAE;AACT,kBAAI,KAAK,GAAG,CAAC,EAAE;AACb,oCAAO,GAAG,UAAQ,KAAK,oDAAiD,CAAC;eAC1E,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACrB,oCAAO,GAAG,UAAS,CAAC,KAAK,gDAA8C,CAAC;eACzE;;AAED,qBAAO,GAAG,UAAU,CAAC;;AAErB,qBAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7C,kCAAO,GAAG,CAAC,yBAAyB,GAAG,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;aACjE;WACF;;AAED,kBAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAChC,kBAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SACjC;;AAED,iBAAS,GAAG;AACV,cAAI,EAAE,eAAe;AACrB,kBAAQ,EAAE,CAAC;AACX,aAAG,EAAE,CAAC,OAAO,GAAG,OAAO,CAAA,GAAI,kBAAkB;AAC7C,eAAK,EAAE;AACL,qBAAS,EAAE,CAAC;AACZ,wBAAY,EAAE,CAAC;AACf,yBAAa,EAAE,CAAC;AAChB,sBAAU,EAAE,CAAC;WACd;SACF,CAAC;AACF,YAAI,SAAS,CAAC,GAAG,KAAK,IAAI,EAAE;;AAE1B,mBAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;AAC9B,mBAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;SAC/B,MAAM;AACL,mBAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;AAC9B,mBAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;SAC/B;AACD,eAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,eAAO,GAAG,OAAO,CAAC;OACnB;AACD,UAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AACvB,iBAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;OAC3D;;AAED,UAAI,CAAC,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,kBAAkB,CAAC;AACpE,WAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACd,WAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjB,UAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;;;AAG3D,eAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;AAC/B,eAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;OAChC;AACD,WAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,UAAI,GAAG,+BAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,QAAQ,GAAG,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC9E,WAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAM,iBAAiB,EAAE;AAC7C,YAAI,EAAE,IAAI;AACV,YAAI,EAAE,IAAI;AACV,gBAAQ,EAAE,QAAQ,GAAG,YAAY;AACjC,cAAM,EAAE,CAAC,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAA,GAAI,YAAY;AAC1E,gBAAQ,EAAE,QAAQ,GAAG,YAAY;AACjC,cAAM,EAAE,CAAC,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAA,GAAI,YAAY;AAC1E,YAAI,EAAE,OAAO;AACb,UAAE,EAAE,OAAO,CAAC,MAAM;OACnB,CAAC,CAAC;KACJ;;;WAES,oBAAC,KAAK,EAAC,UAAU,EAAE,UAAU,EAAE;AACvC,UAAI,IAAI;UACJ,CAAC,GAAG,CAAC;UACL,YAAY,GAAG,IAAI,CAAC,aAAa;UACjC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;UAC5C,SAAS;UAAE,SAAS;UACpB,IAAI;UACJ,IAAI;UAAE,IAAI;UACV,QAAQ;UAAE,QAAQ;UAAE,OAAO;UAC3B,GAAG;UAAE,GAAG;UAAE,OAAO;UAAE,OAAO;UAC1B,OAAO,GAAG,EAAE,CAAC;;;AAGjB,UAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACrC,UAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,UAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,UAAI,CAAC,GAAG,CAAC,+BAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5B,aAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3B,iBAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAClC,YAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AACtB,YAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClB,SAAC,IAAI,IAAI,CAAC,UAAU,CAAC;AACrB,WAAG,GAAG,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpC,WAAG,GAAG,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAEpC,YAAI,OAAO,KAAK,SAAS,EAAE;AACzB,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;AAE3C,mBAAS,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA,GAAI,kBAAkB,CAAC;AAC9D,cAAI,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE;AAC1B,gCAAO,GAAG,yCAAuC,SAAS,CAAC,GAAG,SAAI,SAAS,CAAC,QAAQ,CAAG,CAAC;AACxF,qBAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;WACxB;SACF,MAAM;AACL,cAAI,UAAU,GAAG,IAAI,CAAC,UAAU;cAAC,KAAK,CAAC;AACvC,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC9C,iBAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC9C,eAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,GAAG,UAAU,CAAA,AAAC,GAAG,YAAY,CAAC,CAAC;;AAEjE,cAAI,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;;AAEvC,gBAAI,KAAK,EAAE;AACT,kBAAI,KAAK,GAAG,CAAC,EAAE;AACb,oCAAO,GAAG,CAAI,KAAK,sDAAmD,CAAC;;eAExE,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACrB,sCAAO,GAAG,CAAK,CAAC,KAAK,kDAAgD,CAAC;iBACvE;;AAED,qBAAO,GAAG,OAAO,GAAG,UAAU,CAAC;aAChC;WACF;;AAED,kBAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAChC,kBAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SACjC;;AAED,iBAAS,GAAG;AACV,cAAI,EAAE,IAAI,CAAC,UAAU;AACrB,aAAG,EAAE,CAAC;AACN,kBAAQ,EAAC,CAAC;AACV,eAAK,EAAE;AACL,qBAAS,EAAE,CAAC;AACZ,wBAAY,EAAE,CAAC;AACf,yBAAa,EAAE,CAAC;AAChB,sBAAU,EAAE,CAAC;AACb,qBAAS,EAAE,CAAC;WACb;SACF,CAAC;AACF,eAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,eAAO,GAAG,OAAO,CAAC;OACnB;;AAED,UAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AACvB,iBAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;OAC3D;;AAED,UAAI,CAAC,UAAU,GAAG,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC;;AAEpE,WAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACd,WAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,UAAI,GAAG,+BAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,QAAQ,GAAG,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC9E,WAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAM,iBAAiB,EAAE;AAC7C,YAAI,EAAE,IAAI;AACV,YAAI,EAAE,IAAI;AACV,gBAAQ,EAAE,QAAQ,GAAG,YAAY;AACjC,cAAM,EAAE,IAAI,CAAC,UAAU,GAAG,YAAY;AACtC,gBAAQ,EAAE,QAAQ,GAAG,YAAY;AACjC,cAAM,EAAE,CAAC,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAA,GAAI,YAAY;AAC1E,YAAI,EAAE,OAAO;AACb,UAAE,EAAE,OAAO,CAAC,MAAM;OACnB,CAAC,CAAC;KACJ;;;WAEO,kBAAC,KAAK,EAAC,UAAU,EAAE;AACzB,UAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;UAAE,MAAM,CAAC;;AAE1C,UAAG,MAAM,EAAE;AACT,aAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAC1C,gBAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;;AAG9B,gBAAM,CAAC,GAAG,GAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAA,GAAI,IAAI,CAAC,aAAa,AAAC,CAAC;AACjE,gBAAM,CAAC,GAAG,GAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAA,GAAI,IAAI,CAAC,aAAa,AAAC,CAAC;SAClE;AACD,YAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAM,qBAAqB,EAAE;AACjD,iBAAO,EAAC,KAAK,CAAC,OAAO;SACtB,CAAC,CAAC;OACJ;;AAED,WAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,gBAAU,GAAG,UAAU,CAAC;KACzB;;;WAEY,uBAAC,KAAK,EAAE,SAAS,EAAE;AAC9B,UAAI,MAAM,CAAC;AACX,UAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,eAAO,KAAK,CAAC;OACd;AACD,UAAI,SAAS,GAAG,KAAK,EAAE;;AAErB,cAAM,GAAG,CAAC,UAAU,CAAC;OACtB,MAAM;;AAEL,cAAM,GAAG,UAAU,CAAC;OACrB;;;;AAID,aAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,UAAU,EAAE;AAC7C,aAAK,IAAI,MAAM,CAAC;OACnB;AACD,aAAO,KAAK,CAAC;KACd;;;SAnWY,eAAG;AACd,aAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;;SAXG,UAAU;;;qBAgXD,UAAU;;;;;;AC1XzB,IAAI,YAAY,GAAG;;;;;;;;;;;;;;;;AAgBf,UAAM,EAAE,gBAAS,IAAI,EAAE,kBAAkB,EAAE;AACvC,YAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,YAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/B,YAAI,YAAY,GAAG,IAAI,CAAC;AACxB,YAAI,cAAc,GAAG,IAAI,CAAC;;AAE1B,eAAO,QAAQ,IAAI,QAAQ,EAAE;AACzB,wBAAY,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA,GAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,0BAAc,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;;AAEpC,gBAAI,gBAAgB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC1D,gBAAI,gBAAgB,GAAG,CAAC,EAAE;AACtB,wBAAQ,GAAG,YAAY,GAAG,CAAC,CAAC;aAC/B,MACI,IAAI,gBAAgB,GAAG,CAAC,EAAE;AAC3B,wBAAQ,GAAG,YAAY,GAAG,CAAC,CAAC;aAC/B,MACI;AACD,uBAAO,cAAc,CAAC;aACzB;SACJ;;AAED,eAAO,IAAI,CAAC;KACf;CACJ,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC;;;AC1C9B,YAAY,CAAC;;;;;AAEb,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAM,UAAU,GAAG;AACjB,OAAK,EAAE,IAAI;AACX,OAAK,EAAE,IAAI;AACX,KAAG,EAAE,IAAI;AACT,MAAI,EAAE,IAAI;AACV,MAAI,EAAE,IAAI;AACV,OAAK,EAAE,IAAI;CACZ,CAAC;;AAEF,IAAI,cAAc,GAAG,UAAU,CAAC;;;;;;;;;;;AAWhC,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE;AAC5B,KAAG,GAAG,GAAG,GAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC;AACjC,SAAO,GAAG,CAAC;CACZ;;AAED,SAAS,cAAc,CAAC,IAAI,EAAE;AAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,MAAI,IAAI,EAAE;AACR,WAAO,YAAkB;wCAAN,IAAI;AAAJ,YAAI;;;AACrB,UAAG,IAAI,CAAC,CAAC,CAAC,EAAE;AACV,YAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;OACpC;AACD,UAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAClC,CAAC;GACH;AACD,SAAO,IAAI,CAAC;CACb;;AAED,SAAS,qBAAqB,CAAC,WAAW,EAAgB;qCAAX,SAAS;AAAT,aAAS;;;AACtD,WAAS,CAAC,OAAO,CAAC,UAAS,IAAI,EAAE;AAC/B,kBAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;GACvG,CAAC,CAAC;CACJ;;AAEM,IAAI,UAAU,GAAG,SAAb,UAAU,CAAY,WAAW,EAAE;AAC5C,MAAI,WAAW,KAAK,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AAC3D,yBAAqB,CAAC,WAAW;;;AAG/B,WAAO,EACP,KAAK,EACL,MAAM,EACN,MAAM,EACN,OAAO,CACR,CAAC;;;AAGF,QAAI;AACH,oBAAc,CAAC,GAAG,EAAE,CAAC;KACrB,CAAC,OAAO,CAAC,EAAE;AACV,oBAAc,GAAG,UAAU,CAAC;KAC7B;GACF,MACI;AACH,kBAAc,GAAG,UAAU,CAAC;GAC7B;CACF,CAAC;;;AAEK,IAAI,MAAM,GAAG,cAAc,CAAC;;;;;;ACxEnC,IAAI,SAAS,GAAG;;;;AAId,kBAAgB,EAAE,0BAAS,OAAO,EAAE,WAAW,EAAE;;AAE/C,eAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;AACjC,QAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;;AAEjC,aAAO,WAAW,CAAC;KACpB;;AAED,QAAI,gBAAgB,GAAG,IAAI,CAAC;AAC5B,QAAI,eAAe,GAAG,IAAI,CAAC;;AAE3B,QAAI,oBAAoB,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7D,QAAI,oBAAoB,EAAE;AACxB,qBAAe,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAC1C,iBAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;KACvC;AACD,QAAI,qBAAqB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/D,QAAI,qBAAqB,EAAE;AACzB,sBAAgB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5C,iBAAW,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;KACxC;;AAED,QAAI,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,QAAI,gBAAgB,EAAE;AACpB,aAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;KAC/B;AACD,QAAI,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,QAAI,iBAAiB,EAAE;AACrB,aAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC;;AAED,QAAI,kBAAkB,GAAG,mDAAmD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3F,QAAI,eAAe,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAI,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAI,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;;AAExC,QAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,QAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC7B,cAAQ,GAAG,eAAe,GAAC,KAAK,GAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5F,MACI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAChC,cAAQ,GAAG,aAAa,GAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KACpF,MACI;AACH,UAAI,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACpE,cAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;KACpC;;;AAGD,QAAI,gBAAgB,EAAE;AACpB,cAAQ,IAAI,gBAAgB,CAAC;KAC9B;AACD,QAAI,eAAe,EAAE;AACnB,cAAQ,IAAI,eAAe,CAAC;KAC7B;AACD,WAAO,QAAQ,CAAC;GACjB;;;;;AAKD,mBAAiB,EAAE,2BAAS,QAAQ,EAAE,YAAY,EAAE;AAClD,QAAI,QAAQ,GAAG,YAAY,CAAC;AAC5B,QAAI,KAAK;QAAE,IAAI,GAAG,EAAE;QAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;AACxG,SAAK,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,EAAE;AACjG,WAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3D,UAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA,CAAE,OAAO,CAAC,IAAI,MAAM,CAAC,sBAAsB,GAAI,CAAC,KAAK,GAAG,CAAC,CAAA,GAAI,CAAC,AAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC3H;AACD,WAAO,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;GACpC;CACF,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;;2BCxEN,iBAAiB;;IAEhC,SAAS;AAEF,WAFP,SAAS,CAED,MAAM,EAAE;0BAFhB,SAAS;;AAGX,QAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC7B,UAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;KACjC;GACF;;eANG,SAAS;;WAQN,mBAAG;AACR,UAAI,CAAC,KAAK,EAAE,CAAC;AACb,UAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;;;WAEI,iBAAG;AACN,UAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;AAC/C,YAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,YAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;OACrB;AACD,UAAI,IAAI,CAAC,aAAa,EAAE;AACtB,cAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;OACzC;KACF;;;WAEG,cAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAkC;UAAhC,UAAU,yDAAG,IAAI;UAAE,IAAI,yDAAG,IAAI;;AAClH,UAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,UAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAC9E,YAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC;OAC9E;AACD,UAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,UAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,UAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,UAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,UAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,UAAI,CAAC,KAAK,GAAG,EAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC;AACrD,UAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,UAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,UAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,UAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7E,UAAI,CAAC,YAAY,EAAE,CAAC;KACrB;;;WAEW,wBAAG;AACb,UAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAC7C,SAAG,CAAC,MAAM,GAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAG,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,SAAG,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,UAAI,IAAI,CAAC,SAAS,EAAE;AAClB,WAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;OAC1D;AACD,SAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACrC,UAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,UAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,UAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;OAC9B;AACD,SAAG,CAAC,IAAI,EAAE,CAAC;KACZ;;;WAEU,qBAAC,KAAK,EAAE;AACjB,YAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACxC,UAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AACrC,UAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;;WAEQ,mBAAC,KAAK,EAAE;AACf,UAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AACpC,4BAAO,IAAI,CAAI,KAAK,CAAC,IAAI,uBAAkB,IAAI,CAAC,GAAG,sBAAiB,IAAI,CAAC,UAAU,SAAM,CAAC;AAC1F,YAAI,CAAC,OAAO,EAAE,CAAC;AACf,cAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;AAEjE,YAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACvD,YAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;OACpB,MAAM;AACL,cAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACxC,4BAAO,KAAK,CAAI,KAAK,CAAC,IAAI,uBAAkB,IAAI,CAAC,GAAG,CAAI,CAAC;AACzD,YAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;OACrB;KACF;;;WAEU,qBAAC,KAAK,EAAE;AACjB,0BAAO,IAAI,4BAA0B,IAAI,CAAC,GAAG,CAAI,CAAC;AAClD,UAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;;WAEW,sBAAC,KAAK,EAAE;AAClB,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,UAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;AACzB,aAAK,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;OAClC;AACD,WAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B,UAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;OAC/B;KACF;;;SA9FG,SAAS;;;qBAiGA,SAAS", + "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;sBCnDkB,WAAW;;;;IAEvB,aAAa;AAEN,WAFP,aAAa,CAEL,GAAG,EAAE;0BAFb,aAAa;;AAGf,QAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC5B,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AACzB,QAAI,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,OAAG,CAAC,EAAE,CAAC,oBAAM,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;GAC9C;;eATG,aAAa;;WAWV,mBAAG;AACR,UAAI,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAM,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACpD;;;WAEqB,gCAAC,KAAK,EAAE,IAAI,EAAE;AAClC,UAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,UAAI,KAAK,CAAC,OAAO,KAAK,SA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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -41,7 +41,7 @@ "var bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn) {\n var keys = [];\n var wkey;\n var cacheKeys = Object.keys(cache);\n \n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n if (cache[key].exports === fn) {\n wkey = key;\n break;\n }\n }\n \n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n Function(['require','module','exports'], '(' + fn + ')(self)'),\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n \n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n Function(['require'],'require(' + stringify(wkey) + ')(self)'),\n scache\n ];\n \n var src = '(' + bundleFn + ')({'\n + Object.keys(sources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n \n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n \n return new Worker(URL.createObjectURL(\n new Blob([src], { type: 'text/javascript' })\n ));\n};\n", "/*\n * simple ABR Controller\n*/\n\nimport Event from '../events';\n\nclass AbrController {\n\n constructor(hls) {\n this.hls = hls;\n this.lastfetchlevel = 0;\n this._autoLevelCapping = -1;\n this._nextAutoLevel = -1;\n this.onflp = this.onFragmentLoadProgress.bind(this);\n hls.on(Event.FRAG_LOAD_PROGRESS, this.onflp);\n }\n\n destroy() {\n this.hls.off(Event.FRAG_LOAD_PROGRESS, this.onflp);\n }\n\n onFragmentLoadProgress(event, data) {\n var stats = data.stats;\n if (stats.aborted === undefined) {\n this.lastfetchduration = (performance.now() - stats.trequest) / 1000;\n this.lastfetchlevel = data.frag.level;\n this.lastbw = (stats.loaded * 8) / this.lastfetchduration;\n //console.log(`fetchDuration:${this.lastfetchduration},bw:${(this.lastbw/1000).toFixed(0)}/${stats.aborted}`);\n }\n }\n\n /** Return the capping/max level value that could be used by automatic level selection algorithm **/\n get autoLevelCapping() {\n return this._autoLevelCapping;\n }\n\n /** set the capping/max level value that could be used by automatic level selection algorithm **/\n set autoLevelCapping(newLevel) {\n this._autoLevelCapping = newLevel;\n }\n\n get nextAutoLevel() {\n var lastbw = this.lastbw, hls = this.hls,adjustedbw, i, maxAutoLevel;\n if (this._autoLevelCapping === -1) {\n maxAutoLevel = hls.levels.length - 1;\n } else {\n maxAutoLevel = this._autoLevelCapping;\n }\n\n if (this._nextAutoLevel !== -1) {\n var nextLevel = Math.min(this._nextAutoLevel,maxAutoLevel);\n if (nextLevel === this.lastfetchlevel) {\n this._nextAutoLevel = -1;\n } else {\n return nextLevel;\n }\n }\n\n // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n for (i = 0; i <= maxAutoLevel; i++) {\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n if (i <= this.lastfetchlevel) {\n adjustedbw = 0.8 * lastbw;\n } else {\n adjustedbw = 0.7 * lastbw;\n }\n if (adjustedbw < hls.levels[i].bitrate) {\n return Math.max(0, i - 1);\n }\n }\n return i - 1;\n }\n\n set nextAutoLevel(nextLevel) {\n this._nextAutoLevel = nextLevel;\n }\n}\n\nexport default AbrController;\n\n", "/*\n * Level Controller\n*/\n\nimport Event from '../events';\nimport {logger} from '../utils/logger';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass LevelController {\n\n constructor(hls) {\n this.hls = hls;\n this.onml = this.onManifestLoaded.bind(this);\n this.onll = this.onLevelLoaded.bind(this);\n this.onerr = this.onError.bind(this);\n this.ontick = this.tick.bind(this);\n hls.on(Event.MANIFEST_LOADED, this.onml);\n hls.on(Event.LEVEL_LOADED, this.onll);\n hls.on(Event.ERROR, this.onerr);\n this._manualLevel = this._autoLevelCapping = -1;\n }\n\n destroy() {\n var hls = this.hls;\n hls.off(Event.MANIFEST_LOADED, this.onml);\n hls.off(Event.LEVEL_LOADED, this.onll);\n hls.off(Event.ERROR, this.onerr);\n if (this.timer) {\n clearInterval(this.timer);\n }\n this._manualLevel = -1;\n }\n\n onManifestLoaded(event, data) {\n var levels0 = [], levels = [], bitrateStart, i, bitrateSet = {}, videoCodecFound = false, audioCodecFound = false;\n\n // regroup redundant level together\n data.levels.forEach(level => {\n if(level.videoCodec) {\n videoCodecFound = true;\n }\n if(level.audioCodec) {\n audioCodecFound = true;\n }\n var redundantLevelId = bitrateSet[level.bitrate];\n if (redundantLevelId === undefined) {\n bitrateSet[level.bitrate] = levels0.length;\n level.url = [level.url];\n level.urlId = 0;\n levels0.push(level);\n } else {\n levels0[redundantLevelId].url.push(level.url);\n }\n });\n\n // remove audio-only level if we also have levels with audio+video codecs signalled\n if(videoCodecFound && audioCodecFound) {\n levels0.forEach(level => {\n if(level.videoCodec) {\n levels.push(level);\n }\n });\n } else {\n levels = levels0;\n }\n\n // only keep level with supported audio/video codecs\n levels = levels.filter(function(level) {\n var checkSupported = function(codec) { return MediaSource.isTypeSupported(`video/mp4;codecs=${codec}`);};\n var audioCodec = level.audioCodec, videoCodec = level.videoCodec;\n\n return (!audioCodec || checkSupported(audioCodec)) &&\n (!videoCodec || checkSupported(videoCodec));\n });\n\n // start bitrate is the first bitrate of the manifest\n bitrateStart = levels[0].bitrate;\n // sort level on bitrate\n levels.sort(function (a, b) {\n return a.bitrate - b.bitrate;\n });\n this._levels = levels;\n // find index of first level in sorted levels\n for (i = 0; i < levels.length; i++) {\n if (levels[i].bitrate === bitrateStart) {\n this._firstLevel = i;\n logger.log(`manifest loaded,${levels.length} level(s) found, first bitrate:${bitrateStart}`);\n break;\n }\n }\n this.hls.trigger(Event.MANIFEST_PARSED, {levels: this._levels, firstLevel: this._firstLevel, stats: data.stats});\n return;\n }\n\n get levels() {\n return this._levels;\n }\n\n get level() {\n return this._level;\n }\n\n set level(newLevel) {\n if (this._level !== newLevel || this._levels[newLevel].details === undefined) {\n this.setLevelInternal(newLevel);\n }\n }\n\n setLevelInternal(newLevel) {\n // check if level idx is valid\n if (newLevel >= 0 && newLevel < this._levels.length) {\n // stopping live reloading timer if any\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n this._level = newLevel;\n logger.log(`switching to level ${newLevel}`);\n this.hls.trigger(Event.LEVEL_SWITCH, {level: newLevel});\n var level = this._levels[newLevel];\n // check if we need to load playlist for this level\n if (level.details === undefined || level.details.live === true) {\n // level not retrieved yet, or live playlist we need to (re)load it\n logger.log(`(re)loading playlist for level ${newLevel}`);\n var urlId = level.urlId;\n this.hls.trigger(Event.LEVEL_LOADING, {url: level.url[urlId], level: newLevel, id: urlId});\n }\n } else {\n // invalid level id given, trigger error\n this.hls.trigger(Event.ERROR, {type : ErrorTypes.OTHER_ERROR, details: ErrorDetails.LEVEL_SWITCH_ERROR, level: newLevel, fatal: false, reason: 'invalid level idx'});\n }\n }\n\n get manualLevel() {\n return this._manualLevel;\n }\n\n set manualLevel(newLevel) {\n this._manualLevel = newLevel;\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n\n get firstLevel() {\n return this._firstLevel;\n }\n\n set firstLevel(newLevel) {\n this._firstLevel = newLevel;\n }\n\n get startLevel() {\n if (this._startLevel === undefined) {\n return this._firstLevel;\n } else {\n return this._startLevel;\n }\n }\n\n set startLevel(newLevel) {\n this._startLevel = newLevel;\n }\n\n onError(event, data) {\n if(data.fatal) {\n return;\n }\n\n var details = data.details, hls = this.hls, levelId, level;\n // try to recover not fatal errors\n switch(details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n levelId = data.frag.level;\n break;\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n levelId = data.level;\n break;\n default:\n break;\n }\n /* try to switch to a redundant stream if any available.\n * if no redundant stream available, emergency switch down (if in auto mode and current level not 0)\n * otherwise, we cannot recover this network error ....\n */\n if (levelId !== undefined) {\n level = this._levels[levelId];\n if (level.urlId < (level.url.length - 1)) {\n level.urlId++;\n level.details = undefined;\n logger.warn(`level controller,${details} for level ${levelId}: switching to redundant stream id ${level.urlId}`);\n } else {\n // we could try to recover if in auto mode and current level not lowest level (0)\n let recoverable = ((this._manualLevel === -1) && levelId);\n if (recoverable) {\n logger.warn(`level controller,${details}: emergency switch-down for next fragment`);\n hls.abrController.nextAutoLevel = 0;\n } else if(level && level.details && level.details.live) {\n logger.warn(`level controller,${details} on live stream, discard`);\n } else {\n logger.error(`cannot recover ${details} error`);\n this._level = undefined;\n // stopping live reloading timer if any\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n // redispatch same error but with fatal set to true\n data.fatal = true;\n hls.trigger(event, data);\n }\n }\n }\n }\n\n onLevelLoaded(event, data) {\n // check if current playlist is a live playlist\n if (data.details.live && !this.timer) {\n // if live playlist we will have to reload it periodically\n // set reload period to playlist target duration\n this.timer = setInterval(this.ontick, 1000 * data.details.targetduration);\n }\n if (!data.details.live && this.timer) {\n // playlist is not live and timer is armed : stopping it\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n\n tick() {\n var levelId = this._level;\n if (levelId !== undefined) {\n var level = this._levels[levelId], urlId = level.urlId;\n this.hls.trigger(Event.LEVEL_LOADING, {url: level.url[urlId], level: levelId, id: urlId});\n }\n }\n\n nextLoadLevel() {\n if (this._manualLevel !== -1) {\n return this._manualLevel;\n } else {\n return this.hls.abrController.nextAutoLevel;\n }\n }\n}\n\nexport default LevelController;\n\n", - "/*\n * MSE Media Controller\n*/\n\nimport Demuxer from '../demux/demuxer';\nimport Event from '../events';\nimport {logger} from '../utils/logger';\nimport BinarySearch from '../utils/binary-search';\nimport LevelHelper from '../helper/level-helper';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nconst State = {\n ERROR : -2,\n STARTING : -1,\n IDLE : 0,\n KEY_LOADING : 1,\n FRAG_LOADING : 2,\n WAITING_LEVEL : 3,\n PARSING : 4,\n PARSED : 5,\n APPENDING : 6,\n BUFFER_FLUSHING : 7\n};\n\nclass MSEMediaController {\n\n constructor(hls) {\n this.config = hls.config;\n this.audioCodecSwap = false;\n this.hls = hls;\n // Source Buffer listeners\n this.onsbue = this.onSBUpdateEnd.bind(this);\n this.onsbe = this.onSBUpdateError.bind(this);\n // internal listeners\n this.onmediaatt0 = this.onMediaAttaching.bind(this);\n this.onmediadet0 = this.onMediaDetaching.bind(this);\n this.onmp = this.onManifestParsed.bind(this);\n this.onll = this.onLevelLoaded.bind(this);\n this.onfl = this.onFragLoaded.bind(this);\n this.onkl = this.onKeyLoaded.bind(this);\n this.onis = this.onInitSegment.bind(this);\n this.onfpg = this.onFragParsing.bind(this);\n this.onfp = this.onFragParsed.bind(this);\n this.onerr = this.onError.bind(this);\n this.ontick = this.tick.bind(this);\n hls.on(Event.MEDIA_ATTACHING, this.onmediaatt0);\n hls.on(Event.MEDIA_DETACHING, this.onmediadet0);\n hls.on(Event.MANIFEST_PARSED, this.onmp);\n }\n\n destroy() {\n this.stop();\n var hls = this.hls;\n hls.off(Event.MEDIA_ATTACHING, this.onmediaatt0);\n hls.off(Event.MEDIA_DETACHING, this.onmediadet0);\n hls.off(Event.MANIFEST_PARSED, this.onmp);\n this.state = State.IDLE;\n }\n\n startLoad() {\n if (this.levels && this.media) {\n this.startInternal();\n if (this.lastCurrentTime) {\n logger.log(`seeking @ ${this.lastCurrentTime}`);\n if (!this.lastPaused) {\n logger.log('resuming video');\n this.media.play();\n }\n this.state = State.IDLE;\n } else {\n this.lastCurrentTime = 0;\n this.state = State.STARTING;\n }\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime;\n this.tick();\n } else {\n logger.warn('cannot start loading as either manifest not parsed or video not attached');\n }\n }\n\n startInternal() {\n var hls = this.hls;\n this.stop();\n this.demuxer = new Demuxer(hls);\n this.timer = setInterval(this.ontick, 100);\n this.level = -1;\n hls.on(Event.FRAG_LOADED, this.onfl);\n hls.on(Event.FRAG_PARSING_INIT_SEGMENT, this.onis);\n hls.on(Event.FRAG_PARSING_DATA, this.onfpg);\n hls.on(Event.FRAG_PARSED, this.onfp);\n hls.on(Event.ERROR, this.onerr);\n hls.on(Event.LEVEL_LOADED, this.onll);\n hls.on(Event.KEY_LOADED, this.onkl);\n }\n\n stop() {\n this.mp4segments = [];\n this.flushRange = [];\n this.bufferRange = [];\n var frag = this.fragCurrent;\n if (frag) {\n if (frag.loader) {\n frag.loader.abort();\n }\n this.fragCurrent = null;\n }\n this.fragPrevious = null;\n if (this.sourceBuffer) {\n for(var type in this.sourceBuffer) {\n var sb = this.sourceBuffer[type];\n try {\n this.mediaSource.removeSourceBuffer(sb);\n sb.removeEventListener('updateend', this.onsbue);\n sb.removeEventListener('error', this.onsbe);\n } catch(err) {\n }\n }\n this.sourceBuffer = null;\n }\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = null;\n }\n var hls = this.hls;\n hls.off(Event.FRAG_LOADED, this.onfl);\n hls.off(Event.FRAG_PARSED, this.onfp);\n hls.off(Event.FRAG_PARSING_DATA, this.onfpg);\n hls.off(Event.LEVEL_LOADED, this.onll);\n hls.off(Event.KEY_LOADED, this.onkl);\n hls.off(Event.FRAG_PARSING_INIT_SEGMENT, this.onis);\n hls.off(Event.ERROR, this.onerr);\n }\n\n tick() {\n var pos, level, levelDetails, hls = this.hls;\n switch(this.state) {\n case State.ERROR:\n //don't do anything in error state to avoid breaking further ...\n break;\n case State.STARTING:\n // determine load level\n this.startLevel = hls.startLevel;\n if (this.startLevel === -1) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n this.startLevel = 0;\n this.fragBitrateTest = true;\n }\n // set new level to playlist loader : this will trigger start level load\n this.level = hls.nextLoadLevel = this.startLevel;\n this.state = State.WAITING_LEVEL;\n this.loadedmetadata = false;\n break;\n case State.IDLE:\n // if video detached or unbound exit loop\n if (!this.media) {\n break;\n }\n // determine next candidate fragment to be loaded, based on current position and\n // end of buffer position\n // ensure 60s of buffer upfront\n // if we have not yet loaded any fragment, start loading from start position\n if (this.loadedmetadata) {\n pos = this.media.currentTime;\n } else {\n pos = this.nextLoadPosition;\n }\n // determine next load level\n if (this.startFragmentRequested === false) {\n level = this.startLevel;\n } else {\n // we are not at playback start, get next load level from level Controller\n level = hls.nextLoadLevel;\n }\n var bufferInfo = this.bufferInfo(pos,0.3),\n bufferLen = bufferInfo.len,\n bufferEnd = bufferInfo.end,\n fragPrevious = this.fragPrevious,\n maxBufLen;\n // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n if ((this.levels[level]).hasOwnProperty('bitrate')) {\n maxBufLen = Math.max(8 * this.config.maxBufferSize / this.levels[level].bitrate, this.config.maxBufferLength);\n maxBufLen = Math.min(maxBufLen, this.config.maxMaxBufferLength);\n } else {\n maxBufLen = this.config.maxBufferLength;\n }\n // if buffer length is less than maxBufLen try to load a new fragment\n if (bufferLen < maxBufLen) {\n // set next load level : this will trigger a playlist load if needed\n hls.nextLoadLevel = level;\n this.level = level;\n levelDetails = this.levels[level].details;\n // if level info not retrieved yet, switch state and wait for level retrieval\n if (typeof levelDetails === 'undefined') {\n this.state = State.WAITING_LEVEL;\n break;\n }\n // find fragment index, contiguous with end of buffer position\n let fragments = levelDetails.fragments,\n fragLen = fragments.length,\n start = fragments[0].start,\n end = fragments[fragLen-1].start + fragments[fragLen-1].duration,\n frag;\n\n // in case of live playlist we need to ensure that requested position is not located before playlist start\n if (levelDetails.live) {\n // check if requested position is within seekable boundaries :\n //logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${this.media.seeking}`);\n if (bufferEnd < Math.max(start,end-this.config.liveMaxLatencyDurationCount*levelDetails.targetduration)) {\n this.seekAfterBuffered = start + Math.max(0, levelDetails.totalduration - this.config.liveSyncDurationCount * levelDetails.targetduration);\n logger.log(`buffer end: ${bufferEnd} is located too far from the end of live sliding playlist, media position will be reseted to: ${this.seekAfterBuffered.toFixed(3)}`);\n bufferEnd = this.seekAfterBuffered;\n }\n if (this.startFragmentRequested && !levelDetails.PTSKnown) {\n /* we are switching level on live playlist, but we don't have any PTS info for that quality level ...\n try to load frag matching with next SN.\n even if SN are not synchronized between playlists, loading this frag will help us\n compute playlist sliding and find the right one after in case it was not the right consecutive one */\n if (fragPrevious) {\n var targetSN = fragPrevious.sn + 1;\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n frag = fragments[targetSN - levelDetails.startSN];\n logger.log(`live playlist, switching playlist, load frag with next SN: ${frag.sn}`);\n }\n }\n if (!frag) {\n /* we have no idea about which fragment should be loaded.\n so let's load mid fragment. it will help computing playlist sliding and find the right one\n */\n frag = fragments[Math.min(fragLen - 1, Math.round(fragLen / 2))];\n logger.log(`live playlist, switching playlist, unknown, load middle frag : ${frag.sn}`);\n }\n }\n } else {\n // VoD playlist: if bufferEnd before start of playlist, load first fragment\n if (bufferEnd < start) {\n frag = fragments[0];\n }\n }\n if (!frag) {\n var foundFrag;\n if (bufferEnd < end) {\n foundFrag = BinarySearch.search(fragments, (candidate) => {\n //logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // offset should be within fragment boundary\n if ((candidate.start + candidate.duration) <= bufferEnd) {\n return 1;\n }\n else if (candidate.start > bufferEnd) {\n return -1;\n }\n return 0;\n });\n } else {\n // reach end of playlist\n foundFrag = fragments[fragLen-1];\n }\n if (foundFrag) {\n frag = foundFrag;\n start = foundFrag.start;\n //logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);\n if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {\n if (frag.sn < levelDetails.endSN) {\n frag = fragments[frag.sn + 1 - levelDetails.startSN];\n logger.log(`SN just loaded, load next one: ${frag.sn}`);\n } else {\n // have we reached end of VOD playlist ?\n if (!levelDetails.live) {\n var mediaSource = this.mediaSource;\n if (mediaSource && mediaSource.readyState === 'open') {\n // ensure sourceBuffer are not in updating states\n var sb = this.sourceBuffer;\n if (!((sb.audio && sb.audio.updating) || (sb.video && sb.video.updating))) {\n logger.log('all media data available, signal endOfStream() to MediaSource');\n //Notify the media element that it now has all of the media data\n mediaSource.endOfStream();\n }\n }\n }\n frag = null;\n }\n }\n }\n }\n if(frag) {\n //logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));\n if ((frag.decryptdata.uri != null) && (frag.decryptdata.key == null)) {\n logger.log(`Loading key for ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}`);\n this.state = State.KEY_LOADING;\n hls.trigger(Event.KEY_LOADING, {frag: frag});\n } else {\n logger.log(`Loading ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}, currentTime:${pos},bufferEnd:${bufferEnd.toFixed(3)}`);\n frag.autoLevel = hls.autoLevelEnabled;\n if (this.levels.length > 1) {\n frag.expectedLen = Math.round(frag.duration * this.levels[level].bitrate / 8);\n frag.trequest = performance.now();\n }\n // ensure that we are not reloading the same fragments in loop ...\n if (this.fragLoadIdx !== undefined) {\n this.fragLoadIdx++;\n } else {\n this.fragLoadIdx = 0;\n }\n if (frag.loadCounter) {\n frag.loadCounter++;\n let maxThreshold = this.config.fragLoadingLoopThreshold;\n // if this frag has already been loaded 3 times, and if it has been reloaded recently\n if (frag.loadCounter > maxThreshold && (Math.abs(this.fragLoadIdx - frag.loadIdx) < maxThreshold)) {\n hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_LOOP_LOADING_ERROR, fatal: false, frag: frag});\n return;\n }\n } else {\n frag.loadCounter = 1;\n }\n frag.loadIdx = this.fragLoadIdx;\n this.fragCurrent = frag;\n this.startFragmentRequested = true;\n hls.trigger(Event.FRAG_LOADING, {frag: frag});\n this.state = State.FRAG_LOADING;\n }\n }\n }\n break;\n case State.WAITING_LEVEL:\n level = this.levels[this.level];\n // check if playlist is already loaded\n if (level && level.details) {\n this.state = State.IDLE;\n }\n break;\n case State.FRAG_LOADING:\n /*\n monitor fragment retrieval time...\n we compute expected time of arrival of the complete fragment.\n we compare it to expected time of buffer starvation\n */\n let v = this.media,frag = this.fragCurrent;\n /* only monitor frag retrieval time if\n (video not paused OR first fragment being loaded) AND autoswitching enabled AND not lowest level AND multiple levels */\n if (v && (!v.paused || this.loadedmetadata === false) && frag.autoLevel && this.level && this.levels.length > 1) {\n var requestDelay = performance.now() - frag.trequest;\n // monitor fragment load progress after half of expected fragment duration,to stabilize bitrate\n if (requestDelay > (500 * frag.duration)) {\n var loadRate = frag.loaded * 1000 / requestDelay; // byte/s\n if (frag.expectedLen < frag.loaded) {\n frag.expectedLen = frag.loaded;\n }\n pos = v.currentTime;\n var fragLoadedDelay = (frag.expectedLen - frag.loaded) / loadRate;\n var bufferStarvationDelay = this.bufferInfo(pos,0.3).end - pos;\n var fragLevelNextLoadedDelay = frag.duration * this.levels[hls.nextLoadLevel].bitrate / (8 * loadRate); //bps/Bps\n /* if we have less than 2 frag duration in buffer and if frag loaded delay is greater than buffer starvation delay\n ... and also bigger than duration needed to load fragment at next level ...*/\n if (bufferStarvationDelay < (2 * frag.duration) && fragLoadedDelay > bufferStarvationDelay && fragLoadedDelay > fragLevelNextLoadedDelay) {\n // abort fragment loading ...\n logger.warn('loading too slow, abort fragment loading');\n logger.log(`fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay :${fragLoadedDelay.toFixed(1)}/${bufferStarvationDelay.toFixed(1)}/${fragLevelNextLoadedDelay.toFixed(1)}`);\n //abort fragment loading\n frag.loader.abort();\n hls.trigger(Event.FRAG_LOAD_EMERGENCY_ABORTED, {frag: frag});\n // switch back to IDLE state to request new fragment at lowest level\n this.state = State.IDLE;\n }\n }\n }\n break;\n case State.PARSING:\n // nothing to do, wait for fragment being parsed\n break;\n case State.PARSED:\n case State.APPENDING:\n if (this.sourceBuffer) {\n if (this.media.error) {\n logger.error('trying to append although a media error occured, switch to ERROR state');\n this.state = State.ERROR;\n return;\n }\n // if MP4 segment appending in progress nothing to do\n else if ((this.sourceBuffer.audio && this.sourceBuffer.audio.updating) ||\n (this.sourceBuffer.video && this.sourceBuffer.video.updating)) {\n //logger.log('sb append in progress');\n // check if any MP4 segments left to append\n } else if (this.mp4segments.length) {\n var segment = this.mp4segments.shift();\n try {\n //logger.log(`appending ${segment.type} SB, size:${segment.data.length});\n this.sourceBuffer[segment.type].appendBuffer(segment.data);\n this.appendError = 0;\n } catch(err) {\n // in case any error occured while appending, put back segment in mp4segments table\n //logger.error(`error while trying to append buffer:${err.message},try appending later`);\n this.mp4segments.unshift(segment);\n if (this.appendError) {\n this.appendError++;\n } else {\n this.appendError = 1;\n }\n var event = {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPEND_ERROR, frag: this.fragCurrent};\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. retrying help recovering this\n */\n if (this.appendError > this.config.appendErrorMaxRetry) {\n logger.log(`fail ${this.config.appendErrorMaxRetry} times to append segment in sourceBuffer`);\n event.fatal = true;\n hls.trigger(Event.ERROR, event);\n this.state = State.ERROR;\n return;\n } else {\n event.fatal = false;\n hls.trigger(Event.ERROR, event);\n }\n }\n this.state = State.APPENDING;\n }\n } else {\n // sourceBuffer undefined, switch back to IDLE state\n this.state = State.IDLE;\n }\n break;\n case State.BUFFER_FLUSHING:\n // loop through all buffer ranges to flush\n while(this.flushRange.length) {\n var range = this.flushRange[0];\n // flushBuffer will abort any buffer append in progress and flush Audio/Video Buffer\n if (this.flushBuffer(range.start, range.end)) {\n // range flushed, remove from flush array\n this.flushRange.shift();\n } else {\n // flush in progress, come back later\n break;\n }\n }\n if (this.flushRange.length === 0) {\n // handle end of immediate switching if needed\n if (this.immediateSwitch) {\n this.immediateLevelSwitchEnd();\n }\n // move to IDLE once flush complete. this should trigger new fragment loading\n this.state = State.IDLE;\n // reset reference to frag\n this.fragPrevious = null;\n }\n /* if not everything flushed, stay in BUFFER_FLUSHING state. we will come back here\n each time sourceBuffer updateend() callback will be triggered\n */\n break;\n default:\n break;\n }\n // check/update current fragment\n this._checkFragmentChanged();\n // check buffer\n this._checkBuffer();\n }\n\n\n bufferInfo(pos,maxHoleDuration) {\n var media = this.media,\n vbuffered = media.buffered,\n buffered = [],i;\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({start: vbuffered.start(i), end: vbuffered.end(i)});\n }\n return this.bufferedInfo(buffered,pos,maxHoleDuration);\n }\n\n bufferedInfo(buffered,pos,maxHoleDuration) {\n var buffered2 = [],\n // bufferStart and bufferEnd are buffer boundaries around current video position\n bufferLen,bufferStart, bufferEnd,bufferStartNext,i;\n // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n if(buf2len) {\n var buf2end = buffered2[buf2len - 1].end;\n // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n if((buffered[i].start - buf2end) < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if(buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) {\n var start = buffered2[i].start,\n end = buffered2[i].end;\n //logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n if ((pos + maxHoleDuration) >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end + maxHoleDuration;\n bufferLen = bufferEnd - pos;\n } else if ((pos + maxHoleDuration) < start) {\n bufferStartNext = start;\n }\n }\n return {len: bufferLen, start: bufferStart, end: bufferEnd, nextStart : bufferStartNext};\n }\n\n getBufferRange(position) {\n var i, range;\n for (i = this.bufferRange.length - 1; i >=0; i--) {\n range = this.bufferRange[i];\n if (position >= range.start && position <= range.end) {\n return range;\n }\n }\n return null;\n }\n\n get currentLevel() {\n if (this.media) {\n var range = this.getBufferRange(this.media.currentTime);\n if (range) {\n return range.frag.level;\n }\n }\n return -1;\n }\n\n get nextBufferRange() {\n if (this.media) {\n // first get end range of current fragment\n return this.followingBufferRange(this.getBufferRange(this.media.currentTime));\n } else {\n return null;\n }\n }\n\n followingBufferRange(range) {\n if (range) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferRange(range.end + 0.5);\n }\n return null;\n }\n\n get nextLevel() {\n var range = this.nextBufferRange;\n if (range) {\n return range.frag.level;\n } else {\n return -1;\n }\n }\n\n isBuffered(position) {\n var v = this.media, buffered = v.buffered;\n for (var i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n return false;\n }\n\n _checkFragmentChanged() {\n var rangeCurrent, currentTime, video = this.media;\n if (video && video.seeking === false) {\n currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n if(currentTime > video.playbackRate*this.lastCurrentTime) {\n this.lastCurrentTime = currentTime;\n }\n if (this.isBuffered(currentTime)) {\n rangeCurrent = this.getBufferRange(currentTime);\n } else if (this.isBuffered(currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n rangeCurrent = this.getBufferRange(currentTime + 0.1);\n }\n if (rangeCurrent) {\n var fragPlaying = rangeCurrent.frag;\n if (fragPlaying !== this.fragPlaying) {\n this.fragPlaying = fragPlaying;\n this.hls.trigger(Event.FRAG_CHANGED, {frag: fragPlaying});\n }\n }\n }\n }\n\n /*\n abort any buffer append in progress, and flush all buffered data\n return true once everything has been flushed.\n sourceBuffer.abort() and sourceBuffer.remove() are asynchronous operations\n the idea is to call this function from tick() timer and call it again until all resources have been cleaned\n the timer is rearmed upon sourceBuffer updateend() event, so this should be optimal\n */\n flushBuffer(startOffset, endOffset) {\n var sb, i, bufStart, bufEnd, flushStart, flushEnd;\n //logger.log('flushBuffer,pos/start/end: ' + this.media.currentTime + '/' + startOffset + '/' + endOffset);\n // safeguard to avoid infinite looping\n if (this.flushBufferCounter++ < (2 * this.bufferRange.length) && this.sourceBuffer) {\n for (var type in this.sourceBuffer) {\n sb = this.sourceBuffer[type];\n if (!sb.updating) {\n for (i = 0; i < sb.buffered.length; i++) {\n bufStart = sb.buffered.start(i);\n bufEnd = sb.buffered.end(i);\n // workaround firefox not able to properly flush multiple buffered range.\n if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && endOffset === Number.POSITIVE_INFINITY) {\n flushStart = startOffset;\n flushEnd = endOffset;\n } else {\n flushStart = Math.max(bufStart, startOffset);\n flushEnd = Math.min(bufEnd, endOffset);\n }\n /* sometimes sourcebuffer.remove() does not flush\n the exact expected time range.\n to avoid rounding issues/infinite loop,\n only flush buffer range of length greater than 500ms.\n */\n if (flushEnd - flushStart > 0.5) {\n logger.log(`flush ${type} [${flushStart},${flushEnd}], of [${bufStart},${bufEnd}], pos:${this.media.currentTime}`);\n sb.remove(flushStart, flushEnd);\n return false;\n }\n }\n } else {\n //logger.log('abort ' + type + ' append in progress');\n // this will abort any appending in progress\n //sb.abort();\n return false;\n }\n }\n }\n\n /* after successful buffer flushing, rebuild buffer Range array\n loop through existing buffer range and check if\n corresponding range is still buffered. only push to new array already buffered range\n */\n var newRange = [],range;\n for (i = 0; i < this.bufferRange.length; i++) {\n range = this.bufferRange[i];\n if (this.isBuffered((range.start + range.end) / 2)) {\n newRange.push(range);\n }\n }\n this.bufferRange = newRange;\n logger.log('buffer flushed');\n // everything flushed !\n return true;\n }\n\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n immediateLevelSwitch() {\n logger.log('immediateLevelSwitch');\n if (!this.immediateSwitch) {\n this.immediateSwitch = true;\n this.previouslyPaused = this.media.paused;\n this.media.pause();\n }\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n // flush everything\n this.flushBufferCounter = 0;\n this.flushRange.push({start: 0, end: Number.POSITIVE_INFINITY});\n // trigger a sourceBuffer flush\n this.state = State.BUFFER_FLUSHING;\n // increase fragment load Index to avoid frag loop loading error after buffer flush\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n // speed up switching, trigger timer function\n this.tick();\n }\n\n /*\n on immediate level switch end, after new fragment has been buffered :\n - nudge video decoder by slightly adjusting video currentTime\n - resume the playback if needed\n */\n immediateLevelSwitchEnd() {\n this.immediateSwitch = false;\n this.media.currentTime -= 0.0001;\n if (!this.previouslyPaused) {\n this.media.play();\n }\n }\n\n nextLevelSwitch() {\n /* try to switch ASAP without breaking video playback :\n in order to ensure smooth but quick level switching,\n we need to find the next flushable buffer range\n we should take into account new segment fetch time\n */\n var fetchdelay, currentRange, nextRange;\n currentRange = this.getBufferRange(this.media.currentTime);\n if (currentRange) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushRange.push({start: 0, end: currentRange.start - 1});\n }\n if (!this.media.paused) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel,nextLevel = this.levels[nextLevelId], fragLastKbps = this.fragLastKbps;\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.bitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n }\n //logger.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n nextRange = this.getBufferRange(this.media.currentTime + fetchdelay);\n if (nextRange) {\n // we can flush buffer range following this one without stalling playback\n nextRange = this.followingBufferRange(nextRange);\n if (nextRange) {\n // flush position is the start position of this new buffer\n this.flushRange.push({start: nextRange.start, end: Number.POSITIVE_INFINITY});\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n }\n }\n if (this.flushRange.length) {\n this.flushBufferCounter = 0;\n // trigger a sourceBuffer flush\n this.state = State.BUFFER_FLUSHING;\n // increase fragment load Index to avoid frag loop loading error after buffer flush\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n // speed up switching, trigger timer function\n this.tick();\n }\n }\n\n onMediaAttaching(event, data) {\n var media = this.media = data.media;\n // setup the media source\n var ms = this.mediaSource = new MediaSource();\n //Media Source listeners\n this.onmso = this.onMediaSourceOpen.bind(this);\n this.onmse = this.onMediaSourceEnded.bind(this);\n this.onmsc = this.onMediaSourceClose.bind(this);\n ms.addEventListener('sourceopen', this.onmso);\n ms.addEventListener('sourceended', this.onmse);\n ms.addEventListener('sourceclose', this.onmsc);\n // link video and media Source\n media.src = URL.createObjectURL(ms);\n }\n\n onMediaDetaching() {\n var media = this.media;\n if (media && media.ended) {\n logger.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n // reset fragment loading counter on MSE detaching to avoid reporting FRAG_LOOP_LOADING_ERROR after error recovery\n var levels = this.levels;\n if (levels) {\n // reset fragment load counter\n levels.forEach(level => {\n if(level.details) {\n level.details.fragments.forEach(fragment => {\n fragment.loadCounter = undefined;\n });\n }\n });\n }\n var ms = this.mediaSource;\n if (ms) {\n if (ms.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n ms.endOfStream();\n } catch(err) {\n logger.warn(`onMediaDetaching:${err.message} while calling endOfStream`);\n }\n }\n ms.removeEventListener('sourceopen', this.onmso);\n ms.removeEventListener('sourceended', this.onmse);\n ms.removeEventListener('sourceclose', this.onmsc);\n // unlink MediaSource from video tag\n this.media.src = '';\n this.mediaSource = null;\n // remove video listeners\n if (media) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('seeked', this.onvseeked);\n media.removeEventListener('loadedmetadata', this.onvmetadata);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvseeked = this.onvmetadata = null;\n }\n this.media = null;\n this.loadedmetadata = false;\n this.stop();\n }\n this.onmso = this.onmse = this.onmsc = null;\n this.hls.trigger(Event.MEDIA_DETACHED);\n }\n\n onMediaSeeking() {\n if (this.state === State.FRAG_LOADING) {\n // check if currently loaded fragment is inside buffer.\n //if outside, cancel fragment loading, otherwise do nothing\n if (this.bufferInfo(this.media.currentTime,0.3).len === 0) {\n logger.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n var fragCurrent = this.fragCurrent;\n if (fragCurrent) {\n if (fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n }\n this.fragPrevious = null;\n // switch to IDLE state to load new fragment\n this.state = State.IDLE;\n }\n }\n if (this.media) {\n this.lastCurrentTime = this.media.currentTime;\n }\n // avoid reporting fragment loop loading error in case user is seeking several times on same position\n if (this.fragLoadIdx !== undefined) {\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n }\n // tick to speed up processing\n this.tick();\n }\n\n onMediaSeeked() {\n // tick to speed up FRAGMENT_PLAYING triggering\n this.tick();\n }\n\n onMediaMetadata() {\n if (this.media.currentTime !== this.startPosition) {\n this.media.currentTime = this.startPosition;\n }\n this.loadedmetadata = true;\n this.tick();\n }\n\n onMediaEnded() {\n logger.log('media ended');\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n\n onManifestParsed(event, data) {\n var aac = false, heaac = false, codecs;\n data.levels.forEach(level => {\n // detect if we have different kind of audio codecs used amongst playlists\n codecs = level.codecs;\n if (codecs) {\n if (codecs.indexOf('mp4a.40.2') !== -1) {\n aac = true;\n }\n if (codecs.indexOf('mp4a.40.5') !== -1) {\n heaac = true;\n }\n }\n });\n this.audiocodecswitch = (aac && heaac);\n if (this.audiocodecswitch) {\n logger.log('both AAC/HE-AAC audio found in levels; declaring audio codec as HE-AAC');\n }\n this.levels = data.levels;\n this.startLevelLoaded = false;\n this.startFragmentRequested = false;\n if (this.media && this.config.autoStartLoad) {\n this.startLoad();\n }\n }\n\n onLevelLoaded(event,data) {\n var newDetails = data.details,\n newLevelId = data.level,\n curLevel = this.levels[newLevelId],\n duration = newDetails.totalduration;\n\n logger.log(`level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}],duration:${duration}`);\n\n if (newDetails.live) {\n var curDetails = curLevel.details;\n if (curDetails) {\n // we already have details for that level, merge them\n LevelHelper.mergeDetails(curDetails,newDetails);\n if (newDetails.PTSKnown) {\n logger.log(`live playlist sliding:${newDetails.fragments[0].start.toFixed(3)}`);\n } else {\n logger.log('live playlist - outdated PTS, unknown sliding');\n }\n } else {\n newDetails.PTSKnown = false;\n logger.log('live playlist - first load, unknown sliding');\n }\n } else {\n newDetails.PTSKnown = false;\n }\n // override level info\n curLevel.details = newDetails;\n this.hls.trigger(Event.LEVEL_UPDATED, { details: newDetails, level: newLevelId });\n\n // compute start position\n if (this.startLevelLoaded === false) {\n // if live playlist, set start position to be fragment N-this.config.liveSyncDurationCount (usually 3)\n if (newDetails.live) {\n this.startPosition = Math.max(0, duration - this.config.liveSyncDurationCount * newDetails.targetduration);\n }\n this.nextLoadPosition = this.startPosition;\n this.startLevelLoaded = true;\n }\n // only switch batck to IDLE state if we were waiting for level to start downloading a new fragment\n if (this.state === State.WAITING_LEVEL) {\n this.state = State.IDLE;\n }\n //trigger handler right now\n this.tick();\n }\n\n onKeyLoaded() {\n if (this.state === State.KEY_LOADING) {\n this.state = State.IDLE;\n this.tick();\n }\n }\n\n onFragLoaded(event, data) {\n var fragCurrent = this.fragCurrent;\n if (this.state === State.FRAG_LOADING &&\n fragCurrent &&\n data.frag.level === fragCurrent.level &&\n data.frag.sn === fragCurrent.sn) {\n if (this.fragBitrateTest === true) {\n // switch back to IDLE state ... we just loaded a fragment to determine adequate start bitrate and initialize autoswitch algo\n this.state = State.IDLE;\n this.fragBitrateTest = false;\n data.stats.tparsed = data.stats.tbuffered = performance.now();\n this.hls.trigger(Event.FRAG_BUFFERED, {stats: data.stats, frag: fragCurrent});\n } else {\n this.state = State.PARSING;\n // transmux the MPEG-TS data to ISO-BMFF segments\n this.stats = data.stats;\n var currentLevel = this.levels[this.level],\n details = currentLevel.details,\n duration = details.totalduration,\n start = fragCurrent.start,\n level = fragCurrent.level,\n sn = fragCurrent.sn,\n audioCodec = currentLevel.audioCodec;\n if(audioCodec && this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec.indexOf('mp4a.40.5') !==-1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n logger.log(`Demuxing ${sn} of [${details.startSN} ,${details.endSN}],level ${level}`);\n this.demuxer.push(data.payload, audioCodec, currentLevel.videoCodec, start, fragCurrent.cc, level, sn, duration, fragCurrent.decryptdata);\n }\n }\n }\n\n onInitSegment(event, data) {\n if (this.state === State.PARSING) {\n // check if codecs have been explicitely defined in the master playlist for this level;\n // if yes use these ones instead of the ones parsed from the demux\n var audioCodec = this.levels[this.level].audioCodec, videoCodec = this.levels[this.level].videoCodec, sb;\n if(audioCodec && this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec.indexOf('mp4a.40.5') !==-1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n logger.log(`playlist_level/init_segment codecs: video => ${videoCodec}/${data.videoCodec}; audio => ${audioCodec}/${data.audioCodec}`);\n // if playlist does not specify codecs, use codecs found while parsing fragment\n // if no codec found while parsing fragment, also set codec to undefined to avoid creating sourceBuffer\n if (audioCodec === undefined || data.audioCodec === undefined) {\n audioCodec = data.audioCodec;\n }\n\n if (videoCodec === undefined || data.videoCodec === undefined) {\n videoCodec = data.videoCodec;\n }\n // in case several audio codecs might be used, force HE-AAC for audio (some browsers don't support audio codec switch)\n //don't do it for mono streams ...\n var ua = navigator.userAgent.toLowerCase();\n if (this.audiocodecswitch &&\n data.audioChannelCount !== 1 &&\n ua.indexOf('android') === -1 &&\n ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n if (!this.sourceBuffer) {\n this.sourceBuffer = {};\n logger.log(`selected A/V codecs for sourceBuffers:${audioCodec},${videoCodec}`);\n // create source Buffer and link them to MediaSource\n if (audioCodec) {\n sb = this.sourceBuffer.audio = this.mediaSource.addSourceBuffer(`video/mp4;codecs=${audioCodec}`);\n sb.addEventListener('updateend', this.onsbue);\n sb.addEventListener('error', this.onsbe);\n }\n if (videoCodec) {\n sb = this.sourceBuffer.video = this.mediaSource.addSourceBuffer(`video/mp4;codecs=${videoCodec}`);\n sb.addEventListener('updateend', this.onsbue);\n sb.addEventListener('error', this.onsbe);\n }\n }\n if (audioCodec) {\n this.mp4segments.push({type: 'audio', data: data.audioMoov});\n }\n if(videoCodec) {\n this.mp4segments.push({type: 'video', data: data.videoMoov});\n }\n //trigger handler right now\n this.tick();\n }\n }\n\n onFragParsing(event, data) {\n if (this.state === State.PARSING) {\n this.tparse2 = Date.now();\n var level = this.levels[this.level],\n frag = this.fragCurrent;\n logger.log(`parsed data, type/startPTS/endPTS/startDTS/endDTS/nb:${data.type}/${data.startPTS.toFixed(3)}/${data.endPTS.toFixed(3)}/${data.startDTS.toFixed(3)}/${data.endDTS.toFixed(3)}/${data.nb}`);\n var drift = LevelHelper.updateFragPTS(level.details,frag.sn,data.startPTS,data.endPTS);\n this.hls.trigger(Event.LEVEL_PTS_UPDATED, {details: level.details, level: this.level, drift: drift});\n\n this.mp4segments.push({type: data.type, data: data.moof});\n this.mp4segments.push({type: data.type, data: data.mdat});\n this.nextLoadPosition = data.endPTS;\n this.bufferRange.push({type: data.type, start: data.startPTS, end: data.endPTS, frag: frag});\n\n //trigger handler right now\n this.tick();\n } else {\n logger.warn(`not in PARSING state, discarding ${event}`);\n }\n }\n\n onFragParsed() {\n if (this.state === State.PARSING) {\n this.state = State.PARSED;\n this.stats.tparsed = performance.now();\n //trigger handler right now\n this.tick();\n }\n }\n\n onError(event, data) {\n switch(data.details) {\n // abort fragment loading on errors\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n // if fatal error, stop processing, otherwise move to IDLE to retry loading\n logger.warn(`mediaController: ${data.details} while loading frag,switch to ${data.fatal ? 'ERROR' : 'IDLE'} state ...`);\n this.state = data.fatal ? State.ERROR : State.IDLE;\n break;\n default:\n break;\n }\n }\n\n onSBUpdateEnd() {\n //trigger handler right now\n if (this.state === State.APPENDING && this.mp4segments.length === 0) {\n var frag = this.fragCurrent, stats = this.stats;\n if (frag) {\n this.fragPrevious = frag;\n stats.tbuffered = performance.now();\n this.fragLastKbps = Math.round(8 * stats.length / (stats.tbuffered - stats.tfirst));\n this.hls.trigger(Event.FRAG_BUFFERED, {stats: stats, frag: frag});\n logger.log(`media buffered : ${this.timeRangesToString(this.media.buffered)}`);\n this.state = State.IDLE;\n }\n }\n this.tick();\n }\n\n_checkBuffer() {\n var media = this.media;\n if(media) {\n // compare readyState\n var readyState = media.readyState;\n // if ready state different from HAVE_NOTHING (numeric value 0), we are allowed to seek\n if(readyState) {\n // if seek after buffered defined, let's seek if within acceptable range\n var seekAfterBuffered = this.seekAfterBuffered;\n if(seekAfterBuffered) {\n if(media.duration >= seekAfterBuffered) {\n media.currentTime = seekAfterBuffered;\n this.seekAfterBuffered = undefined;\n }\n } else if(readyState < 3 ) {\n // readyState = 1 or 2\n // HAVE_METADATA (numeric value 1) Enough of the resource has been obtained that the duration of the resource is available.\n // The API will no longer throw an exception when seeking.\n // HAVE_CURRENT_DATA (numeric value 2) Data for the immediate current playback position is available,\n // but either not enough data is available that the user agent could\n // successfully advance the current playback position\n var currentTime = media.currentTime;\n var bufferInfo = this.bufferInfo(currentTime,0);\n // check if current time is buffered or not\n if(bufferInfo.len === 0) {\n // no buffer available @ currentTime, check if next buffer is close (in a 300 ms range)\n var nextBufferStart = bufferInfo.nextStart;\n if(nextBufferStart && (nextBufferStart - currentTime < 0.3)) {\n // next buffer is close ! adjust currentTime to nextBufferStart\n // this will ensure effective video decoding\n logger.log(`adjust currentTime from ${currentTime} to ${nextBufferStart}`);\n media.currentTime = nextBufferStart;\n }\n }\n }\n }\n }\n }\n\n swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n\n onSBUpdateError(event) {\n logger.error(`sourceBuffer error:${event}`);\n this.state = State.ERROR;\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false, frag: this.fragCurrent});\n }\n\n timeRangesToString(r) {\n var log = '', len = r.length;\n for (var i=0; i= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n frag = fragments[targetSN - levelDetails.startSN];\n logger.log(`live playlist, switching playlist, load frag with next SN: ${frag.sn}`);\n }\n }\n if (!frag) {\n /* we have no idea about which fragment should be loaded.\n so let's load mid fragment. it will help computing playlist sliding and find the right one\n */\n frag = fragments[Math.min(fragLen - 1, Math.round(fragLen / 2))];\n logger.log(`live playlist, switching playlist, unknown, load middle frag : ${frag.sn}`);\n }\n }\n } else {\n // VoD playlist: if bufferEnd before start of playlist, load first fragment\n if (bufferEnd < start) {\n frag = fragments[0];\n }\n }\n if (!frag) {\n var foundFrag;\n if (bufferEnd < end) {\n foundFrag = BinarySearch.search(fragments, (candidate) => {\n //logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // offset should be within fragment boundary\n if ((candidate.start + candidate.duration) <= bufferEnd) {\n return 1;\n }\n else if (candidate.start > bufferEnd) {\n return -1;\n }\n return 0;\n });\n } else {\n // reach end of playlist\n foundFrag = fragments[fragLen-1];\n }\n if (foundFrag) {\n frag = foundFrag;\n start = foundFrag.start;\n //logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);\n if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {\n if (frag.sn < levelDetails.endSN) {\n frag = fragments[frag.sn + 1 - levelDetails.startSN];\n logger.log(`SN just loaded, load next one: ${frag.sn}`);\n } else {\n // have we reached end of VOD playlist ?\n if (!levelDetails.live) {\n var mediaSource = this.mediaSource;\n if (mediaSource && mediaSource.readyState === 'open') {\n // ensure sourceBuffer are not in updating states\n var sb = this.sourceBuffer;\n if (!((sb.audio && sb.audio.updating) || (sb.video && sb.video.updating))) {\n logger.log('all media data available, signal endOfStream() to MediaSource');\n //Notify the media element that it now has all of the media data\n mediaSource.endOfStream();\n }\n }\n }\n frag = null;\n }\n }\n }\n }\n if(frag) {\n //logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));\n if ((frag.decryptdata.uri != null) && (frag.decryptdata.key == null)) {\n logger.log(`Loading key for ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}`);\n this.state = State.KEY_LOADING;\n hls.trigger(Event.KEY_LOADING, {frag: frag});\n } else {\n logger.log(`Loading ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}, currentTime:${pos},bufferEnd:${bufferEnd.toFixed(3)}`);\n frag.autoLevel = hls.autoLevelEnabled;\n if (this.levels.length > 1) {\n frag.expectedLen = Math.round(frag.duration * this.levels[level].bitrate / 8);\n frag.trequest = performance.now();\n }\n // ensure that we are not reloading the same fragments in loop ...\n if (this.fragLoadIdx !== undefined) {\n this.fragLoadIdx++;\n } else {\n this.fragLoadIdx = 0;\n }\n if (frag.loadCounter) {\n frag.loadCounter++;\n let maxThreshold = this.config.fragLoadingLoopThreshold;\n // if this frag has already been loaded 3 times, and if it has been reloaded recently\n if (frag.loadCounter > maxThreshold && (Math.abs(this.fragLoadIdx - frag.loadIdx) < maxThreshold)) {\n hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_LOOP_LOADING_ERROR, fatal: false, frag: frag});\n return;\n }\n } else {\n frag.loadCounter = 1;\n }\n frag.loadIdx = this.fragLoadIdx;\n this.fragCurrent = frag;\n this.startFragmentRequested = true;\n hls.trigger(Event.FRAG_LOADING, {frag: frag});\n this.state = State.FRAG_LOADING;\n }\n }\n }\n break;\n case State.WAITING_LEVEL:\n level = this.levels[this.level];\n // check if playlist is already loaded\n if (level && level.details) {\n this.state = State.IDLE;\n }\n break;\n case State.FRAG_LOADING:\n /*\n monitor fragment retrieval time...\n we compute expected time of arrival of the complete fragment.\n we compare it to expected time of buffer starvation\n */\n let v = this.media,frag = this.fragCurrent;\n /* only monitor frag retrieval time if\n (video not paused OR first fragment being loaded) AND autoswitching enabled AND not lowest level AND multiple levels */\n if (v && (!v.paused || this.loadedmetadata === false) && frag.autoLevel && this.level && this.levels.length > 1) {\n var requestDelay = performance.now() - frag.trequest;\n // monitor fragment load progress after half of expected fragment duration,to stabilize bitrate\n if (requestDelay > (500 * frag.duration)) {\n var loadRate = frag.loaded * 1000 / requestDelay; // byte/s\n if (frag.expectedLen < frag.loaded) {\n frag.expectedLen = frag.loaded;\n }\n pos = v.currentTime;\n var fragLoadedDelay = (frag.expectedLen - frag.loaded) / loadRate;\n var bufferStarvationDelay = this.bufferInfo(pos,0.3).end - pos;\n var fragLevelNextLoadedDelay = frag.duration * this.levels[hls.nextLoadLevel].bitrate / (8 * loadRate); //bps/Bps\n /* if we have less than 2 frag duration in buffer and if frag loaded delay is greater than buffer starvation delay\n ... and also bigger than duration needed to load fragment at next level ...*/\n if (bufferStarvationDelay < (2 * frag.duration) && fragLoadedDelay > bufferStarvationDelay && fragLoadedDelay > fragLevelNextLoadedDelay) {\n // abort fragment loading ...\n logger.warn('loading too slow, abort fragment loading');\n logger.log(`fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay :${fragLoadedDelay.toFixed(1)}/${bufferStarvationDelay.toFixed(1)}/${fragLevelNextLoadedDelay.toFixed(1)}`);\n //abort fragment loading\n frag.loader.abort();\n hls.trigger(Event.FRAG_LOAD_EMERGENCY_ABORTED, {frag: frag});\n // switch back to IDLE state to request new fragment at lowest level\n this.state = State.IDLE;\n }\n }\n }\n break;\n case State.PARSING:\n // nothing to do, wait for fragment being parsed\n break;\n case State.PARSED:\n case State.APPENDING:\n if (this.sourceBuffer) {\n if (this.media.error) {\n logger.error('trying to append although a media error occured, switch to ERROR state');\n this.state = State.ERROR;\n return;\n }\n // if MP4 segment appending in progress nothing to do\n else if ((this.sourceBuffer.audio && this.sourceBuffer.audio.updating) ||\n (this.sourceBuffer.video && this.sourceBuffer.video.updating)) {\n //logger.log('sb append in progress');\n // check if any MP4 segments left to append\n } else if (this.mp4segments.length) {\n var segment = this.mp4segments.shift();\n try {\n //logger.log(`appending ${segment.type} SB, size:${segment.data.length});\n this.sourceBuffer[segment.type].appendBuffer(segment.data);\n this.appendError = 0;\n } catch(err) {\n // in case any error occured while appending, put back segment in mp4segments table\n logger.error(`error while trying to append buffer:${err.message},try appending later`);\n this.mp4segments.unshift(segment);\n // just discard QuotaExceededError for now, and wait for the natural browser buffer eviction\n //http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n if(err.code !== 22) {\n if (this.appendError) {\n this.appendError++;\n } else {\n this.appendError = 1;\n }\n var event = {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPEND_ERROR, frag: this.fragCurrent};\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. retrying help recovering this\n */\n if (this.appendError > this.config.appendErrorMaxRetry) {\n logger.log(`fail ${this.config.appendErrorMaxRetry} times to append segment in sourceBuffer`);\n event.fatal = true;\n hls.trigger(Event.ERROR, event);\n this.state = State.ERROR;\n return;\n } else {\n event.fatal = false;\n hls.trigger(Event.ERROR, event);\n }\n }\n }\n this.state = State.APPENDING;\n }\n } else {\n // sourceBuffer undefined, switch back to IDLE state\n this.state = State.IDLE;\n }\n break;\n case State.BUFFER_FLUSHING:\n // loop through all buffer ranges to flush\n while(this.flushRange.length) {\n var range = this.flushRange[0];\n // flushBuffer will abort any buffer append in progress and flush Audio/Video Buffer\n if (this.flushBuffer(range.start, range.end)) {\n // range flushed, remove from flush array\n this.flushRange.shift();\n } else {\n // flush in progress, come back later\n break;\n }\n }\n if (this.flushRange.length === 0) {\n // handle end of immediate switching if needed\n if (this.immediateSwitch) {\n this.immediateLevelSwitchEnd();\n }\n // move to IDLE once flush complete. this should trigger new fragment loading\n this.state = State.IDLE;\n // reset reference to frag\n this.fragPrevious = null;\n }\n /* if not everything flushed, stay in BUFFER_FLUSHING state. we will come back here\n each time sourceBuffer updateend() callback will be triggered\n */\n break;\n default:\n break;\n }\n // check/update current fragment\n this._checkFragmentChanged();\n // check buffer\n this._checkBuffer();\n }\n\n\n bufferInfo(pos,maxHoleDuration) {\n var media = this.media,\n vbuffered = media.buffered,\n buffered = [],i;\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({start: vbuffered.start(i), end: vbuffered.end(i)});\n }\n return this.bufferedInfo(buffered,pos,maxHoleDuration);\n }\n\n bufferedInfo(buffered,pos,maxHoleDuration) {\n var buffered2 = [],\n // bufferStart and bufferEnd are buffer boundaries around current video position\n bufferLen,bufferStart, bufferEnd,bufferStartNext,i;\n // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n if(buf2len) {\n var buf2end = buffered2[buf2len - 1].end;\n // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n if((buffered[i].start - buf2end) < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if(buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) {\n var start = buffered2[i].start,\n end = buffered2[i].end;\n //logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n if ((pos + maxHoleDuration) >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end + maxHoleDuration;\n bufferLen = bufferEnd - pos;\n } else if ((pos + maxHoleDuration) < start) {\n bufferStartNext = start;\n }\n }\n return {len: bufferLen, start: bufferStart, end: bufferEnd, nextStart : bufferStartNext};\n }\n\n getBufferRange(position) {\n var i, range;\n for (i = this.bufferRange.length - 1; i >=0; i--) {\n range = this.bufferRange[i];\n if (position >= range.start && position <= range.end) {\n return range;\n }\n }\n return null;\n }\n\n get currentLevel() {\n if (this.media) {\n var range = this.getBufferRange(this.media.currentTime);\n if (range) {\n return range.frag.level;\n }\n }\n return -1;\n }\n\n get nextBufferRange() {\n if (this.media) {\n // first get end range of current fragment\n return this.followingBufferRange(this.getBufferRange(this.media.currentTime));\n } else {\n return null;\n }\n }\n\n followingBufferRange(range) {\n if (range) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferRange(range.end + 0.5);\n }\n return null;\n }\n\n get nextLevel() {\n var range = this.nextBufferRange;\n if (range) {\n return range.frag.level;\n } else {\n return -1;\n }\n }\n\n isBuffered(position) {\n var v = this.media, buffered = v.buffered;\n for (var i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n return false;\n }\n\n _checkFragmentChanged() {\n var rangeCurrent, currentTime, video = this.media;\n if (video && video.seeking === false) {\n currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n if(currentTime > video.playbackRate*this.lastCurrentTime) {\n this.lastCurrentTime = currentTime;\n }\n if (this.isBuffered(currentTime)) {\n rangeCurrent = this.getBufferRange(currentTime);\n } else if (this.isBuffered(currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n rangeCurrent = this.getBufferRange(currentTime + 0.1);\n }\n if (rangeCurrent) {\n var fragPlaying = rangeCurrent.frag;\n if (fragPlaying !== this.fragPlaying) {\n this.fragPlaying = fragPlaying;\n this.hls.trigger(Event.FRAG_CHANGED, {frag: fragPlaying});\n }\n }\n }\n }\n\n /*\n abort any buffer append in progress, and flush all buffered data\n return true once everything has been flushed.\n sourceBuffer.abort() and sourceBuffer.remove() are asynchronous operations\n the idea is to call this function from tick() timer and call it again until all resources have been cleaned\n the timer is rearmed upon sourceBuffer updateend() event, so this should be optimal\n */\n flushBuffer(startOffset, endOffset) {\n var sb, i, bufStart, bufEnd, flushStart, flushEnd;\n //logger.log('flushBuffer,pos/start/end: ' + this.media.currentTime + '/' + startOffset + '/' + endOffset);\n // safeguard to avoid infinite looping\n if (this.flushBufferCounter++ < (2 * this.bufferRange.length) && this.sourceBuffer) {\n for (var type in this.sourceBuffer) {\n sb = this.sourceBuffer[type];\n if (!sb.updating) {\n for (i = 0; i < sb.buffered.length; i++) {\n bufStart = sb.buffered.start(i);\n bufEnd = sb.buffered.end(i);\n // workaround firefox not able to properly flush multiple buffered range.\n if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && endOffset === Number.POSITIVE_INFINITY) {\n flushStart = startOffset;\n flushEnd = endOffset;\n } else {\n flushStart = Math.max(bufStart, startOffset);\n flushEnd = Math.min(bufEnd, endOffset);\n }\n /* sometimes sourcebuffer.remove() does not flush\n the exact expected time range.\n to avoid rounding issues/infinite loop,\n only flush buffer range of length greater than 500ms.\n */\n if (flushEnd - flushStart > 0.5) {\n logger.log(`flush ${type} [${flushStart},${flushEnd}], of [${bufStart},${bufEnd}], pos:${this.media.currentTime}`);\n sb.remove(flushStart, flushEnd);\n return false;\n }\n }\n } else {\n //logger.log('abort ' + type + ' append in progress');\n // this will abort any appending in progress\n //sb.abort();\n return false;\n }\n }\n }\n\n /* after successful buffer flushing, rebuild buffer Range array\n loop through existing buffer range and check if\n corresponding range is still buffered. only push to new array already buffered range\n */\n var newRange = [],range;\n for (i = 0; i < this.bufferRange.length; i++) {\n range = this.bufferRange[i];\n if (this.isBuffered((range.start + range.end) / 2)) {\n newRange.push(range);\n }\n }\n this.bufferRange = newRange;\n logger.log('buffer flushed');\n // everything flushed !\n return true;\n }\n\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n immediateLevelSwitch() {\n logger.log('immediateLevelSwitch');\n if (!this.immediateSwitch) {\n this.immediateSwitch = true;\n this.previouslyPaused = this.media.paused;\n this.media.pause();\n }\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n // flush everything\n this.flushBufferCounter = 0;\n this.flushRange.push({start: 0, end: Number.POSITIVE_INFINITY});\n // trigger a sourceBuffer flush\n this.state = State.BUFFER_FLUSHING;\n // increase fragment load Index to avoid frag loop loading error after buffer flush\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n // speed up switching, trigger timer function\n this.tick();\n }\n\n /*\n on immediate level switch end, after new fragment has been buffered :\n - nudge video decoder by slightly adjusting video currentTime\n - resume the playback if needed\n */\n immediateLevelSwitchEnd() {\n this.immediateSwitch = false;\n this.media.currentTime -= 0.0001;\n if (!this.previouslyPaused) {\n this.media.play();\n }\n }\n\n nextLevelSwitch() {\n /* try to switch ASAP without breaking video playback :\n in order to ensure smooth but quick level switching,\n we need to find the next flushable buffer range\n we should take into account new segment fetch time\n */\n var fetchdelay, currentRange, nextRange;\n currentRange = this.getBufferRange(this.media.currentTime);\n if (currentRange) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushRange.push({start: 0, end: currentRange.start - 1});\n }\n if (!this.media.paused) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel,nextLevel = this.levels[nextLevelId], fragLastKbps = this.fragLastKbps;\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.bitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n }\n //logger.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n nextRange = this.getBufferRange(this.media.currentTime + fetchdelay);\n if (nextRange) {\n // we can flush buffer range following this one without stalling playback\n nextRange = this.followingBufferRange(nextRange);\n if (nextRange) {\n // flush position is the start position of this new buffer\n this.flushRange.push({start: nextRange.start, end: Number.POSITIVE_INFINITY});\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n }\n }\n if (this.flushRange.length) {\n this.flushBufferCounter = 0;\n // trigger a sourceBuffer flush\n this.state = State.BUFFER_FLUSHING;\n // increase fragment load Index to avoid frag loop loading error after buffer flush\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n // speed up switching, trigger timer function\n this.tick();\n }\n }\n\n onMediaAttaching(event, data) {\n var media = this.media = data.media;\n // setup the media source\n var ms = this.mediaSource = new MediaSource();\n //Media Source listeners\n this.onmso = this.onMediaSourceOpen.bind(this);\n this.onmse = this.onMediaSourceEnded.bind(this);\n this.onmsc = this.onMediaSourceClose.bind(this);\n ms.addEventListener('sourceopen', this.onmso);\n ms.addEventListener('sourceended', this.onmse);\n ms.addEventListener('sourceclose', this.onmsc);\n // link video and media Source\n media.src = URL.createObjectURL(ms);\n }\n\n onMediaDetaching() {\n var media = this.media;\n if (media && media.ended) {\n logger.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n // reset fragment loading counter on MSE detaching to avoid reporting FRAG_LOOP_LOADING_ERROR after error recovery\n var levels = this.levels;\n if (levels) {\n // reset fragment load counter\n levels.forEach(level => {\n if(level.details) {\n level.details.fragments.forEach(fragment => {\n fragment.loadCounter = undefined;\n });\n }\n });\n }\n var ms = this.mediaSource;\n if (ms) {\n if (ms.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n ms.endOfStream();\n } catch(err) {\n logger.warn(`onMediaDetaching:${err.message} while calling endOfStream`);\n }\n }\n ms.removeEventListener('sourceopen', this.onmso);\n ms.removeEventListener('sourceended', this.onmse);\n ms.removeEventListener('sourceclose', this.onmsc);\n // unlink MediaSource from video tag\n this.media.src = '';\n this.mediaSource = null;\n // remove video listeners\n if (media) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('seeked', this.onvseeked);\n media.removeEventListener('loadedmetadata', this.onvmetadata);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvseeked = this.onvmetadata = null;\n }\n this.media = null;\n this.loadedmetadata = false;\n this.stop();\n }\n this.onmso = this.onmse = this.onmsc = null;\n this.hls.trigger(Event.MEDIA_DETACHED);\n }\n\n onMediaSeeking() {\n if (this.state === State.FRAG_LOADING) {\n // check if currently loaded fragment is inside buffer.\n //if outside, cancel fragment loading, otherwise do nothing\n if (this.bufferInfo(this.media.currentTime,0.3).len === 0) {\n logger.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n var fragCurrent = this.fragCurrent;\n if (fragCurrent) {\n if (fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n }\n this.fragPrevious = null;\n // switch to IDLE state to load new fragment\n this.state = State.IDLE;\n }\n }\n if (this.media) {\n this.lastCurrentTime = this.media.currentTime;\n }\n // avoid reporting fragment loop loading error in case user is seeking several times on same position\n if (this.fragLoadIdx !== undefined) {\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n }\n // tick to speed up processing\n this.tick();\n }\n\n onMediaSeeked() {\n // tick to speed up FRAGMENT_PLAYING triggering\n this.tick();\n }\n\n onMediaMetadata() {\n if (this.media.currentTime !== this.startPosition) {\n this.media.currentTime = this.startPosition;\n }\n this.loadedmetadata = true;\n this.tick();\n }\n\n onMediaEnded() {\n logger.log('media ended');\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n\n onManifestParsed(event, data) {\n var aac = false, heaac = false, codecs;\n data.levels.forEach(level => {\n // detect if we have different kind of audio codecs used amongst playlists\n codecs = level.codecs;\n if (codecs) {\n if (codecs.indexOf('mp4a.40.2') !== -1) {\n aac = true;\n }\n if (codecs.indexOf('mp4a.40.5') !== -1) {\n heaac = true;\n }\n }\n });\n this.audiocodecswitch = (aac && heaac);\n if (this.audiocodecswitch) {\n logger.log('both AAC/HE-AAC audio found in levels; declaring audio codec as HE-AAC');\n }\n this.levels = data.levels;\n this.startLevelLoaded = false;\n this.startFragmentRequested = false;\n if (this.media && this.config.autoStartLoad) {\n this.startLoad();\n }\n }\n\n onLevelLoaded(event,data) {\n var newDetails = data.details,\n newLevelId = data.level,\n curLevel = this.levels[newLevelId],\n duration = newDetails.totalduration;\n\n logger.log(`level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}],duration:${duration}`);\n\n if (newDetails.live) {\n var curDetails = curLevel.details;\n if (curDetails) {\n // we already have details for that level, merge them\n LevelHelper.mergeDetails(curDetails,newDetails);\n if (newDetails.PTSKnown) {\n logger.log(`live playlist sliding:${newDetails.fragments[0].start.toFixed(3)}`);\n } else {\n logger.log('live playlist - outdated PTS, unknown sliding');\n }\n } else {\n newDetails.PTSKnown = false;\n logger.log('live playlist - first load, unknown sliding');\n }\n } else {\n newDetails.PTSKnown = false;\n }\n // override level info\n curLevel.details = newDetails;\n this.hls.trigger(Event.LEVEL_UPDATED, { details: newDetails, level: newLevelId });\n\n // compute start position\n if (this.startLevelLoaded === false) {\n // if live playlist, set start position to be fragment N-this.config.liveSyncDurationCount (usually 3)\n if (newDetails.live) {\n this.startPosition = Math.max(0, duration - this.config.liveSyncDurationCount * newDetails.targetduration);\n }\n this.nextLoadPosition = this.startPosition;\n this.startLevelLoaded = true;\n }\n // only switch batck to IDLE state if we were waiting for level to start downloading a new fragment\n if (this.state === State.WAITING_LEVEL) {\n this.state = State.IDLE;\n }\n //trigger handler right now\n this.tick();\n }\n\n onKeyLoaded() {\n if (this.state === State.KEY_LOADING) {\n this.state = State.IDLE;\n this.tick();\n }\n }\n\n onFragLoaded(event, data) {\n var fragCurrent = this.fragCurrent;\n if (this.state === State.FRAG_LOADING &&\n fragCurrent &&\n data.frag.level === fragCurrent.level &&\n data.frag.sn === fragCurrent.sn) {\n if (this.fragBitrateTest === true) {\n // switch back to IDLE state ... we just loaded a fragment to determine adequate start bitrate and initialize autoswitch algo\n this.state = State.IDLE;\n this.fragBitrateTest = false;\n data.stats.tparsed = data.stats.tbuffered = performance.now();\n this.hls.trigger(Event.FRAG_BUFFERED, {stats: data.stats, frag: fragCurrent});\n } else {\n this.state = State.PARSING;\n // transmux the MPEG-TS data to ISO-BMFF segments\n this.stats = data.stats;\n var currentLevel = this.levels[this.level],\n details = currentLevel.details,\n duration = details.totalduration,\n start = fragCurrent.start,\n level = fragCurrent.level,\n sn = fragCurrent.sn,\n audioCodec = currentLevel.audioCodec;\n if(audioCodec && this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec.indexOf('mp4a.40.5') !==-1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n logger.log(`Demuxing ${sn} of [${details.startSN} ,${details.endSN}],level ${level}`);\n this.demuxer.push(data.payload, audioCodec, currentLevel.videoCodec, start, fragCurrent.cc, level, sn, duration, fragCurrent.decryptdata);\n }\n }\n }\n\n onInitSegment(event, data) {\n if (this.state === State.PARSING) {\n // check if codecs have been explicitely defined in the master playlist for this level;\n // if yes use these ones instead of the ones parsed from the demux\n var audioCodec = this.levels[this.level].audioCodec, videoCodec = this.levels[this.level].videoCodec, sb;\n if(audioCodec && this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec.indexOf('mp4a.40.5') !==-1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n logger.log(`playlist_level/init_segment codecs: video => ${videoCodec}/${data.videoCodec}; audio => ${audioCodec}/${data.audioCodec}`);\n // if playlist does not specify codecs, use codecs found while parsing fragment\n // if no codec found while parsing fragment, also set codec to undefined to avoid creating sourceBuffer\n if (audioCodec === undefined || data.audioCodec === undefined) {\n audioCodec = data.audioCodec;\n }\n\n if (videoCodec === undefined || data.videoCodec === undefined) {\n videoCodec = data.videoCodec;\n }\n // in case several audio codecs might be used, force HE-AAC for audio (some browsers don't support audio codec switch)\n //don't do it for mono streams ...\n var ua = navigator.userAgent.toLowerCase();\n if (this.audiocodecswitch &&\n data.audioChannelCount !== 1 &&\n ua.indexOf('android') === -1 &&\n ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n if (!this.sourceBuffer) {\n this.sourceBuffer = {};\n logger.log(`selected A/V codecs for sourceBuffers:${audioCodec},${videoCodec}`);\n // create source Buffer and link them to MediaSource\n if (audioCodec) {\n sb = this.sourceBuffer.audio = this.mediaSource.addSourceBuffer(`video/mp4;codecs=${audioCodec}`);\n sb.addEventListener('updateend', this.onsbue);\n sb.addEventListener('error', this.onsbe);\n }\n if (videoCodec) {\n sb = this.sourceBuffer.video = this.mediaSource.addSourceBuffer(`video/mp4;codecs=${videoCodec}`);\n sb.addEventListener('updateend', this.onsbue);\n sb.addEventListener('error', this.onsbe);\n }\n }\n if (audioCodec) {\n this.mp4segments.push({type: 'audio', data: data.audioMoov});\n }\n if(videoCodec) {\n this.mp4segments.push({type: 'video', data: data.videoMoov});\n }\n //trigger handler right now\n this.tick();\n }\n }\n\n onFragParsing(event, data) {\n if (this.state === State.PARSING) {\n this.tparse2 = Date.now();\n var level = this.levels[this.level],\n frag = this.fragCurrent;\n logger.log(`parsed data, type/startPTS/endPTS/startDTS/endDTS/nb:${data.type}/${data.startPTS.toFixed(3)}/${data.endPTS.toFixed(3)}/${data.startDTS.toFixed(3)}/${data.endDTS.toFixed(3)}/${data.nb}`);\n var drift = LevelHelper.updateFragPTS(level.details,frag.sn,data.startPTS,data.endPTS);\n this.hls.trigger(Event.LEVEL_PTS_UPDATED, {details: level.details, level: this.level, drift: drift});\n\n this.mp4segments.push({type: data.type, data: data.moof});\n this.mp4segments.push({type: data.type, data: data.mdat});\n this.nextLoadPosition = data.endPTS;\n this.bufferRange.push({type: data.type, start: data.startPTS, end: data.endPTS, frag: frag});\n\n //trigger handler right now\n this.tick();\n } else {\n logger.warn(`not in PARSING state, discarding ${event}`);\n }\n }\n\n onFragParsed() {\n if (this.state === State.PARSING) {\n this.state = State.PARSED;\n this.stats.tparsed = performance.now();\n //trigger handler right now\n this.tick();\n }\n }\n\n onError(event, data) {\n switch(data.details) {\n // abort fragment loading on errors\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n // if fatal error, stop processing, otherwise move to IDLE to retry loading\n logger.warn(`mediaController: ${data.details} while loading frag,switch to ${data.fatal ? 'ERROR' : 'IDLE'} state ...`);\n this.state = data.fatal ? State.ERROR : State.IDLE;\n break;\n default:\n break;\n }\n }\n\n onSBUpdateEnd() {\n //trigger handler right now\n if (this.state === State.APPENDING && this.mp4segments.length === 0) {\n var frag = this.fragCurrent, stats = this.stats;\n if (frag) {\n this.fragPrevious = frag;\n stats.tbuffered = performance.now();\n this.fragLastKbps = Math.round(8 * stats.length / (stats.tbuffered - stats.tfirst));\n this.hls.trigger(Event.FRAG_BUFFERED, {stats: stats, frag: frag});\n logger.log(`media buffered : ${this.timeRangesToString(this.media.buffered)}`);\n this.state = State.IDLE;\n }\n }\n this.tick();\n }\n\n_checkBuffer() {\n var media = this.media;\n if(media) {\n // compare readyState\n var readyState = media.readyState;\n // if ready state different from HAVE_NOTHING (numeric value 0), we are allowed to seek\n if(readyState) {\n // if seek after buffered defined, let's seek if within acceptable range\n var seekAfterBuffered = this.seekAfterBuffered;\n if(seekAfterBuffered) {\n if(media.duration >= seekAfterBuffered) {\n media.currentTime = seekAfterBuffered;\n this.seekAfterBuffered = undefined;\n }\n } else if(readyState < 3 ) {\n // readyState = 1 or 2\n // HAVE_METADATA (numeric value 1) Enough of the resource has been obtained that the duration of the resource is available.\n // The API will no longer throw an exception when seeking.\n // HAVE_CURRENT_DATA (numeric value 2) Data for the immediate current playback position is available,\n // but either not enough data is available that the user agent could\n // successfully advance the current playback position\n var currentTime = media.currentTime;\n var bufferInfo = this.bufferInfo(currentTime,0);\n // check if current time is buffered or not\n if(bufferInfo.len === 0) {\n // no buffer available @ currentTime, check if next buffer is close (in a 300 ms range)\n var nextBufferStart = bufferInfo.nextStart;\n if(nextBufferStart && (nextBufferStart - currentTime < 0.3)) {\n // next buffer is close ! adjust currentTime to nextBufferStart\n // this will ensure effective video decoding\n logger.log(`adjust currentTime from ${currentTime} to ${nextBufferStart}`);\n media.currentTime = nextBufferStart;\n }\n }\n }\n }\n }\n }\n\n swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n\n onSBUpdateError(event) {\n logger.error(`sourceBuffer error:${event}`);\n this.state = State.ERROR;\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false, frag: this.fragCurrent});\n }\n\n timeRangesToString(r) {\n var log = '', len = r.length;\n for (var i=0; i OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation\n * are those of the authors and should not be interpreted as representing\n * official policies, either expressed or implied, of the authors.\n */\nclass AES {\n\n /**\n * Schedule out an AES key for both encryption and decryption. This\n * is a low-level class. Use a cipher mode to do bulk encryption.\n *\n * @constructor\n * @param key {Array} The key as an array of 4, 6 or 8 words.\n */\n constructor(key) {\n /**\n * The expanded S-box and inverse S-box tables. These will be computed\n * on the client so that we don't have to send them down the wire.\n *\n * There are two tables, _tables[0] is for encryption and\n * _tables[1] is for decryption.\n *\n * The first 4 sub-tables are the expanded S-box with MixColumns. The\n * last (_tables[01][4]) is the S-box itself.\n *\n * @private\n */\n this._tables = [[[],[],[],[],[]],[[],[],[],[],[]]];\n\n this._precompute();\n\n var i, j, tmp,\n encKey, decKey,\n sbox = this._tables[0][4], decTable = this._tables[1],\n keyLen = key.length, rcon = 1;\n\n if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {\n throw new Error('Invalid aes key size=' + keyLen);\n }\n\n encKey = key.slice(0);\n decKey = [];\n this._key = [encKey, decKey];\n\n // schedule encryption keys\n for (i = keyLen; i < 4 * keyLen + 28; i++) {\n tmp = encKey[i-1];\n\n // apply sbox\n if (i%keyLen === 0 || (keyLen === 8 && i%keyLen === 4)) {\n tmp = sbox[tmp>>>24]<<24 ^ sbox[tmp>>16&255]<<16 ^ sbox[tmp>>8&255]<<8 ^ sbox[tmp&255];\n\n // shift rows and add rcon\n if (i%keyLen === 0) {\n tmp = tmp<<8 ^ tmp>>>24 ^ rcon<<24;\n rcon = rcon<<1 ^ (rcon>>7)*283;\n }\n }\n\n encKey[i] = encKey[i-keyLen] ^ tmp;\n }\n\n // schedule decryption keys\n for (j = 0; i; j++, i--) {\n tmp = encKey[j&3 ? i : i - 4];\n if (i<=4 || j<4) {\n decKey[j] = tmp;\n } else {\n decKey[j] = decTable[0][sbox[tmp>>>24 ]] ^\n decTable[1][sbox[tmp>>16 & 255]] ^\n decTable[2][sbox[tmp>>8 & 255]] ^\n decTable[3][sbox[tmp & 255]];\n }\n }\n }\n\n /**\n * Expand the S-box tables.\n *\n * @private\n */\n _precompute() {\n var encTable = this._tables[0], decTable = this._tables[1],\n sbox = encTable[4], sboxInv = decTable[4],\n i, x, xInv, d=[], th=[], x2, x4, x8, s, tEnc, tDec;\n\n // Compute double and third tables\n for (i = 0; i < 256; i++) {\n th[( d[i] = i<<1 ^ (i>>7)*283 )^i]=i;\n }\n\n for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {\n // Compute sbox\n s = xInv ^ xInv<<1 ^ xInv<<2 ^ xInv<<3 ^ xInv<<4;\n s = s>>8 ^ s&255 ^ 99;\n sbox[x] = s;\n sboxInv[s] = x;\n\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8*0x1010101 ^ x4*0x10001 ^ x2*0x101 ^ x*0x1010100;\n tEnc = d[s]*0x101 ^ s*0x1010100;\n\n for (i = 0; i < 4; i++) {\n encTable[i][x] = tEnc = tEnc<<24 ^ tEnc>>>8;\n decTable[i][s] = tDec = tDec<<24 ^ tDec>>>8;\n }\n }\n\n // Compactify. Considerable speedup on Firefox.\n for (i = 0; i < 5; i++) {\n encTable[i] = encTable[i].slice(0);\n decTable[i] = decTable[i].slice(0);\n }\n }\n\n /**\n * Decrypt 16 bytes, specified as four 32-bit words.\n * @param encrypted0 {number} the first word to decrypt\n * @param encrypted1 {number} the second word to decrypt\n * @param encrypted2 {number} the third word to decrypt\n * @param encrypted3 {number} the fourth word to decrypt\n * @param out {Int32Array} the array to write the decrypted words\n * into\n * @param offset {number} the offset into the output array to start\n * writing results\n * @return {Array} The plaintext.\n */\n decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) {\n var key = this._key[1],\n // state variables a,b,c,d are loaded with pre-whitened data\n a = encrypted0 ^ key[0],\n b = encrypted3 ^ key[1],\n c = encrypted2 ^ key[2],\n d = encrypted1 ^ key[3],\n a2, b2, c2,\n\n nInnerRounds = key.length / 4 - 2, // key.length === 2 ?\n i,\n kIndex = 4,\n table = this._tables[1],\n\n // load up the tables\n table0 = table[0],\n table1 = table[1],\n table2 = table[2],\n table3 = table[3],\n sbox = table[4];\n\n // Inner rounds. Cribbed from OpenSSL.\n for (i = 0; i < nInnerRounds; i++) {\n a2 = table0[a>>>24] ^ table1[b>>16 & 255] ^ table2[c>>8 & 255] ^ table3[d & 255] ^ key[kIndex];\n b2 = table0[b>>>24] ^ table1[c>>16 & 255] ^ table2[d>>8 & 255] ^ table3[a & 255] ^ key[kIndex + 1];\n c2 = table0[c>>>24] ^ table1[d>>16 & 255] ^ table2[a>>8 & 255] ^ table3[b & 255] ^ key[kIndex + 2];\n d = table0[d>>>24] ^ table1[a>>16 & 255] ^ table2[b>>8 & 255] ^ table3[c & 255] ^ key[kIndex + 3];\n kIndex += 4;\n a=a2; b=b2; c=c2;\n }\n\n // Last round.\n for (i = 0; i < 4; i++) {\n out[(3 & -i) + offset] =\n sbox[a>>>24 ]<<24 ^\n sbox[b>>16 & 255]<<16 ^\n sbox[c>>8 & 255]<<8 ^\n sbox[d & 255] ^\n key[kIndex++];\n a2=a; a=b; b=c; c=d; d=a2;\n }\n }\n}\n\nexport default AES;\n", "/*\n *\n * This file contains an adaptation of the AES decryption algorithm\n * from the Standford Javascript Cryptography Library. That work is\n * covered by the following copyright and permissions notice:\n *\n * Copyright 2009-2010 Emily Stark, Mike Hamburg, Dan Boneh.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation\n * are those of the authors and should not be interpreted as representing\n * official policies, either expressed or implied, of the authors.\n */\n\nimport AES from './aes';\n\nclass AES128Decrypter {\n\n constructor(key, initVector) {\n this.key = key;\n this.iv = initVector;\n }\n\n /**\n * Convert network-order (big-endian) bytes into their little-endian\n * representation.\n */\n ntoh(word) {\n return (word << 24) |\n ((word & 0xff00) << 8) |\n ((word & 0xff0000) >> 8) |\n (word >>> 24);\n }\n\n\n /**\n * Decrypt bytes using AES-128 with CBC and PKCS#7 padding.\n * @param encrypted {Uint8Array} the encrypted bytes\n * @param key {Uint32Array} the bytes of the decryption key\n * @param initVector {Uint32Array} the initialization vector (IV) to\n * use for the first round of CBC.\n * @return {Uint8Array} the decrypted bytes\n *\n * @see http://en.wikipedia.org/wiki/Advanced_Encryption_Standard\n * @see http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29\n * @see https://tools.ietf.org/html/rfc2315\n */\n doDecrypt(encrypted, key, initVector) {\n var\n // word-level access to the encrypted bytes\n encrypted32 = new Int32Array(encrypted.buffer, encrypted.byteOffset, encrypted.byteLength >> 2),\n\n decipher = new AES(Array.prototype.slice.call(key)),\n\n // byte and word-level access for the decrypted output\n decrypted = new Uint8Array(encrypted.byteLength),\n decrypted32 = new Int32Array(decrypted.buffer),\n\n // temporary variables for working with the IV, encrypted, and\n // decrypted data\n init0, init1, init2, init3,\n encrypted0, encrypted1, encrypted2, encrypted3,\n\n // iteration variable\n wordIx;\n\n // pull out the words of the IV to ensure we don't modify the\n // passed-in reference and easier access\n init0 = ~~initVector[0];\n init1 = ~~initVector[1];\n init2 = ~~initVector[2];\n init3 = ~~initVector[3];\n\n // decrypt four word sequences, applying cipher-block chaining (CBC)\n // to each decrypted block\n for (wordIx = 0; wordIx < encrypted32.length; wordIx += 4) {\n // convert big-endian (network order) words into little-endian\n // (javascript order)\n encrypted0 = ~~this.ntoh(encrypted32[wordIx]);\n encrypted1 = ~~this.ntoh(encrypted32[wordIx + 1]);\n encrypted2 = ~~this.ntoh(encrypted32[wordIx + 2]);\n encrypted3 = ~~this.ntoh(encrypted32[wordIx + 3]);\n\n // decrypt the block\n decipher.decrypt(encrypted0,\n encrypted1,\n encrypted2,\n encrypted3,\n decrypted32,\n wordIx);\n\n // XOR with the IV, and restore network byte-order to obtain the\n // plaintext\n decrypted32[wordIx] = this.ntoh(decrypted32[wordIx] ^ init0);\n decrypted32[wordIx + 1] = this.ntoh(decrypted32[wordIx + 1] ^ init1);\n decrypted32[wordIx + 2] = this.ntoh(decrypted32[wordIx + 2] ^ init2);\n decrypted32[wordIx + 3] = this.ntoh(decrypted32[wordIx + 3] ^ init3);\n\n // setup the IV for the next round\n init0 = encrypted0;\n init1 = encrypted1;\n init2 = encrypted2;\n init3 = encrypted3;\n }\n\n return decrypted;\n }\n\n localDecript(encrypted, key, initVector, decrypted) {\n var bytes = this.doDecrypt(encrypted,\n key,\n initVector);\n decrypted.set(bytes, encrypted.byteOffset);\n }\n\n decrypt(encrypted) {\n var\n step = 4 * 8000,\n //encrypted32 = new Int32Array(encrypted.buffer),\n encrypted32 = new Int32Array(encrypted),\n decrypted = new Uint8Array(encrypted.byteLength),\n i = 0;\n\n // split up the encryption job and do the individual chunks asynchronously\n var key = this.key;\n var initVector = this.iv;\n this.localDecript(encrypted32.subarray(i, i + step), key, initVector, decrypted);\n\n for (i = step; i < encrypted32.length; i += step) {\n initVector = new Uint32Array([\n this.ntoh(encrypted32[i - 4]),\n this.ntoh(encrypted32[i - 3]),\n this.ntoh(encrypted32[i - 2]),\n this.ntoh(encrypted32[i - 1])\n ]);\n this.localDecript(encrypted32.subarray(i, i + step), key, initVector, decrypted);\n }\n\n return decrypted;\n }\n}\n\nexport default AES128Decrypter;\n", "/*\n * AES128 decryption.\n */\n\nimport AES128Decrypter from './aes128-decrypter';\nimport {ErrorTypes, ErrorDetails} from '../errors';\nimport {logger} from '../utils/logger';\n\nclass Decrypter {\n\n constructor(hls) {\n this.hls = hls;\n try {\n const browserCrypto = window ? window.crypto : crypto;\n this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n this.disableWebCrypto = !this.subtle;\n } catch (e) {\n this.disableWebCrypto = true;\n }\n }\n\n destroy() {\n }\n\n decrypt(data, key, iv, callback) {\n if (this.disableWebCrypto && this.hls.config.enableSoftwareAES) {\n this.decryptBySoftware(data, key, iv, callback);\n } else {\n this.decryptByWebCrypto(data, key, iv, callback);\n }\n }\n\n decryptByWebCrypto(data, key, iv, callback) {\n logger.log('decrypting by WebCrypto API');\n\n this.subtle.importKey('raw', key, { name : 'AES-CBC', length : 128 }, false, ['decrypt']).\n then((importedKey) => {\n this.subtle.decrypt({ name : 'AES-CBC', iv : iv.buffer }, importedKey, data).\n then(callback).\n catch ((err) => {\n this.onWebCryptoError(err, data, key, iv, callback);\n });\n }).\n catch ((err) => {\n this.onWebCryptoError(err, data, key, iv, callback);\n });\n }\n\n decryptBySoftware(data, key8, iv8, callback) {\n logger.log('decrypting by JavaScript Implementation');\n\n var view = new DataView(key8.buffer);\n var key = new Uint32Array([\n view.getUint32(0),\n view.getUint32(4),\n view.getUint32(8),\n view.getUint32(12)\n ]);\n\n view = new DataView(iv8.buffer);\n var iv = new Uint32Array([\n view.getUint32(0),\n view.getUint32(4),\n view.getUint32(8),\n view.getUint32(12)\n ]);\n\n var decrypter = new AES128Decrypter(key, iv);\n callback(decrypter.decrypt(data).buffer);\n }\n\n onWebCryptoError(err, data, key, iv, callback) {\n if (this.hls.config.enableSoftwareAES) {\n logger.log('disabling to use WebCrypto API');\n this.disableWebCrypto = true;\n this.decryptBySoftware(data, key, iv, callback);\n }\n else {\n logger.error(`decrypting error : ${err.message}`);\n this.hls.trigger(Event.ERROR, {type : ErrorTypes.MEDIA_ERROR, details : ErrorDetails.FRAG_DECRYPT_ERROR, fatal : true, reason : err.message});\n }\n }\n\n}\n\nexport default Decrypter;\n", @@ -55,11 +55,11 @@ "export const ErrorTypes = {\n // Identifier for a network error (loading error / timeout ...)\n NETWORK_ERROR: 'hlsNetworkError',\n // Identifier for a media Error (video/parsing/mediasource error)\n MEDIA_ERROR: 'hlsMediaError',\n // Identifier for all other errors\n OTHER_ERROR: 'hlsOtherError'\n};\n\nexport const ErrorDetails = {\n // Identifier for a manifest load error - data: { url : faulty URL, response : XHR response}\n MANIFEST_LOAD_ERROR: 'manifestLoadError',\n // Identifier for a manifest load timeout - data: { url : faulty URL, response : XHR response}\n MANIFEST_LOAD_TIMEOUT: 'manifestLoadTimeOut',\n // Identifier for a manifest parsing error - data: { url : faulty URL, reason : error reason}\n MANIFEST_PARSING_ERROR: 'manifestParsingError',\n // Identifier for playlist load error - data: { url : faulty URL, response : XHR response}\n LEVEL_LOAD_ERROR: 'levelLoadError',\n // Identifier for playlist load timeout - data: { url : faulty URL, response : XHR response}\n LEVEL_LOAD_TIMEOUT: 'levelLoadTimeOut',\n // Identifier for a level switch error - data: { level : faulty level Id, event : error description}\n LEVEL_SWITCH_ERROR: 'levelSwitchError',\n // Identifier for fragment load error - data: { frag : fragment object, response : XHR response}\n FRAG_LOAD_ERROR: 'fragLoadError',\n // Identifier for fragment loop loading error - data: { frag : fragment object}\n FRAG_LOOP_LOADING_ERROR: 'fragLoopLoadingError',\n // Identifier for fragment load timeout error - data: { frag : fragment object}\n FRAG_LOAD_TIMEOUT: 'fragLoadTimeOut',\n // Identifier for a fragment decryption error event - data: parsing error description\n FRAG_DECRYPT_ERROR: 'fragDecryptError',\n // Identifier for a fragment parsing error event - data: parsing error description\n FRAG_PARSING_ERROR: 'fragParsingError',\n // Identifier for decrypt key load error - data: { frag : fragment object, response : XHR response}\n KEY_LOAD_ERROR: 'keyLoadError',\n // Identifier for decrypt key load timeout error - data: { frag : fragment object}\n KEY_LOAD_TIMEOUT: 'keyLoadTimeOut',\n // Identifier for a buffer append error - data: append error description\n BUFFER_APPEND_ERROR: 'bufferAppendError',\n // Identifier for a buffer appending error event - data: appending error description\n BUFFER_APPENDING_ERROR: 'bufferAppendingError'\n};\n", "export default {\n // fired before MediaSource is attaching to media element - data: { media }\n MEDIA_ATTACHING: 'hlsMediaAttaching',\n // fired when MediaSource has been succesfully attached to media element - data: { }\n MEDIA_ATTACHED: 'hlsMediaAttached',\n // fired before detaching MediaSource from media element - data: { }\n MEDIA_DETACHING: 'hlsMediaDetaching',\n // fired when MediaSource has been detached from media element - data: { }\n MEDIA_DETACHED: 'hlsMediaDetached',\n // fired to signal that a manifest loading starts - data: { url : manifestURL}\n MANIFEST_LOADING: 'hlsManifestLoading',\n // fired after manifest has been loaded - data: { levels : [available quality levels] , url : manifestURL, stats : { trequest, tfirst, tload, mtime}}\n MANIFEST_LOADED: 'hlsManifestLoaded',\n // fired after manifest has been parsed - data: { levels : [available quality levels] , firstLevel : index of first quality level appearing in Manifest}\n MANIFEST_PARSED: 'hlsManifestParsed',\n // fired when a level playlist loading starts - data: { url : level URL level : id of level being loaded}\n LEVEL_LOADING: 'hlsLevelLoading',\n // fired when a level playlist loading finishes - data: { details : levelDetails object, level : id of loaded level, stats : { trequest, tfirst, tload, mtime} }\n LEVEL_LOADED: 'hlsLevelLoaded',\n // fired when a level's details have been updated based on previous details, after it has been loaded. - data: { details : levelDetails object, level : id of updated level }\n LEVEL_UPDATED: 'hlsLevelUpdated',\n // fired when a level's PTS information has been updated after parsing a fragment - data: { details : levelDetails object, level : id of updated level, drift: PTS drift observed when parsing last fragment }\n LEVEL_PTS_UPDATED: 'hlsPTSUpdated',\n // fired when a level switch is requested - data: { level : id of new level }\n LEVEL_SWITCH: 'hlsLevelSwitch',\n // fired when a fragment loading starts - data: { frag : fragment object}\n FRAG_LOADING: 'hlsFragLoading',\n // fired when a fragment loading is progressing - data: { frag : fragment object, { trequest, tfirst, loaded}}\n FRAG_LOAD_PROGRESS: 'hlsFragLoadProgress',\n // Identifier for fragment load aborting for emergency switch down - data: {frag : fragment object}\n FRAG_LOAD_EMERGENCY_ABORTED: 'hlsFragLoadEmergencyAborted',\n // fired when a fragment loading is completed - data: { frag : fragment object, payload : fragment payload, stats : { trequest, tfirst, tload, length}}\n FRAG_LOADED: 'hlsFragLoaded',\n // fired when Init Segment has been extracted from fragment - data: { moov : moov MP4 box, codecs : codecs found while parsing fragment}\n FRAG_PARSING_INIT_SEGMENT: 'hlsFragParsingInitSegment',\n // fired when parsing id3 is completed - data: { samples : [ id3 samples pes ] }\n FRAG_PARSING_METADATA: 'hlsFraParsingMetadata',\n // fired when moof/mdat have been extracted from fragment - data: { moof : moof MP4 box, mdat : mdat MP4 box}\n FRAG_PARSING_DATA: 'hlsFragParsingData',\n // fired when fragment parsing is completed - data: undefined\n FRAG_PARSED: 'hlsFragParsed',\n // fired when fragment remuxed MP4 boxes have all been appended into SourceBuffer - data: { frag : fragment object, stats : { trequest, tfirst, tload, tparsed, tbuffered, length} }\n FRAG_BUFFERED: 'hlsFragBuffered',\n // fired when fragment matching with current media position is changing - data : { frag : fragment object }\n FRAG_CHANGED: 'hlsFragChanged',\n // Identifier for a FPS drop event - data: {curentDropped, currentDecoded, totalDroppedFrames}\n FPS_DROP: 'hlsFPSDrop',\n // Identifier for an error event - data: { type : error type, details : error details, fatal : if true, hls.js cannot/will not try to recover, if false, hls.js will try to recover,other error specific data}\n ERROR: 'hlsError',\n // fired when hls.js instance starts destroying. Different from MEDIA_DETACHED as one could want to detach and reattach a media to the instance of hls.js to handle mid-rolls for example\n DESTROYING: 'hlsDestroying',\n // fired when a decrypt key loading starts - data: { frag : fragment object}\n KEY_LOADING: 'hlsKeyLoading',\n // fired when a decrypt key loading is completed - data: { frag : fragment object, payload : key payload, stats : { trequest, tfirst, tload, length}}\n KEY_LOADED: 'hlsKeyLoaded',\n};\n", "/**\n * Level Helper class, providing methods dealing with playlist sliding and drift\n*/\n\nimport {logger} from '../utils/logger';\n\nclass LevelHelper {\n\n static mergeDetails(oldDetails,newDetails) {\n var start = Math.max(oldDetails.startSN,newDetails.startSN)-newDetails.startSN,\n end = Math.min(oldDetails.endSN,newDetails.endSN)-newDetails.startSN,\n delta = newDetails.startSN - oldDetails.startSN,\n oldfragments = oldDetails.fragments,\n newfragments = newDetails.fragments,\n ccOffset =0,\n PTSFrag;\n\n // check if old/new playlists have fragments in common\n if ( end < start) {\n newDetails.PTSKnown = false;\n return;\n }\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n for(var i = start ; i <= end ; i++) {\n var oldFrag = oldfragments[delta+i],\n newFrag = newfragments[i];\n ccOffset = oldFrag.cc - newFrag.cc;\n if (!isNaN(oldFrag.startPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.duration = oldFrag.duration;\n PTSFrag = newFrag;\n }\n }\n\n if(ccOffset) {\n logger.log(`discontinuity sliding from playlist, take drift into account`);\n for(i = 0 ; i < newfragments.length ; i++) {\n newfragments[i].cc += ccOffset;\n }\n }\n\n // if at least one fragment contains PTS info, recompute PTS information for all fragments\n if(PTSFrag) {\n LevelHelper.updateFragPTS(newDetails,PTSFrag.sn,PTSFrag.startPTS,PTSFrag.endPTS);\n } else {\n // adjust start by sliding offset\n var sliding = oldfragments[delta].start;\n for(i = 0 ; i < newfragments.length ; i++) {\n newfragments[i].start += sliding;\n }\n }\n // if we are here, it means we have fragments overlapping between\n // old and new level. reliable PTS info is thus relying on old level\n newDetails.PTSKnown = oldDetails.PTSKnown;\n return;\n }\n\n static updateFragPTS(details,sn,startPTS,endPTS) {\n var fragIdx, fragments, frag, i;\n // exit if sn out of range\n if (sn < details.startSN || sn > details.endSN) {\n return 0;\n }\n fragIdx = sn - details.startSN;\n fragments = details.fragments;\n frag = fragments[fragIdx];\n if(!isNaN(frag.startPTS)) {\n startPTS = Math.max(startPTS,frag.startPTS);\n endPTS = Math.min(endPTS, frag.endPTS);\n }\n\n var drift = startPTS - frag.start;\n\n frag.start = frag.startPTS = startPTS;\n frag.endPTS = endPTS;\n frag.duration = endPTS - startPTS;\n // adjust fragment PTS/duration from seqnum-1 to frag 0\n for(i = fragIdx ; i > 0 ; i--) {\n LevelHelper.updatePTS(fragments,i,i-1);\n }\n\n // adjust fragment PTS/duration from seqnum to last frag\n for(i = fragIdx ; i < fragments.length - 1 ; i++) {\n LevelHelper.updatePTS(fragments,i,i+1);\n }\n details.PTSKnown = true;\n //logger.log(` frag start/end:${startPTS.toFixed(3)}/${endPTS.toFixed(3)}`);\n\n return drift;\n }\n\n static updatePTS(fragments,fromIdx, toIdx) {\n var fragFrom = fragments[fromIdx],fragTo = fragments[toIdx], fragToPTS = fragTo.startPTS;\n // if we know startPTS[toIdx]\n if(!isNaN(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n if (toIdx > fromIdx) {\n fragFrom.duration = fragToPTS-fragFrom.start;\n if(fragFrom.duration < 0) {\n logger.error(`negative duration computed for ${fragFrom}, there should be some duration drift between playlist and fragment!`);\n }\n } else {\n fragTo.duration = fragFrom.start - fragToPTS;\n if(fragTo.duration < 0) {\n logger.error(`negative duration computed for ${fragTo}, there should be some duration drift between playlist and fragment!`);\n }\n }\n } else {\n // we dont know startPTS[toIdx]\n if (toIdx > fromIdx) {\n fragTo.start = fragFrom.start + fragFrom.duration;\n } else {\n fragTo.start = fragFrom.start - fragTo.duration;\n }\n }\n }\n}\n\nexport default LevelHelper;\n", - "/**\n * HLS interface\n */\n'use strict';\n\nimport Event from './events';\nimport {ErrorTypes, ErrorDetails} from './errors';\nimport PlaylistLoader from './loader/playlist-loader';\nimport FragmentLoader from './loader/fragment-loader';\nimport AbrController from './controller/abr-controller';\nimport MSEMediaController from './controller/mse-media-controller';\nimport LevelController from './controller/level-controller';\n//import FPSController from './controller/fps-controller';\nimport {logger, enableLogs} from './utils/logger';\nimport XhrLoader from './utils/xhr-loader';\nimport EventEmitter from 'events';\nimport KeyLoader from './loader/key-loader';\n\nclass Hls {\n\n static isSupported() {\n return (window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"'));\n }\n\n static get Events() {\n return Event;\n }\n\n static get ErrorTypes() {\n return ErrorTypes;\n }\n\n static get ErrorDetails() {\n return ErrorDetails;\n }\n\n constructor(config = {}) {\n var configDefault = {\n autoStartLoad: true,\n debug: false,\n maxBufferLength: 30,\n maxBufferSize: 60 * 1000 * 1000,\n liveSyncDurationCount:3,\n liveMaxLatencyDurationCount: Infinity,\n maxMaxBufferLength: 600,\n enableWorker: true,\n enableSoftwareAES: true,\n fragLoadingTimeOut: 20000,\n fragLoadingMaxRetry: 1,\n fragLoadingRetryDelay: 1000,\n fragLoadingLoopThreshold: 3,\n manifestLoadingTimeOut: 10000,\n manifestLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n // fpsDroppedMonitoringPeriod: 5000,\n // fpsDroppedMonitoringThreshold: 0.2,\n appendErrorMaxRetry: 200,\n loader: XhrLoader,\n fLoader: undefined,\n pLoader: undefined,\n abrController : AbrController,\n mediaController: MSEMediaController\n };\n for (var prop in configDefault) {\n if (prop in config) { continue; }\n config[prop] = configDefault[prop];\n }\n\n if (config.liveMaxLatencyDurationCount !== undefined && config.liveMaxLatencyDurationCount <= config.liveSyncDurationCount) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be gt \"liveSyncDurationCount\"');\n }\n\n enableLogs(config.debug);\n this.config = config;\n // observer setup\n var observer = this.observer = new EventEmitter();\n observer.trigger = function trigger (event, ...data) {\n observer.emit(event, event, ...data);\n };\n\n observer.off = function off (event, ...data) {\n observer.removeListener(event, ...data);\n };\n this.on = observer.on.bind(observer);\n this.off = observer.off.bind(observer);\n this.trigger = observer.trigger.bind(observer);\n this.playlistLoader = new PlaylistLoader(this);\n this.fragmentLoader = new FragmentLoader(this);\n this.levelController = new LevelController(this);\n this.abrController = new config.abrController(this);\n this.mediaController = new config.mediaController(this);\n this.keyLoader = new KeyLoader(this);\n //this.fpsController = new FPSController(this);\n }\n\n destroy() {\n logger.log('destroy');\n this.trigger(Event.DESTROYING);\n this.detachMedia();\n this.playlistLoader.destroy();\n this.fragmentLoader.destroy();\n this.levelController.destroy();\n this.mediaController.destroy();\n this.keyLoader.destroy();\n //this.fpsController.destroy();\n this.url = null;\n this.observer.removeAllListeners();\n }\n\n attachMedia(media) {\n logger.log('attachMedia');\n this.media = media;\n this.trigger(Event.MEDIA_ATTACHING, {media: media});\n }\n\n detachMedia() {\n logger.log('detachMedia');\n this.trigger(Event.MEDIA_DETACHING);\n this.media = null;\n }\n\n loadSource(url) {\n logger.log(`loadSource:${url}`);\n this.url = url;\n // when attaching to a source URL, trigger a playlist load\n this.trigger(Event.MANIFEST_LOADING, {url: url});\n }\n\n startLoad() {\n logger.log('startLoad');\n this.mediaController.startLoad();\n }\n\n swapAudioCodec() {\n logger.log('swapAudioCodec');\n this.mediaController.swapAudioCodec();\n }\n\n recoverMediaError() {\n logger.log('recoverMediaError');\n var media = this.media;\n this.detachMedia();\n this.attachMedia(media);\n }\n\n /** Return all quality levels **/\n get levels() {\n return this.levelController.levels;\n }\n\n /** Return current playback quality level **/\n get currentLevel() {\n return this.mediaController.currentLevel;\n }\n\n /* set quality level immediately (-1 for automatic level selection) */\n set currentLevel(newLevel) {\n logger.log(`set currentLevel:${newLevel}`);\n this.loadLevel = newLevel;\n this.mediaController.immediateLevelSwitch();\n }\n\n /** Return next playback quality level (quality level of next fragment) **/\n get nextLevel() {\n return this.mediaController.nextLevel;\n }\n\n /* set quality level for next fragment (-1 for automatic level selection) */\n set nextLevel(newLevel) {\n logger.log(`set nextLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n this.mediaController.nextLevelSwitch();\n }\n\n /** Return the quality level of current/last loaded fragment **/\n get loadLevel() {\n return this.levelController.level;\n }\n\n /* set quality level for current/next loaded fragment (-1 for automatic level selection) */\n set loadLevel(newLevel) {\n logger.log(`set loadLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n }\n\n /** Return the quality level of next loaded fragment **/\n get nextLoadLevel() {\n return this.levelController.nextLoadLevel();\n }\n\n /** set quality level of next loaded fragment **/\n set nextLoadLevel(level) {\n this.levelController.level = level;\n }\n\n /** Return first level (index of first level referenced in manifest)\n **/\n get firstLevel() {\n return this.levelController.firstLevel;\n }\n\n /** set first level (index of first level referenced in manifest)\n **/\n set firstLevel(newLevel) {\n logger.log(`set firstLevel:${newLevel}`);\n this.levelController.firstLevel = newLevel;\n }\n\n /** Return start level (level of first fragment that will be played back)\n if not overrided by user, first level appearing in manifest will be used as start level\n if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment)\n **/\n get startLevel() {\n return this.levelController.startLevel;\n }\n\n /** set start level (level of first fragment that will be played back)\n if not overrided by user, first level appearing in manifest will be used as start level\n if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment)\n **/\n set startLevel(newLevel) {\n logger.log(`set startLevel:${newLevel}`);\n this.levelController.startLevel = newLevel;\n }\n\n /** Return the capping/max level value that could be used by automatic level selection algorithm **/\n get autoLevelCapping() {\n return this.abrController.autoLevelCapping;\n }\n\n /** set the capping/max level value that could be used by automatic level selection algorithm **/\n set autoLevelCapping(newLevel) {\n logger.log(`set autoLevelCapping:${newLevel}`);\n this.abrController.autoLevelCapping = newLevel;\n }\n\n /* check if we are in automatic level selection mode */\n get autoLevelEnabled() {\n return (this.levelController.manualLevel === -1);\n }\n\n /* return manual level */\n get manualLevel() {\n return this.levelController.manualLevel;\n }\n}\n\nexport default Hls;\n", + "/**\n * HLS interface\n */\n'use strict';\n\nimport Event from './events';\nimport {ErrorTypes, ErrorDetails} from './errors';\nimport PlaylistLoader from './loader/playlist-loader';\nimport FragmentLoader from './loader/fragment-loader';\nimport AbrController from './controller/abr-controller';\nimport MSEMediaController from './controller/mse-media-controller';\nimport LevelController from './controller/level-controller';\n//import FPSController from './controller/fps-controller';\nimport {logger, enableLogs} from './utils/logger';\nimport XhrLoader from './utils/xhr-loader';\nimport EventEmitter from 'events';\nimport KeyLoader from './loader/key-loader';\n\nclass Hls {\n\n static isSupported() {\n return (window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"'));\n }\n\n static get Events() {\n return Event;\n }\n\n static get ErrorTypes() {\n return ErrorTypes;\n }\n\n static get ErrorDetails() {\n return ErrorDetails;\n }\n\n constructor(config = {}) {\n var configDefault = {\n autoStartLoad: true,\n debug: false,\n maxBufferLength: 30,\n maxBufferSize: 60 * 1000 * 1000,\n liveSyncDurationCount:3,\n liveMaxLatencyDurationCount: Infinity,\n maxMaxBufferLength: 600,\n enableWorker: true,\n enableSoftwareAES: true,\n fragLoadingTimeOut: 20000,\n fragLoadingMaxRetry: 1,\n fragLoadingRetryDelay: 1000,\n fragLoadingLoopThreshold: 3,\n manifestLoadingTimeOut: 10000,\n manifestLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n // fpsDroppedMonitoringPeriod: 5000,\n // fpsDroppedMonitoringThreshold: 0.2,\n appendErrorMaxRetry: 3,\n loader: XhrLoader,\n fLoader: undefined,\n pLoader: undefined,\n abrController : AbrController,\n mediaController: MSEMediaController\n };\n for (var prop in configDefault) {\n if (prop in config) { continue; }\n config[prop] = configDefault[prop];\n }\n\n if (config.liveMaxLatencyDurationCount !== undefined && config.liveMaxLatencyDurationCount <= config.liveSyncDurationCount) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be gt \"liveSyncDurationCount\"');\n }\n\n enableLogs(config.debug);\n this.config = config;\n // observer setup\n var observer = this.observer = new EventEmitter();\n observer.trigger = function trigger (event, ...data) {\n observer.emit(event, event, ...data);\n };\n\n observer.off = function off (event, ...data) {\n observer.removeListener(event, ...data);\n };\n this.on = observer.on.bind(observer);\n this.off = observer.off.bind(observer);\n this.trigger = observer.trigger.bind(observer);\n this.playlistLoader = new PlaylistLoader(this);\n this.fragmentLoader = new FragmentLoader(this);\n this.levelController = new LevelController(this);\n this.abrController = new config.abrController(this);\n this.mediaController = new config.mediaController(this);\n this.keyLoader = new KeyLoader(this);\n //this.fpsController = new FPSController(this);\n }\n\n destroy() {\n logger.log('destroy');\n this.trigger(Event.DESTROYING);\n this.detachMedia();\n this.playlistLoader.destroy();\n this.fragmentLoader.destroy();\n this.levelController.destroy();\n this.mediaController.destroy();\n this.keyLoader.destroy();\n //this.fpsController.destroy();\n this.url = null;\n this.observer.removeAllListeners();\n }\n\n attachMedia(media) {\n logger.log('attachMedia');\n this.media = media;\n this.trigger(Event.MEDIA_ATTACHING, {media: media});\n }\n\n detachMedia() {\n logger.log('detachMedia');\n this.trigger(Event.MEDIA_DETACHING);\n this.media = null;\n }\n\n loadSource(url) {\n logger.log(`loadSource:${url}`);\n this.url = url;\n // when attaching to a source URL, trigger a playlist load\n this.trigger(Event.MANIFEST_LOADING, {url: url});\n }\n\n startLoad() {\n logger.log('startLoad');\n this.mediaController.startLoad();\n }\n\n swapAudioCodec() {\n logger.log('swapAudioCodec');\n this.mediaController.swapAudioCodec();\n }\n\n recoverMediaError() {\n logger.log('recoverMediaError');\n var media = this.media;\n this.detachMedia();\n this.attachMedia(media);\n }\n\n /** Return all quality levels **/\n get levels() {\n return this.levelController.levels;\n }\n\n /** Return current playback quality level **/\n get currentLevel() {\n return this.mediaController.currentLevel;\n }\n\n /* set quality level immediately (-1 for automatic level selection) */\n set currentLevel(newLevel) {\n logger.log(`set currentLevel:${newLevel}`);\n this.loadLevel = newLevel;\n this.mediaController.immediateLevelSwitch();\n }\n\n /** Return next playback quality level (quality level of next fragment) **/\n get nextLevel() {\n return this.mediaController.nextLevel;\n }\n\n /* set quality level for next fragment (-1 for automatic level selection) */\n set nextLevel(newLevel) {\n logger.log(`set nextLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n this.mediaController.nextLevelSwitch();\n }\n\n /** Return the quality level of current/last loaded fragment **/\n get loadLevel() {\n return this.levelController.level;\n }\n\n /* set quality level for current/next loaded fragment (-1 for automatic level selection) */\n set loadLevel(newLevel) {\n logger.log(`set loadLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n }\n\n /** Return the quality level of next loaded fragment **/\n get nextLoadLevel() {\n return this.levelController.nextLoadLevel();\n }\n\n /** set quality level of next loaded fragment **/\n set nextLoadLevel(level) {\n this.levelController.level = level;\n }\n\n /** Return first level (index of first level referenced in manifest)\n **/\n get firstLevel() {\n return this.levelController.firstLevel;\n }\n\n /** set first level (index of first level referenced in manifest)\n **/\n set firstLevel(newLevel) {\n logger.log(`set firstLevel:${newLevel}`);\n this.levelController.firstLevel = newLevel;\n }\n\n /** Return start level (level of first fragment that will be played back)\n if not overrided by user, first level appearing in manifest will be used as start level\n if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment)\n **/\n get startLevel() {\n return this.levelController.startLevel;\n }\n\n /** set start level (level of first fragment that will be played back)\n if not overrided by user, first level appearing in manifest will be used as start level\n if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment)\n **/\n set startLevel(newLevel) {\n logger.log(`set startLevel:${newLevel}`);\n this.levelController.startLevel = newLevel;\n }\n\n /** Return the capping/max level value that could be used by automatic level selection algorithm **/\n get autoLevelCapping() {\n return this.abrController.autoLevelCapping;\n }\n\n /** set the capping/max level value that could be used by automatic level selection algorithm **/\n set autoLevelCapping(newLevel) {\n logger.log(`set autoLevelCapping:${newLevel}`);\n this.abrController.autoLevelCapping = newLevel;\n }\n\n /* check if we are in automatic level selection mode */\n get autoLevelEnabled() {\n return (this.levelController.manualLevel === -1);\n }\n\n /* return manual level */\n get manualLevel() {\n return this.levelController.manualLevel;\n }\n}\n\nexport default Hls;\n", "/*\n * Fragment Loader\n*/\n\nimport Event from '../events';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass FragmentLoader {\n\n constructor(hls) {\n this.hls = hls;\n this.onfl = this.onFragLoading.bind(this);\n hls.on(Event.FRAG_LOADING, this.onfl);\n }\n\n destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n this.hls.off(Event.FRAG_LOADING, this.onfl);\n }\n\n onFragLoading(event, data) {\n var frag = data.frag;\n this.frag = frag;\n this.frag.loaded = 0;\n var config = this.hls.config;\n frag.loader = this.loader = typeof(config.fLoader) !== 'undefined' ? new config.fLoader(config) : new config.loader(config);\n this.loader.load(frag.url, 'arraybuffer', this.loadsuccess.bind(this), this.loaderror.bind(this), this.loadtimeout.bind(this), config.fragLoadingTimeOut, config.fragLoadingMaxRetry, config.fragLoadingRetryDelay, this.loadprogress.bind(this), frag);\n }\n \n loadsuccess(event, stats) {\n var payload = event.currentTarget.response;\n stats.length = payload.byteLength;\n // detach fragment loader on load success\n this.frag.loader = undefined;\n this.hls.trigger(Event.FRAG_LOADED, {payload: payload, frag: this.frag, stats: stats});\n }\n\n loaderror(event) {\n this.loader.abort();\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: ErrorDetails.FRAG_LOAD_ERROR, fatal: false, frag: this.frag, response: event});\n } \n\n loadtimeout() {\n this.loader.abort();\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: ErrorDetails.FRAG_LOAD_TIMEOUT, fatal: false, frag: this.frag});\n }\n\n loadprogress(event, stats) {\n this.frag.loaded = stats.loaded;\n this.hls.trigger(Event.FRAG_LOAD_PROGRESS, {frag: this.frag, stats: stats});\n }\n}\n\nexport default FragmentLoader;\n", "/*\n * Decrypt key Loader\n*/\n\nimport Event from '../events';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass KeyLoader {\n\n constructor(hls) {\n this.hls = hls;\n this.decryptkey = null;\n this.decrypturl = null;\n this.ondkl = this.onDecryptKeyLoading.bind(this);\n hls.on(Event.KEY_LOADING, this.ondkl);\n }\n\n destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n this.hls.off(Event.KEY_LOADING, this.ondkl);\n }\n\n onDecryptKeyLoading(event, data) {\n var frag = this.frag = data.frag,\n decryptdata = frag.decryptdata,\n uri = decryptdata.uri;\n // if uri is different from previous one or if decrypt key not retrieved yet\n if (uri !== this.decrypturl || this.decryptkey === null) {\n var config = this.hls.config;\n frag.loader = this.loader = new config.loader(config);\n this.decrypturl = uri;\n this.decryptkey = null;\n frag.loader.load(uri, 'arraybuffer', this.loadsuccess.bind(this), this.loaderror.bind(this), this.loadtimeout.bind(this), config.fragLoadingTimeOut, config.fragLoadingMaxRetry, config.fragLoadingRetryDelay, this.loadprogress.bind(this), frag);\n } else if (this.decryptkey) {\n // we already loaded this key, return it\n decryptdata.key = this.decryptkey;\n this.hls.trigger(Event.KEY_LOADED, {frag: frag});\n }\n }\n\n loadsuccess(event) {\n var frag = this.frag;\n this.decryptkey = frag.decryptdata.key = new Uint8Array(event.currentTarget.response);\n // detach fragment loader on load success\n frag.loader = undefined;\n this.hls.trigger(Event.KEY_LOADED, {frag: frag});\n }\n\n loaderror(event) {\n this.loader.abort();\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: ErrorDetails.KEY_LOAD_ERROR, fatal: false, frag: this.frag, response: event});\n }\n\n loadtimeout() {\n this.loader.abort();\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: ErrorDetails.KEY_LOAD_TIMEOUT, fatal: false, frag: this.frag});\n }\n\n loadprogress() {\n\n }\n}\n\nexport default KeyLoader;\n", "/**\n * Playlist Loader\n*/\n\nimport Event from '../events';\nimport {ErrorTypes, ErrorDetails} from '../errors';\nimport URLHelper from '../utils/url';\n//import {logger} from '../utils/logger';\n\nclass PlaylistLoader {\n\n constructor(hls) {\n this.hls = hls;\n this.onml = this.onManifestLoading.bind(this);\n this.onll = this.onLevelLoading.bind(this);\n hls.on(Event.MANIFEST_LOADING, this.onml);\n hls.on(Event.LEVEL_LOADING, this.onll);\n }\n\n destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n this.url = this.id = null;\n this.hls.off(Event.MANIFEST_LOADING, this.onml);\n this.hls.off(Event.LEVEL_LOADING, this.onll);\n }\n\n onManifestLoading(event, data) {\n this.load(data.url, null);\n }\n\n onLevelLoading(event, data) {\n this.load(data.url, data.level, data.id);\n }\n\n load(url, id1, id2) {\n var config = this.hls.config;\n this.url = url;\n this.id = id1;\n this.id2 = id2;\n this.loader = typeof(config.pLoader) !== 'undefined' ? new config.pLoader(config) : new config.loader(config);\n this.loader.load(url, '', this.loadsuccess.bind(this), this.loaderror.bind(this), this.loadtimeout.bind(this), config.manifestLoadingTimeOut, config.manifestLoadingMaxRetry, config.manifestLoadingRetryDelay);\n }\n\n resolve(url, baseUrl) {\n return URLHelper.buildAbsoluteURL(baseUrl, url);\n }\n\n parseMasterPlaylist(string, baseurl) {\n var levels = [], level = {}, result, codecs, codec;\n // https://regex101.com is your friend\n var re = /#EXT-X-STREAM-INF:([^\\n\\r]*(BAND)WIDTH=(\\d+))?([^\\n\\r]*(CODECS)=\\\"([^\\\"\\n\\r]*)\\\",?)?([^\\n\\r]*(RES)OLUTION=(\\d+)x(\\d+))?([^\\n\\r]*(NAME)=\\\"(.*)\\\")?[^\\n\\r]*[\\r\\n]+([^\\r\\n]+)/g;\n while ((result = re.exec(string)) != null){\n result.shift();\n result = result.filter(function(n) { return (n !== undefined); });\n level.url = this.resolve(result.pop(), baseurl);\n while (result.length > 0) {\n switch (result.shift()) {\n case 'RES':\n level.width = parseInt(result.shift());\n level.height = parseInt(result.shift());\n break;\n case 'BAND':\n level.bitrate = parseInt(result.shift());\n break;\n case 'NAME':\n level.name = result.shift();\n break;\n case 'CODECS':\n codecs = result.shift().split(',');\n while (codecs.length > 0) {\n codec = codecs.shift();\n if (codec.indexOf('avc1') !== -1) {\n level.videoCodec = this.avc1toavcoti(codec);\n } else {\n level.audioCodec = codec;\n }\n }\n break;\n default:\n break;\n }\n }\n levels.push(level);\n level = {};\n }\n return levels;\n }\n\n avc1toavcoti(codec) {\n var result, avcdata = codec.split('.');\n if (avcdata.length > 2) {\n result = avcdata.shift() + '.';\n result += parseInt(avcdata.shift()).toString(16);\n result += ('000' + parseInt(avcdata.shift()).toString(16)).substr(-4);\n } else {\n result = codec;\n }\n return result;\n }\n\n parseKeyParamsByRegex(string, regexp) {\n var result = regexp.exec(string);\n if (result) {\n result.shift();\n result = result.filter(function(n) { return (n !== undefined); });\n if (result.length === 2) {\n return result[1];\n }\n }\n return null;\n }\n\n cloneObj(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n\n parseLevelPlaylist(string, baseurl, id) {\n var currentSN = 0, totalduration = 0, level = {url: baseurl, fragments: [], live: true, startSN: 0}, result, regexp, cc = 0, frag, byteRangeEndOffset, byteRangeStartOffset;\n var levelkey = {method : null, key : null, iv : null, uri : null};\n regexp = /(?:#EXT-X-(MEDIA-SEQUENCE):(\\d+))|(?:#EXT-X-(TARGETDURATION):(\\d+))|(?:#EXT-X-(KEY):(.*))|(?:#EXT(INF):([\\d\\.]+)[^\\r\\n]*([\\r\\n]+[^#|\\r\\n]+)?)|(?:#EXT-X-(BYTERANGE):([\\d]+[@[\\d]*)]*[\\r\\n]+([^#|\\r\\n]+)?|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DIS)CONTINUITY))/g;\n while ((result = regexp.exec(string)) !== null) {\n result.shift();\n result = result.filter(function(n) { return (n !== undefined); });\n switch (result[0]) {\n case 'MEDIA-SEQUENCE':\n currentSN = level.startSN = parseInt(result[1]);\n break;\n case 'TARGETDURATION':\n level.targetduration = parseFloat(result[1]);\n break;\n case 'ENDLIST':\n level.live = false;\n break;\n case 'DIS':\n cc++;\n break;\n case 'BYTERANGE':\n var params = result[1].split('@');\n if (params.length === 1) {\n byteRangeStartOffset = byteRangeEndOffset;\n } else {\n byteRangeStartOffset = parseInt(params[1]);\n }\n byteRangeEndOffset = parseInt(params[0]) + byteRangeStartOffset;\n frag = level.fragments.length ? level.fragments[level.fragments.length - 1] : null;\n if (frag && !frag.url) {\n frag.byteRangeStartOffset = byteRangeStartOffset;\n frag.byteRangeEndOffset = byteRangeEndOffset;\n frag.url = this.resolve(result[2], baseurl);\n }\n break;\n case 'INF':\n var duration = parseFloat(result[1]);\n if (!isNaN(duration)) {\n var fragdecryptdata,\n sn = currentSN++;\n if (levelkey.method && levelkey.uri && !levelkey.iv) {\n fragdecryptdata = this.cloneObj(levelkey);\n var uint8View = new Uint8Array(16);\n for (var i = 12; i < 16; i++) {\n uint8View[i] = (sn >> 8*(15-i)) & 0xff;\n }\n fragdecryptdata.iv = uint8View;\n } else {\n fragdecryptdata = levelkey;\n }\n level.fragments.push({url: result[2] ? this.resolve(result[2], baseurl) : null, duration: duration, start: totalduration, sn: sn, level: id, cc: cc, byteRangeStartOffset: byteRangeStartOffset, byteRangeEndOffset: byteRangeEndOffset, decryptdata : fragdecryptdata});\n totalduration += duration;\n byteRangeStartOffset = null;\n }\n break;\n case 'KEY':\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-08#section-3.4.4\n var decryptparams = result[1];\n var decryptmethod = this.parseKeyParamsByRegex(decryptparams, /(METHOD)=([^,]*)/),\n decrypturi = this.parseKeyParamsByRegex(decryptparams, /(URI)=[\"]([^,]*)[\"]/),\n decryptiv = this.parseKeyParamsByRegex(decryptparams, /(IV)=([^,]*)/);\n if (decryptmethod) {\n levelkey = { method: null, key: null, iv: null, uri: null };\n if ((decrypturi) && (decryptmethod === 'AES-128')) {\n levelkey.method = decryptmethod;\n // URI to get the key\n levelkey.uri = this.resolve(decrypturi, baseurl);\n levelkey.key = null;\n // Initialization Vector (IV)\n if (decryptiv) {\n levelkey.iv = decryptiv;\n if (levelkey.iv.substring(0, 2) === '0x') {\n levelkey.iv = levelkey.iv.substring(2);\n }\n levelkey.iv = levelkey.iv.match(/.{8}/g);\n levelkey.iv[0] = parseInt(levelkey.iv[0], 16);\n levelkey.iv[1] = parseInt(levelkey.iv[1], 16);\n levelkey.iv[2] = parseInt(levelkey.iv[2], 16);\n levelkey.iv[3] = parseInt(levelkey.iv[3], 16);\n levelkey.iv = new Uint32Array(levelkey.iv);\n }\n }\n }\n break;\n default:\n break;\n }\n }\n //logger.log('found ' + level.fragments.length + ' fragments');\n level.totalduration = totalduration;\n level.endSN = currentSN - 1;\n return level;\n }\n\n loadsuccess(event, stats) {\n var string = event.currentTarget.responseText, url = event.currentTarget.responseURL, id = this.id, id2 = this.id2, hls = this.hls, levels;\n // responseURL not supported on some browsers (it is used to detect URL redirection)\n if (url === undefined) {\n // fallback to initial URL\n url = this.url;\n }\n stats.tload = performance.now();\n stats.mtime = new Date(event.currentTarget.getResponseHeader('Last-Modified'));\n if (string.indexOf('#EXTM3U') === 0) {\n if (string.indexOf('#EXTINF:') > 0) {\n // 1 level playlist\n // if first request, fire manifest loaded event, level will be reloaded afterwards\n // (this is to have a uniform logic for 1 level/multilevel playlists)\n if (this.id === null) {\n hls.trigger(Event.MANIFEST_LOADED, {levels: [{url: url}], url: url, stats: stats});\n } else {\n var levelDetails = this.parseLevelPlaylist(string, url, id);\n stats.tparsed = performance.now();\n hls.trigger(Event.LEVEL_LOADED, {details: levelDetails, level: id, id: id2, stats: stats});\n }\n } else {\n levels = this.parseMasterPlaylist(string, url);\n // multi level playlist, parse level info\n if (levels.length) {\n hls.trigger(Event.MANIFEST_LOADED, {levels: levels, url: url, stats: stats});\n } else {\n hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: ErrorDetails.MANIFEST_PARSING_ERROR, fatal: true, url: url, reason: 'no level found in manifest'});\n }\n }\n } else {\n hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: ErrorDetails.MANIFEST_PARSING_ERROR, fatal: true, url: url, reason: 'no EXTM3U delimiter'});\n }\n }\n\n loaderror(event) {\n var details, fatal;\n if (this.id === null) {\n details = ErrorDetails.MANIFEST_LOAD_ERROR;\n fatal = true;\n } else {\n details = ErrorDetails.LEVEL_LOAD_ERROR;\n fatal = false;\n }\n this.loader.abort();\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: details, fatal: fatal, url: this.url, loader: this.loader, response: event.currentTarget, level: this.id, id: this.id2});\n }\n\n loadtimeout() {\n var details, fatal;\n if (this.id === null) {\n details = ErrorDetails.MANIFEST_LOAD_TIMEOUT;\n fatal = true;\n } else {\n details = ErrorDetails.LEVEL_LOAD_TIMEOUT;\n fatal = false;\n }\n this.loader.abort();\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: details, fatal: fatal, url: this.url, loader: this.loader, level: this.id, id: this.id2});\n }\n}\n\nexport default PlaylistLoader;\n", - "/**\n * Generate MP4 Box\n*/\n\n//import Hex from '../utils/hex';\nclass MP4 {\n static init() {\n MP4.types = {\n avc1: [], // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n var i;\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [\n i.charCodeAt(0),\n i.charCodeAt(1),\n i.charCodeAt(2),\n i.charCodeAt(3)\n ];\n }\n }\n\n MP4.MAJOR_BRAND = new Uint8Array([\n 'i'.charCodeAt(0),\n 's'.charCodeAt(0),\n 'o'.charCodeAt(0),\n 'm'.charCodeAt(0)\n ]);\n\n MP4.AVC1_BRAND = new Uint8Array([\n 'a'.charCodeAt(0),\n 'v'.charCodeAt(0),\n 'c'.charCodeAt(0),\n '1'.charCodeAt(0)\n ]);\n\n MP4.MINOR_VERSION = new Uint8Array([0, 0, 0, 1]);\n\n MP4.VIDEO_HDLR = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65,\n 0x6f, 0x48, 0x61, 0x6e,\n 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n\n MP4.AUDIO_HDLR = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x53, 0x6f, 0x75, 0x6e,\n 0x64, 0x48, 0x61, 0x6e,\n 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n\n MP4.HDLR_TYPES = {\n 'video': MP4.VIDEO_HDLR,\n 'audio': MP4.AUDIO_HDLR\n };\n\n MP4.DREF = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n MP4.STCO = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n MP4.STSC = MP4.STCO;\n MP4.STTS = MP4.STCO;\n MP4.STSZ = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00, // sample_count\n ]);\n MP4.VMHD = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphicsmode\n 0x00, 0x00,\n 0x00, 0x00,\n 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]);\n\n MP4.STSD = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01]);// entry_count\n\n MP4.FTYP = MP4.box(MP4.types.ftyp, MP4.MAJOR_BRAND, MP4.MINOR_VERSION, MP4.MAJOR_BRAND, MP4.AVC1_BRAND);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.DREF));\n }\n\n static box(type) {\n var\n payload = Array.prototype.slice.call(arguments, 1),\n size = 0,\n i = payload.length,\n result,\n view;\n // calculate the total size we need to allocate\n while (i--) {\n size += payload[i].byteLength;\n }\n result = new Uint8Array(size + 8);\n view = new DataView(result.buffer);\n view.setUint32(0, result.byteLength);\n result.set(type, 4);\n // copy the payload into the result\n for (i = 0, size = 8; i < payload.length; i++) {\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n }\n\n static hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n }\n\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n }\n\n static mdhd(timescale, duration) {\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x03, // modification_time\n (timescale >> 24) & 0xFF,\n (timescale >> 16) & 0xFF,\n (timescale >> 8) & 0xFF,\n timescale & 0xFF, // timescale\n (duration >> 24),\n (duration >> 16) & 0xFF,\n (duration >> 8) & 0xFF,\n duration & 0xFF, // duration\n 0x55, 0xc4, // 'und' language (undetermined)\n 0x00, 0x00\n ]));\n }\n\n static mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n }\n\n static mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([\n 0x00,\n 0x00, 0x00, 0x00, // flags\n (sequenceNumber >> 24),\n (sequenceNumber >> 16) & 0xFF,\n (sequenceNumber >> 8) & 0xFF,\n sequenceNumber & 0xFF, // sequence_number\n ]));\n }\n\n static minf(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));\n } else {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n }\n }\n\n static moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track,baseMediaDecodeTime));\n }\n/**\n * @param tracks... (optional) {array} the tracks associated with this movie\n */\n static moov(tracks) {\n var\n i = tracks.length,\n boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n }\n\n static mvex(tracks) {\n var\n i = tracks.length,\n boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }\n return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));\n }\n\n static mvhd(timescale,duration) {\n var\n bytes = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // creation_time\n 0x00, 0x00, 0x00, 0x02, // modification_time\n (timescale >> 24) & 0xFF,\n (timescale >> 16) & 0xFF,\n (timescale >> 8) & 0xFF,\n timescale & 0xFF, // timescale\n (duration >> 24) & 0xFF,\n (duration >> 16) & 0xFF,\n (duration >> 8) & 0xFF,\n duration & 0xFF, // duration\n 0x00, 0x01, 0x00, 0x00, // 1.0 rate\n 0x01, 0x00, // 1.0 volume\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n }\n\n static sdtp(track) {\n var\n samples = track.samples || [],\n bytes = new Uint8Array(4 + samples.length),\n flags,\n i;\n // leave the full box header (4 bytes) all zero\n // write the sample table\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = (flags.dependsOn << 4) |\n (flags.isDependedOn << 2) |\n (flags.hasRedundancy);\n }\n\n return MP4.box(MP4.types.sdtp, bytes);\n }\n\n static stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n }\n\n static avc1(track) {\n var sps = [], pps = [], i, data, len;\n // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push((len >>> 8) & 0xFF);\n sps.push((len & 0xFF));\n sps = sps.concat(Array.prototype.slice.call(data)); // SPS\n }\n\n // assemble the PPSs\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push((len >>> 8) & 0xFF);\n pps.push((len & 0xFF));\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n\n var avcc = MP4.box(MP4.types.avcC, new Uint8Array([\n 0x01, // version\n sps[3], // profile\n sps[4], // profile compat\n sps[5], // level\n 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xE0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([\n track.pps.length // numOfPictureParameterSets\n ]).concat(pps))); // \"PPS\"\n //console.log('avcc:' + Hex.hexDump(avcc));\n return MP4.box(MP4.types.avc1, new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n (track.width >> 8) & 0xFF,\n track.width & 0xff, // width\n (track.height >> 8) & 0xFF,\n track.height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x13,\n 0x76, 0x69, 0x64, 0x65,\n 0x6f, 0x6a, 0x73, 0x2d,\n 0x63, 0x6f, 0x6e, 0x74,\n 0x72, 0x69, 0x62, 0x2d,\n 0x68, 0x6c, 0x73, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]), // pre_defined = -1\n avcc,\n MP4.box(MP4.types.btrt, new Uint8Array([\n 0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])) // avgBitrate\n );\n }\n\n static esds(track) {\n return new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n\n 0x03, // descriptor_type\n 0x17+track.config.length, // length\n 0x00, 0x01, //es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0f+track.config.length, // length\n 0x40, //codec : mpeg4_audio\n 0x15, // stream_type\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([track.config.length]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n }\n\n static mp4a(track) {\n return MP4.box(MP4.types.mp4a, new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n (track.audiosamplerate >> 8) & 0xFF,\n track.audiosamplerate & 0xff, //\n 0x00, 0x00]),\n MP4.box(MP4.types.esds, MP4.esds(track)));\n }\n\n static stsd(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n }\n\n static tkhd(track) {\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x07, // flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (track.id >> 24) & 0xFF,\n (track.id >> 16) & 0xFF,\n (track.id >> 8) & 0xFF,\n track.id & 0xFF, // track_ID\n 0x00, 0x00, 0x00, 0x00, // reserved\n (track.duration >> 24),\n (track.duration >> 16) & 0xFF,\n (track.duration >> 8) & 0xFF,\n track.duration & 0xFF, // duration\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, 0x00, // alternate_group\n 0x00, 0x00, // non-audio track volume\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n (track.width >> 8) & 0xFF,\n track.width & 0xFF,\n 0x00, 0x00, // width\n (track.height >> 8) & 0xFF,\n track.height & 0xFF,\n 0x00, 0x00 // height\n ]));\n }\n\n static traf(track,baseMediaDecodeTime) {\n var sampleDependencyTable = MP4.sdtp(track);\n return MP4.box(MP4.types.traf,\n MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (track.id >> 24),\n (track.id >> 16) & 0XFF,\n (track.id >> 8) & 0XFF,\n (track.id & 0xFF) // track_ID\n ])),\n MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (baseMediaDecodeTime >>24),\n (baseMediaDecodeTime >> 16) & 0XFF,\n (baseMediaDecodeTime >> 8) & 0XFF,\n (baseMediaDecodeTime & 0xFF) // baseMediaDecodeTime\n ])),\n MP4.trun(track,\n sampleDependencyTable.length +\n 16 + // tfhd\n 16 + // tfdt\n 8 + // traf header\n 16 + // mfhd\n 8 + // moof header\n 8), // mdat header\n sampleDependencyTable);\n }\n\n /**\n * Generate a track box.\n * @param track {object} a track definition\n * @return {Uint8Array} the track box\n */\n static trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n }\n\n static trex(track) {\n return MP4.box(MP4.types.trex, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (track.id >> 24),\n (track.id >> 16) & 0XFF,\n (track.id >> 8) & 0XFF,\n (track.id & 0xFF), // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n }\n\n static trun(track, offset) {\n var samples, sample, i, array;\n samples = track.samples || [];\n array = new Uint8Array(12 + (16 * samples.length));\n offset += 8 + array.byteLength;\n array.set([\n 0x00, // version 0\n 0x00, 0x0f, 0x01, // flags\n (samples.length >>> 24) & 0xFF,\n (samples.length >>> 16) & 0xFF,\n (samples.length >>> 8) & 0xFF,\n samples.length & 0xFF, // sample_count\n (offset >>> 24) & 0xFF,\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n offset & 0xFF // data_offset\n ],0);\n for (i = 0; i < samples.length; i++) {\n sample = samples[i];\n array.set([\n (sample.duration >>> 24) & 0xFF,\n (sample.duration >>> 16) & 0xFF,\n (sample.duration >>> 8) & 0xFF,\n sample.duration & 0xFF, // sample_duration\n (sample.size >>> 24) & 0xFF,\n (sample.size >>> 16) & 0xFF,\n (sample.size >>> 8) & 0xFF,\n sample.size & 0xFF, // sample_size\n (sample.flags.isLeading << 2) | sample.flags.dependsOn,\n (sample.flags.isDependedOn << 6) |\n (sample.flags.hasRedundancy << 4) |\n (sample.flags.paddingValue << 1) |\n sample.flags.isNonSync,\n sample.flags.degradPrio & 0xF0 << 8,\n sample.flags.degradPrio & 0x0F, // sample_flags\n (sample.cts >>> 24) & 0xFF,\n (sample.cts >>> 16) & 0xFF,\n (sample.cts >>> 8) & 0xFF,\n sample.cts & 0xFF // sample_composition_time_offset\n ],12+16*i);\n }\n return MP4.box(MP4.types.trun, array);\n }\n\n static initSegment(tracks) {\n if (!MP4.types) {\n MP4.init();\n }\n var movie = MP4.moov(tracks), result;\n result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);\n result.set(MP4.FTYP);\n result.set(movie, MP4.FTYP.byteLength);\n return result;\n }\n}\n\nexport default MP4;\n", + "/**\n * Generate MP4 Box\n*/\n\n//import Hex from '../utils/hex';\nclass MP4 {\n static init() {\n MP4.types = {\n avc1: [], // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n var i;\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [\n i.charCodeAt(0),\n i.charCodeAt(1),\n i.charCodeAt(2),\n i.charCodeAt(3)\n ];\n }\n }\n\n MP4.MAJOR_BRAND = new Uint8Array([\n 'i'.charCodeAt(0),\n 's'.charCodeAt(0),\n 'o'.charCodeAt(0),\n 'm'.charCodeAt(0)\n ]);\n\n MP4.AVC1_BRAND = new Uint8Array([\n 'a'.charCodeAt(0),\n 'v'.charCodeAt(0),\n 'c'.charCodeAt(0),\n '1'.charCodeAt(0)\n ]);\n\n MP4.MINOR_VERSION = new Uint8Array([0, 0, 0, 1]);\n\n MP4.VIDEO_HDLR = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65,\n 0x6f, 0x48, 0x61, 0x6e,\n 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n\n MP4.AUDIO_HDLR = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x53, 0x6f, 0x75, 0x6e,\n 0x64, 0x48, 0x61, 0x6e,\n 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n\n MP4.HDLR_TYPES = {\n 'video': MP4.VIDEO_HDLR,\n 'audio': MP4.AUDIO_HDLR\n };\n\n MP4.DREF = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n MP4.STCO = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n MP4.STSC = MP4.STCO;\n MP4.STTS = MP4.STCO;\n MP4.STSZ = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00, // sample_count\n ]);\n MP4.VMHD = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphicsmode\n 0x00, 0x00,\n 0x00, 0x00,\n 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]);\n\n MP4.STSD = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01]);// entry_count\n\n MP4.FTYP = MP4.box(MP4.types.ftyp, MP4.MAJOR_BRAND, MP4.MINOR_VERSION, MP4.MAJOR_BRAND, MP4.AVC1_BRAND);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.DREF));\n }\n\n static box(type) {\n var\n payload = Array.prototype.slice.call(arguments, 1),\n size = 0,\n i = payload.length,\n len = i,\n result,\n view;\n // calculate the total size we need to allocate\n while (i--) {\n size += payload[i].byteLength;\n }\n result = new Uint8Array(size + 8);\n view = new DataView(result.buffer);\n view.setUint32(0, result.byteLength);\n result.set(type, 4);\n // copy the payload into the result\n for (i = 0, size = 8; i < len; i++) {\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n }\n\n static hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n }\n\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n }\n\n static mdhd(timescale, duration) {\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x03, // modification_time\n (timescale >> 24) & 0xFF,\n (timescale >> 16) & 0xFF,\n (timescale >> 8) & 0xFF,\n timescale & 0xFF, // timescale\n (duration >> 24),\n (duration >> 16) & 0xFF,\n (duration >> 8) & 0xFF,\n duration & 0xFF, // duration\n 0x55, 0xc4, // 'und' language (undetermined)\n 0x00, 0x00\n ]));\n }\n\n static mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n }\n\n static mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([\n 0x00,\n 0x00, 0x00, 0x00, // flags\n (sequenceNumber >> 24),\n (sequenceNumber >> 16) & 0xFF,\n (sequenceNumber >> 8) & 0xFF,\n sequenceNumber & 0xFF, // sequence_number\n ]));\n }\n\n static minf(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));\n } else {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n }\n }\n\n static moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track,baseMediaDecodeTime));\n }\n/**\n * @param tracks... (optional) {array} the tracks associated with this movie\n */\n static moov(tracks) {\n var\n i = tracks.length,\n boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n }\n\n static mvex(tracks) {\n var\n i = tracks.length,\n boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }\n return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));\n }\n\n static mvhd(timescale,duration) {\n var\n bytes = new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // creation_time\n 0x00, 0x00, 0x00, 0x02, // modification_time\n (timescale >> 24) & 0xFF,\n (timescale >> 16) & 0xFF,\n (timescale >> 8) & 0xFF,\n timescale & 0xFF, // timescale\n (duration >> 24) & 0xFF,\n (duration >> 16) & 0xFF,\n (duration >> 8) & 0xFF,\n duration & 0xFF, // duration\n 0x00, 0x01, 0x00, 0x00, // 1.0 rate\n 0x01, 0x00, // 1.0 volume\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n }\n\n static sdtp(track) {\n var\n samples = track.samples || [],\n bytes = new Uint8Array(4 + samples.length),\n flags,\n i;\n // leave the full box header (4 bytes) all zero\n // write the sample table\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = (flags.dependsOn << 4) |\n (flags.isDependedOn << 2) |\n (flags.hasRedundancy);\n }\n\n return MP4.box(MP4.types.sdtp, bytes);\n }\n\n static stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n }\n\n static avc1(track) {\n var sps = [], pps = [], i, data, len;\n // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push((len >>> 8) & 0xFF);\n sps.push((len & 0xFF));\n sps = sps.concat(Array.prototype.slice.call(data)); // SPS\n }\n\n // assemble the PPSs\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push((len >>> 8) & 0xFF);\n pps.push((len & 0xFF));\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n\n var avcc = MP4.box(MP4.types.avcC, new Uint8Array([\n 0x01, // version\n sps[3], // profile\n sps[4], // profile compat\n sps[5], // level\n 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xE0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([\n track.pps.length // numOfPictureParameterSets\n ]).concat(pps))), // \"PPS\"\n width = track.width,\n height = track.height;\n //console.log('avcc:' + Hex.hexDump(avcc));\n return MP4.box(MP4.types.avc1, new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n (width >> 8) & 0xFF,\n width & 0xff, // width\n (height >> 8) & 0xFF,\n height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x13,\n 0x76, 0x69, 0x64, 0x65,\n 0x6f, 0x6a, 0x73, 0x2d,\n 0x63, 0x6f, 0x6e, 0x74,\n 0x72, 0x69, 0x62, 0x2d,\n 0x68, 0x6c, 0x73, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]), // pre_defined = -1\n avcc,\n MP4.box(MP4.types.btrt, new Uint8Array([\n 0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])) // avgBitrate\n );\n }\n\n static esds(track) {\n var configlen = track.config.length;\n return new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n\n 0x03, // descriptor_type\n 0x17+configlen, // length\n 0x00, 0x01, //es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0f+configlen, // length\n 0x40, //codec : mpeg4_audio\n 0x15, // stream_type\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n }\n\n static mp4a(track) {\n var audiosamplerate = track.audiosamplerate;\n return MP4.box(MP4.types.mp4a, new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n (audiosamplerate >> 8) & 0xFF,\n audiosamplerate & 0xff, //\n 0x00, 0x00]),\n MP4.box(MP4.types.esds, MP4.esds(track)));\n }\n\n static stsd(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n }\n\n static tkhd(track) {\n var id = track.id,\n duration = track.duration,\n width = track.width,\n height = track.height;\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x07, // flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (id >> 24) & 0xFF,\n (id >> 16) & 0xFF,\n (id >> 8) & 0xFF,\n id & 0xFF, // track_ID\n 0x00, 0x00, 0x00, 0x00, // reserved\n (duration >> 24),\n (duration >> 16) & 0xFF,\n (duration >> 8) & 0xFF,\n duration & 0xFF, // duration\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, 0x00, // alternate_group\n 0x00, 0x00, // non-audio track volume\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n (width >> 8) & 0xFF,\n width & 0xFF,\n 0x00, 0x00, // width\n (height >> 8) & 0xFF,\n height & 0xFF,\n 0x00, 0x00 // height\n ]));\n }\n\n static traf(track,baseMediaDecodeTime) {\n var sampleDependencyTable = MP4.sdtp(track),\n id = track.id;\n return MP4.box(MP4.types.traf,\n MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (id >> 24),\n (id >> 16) & 0XFF,\n (id >> 8) & 0XFF,\n (id & 0xFF) // track_ID\n ])),\n MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (baseMediaDecodeTime >>24),\n (baseMediaDecodeTime >> 16) & 0XFF,\n (baseMediaDecodeTime >> 8) & 0XFF,\n (baseMediaDecodeTime & 0xFF) // baseMediaDecodeTime\n ])),\n MP4.trun(track,\n sampleDependencyTable.length +\n 16 + // tfhd\n 16 + // tfdt\n 8 + // traf header\n 16 + // mfhd\n 8 + // moof header\n 8), // mdat header\n sampleDependencyTable);\n }\n\n /**\n * Generate a track box.\n * @param track {object} a track definition\n * @return {Uint8Array} the track box\n */\n static trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n }\n\n static trex(track) {\n var id = track.id;\n return MP4.box(MP4.types.trex, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (id >> 24),\n (id >> 16) & 0XFF,\n (id >> 8) & 0XFF,\n (id & 0xFF), // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n }\n\n static trun(track, offset) {\n var samples= track.samples || [],\n len = samples.length,\n arraylen = 12 + (16 * len),\n array = new Uint8Array(arraylen),\n i,sample,duration,size,flags,cts;\n offset += 8 + arraylen;\n array.set([\n 0x00, // version 0\n 0x00, 0x0f, 0x01, // flags\n (len >>> 24) & 0xFF,\n (len >>> 16) & 0xFF,\n (len >>> 8) & 0xFF,\n len & 0xFF, // sample_count\n (offset >>> 24) & 0xFF,\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n offset & 0xFF // data_offset\n ],0);\n for (i = 0; i < len; i++) {\n sample = samples[i];\n duration = sample.duration;\n size = sample.size;\n flags = sample.flags;\n cts = sample.cts;\n array.set([\n (duration >>> 24) & 0xFF,\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n duration & 0xFF, // sample_duration\n (size >>> 24) & 0xFF,\n (size >>> 16) & 0xFF,\n (size >>> 8) & 0xFF,\n size & 0xFF, // sample_size\n (flags.isLeading << 2) | sample.flags.dependsOn,\n (flags.isDependedOn << 6) |\n (flags.hasRedundancy << 4) |\n (flags.paddingValue << 1) |\n flags.isNonSync,\n flags.degradPrio & 0xF0 << 8,\n flags.degradPrio & 0x0F, // sample_flags\n (cts >>> 24) & 0xFF,\n (cts >>> 16) & 0xFF,\n (cts >>> 8) & 0xFF,\n cts & 0xFF // sample_composition_time_offset\n ],12+16*i);\n }\n return MP4.box(MP4.types.trun, array);\n }\n\n static initSegment(tracks) {\n if (!MP4.types) {\n MP4.init();\n }\n var movie = MP4.moov(tracks), result;\n result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);\n result.set(MP4.FTYP);\n result.set(movie, MP4.FTYP.byteLength);\n return result;\n }\n}\n\nexport default MP4;\n", "/**\n * fMP4 remuxer\n*/\n\n\nimport Event from '../events';\nimport {logger} from '../utils/logger';\nimport MP4 from '../remux/mp4-generator';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass MP4Remuxer {\n constructor(observer) {\n this.observer = observer;\n this.ISGenerated = false;\n this.PES2MP4SCALEFACTOR = 4;\n this.PES_TIMESCALE = 90000;\n this.MP4_TIMESCALE = this.PES_TIMESCALE / this.PES2MP4SCALEFACTOR;\n }\n\n get timescale() {\n return this.MP4_TIMESCALE;\n }\n\n destroy() {\n }\n\n insertDiscontinuity() {\n this._initPTS = this._initDTS = this.nextAacPts = this.nextAvcDts = undefined;\n }\n\n switchLevel() {\n this.ISGenerated = false;\n }\n\n remux(audioTrack,videoTrack,id3Track,timeOffset, contiguous) {\n // generate Init Segment if needed\n if (!this.ISGenerated) {\n this.generateIS(audioTrack,videoTrack,timeOffset);\n }\n //logger.log('nb AVC samples:' + videoTrack.samples.length);\n if (videoTrack.samples.length) {\n this.remuxVideo(videoTrack,timeOffset,contiguous);\n }\n //logger.log('nb AAC samples:' + audioTrack.samples.length);\n if (audioTrack.samples.length) {\n this.remuxAudio(audioTrack,timeOffset,contiguous);\n }\n //logger.log('nb ID3 samples:' + audioTrack.samples.length);\n if (id3Track.samples.length) {\n this.remuxID3(id3Track,timeOffset);\n }\n //notify end of parsing\n this.observer.trigger(Event.FRAG_PARSED);\n }\n\n generateIS(audioTrack,videoTrack,timeOffset) {\n var observer = this.observer,\n audioSamples = audioTrack.samples,\n videoSamples = videoTrack.samples,\n nbAudio = audioSamples.length,\n nbVideo = videoSamples.length,\n pesTimeScale = this.PES_TIMESCALE;\n\n if(nbAudio === 0 && nbVideo === 0) {\n observer.trigger(Event.ERROR, {type : ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: false, reason: 'no audio/video samples found'});\n } else if (nbVideo === 0) {\n //audio only\n if (audioTrack.config) {\n observer.trigger(Event.FRAG_PARSING_INIT_SEGMENT, {\n audioMoov: MP4.initSegment([audioTrack]),\n audioCodec : audioTrack.codec,\n audioChannelCount : audioTrack.channelCount\n });\n this.ISGenerated = true;\n }\n if (this._initPTS === undefined) {\n // remember first PTS of this demuxing context\n this._initPTS = audioSamples[0].pts - pesTimeScale * timeOffset;\n this._initDTS = audioSamples[0].dts - pesTimeScale * timeOffset;\n }\n } else\n if (nbAudio === 0) {\n //video only\n if (videoTrack.sps && videoTrack.pps) {\n observer.trigger(Event.FRAG_PARSING_INIT_SEGMENT, {\n videoMoov: MP4.initSegment([videoTrack]),\n videoCodec: videoTrack.codec,\n videoWidth: videoTrack.width,\n videoHeight: videoTrack.height\n });\n this.ISGenerated = true;\n if (this._initPTS === undefined) {\n // remember first PTS of this demuxing context\n this._initPTS = videoSamples[0].pts - pesTimeScale * timeOffset;\n this._initDTS = videoSamples[0].dts - pesTimeScale * timeOffset;\n }\n }\n } else {\n //audio and video\n if (audioTrack.config && videoTrack.sps && videoTrack.pps) {\n observer.trigger(Event.FRAG_PARSING_INIT_SEGMENT, {\n audioMoov: MP4.initSegment([audioTrack]),\n audioCodec: audioTrack.codec,\n audioChannelCount: audioTrack.channelCount,\n videoMoov: MP4.initSegment([videoTrack]),\n videoCodec: videoTrack.codec,\n videoWidth: videoTrack.width,\n videoHeight: videoTrack.height\n });\n this.ISGenerated = true;\n if (this._initPTS === undefined) {\n // remember first PTS of this demuxing context\n this._initPTS = Math.min(videoSamples[0].pts, audioSamples[0].pts) - pesTimeScale * timeOffset;\n this._initDTS = Math.min(videoSamples[0].dts, audioSamples[0].dts) - pesTimeScale * timeOffset;\n }\n }\n }\n }\n\n remuxVideo(track, timeOffset, contiguous) {\n var view,\n i = 8,\n pesTimeScale = this.PES_TIMESCALE,\n pes2mp4ScaleFactor = this.PES2MP4SCALEFACTOR,\n avcSample,\n mp4Sample,\n mp4SampleLength,\n unit,\n mdat, moof,\n firstPTS, firstDTS, lastDTS,\n pts, dts, ptsnorm, dtsnorm,\n samples = [];\n /* concatenate the video data and construct the mdat in place\n (need 8 more bytes to fill length and mpdat type) */\n mdat = new Uint8Array(track.len + (4 * track.nbNalu) + 8);\n view = new DataView(mdat.buffer);\n view.setUint32(0, mdat.byteLength);\n mdat.set(MP4.types.mdat, 4);\n while (track.samples.length) {\n avcSample = track.samples.shift();\n mp4SampleLength = 0;\n // convert NALU bitstream to MP4 format (prepend NALU with size field)\n while (avcSample.units.units.length) {\n unit = avcSample.units.units.shift();\n view.setUint32(i, unit.data.byteLength);\n i += 4;\n mdat.set(unit.data, i);\n i += unit.data.byteLength;\n mp4SampleLength += 4 + unit.data.byteLength;\n }\n pts = avcSample.pts - this._initDTS;\n dts = avcSample.dts - this._initDTS;\n //logger.log('Video/PTS/DTS:' + pts + '/' + dts);\n // if not first AVC sample of video track, normalize PTS/DTS with previous sample value\n // and ensure that sample duration is positive\n if (lastDTS !== undefined) {\n ptsnorm = this._PTSNormalize(pts, lastDTS);\n dtsnorm = this._PTSNormalize(dts, lastDTS);\n mp4Sample.duration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor;\n if (mp4Sample.duration < 0) {\n //logger.log('invalid sample duration at PTS/DTS::' + avcSample.pts + '/' + avcSample.dts + ':' + mp4Sample.duration);\n mp4Sample.duration = 0;\n }\n } else {\n var nextAvcDts = this.nextAvcDts,delta;\n // first AVC sample of video track, normalize PTS/DTS\n ptsnorm = this._PTSNormalize(pts, nextAvcDts);\n dtsnorm = this._PTSNormalize(dts, nextAvcDts);\n delta = Math.round((dtsnorm - nextAvcDts) / 90);\n // if fragment are contiguous, or delta less than 600ms, ensure there is no overlap/hole between fragments\n if (contiguous || Math.abs(delta) < 600) {\n if (delta) {\n if (delta > 1) {\n logger.log(`AVC:${delta} ms hole between fragments detected,filling it`);\n } else if (delta < -1) {\n logger.log(`AVC:${(-delta)} ms overlapping between fragments detected`);\n }\n // set DTS to next DTS\n dtsnorm = nextAvcDts;\n // offset PTS as well, ensure that PTS is smaller or equal than new DTS\n ptsnorm = Math.max(ptsnorm - delta, dtsnorm);\n logger.log('Video/PTS/DTS adjusted:' + ptsnorm + '/' + dtsnorm);\n }\n }\n // remember first PTS of our avcSamples, ensure value is positive\n firstPTS = Math.max(0, ptsnorm);\n firstDTS = Math.max(0, dtsnorm);\n }\n //console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${avcSample.pts}/${avcSample.dts}/${this._initDTS}/${ptsnorm}/${dtsnorm}/${(avcSample.pts/4294967296).toFixed(3)}');\n mp4Sample = {\n size: mp4SampleLength,\n duration: 0,\n cts: (ptsnorm - dtsnorm) / pes2mp4ScaleFactor,\n flags: {\n isLeading: 0,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradPrio: 0\n }\n };\n if (avcSample.key === true) {\n // the current sample is a key frame\n mp4Sample.flags.dependsOn = 2;\n mp4Sample.flags.isNonSync = 0;\n } else {\n mp4Sample.flags.dependsOn = 1;\n mp4Sample.flags.isNonSync = 1;\n }\n samples.push(mp4Sample);\n lastDTS = dtsnorm;\n }\n if (samples.length >= 2) {\n mp4Sample.duration = samples[samples.length - 2].duration;\n }\n // next AVC sample DTS should be equal to last sample DTS + last sample duration\n this.nextAvcDts = dtsnorm + mp4Sample.duration * pes2mp4ScaleFactor;\n track.len = 0;\n track.nbNalu = 0;\n if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n // chrome workaround, mark first sample as being a Random Access Point to avoid sourcebuffer append issue\n // https://code.google.com/p/chromium/issues/detail?id=229412\n samples[0].flags.dependsOn = 2;\n samples[0].flags.isNonSync = 0;\n }\n track.samples = samples;\n moof = MP4.moof(track.sequenceNumber++, firstDTS / pes2mp4ScaleFactor, track);\n track.samples = [];\n this.observer.trigger(Event.FRAG_PARSING_DATA, {\n moof: moof,\n mdat: mdat,\n startPTS: firstPTS / pesTimeScale,\n endPTS: (ptsnorm + pes2mp4ScaleFactor * mp4Sample.duration) / pesTimeScale,\n startDTS: firstDTS / pesTimeScale,\n endDTS: (dtsnorm + pes2mp4ScaleFactor * mp4Sample.duration) / pesTimeScale,\n type: 'video',\n nb: samples.length\n });\n }\n\n remuxAudio(track,timeOffset, contiguous) {\n var view,\n i = 8,\n pesTimeScale = this.PES_TIMESCALE,\n pes2mp4ScaleFactor = this.PES2MP4SCALEFACTOR,\n aacSample, mp4Sample,\n unit,\n mdat, moof,\n firstPTS, firstDTS, lastDTS,\n pts, dts, ptsnorm, dtsnorm,\n samples = [];\n /* concatenate the audio data and construct the mdat in place\n (need 8 more bytes to fill length and mdat type) */\n mdat = new Uint8Array(track.len + 8);\n view = new DataView(mdat.buffer);\n view.setUint32(0, mdat.byteLength);\n mdat.set(MP4.types.mdat, 4);\n while (track.samples.length) {\n aacSample = track.samples.shift();\n unit = aacSample.unit;\n mdat.set(unit, i);\n i += unit.byteLength;\n pts = aacSample.pts - this._initDTS;\n dts = aacSample.dts - this._initDTS;\n //logger.log('Audio/PTS:' + aacSample.pts.toFixed(0));\n if (lastDTS !== undefined) {\n ptsnorm = this._PTSNormalize(pts, lastDTS);\n dtsnorm = this._PTSNormalize(dts, lastDTS);\n // we use DTS to compute sample duration, but we use PTS to compute initPTS which is used to sync audio and video\n mp4Sample.duration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor;\n if (mp4Sample.duration < 0) {\n logger.log(`invalid AAC sample duration at PTS:${aacSample.pts}:${mp4Sample.duration}`);\n mp4Sample.duration = 0;\n }\n } else {\n var nextAacPts = this.nextAacPts,delta;\n ptsnorm = this._PTSNormalize(pts, nextAacPts);\n dtsnorm = this._PTSNormalize(dts, nextAacPts);\n delta = Math.round(1000 * (ptsnorm - nextAacPts) / pesTimeScale);\n // if fragment are contiguous, or delta less than 600ms, ensure there is no overlap/hole between fragments\n if (contiguous || Math.abs(delta) < 600) {\n // log delta\n if (delta) {\n if (delta > 1) {\n logger.log(`${delta} ms hole between AAC samples detected,filling it`);\n // set PTS to next PTS, and ensure PTS is greater or equal than last DTS\n } else if (delta < -1) {\n logger.log(`${(-delta)} ms overlapping between AAC samples detected`);\n }\n // set DTS to next DTS\n ptsnorm = dtsnorm = nextAacPts;\n }\n }\n // remember first PTS of our aacSamples, ensure value is positive\n firstPTS = Math.max(0, ptsnorm);\n firstDTS = Math.max(0, dtsnorm);\n }\n //console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${aacSample.pts}/${aacSample.dts}/${this._initDTS}/${ptsnorm}/${dtsnorm}/${(aacSample.pts/4294967296).toFixed(3)}');\n mp4Sample = {\n size: unit.byteLength,\n cts: 0,\n duration:0,\n flags: {\n isLeading: 0,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradPrio: 0,\n dependsOn: 1,\n }\n };\n samples.push(mp4Sample);\n lastDTS = dtsnorm;\n }\n //set last sample duration as being identical to previous sample\n if (samples.length >= 2) {\n mp4Sample.duration = samples[samples.length - 2].duration;\n }\n // next aac sample PTS should be equal to last sample PTS + duration\n this.nextAacPts = ptsnorm + pes2mp4ScaleFactor * mp4Sample.duration;\n //logger.log('Audio/PTS/PTSend:' + aacSample.pts.toFixed(0) + '/' + this.nextAacDts.toFixed(0));\n track.len = 0;\n track.samples = samples;\n moof = MP4.moof(track.sequenceNumber++, firstDTS / pes2mp4ScaleFactor, track);\n track.samples = [];\n this.observer.trigger(Event.FRAG_PARSING_DATA, {\n moof: moof,\n mdat: mdat,\n startPTS: firstPTS / pesTimeScale,\n endPTS: this.nextAacPts / pesTimeScale,\n startDTS: firstDTS / pesTimeScale,\n endDTS: (dtsnorm + pes2mp4ScaleFactor * mp4Sample.duration) / pesTimeScale,\n type: 'audio',\n nb: samples.length\n });\n }\n\n remuxID3(track,timeOffset) {\n var length = track.samples.length, sample;\n // consume samples\n if(length) {\n for(var index = 0; index < length; index++) {\n sample = track.samples[index];\n // setting id3 pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n sample.pts = ((sample.pts - this._initPTS) / this.PES_TIMESCALE);\n sample.dts = ((sample.dts - this._initDTS) / this.PES_TIMESCALE);\n }\n this.observer.trigger(Event.FRAG_PARSING_METADATA, {\n samples:track.samples\n });\n }\n\n track.samples = [];\n timeOffset = timeOffset;\n }\n\n _PTSNormalize(value, reference) {\n var offset;\n if (reference === undefined) {\n return value;\n }\n if (reference < value) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n }\n /* PTS is 33bit (from 0 to 2^33 -1)\n if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n PTS looping occured. fill the gap */\n while (Math.abs(value - reference) > 4294967296) {\n value += offset;\n }\n return value;\n }\n\n}\n\nexport default MP4Remuxer;\n", "var BinarySearch = {\n /**\n * Searches for an item in an array which matches a certain condition.\n * This requires the condition to only match one item in the array,\n * and for the array to be ordered.\n *\n * @param {Array} list The array to search.\n * @param {Function} comparisonFunction\n * Called and provided a candidate item as the first argument.\n * Should return:\n * > -1 if the item should be located at a lower index than the provided item.\n * > 1 if the item should be located at a higher index than the provided item.\n * > 0 if the item is the item you're looking for.\n *\n * @return {*} The object if it is found or null otherwise.\n */\n search: function(list, comparisonFunction) {\n var minIndex = 0;\n var maxIndex = list.length - 1;\n var currentIndex = null;\n var currentElement = null;\n \n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = list[currentIndex];\n \n var comparisonResult = comparisonFunction(currentElement);\n if (comparisonResult > 0) {\n minIndex = currentIndex + 1;\n }\n else if (comparisonResult < 0) {\n maxIndex = currentIndex - 1;\n }\n else {\n return currentElement;\n }\n }\n \n return null;\n }\n};\n\nmodule.exports = BinarySearch;\n", "'use strict';\n\nfunction noop() {}\n\nconst fakeLogger = {\n trace: noop,\n debug: noop,\n log: noop,\n warn: noop,\n info: noop,\n error: noop\n};\n\nlet exportedLogger = fakeLogger;\n\n//let lastCallTime;\n// function formatMsgWithTimeInfo(type, msg) {\n// const now = Date.now();\n// const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n// lastCallTime = now;\n// msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';\n// return msg;\n// }\n\nfunction formatMsg(type, msg) {\n msg = '[' + type + '] > ' + msg;\n return msg;\n}\n\nfunction consolePrintFn(type) {\n const func = window.console[type];\n if (func) {\n return function(...args) {\n if(args[0]) {\n args[0] = formatMsg(type, args[0]);\n }\n func.apply(window.console, args);\n };\n }\n return noop;\n}\n\nfunction exportLoggerFunctions(debugConfig, ...functions) {\n functions.forEach(function(type) {\n exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n });\n}\n\nexport var enableLogs = function(debugConfig) {\n if (debugConfig === true || typeof debugConfig === 'object') {\n exportLoggerFunctions(debugConfig,\n // Remove out from list here to hard-disable a log-level\n //'trace',\n 'debug',\n 'log',\n 'info',\n 'warn',\n 'error'\n );\n // Some browsers don't allow to use bind on console object anyway\n // fallback to default if needed\n try {\n exportedLogger.log();\n } catch (e) {\n exportedLogger = fakeLogger;\n }\n }\n else {\n exportedLogger = fakeLogger;\n }\n};\n\nexport var logger = exportedLogger;\n", diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.min.js b/dashboard-ui/bower_components/hls.js/dist/hls.min.js index 0daeb04d87..7b5bb7a12e 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.min.js +++ b/dashboard-ui/bower_components/hls.js/dist/hls.min.js @@ -1,4 +1,4 @@ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Hls=t()}}(function(){return function s(e,t,r){function i(a,d){if(!t[a]){if(!e[a]){var l="function"==typeof require&&require;if(!d&&l)return l(a,!0);if(n)return n(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var o=t[a]={exports:{}};e[a][0].call(o.exports,function(t){var r=e[a][1][t];return i(r?r:t)},o,o.exports,s,e,t,r)}return t[a].exports}for(var n="function"==typeof require&&require,a=0;ae||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},e.prototype.emit=function(u){var o,a,n,s,e,l;if(this._events||(this._events={}),"error"===u&&(!this._events.error||r(this._events.error)&&!this._events.error.length)){if(o=arguments[1],o instanceof Error)throw o;throw TypeError('Uncaught, unspecified "error" event.')}if(a=this._events[u],i(a))return!1;if(t(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:for(n=arguments.length,s=new Array(n-1),e=1;n>e;e++)s[e-1]=arguments[e];a.apply(this,s)}else if(r(a)){for(n=arguments.length,s=new Array(n-1),e=1;n>e;e++)s[e-1]=arguments[e];for(l=a.slice(),n=l.length,e=0;n>e;e++)l[e].apply(this,s)}return!0},e.prototype.addListener=function(a,n){var s;if(!t(n))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,t(n.listener)?n.listener:n),this._events[a]?r(this._events[a])?this._events[a].push(n):this._events[a]=[this._events[a],n]:this._events[a]=n,r(this._events[a])&&!this._events[a].warned){var s;s=i(this._maxListeners)?e.defaultMaxListeners:this._maxListeners,s&&s>0&&this._events[a].length>s&&(this._events[a].warned=!0,"function"==typeof console.trace)}return this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(i,e){function r(){this.removeListener(i,r),a||(a=!0,e.apply(this,arguments))}if(!t(e))throw TypeError("listener must be a function");var a=!1;return r.listener=e,this.on(i,r),this},e.prototype.removeListener=function(a,i){var e,s,o,n;if(!t(i))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(e=this._events[a],o=e.length,s=-1,e===i||t(e.listener)&&e.listener===i)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,i);else if(r(e)){for(n=o;n-->0;)if(e[n]===i||e[n].listener&&e[n].listener===i){s=n;break}if(0>s)return this;1===e.length?(e.length=0,delete this._events[a]):e.splice(s,1),this._events.removeListener&&this.emit("removeListener",a,i)}return this},e.prototype.removeAllListeners=function(e){var i,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(i in this._events)"removeListener"!==i&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],t(r))this.removeListener(e,r);else for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},e.prototype.listeners=function(e){var r;return r=this._events&&this._events[e]?t(this._events[e])?[this._events[e]]:this._events[e].slice():[]},e.listenerCount=function(e,r){var i;return i=e._events&&e._events[r]?t(e._events[r])?1:e._events[r].length:0}},{}],2:[function(n,i,s){var a=arguments[3],e=arguments[4],r=arguments[5],t=JSON.stringify;i.exports=function(u){for(var i,o=Object.keys(r),n=0,l=o.length;l>n;n++){var s=o[n];if(r[s].exports===u){i=s;break}}if(!i){i=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var d={},n=0,l=o.length;l>n;n++){var s=o[n];d[s]=s}e[i]=[Function(["require","module","exports"],"("+u+")(self)"),d]}var h=Math.floor(Math.pow(16,8)*Math.random()).toString(16),f={};f[i]=i,e[h]=[Function(["require"],"require("+t(i)+")(self)"),f];var c="("+a+")({"+Object.keys(e).map(function(r){return t(r)+":["+e[r][0]+","+t(e[r][1])+"]"}).join(",")+"},{},["+t(h)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL;return new Worker(g.createObjectURL(new Blob([c],{type:"text/javascript"})))}},{}],3:[function(r,i,e){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function e(i,r){for(var t=0;t=e;e++)if(r=e<=this.lastfetchlevel?.8*i:.7*i,r=0&&iP){if(o.nextLoadLevel=l,this.level=l,n=this.levels[l].details,"undefined"==typeof n){this.state=e.WAITING_LEVEL;break}var u=n.fragments,g=u.length,p=u[0].start,w=u[g-1].start+u[g-1].duration,a=void 0;if(n.live){if(d=n.startSN&&S<=n.endSN&&(a=u[S-n.startSN],t.logger.log("live playlist, switching playlist, load frag with next SN: "+a.sn))}a||(a=u[Math.min(g-1,Math.round(g/2))],t.logger.log("live playlist, switching playlist, unknown, load middle frag : "+a.sn))}}else p>d&&(a=u[0]);if(!a){var m;if(m=w>d?f.default.search(u,function(e){return e.start+e.duration<=d?1:e.start>d?-1:0}):u[g-1],m&&(a=m,p=m.start,c&&a.level===c.level&&a.sn===c.sn))if(a.sn1&&(a.expectedLen=Math.round(a.duration*this.levels[l].bitrate/8),a.trequest=performance.now()),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,a.loadCounter){a.loadCounter++;var D=this.config.fragLoadingLoopThreshold;if(a.loadCounter>D&&Math.abs(this.fragLoadIdx-a.loadIdx)1){var T=performance.now()-s.trequest;if(T>500*s.duration){var k=1e3*s.loaded/T;s.expectedLenb&&R>O&&(t.logger.warn("loading too slow, abort fragment loading"),t.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay :"+R.toFixed(1)+"/"+b.toFixed(1)+"/"+O.toFixed(1)),s.loader.abort(),o.trigger(r.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:s}),this.state=e.IDLE)}}break;case e.PARSING:break;case e.PARSED:case e.APPENDING:if(this.sourceBuffer){if(this.media.error)return t.logger.error("trying to append although a media error occured, switch to ERROR state"),void(this.state=e.ERROR);if(this.sourceBuffer.audio&&this.sourceBuffer.audio.updating||this.sourceBuffer.video&&this.sourceBuffer.video.updating);else if(this.mp4segments.length){var A=this.mp4segments.shift();try{this.sourceBuffer[A.type].appendBuffer(A.data),this.appendError=0}catch(a){this.mp4segments.unshift(A),this.appendError?this.appendError++:this.appendError=1;var y={type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_APPEND_ERROR,frag:this.fragCurrent};if(this.appendError>this.config.appendErrorMaxRetry)return t.logger.log("fail "+this.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),y.fatal=!0,o.trigger(r.default.ERROR,y),void(this.state=e.ERROR);y.fatal=!1,o.trigger(r.default.ERROR,y)}this.state=e.APPENDING}}else this.state=e.IDLE;break;case e.BUFFER_FLUSHING:for(;this.flushRange.length;){var x=this.flushRange[0];if(!this.flushBuffer(x.start,x.end))break;this.flushRange.shift()}0===this.flushRange.length&&(this.immediateSwitch&&this.immediateLevelSwitchEnd(),this.state=e.IDLE,this.fragPrevious=null)}this._checkFragmentChanged(),this._checkBuffer()}},{key:"bufferInfo",value:function(i,a){var e,n=this.media,t=n.buffered,r=[];for(e=0;ed&&(t[u-1].end=r[e].end):t.push(r[e])}else t.push(r[e])}for(e=0,o=0,l=n=i;e=s&&h>i?(l=s,n=h+a,o=n-i):s>i+a&&(f=s)}return{len:o,start:l,end:n,nextStart:f}}},{key:"getBufferRange",value:function(r){var e,t;for(e=this.bufferRange.length-1;e>=0;e--)if(t=this.bufferRange[e],r>=t.start&&r<=t.end)return t;return null}},{key:"followingBufferRange",value:function(e){return e?this.getBufferRange(e.end+.5):null}},{key:"isBuffered",value:function(r){for(var i=this.media,t=i.buffered,e=0;e=t.start(e)&&r<=t.end(e))return!0;return!1}},{key:"_checkFragmentChanged",value:function(){var t,e,i=this.media;if(i&&i.seeking===!1&&(e=i.currentTime,e>i.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),this.isBuffered(e)?t=this.getBufferRange(e):this.isBuffered(e+.1)&&(t=this.getBufferRange(e+.1)),t)){var a=t.frag;a!==this.fragPlaying&&(this.fragPlaying=a,this.hls.trigger(r.default.FRAG_CHANGED,{frag:a}))}}},{key:"flushBuffer",value:function(d,l){var r,e,o,s,i,a;if(this.flushBufferCounter++<2*this.bufferRange.length&&this.sourceBuffer)for(var u in this.sourceBuffer){if(r=this.sourceBuffer[u],r.updating)return!1;for(e=0;e.5)return t.logger.log("flush "+u+" ["+i+","+a+"], of ["+o+","+s+"], pos:"+this.media.currentTime),r.remove(i,a),!1}var n,h=[];for(e=0;e "+a+"/"+i.videoCodec+"; audio => "+r+"/"+i.audioCodec),(void 0===r||void 0===i.audioCodec)&&(r=i.audioCodec),(void 0===a||void 0===i.videoCodec)&&(a=i.videoCodec);var s=navigator.userAgent.toLowerCase();this.audiocodecswitch&&1!==i.audioChannelCount&&-1===s.indexOf("android")&&-1===s.indexOf("firefox")&&(r="mp4a.40.5"),this.sourceBuffer||(this.sourceBuffer={},t.logger.log("selected A/V codecs for sourceBuffers:"+r+","+a),r&&(n=this.sourceBuffer.audio=this.mediaSource.addSourceBuffer("video/mp4;codecs="+r),n.addEventListener("updateend",this.onsbue),n.addEventListener("error",this.onsbe)),a&&(n=this.sourceBuffer.video=this.mediaSource.addSourceBuffer("video/mp4;codecs="+a),n.addEventListener("updateend",this.onsbue),n.addEventListener("error",this.onsbe))),r&&this.mp4segments.push({type:"audio",data:i.audioMoov}),a&&this.mp4segments.push({type:"video",data:i.videoMoov}),this.tick()}}},{key:"onFragParsing",value:function(s,i){if(this.state===e.PARSING){this.tparse2=Date.now();var a=this.levels[this.level],n=this.fragCurrent;t.logger.log("parsed data, type/startPTS/endPTS/startDTS/endDTS/nb:"+i.type+"/"+i.startPTS.toFixed(3)+"/"+i.endPTS.toFixed(3)+"/"+i.startDTS.toFixed(3)+"/"+i.endDTS.toFixed(3)+"/"+i.nb);var l=o.default.updateFragPTS(a.details,n.sn,i.startPTS,i.endPTS);this.hls.trigger(r.default.LEVEL_PTS_UPDATED,{details:a.details,level:this.level,drift:l}),this.mp4segments.push({type:i.type,data:i.moof}),this.mp4segments.push({type:i.type,data:i.mdat}),this.nextLoadPosition=i.endPTS,this.bufferRange.push({type:i.type,start:i.startPTS,end:i.endPTS,frag:n}),this.tick()}else t.logger.warn("not in PARSING state, discarding "+s)}},{key:"onFragParsed",value:function(){this.state===e.PARSING&&(this.state=e.PARSED,this.stats.tparsed=performance.now(),this.tick())}},{key:"onError",value:function(a,r){switch(r.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:case i.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case i.ErrorDetails.LEVEL_LOAD_ERROR:case i.ErrorDetails.LEVEL_LOAD_TIMEOUT:case i.ErrorDetails.KEY_LOAD_ERROR:case i.ErrorDetails.KEY_LOAD_TIMEOUT:t.logger.warn("mediaController: "+r.details+" while loading frag,switch to "+(r.fatal?"ERROR":"IDLE")+" state ..."),this.state=r.fatal?e.ERROR:e.IDLE}}},{key:"onSBUpdateEnd",value:function(){if(this.state===e.APPENDING&&0===this.mp4segments.length){var a=this.fragCurrent,i=this.stats;a&&(this.fragPrevious=a,i.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*i.length/(i.tbuffered-i.tfirst)),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:i,frag:a}),t.logger.log("media buffered : "+this.timeRangesToString(this.media.buffered)),this.state=e.IDLE)}this.tick()}},{key:"_checkBuffer",value:function(){var e=this.media;if(e){var n=e.readyState;if(n){var i=this.seekAfterBuffered;if(i)e.duration>=i&&(e.currentTime=i,this.seekAfterBuffered=void 0);else if(3>n){var a=e.currentTime,s=this.bufferInfo(a,0);if(0===s.len){var r=s.nextStart;r&&.3>r-a&&(t.logger.log("adjust currentTime from "+a+" to "+r),e.currentTime=r)}}}}}},{key:"swapAudioCodec",value:function(){this.audioCodecSwap=!this.audioCodecSwap}},{key:"onSBUpdateError",value:function(a){t.logger.error("sourceBuffer error:"+a),this.state=e.ERROR,this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1,frag:this.fragCurrent})}},{key:"timeRangesToString",value:function(t){for(var r="",i=t.length,e=0;i>e;e++)r+="["+t.start(e)+","+t.end(e)+"]";return r}},{key:"onMediaSourceOpen",value:function(){t.logger.log("media source opened"),this.hls.trigger(r.default.MEDIA_ATTACHED),this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvmetadata=this.onMediaMetadata.bind(this),this.onvended=this.onMediaEnded.bind(this);var e=this.media;e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("loadedmetadata",this.onvmetadata),e.addEventListener("ended",this.onvended),this.levels&&this.config.autoStartLoad&&this.startLoad(), -this.mediaSource.removeEventListener("sourceopen",this.onmso)}},{key:"onMediaSourceClose",value:function(){t.logger.log("media source closed")}},{key:"onMediaSourceEnded",value:function(){t.logger.log("media source ended")}},{key:"currentLevel",get:function(){if(this.media){var e=this.getBufferRange(this.media.currentTime);if(e)return e.frag.level}return-1}},{key:"nextBufferRange",get:function(){return this.media?this.followingBufferRange(this.getBufferRange(this.media.currentTime)):null}},{key:"nextLevel",get:function(){var e=this.nextBufferRange;return e?e.frag.level:-1}}]),a}();s.default=y,u.exports=s.default},{"../demux/demuxer":12,"../errors":16,"../events":17,"../helper/level-helper":18,"../utils/binary-search":25,"../utils/logger":26}],6:[function(n,t,e){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function e(i,r){for(var t=0;te;e++)c[(a[e]=e<<1^283*(e>>7))^e]=e;for(i=r=0;!f[i];i^=u||1,r=c[r]||1)for(t=r^r<<1^r<<2^r<<3^r<<4,t=t>>8^255&t^99,f[i]=t,g[t]=i,d=a[h=a[u=a[i]]],l=16843009*d^65537*h^257*u^16843008*i,s=257*a[t]^16843008*t,e=0;4>e;e++)n[e][i]=s=s<<24^s>>>8,o[e][t]=l=l<<24^l>>>8;for(e=0;5>e;e++)n[e]=n[e].slice(0),o[e]=o[e].slice(0)}},{key:"decrypt",value:function(A,p,_,b,E,m){var f,v,g,n,e=this._key[1],t=A^e[0],i=b^e[1],a=_^e[2],r=p^e[3],y=e.length/4-2,s=4,o=this._tables[1],h=o[0],d=o[1],u=o[2],l=o[3],c=o[4];for(n=0;y>n;n++)f=h[t>>>24]^d[i>>16&255]^u[a>>8&255]^l[255&r]^e[s],v=h[i>>>24]^d[a>>16&255]^u[r>>8&255]^l[255&t]^e[s+1],g=h[a>>>24]^d[r>>16&255]^u[t>>8&255]^l[255&i]^e[s+2],r=h[r>>>24]^d[t>>16&255]^u[i>>8&255]^l[255&a]^e[s+3],s+=4,t=f,i=v,a=g;for(n=0;4>n;n++)E[(3&-n)+m]=c[t>>>24]<<24^c[i>>16&255]<<16^c[a>>8&255]<<8^c[255&r]^e[s++],f=t,t=i,i=a,a=r,r=f}}]),e}();e.default=a,t.exports=e.default},{}],7:[function(t,r,e){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t>8|e>>>24}},{key:"doDecrypt",value:function(i,v,a){var u,f,s,h,l,c,d,n,e,r=new Int32Array(i.buffer,i.byteOffset,i.byteLength>>2),p=new o.default(Array.prototype.slice.call(v)),g=new Uint8Array(i.byteLength),t=new Int32Array(g.buffer);for(u=~~a[0],f=~~a[1],s=~~a[2],h=~~a[3],e=0;ee&&(255!==t[e]||240!==(240&t[e+1]));e++);for(a.audiosamplerate||(s=this._ADTStoAudioConfig(t,e,v),a.config=s.config,a.audiosamplerate=s.samplerate,a.channelCount=s.channelCount,a.codec=s.codec,a.timescale=this.remuxer.timescale,a.duration=this.remuxer.timescale*g,r.logger.log("parsed codec:"+a.codec+",rate:"+s.samplerate+",nb channel:"+s.channelCount)),h=0;l>e+5&&(n=(3&t[e+3])<<11,n|=t[e+4]<<3,n|=(224&t[e+5])>>>5,o=1&t[e+1]?7:9,n-=o,f=Math.round(90*u+1024*h*9e4/a.audiosamplerate),n>0&&l>=e+o+n);)for(c={unit:t.subarray(e+o,e+o+n),pts:f,dts:f},a.samples.push(c),a.len+=n,e+=n+o,h++;l-1>e&&(255!==t[e]||240!==(240&t[e+1]));e++);this.remuxer.remux(this._aacTrack,{samples:[]},{samples:[{pts:u,dts:u,unit:d.payload}]},p)}},{key:"_ADTStoAudioConfig",value:function(l,u,s){var i,e,n,o,t,h=navigator.userAgent.toLowerCase(),d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return i=((192&l[u+2])>>>6)+1,e=(60&l[u+2])>>>2,e>d.length-1?void this.observer.trigger(Event.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+e}):(o=(1&l[u+2])<<2,o|=(192&l[u+3])>>>6,r.logger.log("manifest codec:"+s+",ADTS data:type:"+i+",sampleingIndex:"+e+"["+d[e]+"Hz],channelConfig:"+o),-1!==h.indexOf("firefox")?e>=6?(i=5,t=new Array(4),n=e-3):(i=2,t=new Array(2),n=e):-1!==h.indexOf("android")?(i=2,t=new Array(2),n=e):(i=5,t=new Array(4),s&&-1!==s.indexOf("mp4a.40.5")||!s&&e>=6?n=e-3:(s&&-1!==s.indexOf("mp4a.40.2")&&(e>=6||1===o)&&(i=2,t=new Array(2)),n=e)),t[0]=i<<3,t[0]|=(14&e)>>1,t[1]|=(1&e)<<7,t[1]|=o<<3,5===i&&(t[1]|=(14&n)>>1,t[2]=(1&n)<<7,t[2]|=8,t[3]=0),{config:t,samplerate:d[e],channelCount:o,codec:"mp4a.40."+i})}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(t){var e,r,a=new i.default(t);if(a.hasTimeStamp)for(e=a.length,r=t.length;r-1>e;e++)if(255===t[e]&&240===(240&t[e+1]))return!0;return!1}}]),e}();t.default=s,n.exports=t.default},{"../demux/id3":14,"../errors":16,"../utils/logger":26}],10:[function(e,o,t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;t1?r-1:0),e=1;r>e;e++)a[e-1]=arguments[e];t.emit.apply(t,[i,i].concat(a))},t.off=function(a){for(var r=arguments.length,i=Array(r>1?r-1:0),e=1;r>e;e++)i[e-1]=arguments[e];t.removeListener.apply(t,[a].concat(i))},r.addEventListener("message",function(i){switch(i.data.cmd){case"init":r.demuxer=new n.default(t,h.default);break;case"demux":var e=i.data;r.demuxer.push(new Uint8Array(e.data),e.audioCodec,e.videoCodec,e.timeOffset,e.cc,e.level,e.sn,e.duration)}}),t.on(e.default.FRAG_PARSING_INIT_SEGMENT,function(a,t){var e={event:a},i=[];t.audioCodec&&(e.audioCodec=t.audioCodec,e.audioMoov=t.audioMoov.buffer,e.audioChannelCount=t.audioChannelCount,i.push(e.audioMoov)),t.videoCodec&&(e.videoCodec=t.videoCodec,e.videoMoov=t.videoMoov.buffer,e.videoWidth=t.videoWidth,e.videoHeight=t.videoHeight,i.push(e.videoMoov)),r.postMessage(e,i)}),t.on(e.default.FRAG_PARSING_DATA,function(i,e){var t={event:i,type:e.type,startPTS:e.startPTS,endPTS:e.endPTS,startDTS:e.startDTS,endDTS:e.endDTS,moof:e.moof.buffer,mdat:e.mdat.buffer,nb:e.nb};r.postMessage(t,[t.moof,t.mdat])}),t.on(e.default.FRAG_PARSED,function(e){r.postMessage({event:e})}),t.on(e.default.ERROR,function(e,t){r.postMessage({event:e,data:t})}),t.on(e.default.FRAG_PARSING_METADATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)})};i.default=o,s.exports=i.default},{"../demux/demuxer-inline":10,"../events":17,"../remux/mp4-remuxer":24,events:1}],12:[function(e,u,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;t0&&null!=e&&null!=e.key&&"AES-128"===e.method){null==this.decrypter&&(this.decrypter=new p.default(this.hls));var u=this;this.decrypter.decrypt(t,e.key,e.iv,function(e){u.pushDecrypted(e,r,i,a,n,s,o,l)})}else this.pushDecrypted(t,r,i,a,n,s,o,l)}},{key:"onWorkerMessage",value:function(e){switch(e.data.event){case t.default.FRAG_PARSING_INIT_SEGMENT:var r={};e.data.audioMoov&&(r.audioMoov=new Uint8Array(e.data.audioMoov),r.audioCodec=e.data.audioCodec,r.audioChannelCount=e.data.audioChannelCount),e.data.videoMoov&&(r.videoMoov=new Uint8Array(e.data.videoMoov),r.videoCodec=e.data.videoCodec,r.videoWidth=e.data.videoWidth,r.videoHeight=e.data.videoHeight),this.hls.trigger(t.default.FRAG_PARSING_INIT_SEGMENT,r);break;case t.default.FRAG_PARSING_DATA:this.hls.trigger(t.default.FRAG_PARSING_DATA,{moof:new Uint8Array(e.data.moof),mdat:new Uint8Array(e.data.mdat),startPTS:e.data.startPTS,endPTS:e.data.endPTS,startDTS:e.data.startDTS,endDTS:e.data.endDTS,type:e.data.type,nb:e.data.nb});break;case t.default.FRAG_PARSING_METADATA:this.hls.trigger(t.default.FRAG_PARSING_METADATA,{samples:e.data.samples});break;default:this.hls.trigger(e.data.event,e.data.data)}}}]),r}();i.default=y,u.exports=i.default},{"../crypt/decrypter":8,"../demux/demuxer-inline":10,"../demux/demuxer-worker":11,"../events":17,"../remux/mp4-remuxer":24,"../utils/logger":26,webworkify:2}],13:[function(t,r,e){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function e(i,r){for(var t=0;te?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}},{key:"readBits",value:function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&n.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0?r<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"skipScalingList",value:function(a){var t,i,r=8,e=8;for(t=0;a>t;t++)0!==e&&(i=this.readEG(),e=(r+i+256)%256),r=0===e?r:e}},{key:"readSPS",value:function(){var r,v,p,l,a,n,i,o,t,s=0,d=0,h=0,f=0,c=1;if(this.readUByte(),r=this.readUByte(),v=this.readBits(5),this.skipBits(3),p=this.readUByte(),this.skipUEG(),100===r||110===r||122===r||144===r){var g=this.readUEG();if(3===g&&this.skipBits(1),this.skipUEG(),this.skipUEG(),this.skipBits(1),this.readBoolean())for(o=3!==g?8:12,t=0;o>t;t++)this.readBoolean()&&(6>t?this.skipScalingList(16):this.skipScalingList(64))}this.skipUEG();var u=this.readUEG();if(0===u)this.readUEG();else if(1===u)for(this.skipBits(1),this.skipEG(),this.skipEG(),l=this.readUEG(),t=0;l>t;t++)this.skipEG();if(this.skipUEG(),this.skipBits(1),a=this.readUEG(),n=this.readUEG(),i=this.readBits(1),0===i&&this.skipBits(1),this.skipBits(1),this.readBoolean()&&(s=this.readUEG(),d=this.readUEG(),h=this.readUEG(),f=this.readUEG()),this.readBoolean()&&this.readBoolean()){var e=void 0,y=this.readUByte();switch(y){case 2:e=[12,11];break;case 3:e=[10,11];break;case 4:e=[16,11];break;case 5:e=[40,33];break;case 6:e=[24,11];break;case 7:e=[20,11];break;case 8:e=[32,11];break;case 9:e=[80,33];break;case 10:e=[18,11];break;case 11:e=[15,11];break;case 12:e=[64,33];break;case 13:e=[160,99];break;case 14:e=[4,3];break;case 15:e=[3,2];break;case 16:e=[2,1];break;case 255:e=[this.readUByte()<<8|this.readUByte(),this.readUByte()<<8|this.readUByte()]}e&&(c=e[0]/e[1])}return{width:(16*(a+1)-2*s-2*d)*c,height:(2-i)*(n+1)*16-(i?2:4)*(h+f)}}},{key:"readSliceType",value:function(){return this.readUByte(),this.readUEG(),this.readUEG()}}]),e}();e.default=s,r.exports=e.default},{"../utils/logger":26}],14:[function(r,i,e){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;tr);return t}},{key:"_parseID3Frames",value:function(r,e,n){for(var a,s,o,l,i;n>=e+8;)switch(a=this.readUTF(r,e,4),e+=4,s=r[e++]<<24+r[e++]<<16+r[e++]<<8+r[e++],l=r[e++]<<8+r[e++],o=e,a){case"PRIV":if("com.apple.streaming.transportStreamTimestamp"===this.readUTF(r,e,44)){e+=44,e+=4;var u=1&r[e++];this._hasTimeStamp=!0,i=((r[e++]<<23)+(r[e++]<<15)+(r[e++]<<7)+r[e++])/45,u&&(i+=47721858.84),i=Math.round(i),t.logger.trace("ID3 timestamp found: "+i),this._timeStamp=i}}}},{key:"hasTimeStamp",get:function(){return this._hasTimeStamp}},{key:"timeStamp",get:function(){return this._timeStamp}},{key:"length",get:function(){return this._length}},{key:"payload",get:function(){return this._payload}}]),e}();e.default=s,i.exports=e.default},{"../utils/logger":26}],15:[function(r,s,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;tr;r+=188)if(71===i[r]){if(d=!!(64&i[r+1]),u=((31&i[r+1])<<8)+i[r+2],y=(48&i[r+3])>>4,y>1){if(n=r+5+i[r+4],n===r+188)continue}else n=r+4;p?u===g?(d&&(l&&this._parseAVCPES(this._parsePES(l)),l={data:[],size:0}),l&&(l.data.push(i.subarray(n,r+188)),l.size+=r+188-n)):u===c?(d&&(o&&this._parseAACPES(this._parsePES(o)),o={data:[],size:0}),o&&(o.data.push(i.subarray(n,r+188)),o.size+=r+188-n)):u===m&&(d&&(s&&this._parseID3PES(this._parsePES(s)),s={data:[],size:0}),s&&(s.data.push(i.subarray(n,r+188)),s.size+=r+188-n)):(d&&(n+=i[n]+1),0===u?this._parsePAT(i,n):u===this._pmtId&&(this._parsePMT(i,n),p=this.pmtParsed=!0,g=this._avcTrack.id,c=this._aacTrack.id,m=this._id3Track.id))}else this.observer.trigger(a.default.ERROR,{type:t.ErrorTypes.MEDIA_ERROR,details:t.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});l&&this._parseAVCPES(this._parsePES(l)),o&&this._parseAACPES(this._parsePES(o)),s&&this._parseID3PES(this._parsePES(s)),this.remux()}},{key:"remux",value:function(){this.remuxer.remux(this._aacTrack,this._avcTrack,this._id3Track,this.timeOffset,this.contiguous)}},{key:"destroy",value:function(){this.switchLevel(),this._initPTS=this._initDTS=void 0,this._duration=0}},{key:"_parsePAT",value:function(e,t){this._pmtId=(31&e[t+10])<<8|e[t+11]}},{key:"_parsePMT",value:function(r,t){var a,n,s,i;for(a=(15&r[t+1])<<8|r[t+2],n=t+3+a-4,s=(15&r[t+10])<<8|r[t+11],t+=12+s;n>t;){switch(i=(31&r[t+1])<<8|r[t+2],r[t]){case 15:this._aacTrack.id=i;break;case 21:this._id3Track.id=i;break;case 27:this._avcTrack.id=i;break;default:e.logger.log("unkown stream type:"+r[t])}t+=((15&r[t+3])<<8|r[t+4])+5}}},{key:"_parsePES",value:function(t){var e,a,u,o,d,n,r,i,s,l=0;if(e=t.data[0],u=(e[0]<<16)+(e[1]<<8)+e[2],1===u){for(o=(e[4]<<8)+e[5],a=e[7],192&a&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,r>4294967295&&(r-=8589934592),64&a?(i=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i>4294967295&&(i-=8589934592)):i=r),d=e[8],s=d+9,t.data[0]=t.data[0].subarray(s),t.size-=s,n=new Uint8Array(t.size);t.data.length;)e=t.data.shift(),n.set(e,l),l+=e.byteLength;return{data:n,pts:r,dts:i,len:o}}return null}},{key:"_parseAVCPES",value:function(a){var v,i,h=this,t=this._avcTrack,l=t.samples,p=this._parseAVCNALu(a.data),s=[],n=!1,g=!1,f=0;if(0===p.length&&l.length>0){var c=l[l.length-1],o=c.units.units[c.units.units.length-1],d=new Uint8Array(o.data.byteLength+a.data.byteLength);d.set(o.data,0),d.set(a.data,o.data.byteLength),o.data=d,c.units.length+=a.data.byteLength,t.len+=a.data.byteLength}a.data=null;var r="";p.forEach(function(e){switch(e.type){case 1:i=!0,n&&(r+="NDR ");break;case 5:i=!0,n&&(r+="IDR "),g=!0;break;case 6:i=!0,n&&(r+="SEI ");break;case 7:if(i=!0,n&&(r+="SPS "),!t.sps){var c=new u.default(e.data),l=c.readSPS();t.width=l.width,t.height=l.height,t.sps=[e.data],t.timescale=h.remuxer.timescale,t.duration=h.remuxer.timescale*h._duration;for(var v=e.data.subarray(1,4),d="avc1.",o=0;3>o;o++){var a=v[o].toString(16);a.length<2&&(a="0"+a),d+=a}t.codec=d}break;case 8:i=!0,n&&(r+="PPS "),t.pps||(t.pps=[e.data]);break;case 9:i=!0,n&&(r+="AUD ");break;default:i=!1,r+="unknown NAL "+e.type+" "}i&&(s.push(e),f+=e.data.byteLength)}),(n||r.length)&&e.logger.log(r),s.length&&(g===!0||t.sps)&&(v={units:{units:s,length:f},pts:a.pts,dts:a.dts,key:g},l.push(v),t.len+=f,t.nbNalu+=s.length)}},{key:"_parseAVCNALu",value:function(i){for(var n,r,o,s,a,u,t=0,d=i.byteLength,e=0,h=[];d>t;)switch(n=i[t++],e){case 0:0===n&&(e=1);break;case 1:e=0===n?2:0;break;case 2:case 3:if(0===n)e=3;else if(1===n){if(s=31&i[t],a)o={data:i.subarray(a,t-e-1),type:u},h.push(o);else if(r=t-e-1,r&&this._avcTrack.samples.length){var f=this._avcTrack.samples[this._avcTrack.samples.length-1],l=f.units.units[f.units.units.length-1],c=new Uint8Array(l.data.byteLength+r);c.set(l.data,0),c.set(i.subarray(0,r),l.data.byteLength),l.data=c,f.units.length+=r,this._avcTrack.len+=r}a=t,u=s,(1===s||5===s)&&(t=d),e=0}else e=0}return a&&(o={data:i.subarray(a,d),type:u},h.push(o)),h}},{key:"_parseAACPES",value:function(p){var v,l,n,r,u,f,h,o,s=this._aacTrack,i=p.data;if(this.aacOverFlow){var g=new Uint8Array(this.aacOverFlow.byteLength+i.byteLength);g.set(this.aacOverFlow,0),g.set(i,this.aacOverFlow.byteLength),i=g}for(r=0,o=i.length;o-1>r&&(255!==i[r]||240!==(240&i[r+1]));r++);if(r){var c,d;if(o-1>r?(c="AAC PES did not start with ADTS header,offset:"+r,d=!1):(c="no ADTS header found in AAC PES",d=!0),this.observer.trigger(a.default.ERROR,{type:t.ErrorTypes.MEDIA_ERROR,details:t.ErrorDetails.FRAG_PARSING_ERROR,fatal:d,reason:c}),d)return}for(s.audiosamplerate||(l=this._ADTStoAudioConfig(i,r,this.audioCodec),s.config=l.config,s.audiosamplerate=l.samplerate,s.channelCount=l.channelCount,s.codec=l.codec,s.timescale=this.remuxer.timescale,s.duration=this.remuxer.timescale*this._duration,e.logger.log("parsed codec:"+s.codec+",rate:"+l.samplerate+",nb channel:"+l.channelCount)),h=0;o>r+5&&(n=(3&i[r+3])<<11,n|=i[r+4]<<3,n|=(224&i[r+5])>>>5,u=1&i[r+1]?7:9,n-=u,f=Math.round(p.pts+1024*h*this.PES_TIMESCALE/s.audiosamplerate),n>0&&o>=r+u+n);)for(v={unit:i.subarray(r+u,r+u+n),pts:f,dts:f},this._aacTrack.samples.push(v),this._aacTrack.len+=n,r+=n+u,h++;o-1>r&&(255!==i[r]||240!==(240&i[r+1]));r++);o>r?this.aacOverFlow=i.subarray(r,o):this.aacOverFlow=null}},{key:"_ADTStoAudioConfig",value:function(u,d,s){var n,r,o,l,i,f=navigator.userAgent.toLowerCase(),h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return n=((192&u[d+2])>>>6)+1,r=(60&u[d+2])>>>2,r>h.length-1?void this.observer.trigger(a.default.ERROR,{type:t.ErrorTypes.MEDIA_ERROR,details:t.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+r}):(l=(1&u[d+2])<<2,l|=(192&u[d+3])>>>6,e.logger.log("manifest codec:"+s+",ADTS data:type:"+n+",sampleingIndex:"+r+"["+h[r]+"Hz],channelConfig:"+l),-1!==f.indexOf("firefox")?r>=6?(n=5,i=new Array(4),o=r-3):(n=2,i=new Array(2),o=r):-1!==f.indexOf("android")?(n=2,i=new Array(2),o=r):(n=5,i=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&r>=6?o=r-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(r>=6||1===l)||!s&&1===l)&&(n=2,i=new Array(2)),o=r)),i[0]=n<<3,i[0]|=(14&r)>>1,i[1]|=(1&r)<<7,i[1]|=l<<3,5===n&&(i[1]|=(14&o)>>1,i[2]=(1&o)<<7,i[2]|=8,i[3]=0),{config:i,samplerate:h[r],channelCount:l,codec:"mp4a.40."+n})}},{key:"_parseID3PES",value:function(e){this._id3Track.samples.push(e)}}],[{key:"probe",value:function(e){return e.length>=564&&71===e[0]&&71===e[188]&&71===e[376]?!0:!1}}]),r}();i.default=o,s.exports=i.default},{"../errors":16,"../events":17,"../utils/logger":26,"./exp-golomb":13}],16:[function(i,a,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t={NETWORK_ERROR:"hlsNetworkError",MEDIA_ERROR:"hlsMediaError",OTHER_ERROR:"hlsOtherError"};e.ErrorTypes=t;var r={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError"};e.ErrorDetails=r},{}],17:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsPTSUpdated",LEVEL_SWITCH:"hlsLevelSwitch",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_METADATA:"hlsFraParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFPSDrop",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded"},t.exports=e.default},{}],18:[function(r,i,e){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;td)return void(i.PTSKnown=!1);for(var r=c;d>=r;r++){var l=f[h+r],a=o[r];u=l.cc-a.cc,isNaN(l.startPTS)||(a.start=a.startPTS=l.startPTS,a.endPTS=l.endPTS,a.duration=l.duration,s=a)}if(u)for(t.logger.log("discontinuity sliding from playlist, take drift into account"),r=0;ri.endSN)return 0;o=l-i.startSN,n=i.fragments,r=n[o],isNaN(r.startPTS)||(a=Math.max(a,r.startPTS),s=Math.min(s,r.endPTS));var u=a-r.start;for(r.start=r.startPTS=a,r.endPTS=s,r.duration=s-a,t=o;t>0;t--)e.updatePTS(n,t,t-1);for(t=o;ti?r.start=e.start+e.duration:r.start=e.start-r.duration:a>i?(e.duration=n-e.start,e.duration<0&&t.logger.error("negative duration computed for "+e+", there should be some duration drift between playlist and fragment!")):(r.duration=e.start-n,r.duration<0&&t.logger.error("negative duration computed for "+r+", there should be some duration drift between playlist and fragment!"))}}]),e}();e.default=s,i.exports=e.default},{"../utils/logger":26}],19:[function(t,c,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(a,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t1?t-1:0),e=1;t>e;e++)a[e-1]=arguments[e];r.emit.apply(r,[i,i].concat(a))},r.off=function(a){for(var t=arguments.length,i=Array(t>1?t-1:0),e=1;t>e;e++)i[e-1]=arguments[e];r.removeListener.apply(r,[a].concat(i))},this.on=r.on.bind(r),this.off=r.off.bind(r),this.trigger=r.trigger.bind(r),this.playlistLoader=new d.default(this),this.fragmentLoader=new f.default(this),this.levelController=new m.default(this),this.abrController=new i.abrController(this),this.mediaController=new i.mediaController(this),this.keyLoader=new S.default(this)}return n(t,null,[{key:"isSupported",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"Events",get:function(){return i.default}},{key:"ErrorTypes",get:function(){return s.ErrorTypes}},{key:"ErrorDetails",get:function(){return s.ErrorDetails}}]),n(t,[{key:"destroy",value:function(){e.logger.log("destroy"),this.trigger(i.default.DESTROYING),this.detachMedia(),this.playlistLoader.destroy(),this.fragmentLoader.destroy(),this.levelController.destroy(),this.mediaController.destroy(),this.keyLoader.destroy(),this.url=null,this.observer.removeAllListeners()}},{key:"attachMedia",value:function(t){e.logger.log("attachMedia"),this.media=t,this.trigger(i.default.MEDIA_ATTACHING,{media:t})}},{key:"detachMedia",value:function(){e.logger.log("detachMedia"),this.trigger(i.default.MEDIA_DETACHING),this.media=null}},{key:"loadSource",value:function(t){e.logger.log("loadSource:"+t),this.url=t,this.trigger(i.default.MANIFEST_LOADING,{url:t})}},{key:"startLoad",value:function(){e.logger.log("startLoad"),this.mediaController.startLoad()}},{key:"swapAudioCodec",value:function(){e.logger.log("swapAudioCodec"),this.mediaController.swapAudioCodec()}},{key:"recoverMediaError",value:function(){e.logger.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)}},{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.mediaController.currentLevel},set:function(t){e.logger.log("set currentLevel:"+t),this.loadLevel=t,this.mediaController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.mediaController.nextLevel},set:function(t){e.logger.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.mediaController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){e.logger.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel()},set:function(e){this.levelController.level=e}},{key:"firstLevel",get:function(){return this.levelController.firstLevel},set:function(t){e.logger.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){e.logger.log("set startLevel:"+t),this.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this.abrController.autoLevelCapping},set:function(t){e.logger.log("set autoLevelCapping:"+t),this.abrController.autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}}]),t}();a.default=l,c.exports=a.default},{"./controller/abr-controller":3,"./controller/level-controller":4,"./controller/mse-media-controller":5,"./errors":16,"./events":17,"./loader/fragment-loader":20,"./loader/key-loader":21,"./loader/playlist-loader":22,"./utils/logger":26,"./utils/xhr-loader":28,events:1}],20:[function(i,a,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;t0;)switch(e.shift()){case"RES":t.width=parseInt(e.shift()),t.height=parseInt(e.shift());break;case"BAND":t.bitrate=parseInt(e.shift());break;case"NAME":t.name=e.shift();break;case"CODECS":for(i=e.shift().split(",");i.length>0;)r=i.shift(),-1!==r.indexOf("avc1")?t.videoCodec=this.avc1toavcoti(r):t.audioCodec=r}a.push(t),t={}}return a}},{key:"avc1toavcoti",value:function(r){var e,t=r.split(".");return t.length>2?(e=t.shift()+".",e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).substr(-4)):e=r,e}},{key:"parseKeyParamsByRegex",value:function(t,r){var e=r.exec(t);return e&&(e.shift(),e=e.filter(function(e){return void 0!==e}),2===e.length)?e[1]:null}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(A,n,_){var t,m,i,s,a,c=0,u=0,r={url:n,fragments:[],live:!0,startSN:0},v=0,e={method:null,key:null,iv:null,uri:null};for(m=/(?:#EXT-X-(MEDIA-SEQUENCE):(\d+))|(?:#EXT-X-(TARGETDURATION):(\d+))|(?:#EXT-X-(KEY):(.*))|(?:#EXT(INF):([\d\.]+)[^\r\n]*([\r\n]+[^#|\r\n]+)?)|(?:#EXT-X-(BYTERANGE):([\d]+[@[\d]*)]*[\r\n]+([^#|\r\n]+)?|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DIS)CONTINUITY))/g;null!==(t=m.exec(A));)switch(t.shift(),t=t.filter(function(e){return void 0!==e}),t[0]){case"MEDIA-SEQUENCE":c=r.startSN=parseInt(t[1]);break;case"TARGETDURATION":r.targetduration=parseFloat(t[1]);break;case"ENDLIST":r.live=!1;break;case"DIS":v++;break;case"BYTERANGE":var d=t[1].split("@");a=1===d.length?s:parseInt(d[1]),s=parseInt(d[0])+a,i=r.fragments.length?r.fragments[r.fragments.length-1]:null,i&&!i.url&&(i.byteRangeStartOffset=a,i.byteRangeEndOffset=s,i.url=this.resolve(t[2],n));break;case"INF":var h=parseFloat(t[1]);if(!isNaN(h)){var o,p=c++;if(e.method&&e.uri&&!e.iv){o=this.cloneObj(e);for(var y=new Uint8Array(16),l=12;16>l;l++)y[l]=p>>8*(15-l)&255;o.iv=y}else o=e;r.fragments.push({url:t[2]?this.resolve(t[2],n):null,duration:h,start:u,sn:p,level:_,cc:v,byteRangeStartOffset:a,byteRangeEndOffset:s,decryptdata:o}),u+=h,a=null}break;case"KEY":var g=t[1],f=this.parseKeyParamsByRegex(g,/(METHOD)=([^,]*)/),E=this.parseKeyParamsByRegex(g,/(URI)=["]([^,]*)["]/),b=this.parseKeyParamsByRegex(g,/(IV)=([^,]*)/);f&&(e={method:null,key:null,iv:null,uri:null},E&&"AES-128"===f&&(e.method=f,e.uri=this.resolve(E,n),e.key=null,b&&(e.iv=b,"0x"===e.iv.substring(0,2)&&(e.iv=e.iv.substring(2)),e.iv=e.iv.match(/.{8}/g),e.iv[0]=parseInt(e.iv[0],16),e.iv[1]=parseInt(e.iv[1],16),e.iv[2]=parseInt(e.iv[2],16),e.iv[3]=parseInt(e.iv[3],16),e.iv=new Uint32Array(e.iv))))}return r.totalduration=u,r.endSN=c-1,r}},{key:"loadsuccess",value:function(s,i){var o,n=s.currentTarget.responseText,r=s.currentTarget.responseURL,l=this.id,u=this.id2,a=this.hls;if(void 0===r&&(r=this.url),i.tload=performance.now(),i.mtime=new Date(s.currentTarget.getResponseHeader("Last-Modified")),0===n.indexOf("#EXTM3U"))if(n.indexOf("#EXTINF:")>0)if(null===this.id)a.trigger(e.default.MANIFEST_LOADED,{levels:[{url:r}],url:r,stats:i});else{var d=this.parseLevelPlaylist(n,r,l);i.tparsed=performance.now(),a.trigger(e.default.LEVEL_LOADED,{details:d,level:l,id:u,stats:i})}else o=this.parseMasterPlaylist(n,r),o.length?a.trigger(e.default.MANIFEST_LOADED,{levels:o,url:r,stats:i}):a.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:t.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no level found in manifest"});else a.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:t.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(a){var r,i;null===this.id?(r=t.ErrorDetails.MANIFEST_LOAD_ERROR,i=!0):(r=t.ErrorDetails.LEVEL_LOAD_ERROR,i=!1),this.loader.abort(),this.hls.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,response:a.currentTarget,level:this.id,id:this.id2})}},{key:"loadtimeout",value:function(){var r,i;null===this.id?(r=t.ErrorDetails.MANIFEST_LOAD_TIMEOUT,i=!0):(r=t.ErrorDetails.LEVEL_LOAD_TIMEOUT,i=!1),this.loader.abort(),this.hls.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),r}();i.default=o,s.exports=i.default},{"../errors":16,"../events":17,"../utils/url":27}],23:[function(n,t,e){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function e(i,r){for(var t=0;t>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"minf",value:function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))}},{key:"moof",value:function(t,r,i){return e.box(e.types.moof,e.mfhd(t),e.traf(i,r))}},{key:"moov",value:function(t){for(var r=t.length,i=[];r--;)i[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(i).concat(e.mvex(t)))}},{key:"mvex",value:function(r){for(var t=r.length,i=[];t--;)i[t]=e.trex(r[t]);return e.box.apply(null,[e.types.mvex].concat(i))}},{key:"mvhd",value:function(t,r){var i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,i)}},{key:"sdtp",value:function(n){var r,t,i=n.samples||[],a=new Uint8Array(4+i.length);for(t=0;t>>8&255),i.push(255&n),i=i.concat(Array.prototype.slice.call(a));for(r=0;r>>8&255),s.push(255&n),s=s.concat(Array.prototype.slice.call(a));var o=e.box(e.types.avcC,new Uint8Array([1,i[3],i[4],i[5],255,224|t.sps.length].concat(i).concat([t.pps.length]).concat(s)));return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"esds",value:function(e){return new Uint8Array([0,0,0,0,3,23+e.config.length,0,1,0,4,15+e.config.length,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e.config.length]).concat(e.config).concat([6,1,2]))}},{key:"mp4a",value:function(t){return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,t.audiosamplerate>>8&255,255&t.audiosamplerate,0,0]),e.box(e.types.esds,e.esds(t)))}},{key:"stsd",value:function(t){return"audio"===t.type?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))}},{key:"tkhd",value:function(t){return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t.id>>24&255,t.id>>16&255,t.id>>8&255,255&t.id,0,0,0,0,t.duration>>24,t.duration>>16&255,t.duration>>8&255,255&t.duration,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,t.width>>8&255,255&t.width,0,0,t.height>>8&255,255&t.height,0,0]))}},{key:"traf",value:function(t,r){var i=e.sdtp(t);return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,t.id>>24,t.id>>16&255,t.id>>8&255,255&t.id])),e.box(e.types.tfdt,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),e.trun(t,i.length+16+16+8+16+8+8),i)}},{key:"trak",value:function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"trex",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t.id>>24,t.id>>16&255,t.id>>8&255,255&t.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(s,i){var r,t,a,n;for(r=s.samples||[],n=new Uint8Array(12+16*r.length),i+=8+n.byteLength,n.set([0,0,15,1,r.length>>>24&255,r.length>>>16&255,r.length>>>8&255,255&r.length,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0),a=0;a>>24&255,t.duration>>>16&255,t.duration>>>8&255,255&t.duration,t.size>>>24&255,t.size>>>16&255,t.size>>>8&255,255&t.size,t.flags.isLeading<<2|t.flags.dependsOn,t.flags.isDependedOn<<6|t.flags.hasRedundancy<<4|t.flags.paddingValue<<1|t.flags.isNonSync,61440&t.flags.degradPrio,15&t.flags.degradPrio,t.cts>>>24&255,t.cts>>>16&255,t.cts>>>8&255,255&t.cts],12+16*a);return e.box(e.types.trun,n)}},{key:"initSegment",value:function(i){e.types||e.init();var t,r=e.moov(i);return t=new Uint8Array(e.FTYP.byteLength+r.byteLength),t.set(e.FTYP),t.set(r,e.FTYP.byteLength),t}}]),e}();e.default=a,t.exports=e.default},{}],24:[function(i,h,a){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(a,"__esModule",{value:!0});var d=function(){function e(i,r){for(var t=0;t1?r.logger.log("AVC:"+l+" ms hole between fragments detected,filling it"):-1>l&&r.logger.log("AVC:"+-l+" ms overlapping between fragments detected"),a=g,s=Math.max(s-l,a),r.logger.log("Video/PTS/DTS adjusted:"+s+"/"+a)),A=Math.max(0,s),_=Math.max(0,a)}i={size:E,duration:0,cts:(s-a)/h,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},d.key===!0?(i.flags.dependsOn=2,i.flags.isNonSync=0):(i.flags.dependsOn=1,i.flags.isNonSync=1),o.push(i),c=a}o.length>=2&&(i.duration=o[o.length-2].duration),this.nextAvcDts=a+i.duration*h,n.len=0,n.nbNalu=0,navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(o[0].flags.dependsOn=2,o[0].flags.isNonSync=0),n.samples=o,R=t.default.moof(n.sequenceNumber++,_/h,n),n.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:R,mdat:u,startPTS:A/v,endPTS:(s+h*i.duration)/v,startDTS:_/v,endDTS:(a+h*i.duration)/v,type:"video",nb:o.length})}},{key:"remuxAudio",value:function(a,L,R){var _,d,i,v,l,E,b,y,h,m,p,u,s,A=8,f=this.PES_TIMESCALE,g=this.PES2MP4SCALEFACTOR,o=[];for(l=new Uint8Array(a.len+8),_=new DataView(l.buffer),_.setUint32(0,l.byteLength),l.set(t.default.types.mdat,4);a.samples.length;){if(d=a.samples.shift(),v=d.unit,l.set(v,A),A+=v.byteLength,m=d.pts-this._initDTS,p=d.dts-this._initDTS,void 0!==h)u=this._PTSNormalize(m,h),s=this._PTSNormalize(p,h),i.duration=(s-h)/g,i.duration<0&&(r.logger.log("invalid AAC sample duration at PTS:"+d.pts+":"+i.duration),i.duration=0);else{var n,c=this.nextAacPts;u=this._PTSNormalize(m,c),s=this._PTSNormalize(p,c),n=Math.round(1e3*(u-c)/f),(R||Math.abs(n)<600)&&n&&(n>1?r.logger.log(n+" ms hole between AAC samples detected,filling it"):-1>n&&r.logger.log(-n+" ms overlapping between AAC samples detected"),u=s=c),b=Math.max(0,u),y=Math.max(0,s)}i={size:v.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},o.push(i),h=s}o.length>=2&&(i.duration=o[o.length-2].duration),this.nextAacPts=u+g*i.duration,a.len=0,a.samples=o,E=t.default.moof(a.sequenceNumber++,y/g,a),a.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:E,mdat:l,startPTS:b/f,endPTS:this.nextAacPts/f,startDTS:y/f,endDTS:(s+g*i.duration)/f,type:"audio",nb:o.length})}},{key:"remuxID3",value:function(r,a){var t,n=r.samples.length;if(n){for(var i=0;n>i;i++)t=r.samples[i],t.pts=(t.pts-this._initPTS)/this.PES_TIMESCALE,t.dts=(t.dts-this._initDTS)/this.PES_TIMESCALE;this.observer.trigger(e.default.FRAG_PARSING_METADATA,{samples:r.samples})}r.samples=[],a=a}},{key:"_PTSNormalize",value:function(e,t){var r;if(void 0===t)return e;for(r=e>t?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}},{key:"timescale",get:function(){return this.MP4_TIMESCALE}}]),i}();a.default=o,h.exports=a.default},{"../errors":16,"../events":17,"../remux/mp4-generator":23,"../utils/logger":26}],25:[function(r,e,i){"use strict";var t={search:function(a,s){for(var t=0,r=a.length-1,e=null,i=null;r>=t;){e=(t+r)/2|0,i=a[e];var n=s(i);if(n>0)t=e+1;else{if(!(0>n))return i;r=e-1}}return null}};e.exports=t},{}],26:[function(d,u,r){"use strict";function e(){}function l(t,e){return e="["+t+"] > "+e}function a(t){var r=window.console[t];return r?function(){for(var a=arguments.length,e=Array(a),i=0;a>i;i++)e[i]=arguments[i];e[0]&&(e[0]=l(t,e[0])),r.apply(window.console,e)}:e}function s(r){for(var i=arguments.length,n=Array(i>1?i-1:0),e=1;i>e;e++)n[e-1]=arguments[e];n.forEach(function(e){t[e]=r[e]?r[e].bind(r):a(e)})}Object.defineProperty(r,"__esModule",{value:!0});var i={trace:e,debug:e,log:e,warn:e,info:e,error:e},t=i,n=function(e){if(e===!0||"object"==typeof e){s(e,"debug","log","info","warn","error");try{t.log()}catch(e){t=i}}else t=i};r.enableLogs=n;var o=t;r.logger=o},{}],27:[function(r,t,i){"use strict";var e={buildAbsoluteURL:function(i,t){if(t=t.trim(),/^[a-z]+:/i.test(t))return t;var a=null,n=null,s=/^([^#]*)(.*)$/.exec(t);s&&(n=s[2],t=s[1]);var o=/^([^\?]*)(.*)$/.exec(t);o&&(a=o[2],t=o[1]);var u=/^([^#]*)(.*)$/.exec(i);u&&(i=u[1]);var d=/^([^\?]*)(.*)$/.exec(i);d&&(i=d[1]);var l=/^((([a-z]+):)?\/\/[a-z0-9\.-]+(:[0-9]+)?\/)(.*)$/i.exec(i),c=l[3],h=l[1],f=l[5],r=null;if(/^\/\//.test(t))r=c+"://"+e.buildAbsolutePath("",t.substring(2));else if(/^\//.test(t))r=h+e.buildAbsolutePath("",t.substring(1));else{var g=e.buildAbsolutePath(f,t);r=h+g}return a&&(r+=a),n&&(r+=n),r},buildAbsolutePath:function(n,s){for(var i,e,o=s,a="",t=n.replace(/[^\/]*$/,o.replace(/(\/|^)(?:\.?\/+)+/g,"$1")),r=0;e=t.indexOf("/../",r),e>-1;r=e+i)i=/^\/(?:\.\.\/)*/.exec(t.slice(e))[0].length,a=(a+t.substring(r,e)).replace(new RegExp("(?:\\/+[^\\/]*){0,"+(i-1)/3+"}$"),"/"); -return a+t.substr(r)}};t.exports=e},{}],28:[function(r,i,e){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;te||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},e.prototype.emit=function(u){var o,a,n,s,e,l;if(this._events||(this._events={}),"error"===u&&(!this._events.error||r(this._events.error)&&!this._events.error.length)){if(o=arguments[1],o instanceof Error)throw o;throw TypeError('Uncaught, unspecified "error" event.')}if(a=this._events[u],i(a))return!1;if(t(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:for(n=arguments.length,s=new Array(n-1),e=1;n>e;e++)s[e-1]=arguments[e];a.apply(this,s)}else if(r(a)){for(n=arguments.length,s=new Array(n-1),e=1;n>e;e++)s[e-1]=arguments[e];for(l=a.slice(),n=l.length,e=0;n>e;e++)l[e].apply(this,s)}return!0},e.prototype.addListener=function(a,n){var s;if(!t(n))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,t(n.listener)?n.listener:n),this._events[a]?r(this._events[a])?this._events[a].push(n):this._events[a]=[this._events[a],n]:this._events[a]=n,r(this._events[a])&&!this._events[a].warned){var s;s=i(this._maxListeners)?e.defaultMaxListeners:this._maxListeners,s&&s>0&&this._events[a].length>s&&(this._events[a].warned=!0,"function"==typeof console.trace)}return this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(i,e){function r(){this.removeListener(i,r),a||(a=!0,e.apply(this,arguments))}if(!t(e))throw TypeError("listener must be a function");var a=!1;return r.listener=e,this.on(i,r),this},e.prototype.removeListener=function(a,i){var e,s,o,n;if(!t(i))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(e=this._events[a],o=e.length,s=-1,e===i||t(e.listener)&&e.listener===i)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,i);else if(r(e)){for(n=o;n-->0;)if(e[n]===i||e[n].listener&&e[n].listener===i){s=n;break}if(0>s)return this;1===e.length?(e.length=0,delete this._events[a]):e.splice(s,1),this._events.removeListener&&this.emit("removeListener",a,i)}return this},e.prototype.removeAllListeners=function(e){var i,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(i in this._events)"removeListener"!==i&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],t(r))this.removeListener(e,r);else for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},e.prototype.listeners=function(e){var r;return r=this._events&&this._events[e]?t(this._events[e])?[this._events[e]]:this._events[e].slice():[]},e.listenerCount=function(e,r){var i;return i=e._events&&e._events[r]?t(e._events[r])?1:e._events[r].length:0}},{}],2:[function(n,i,s){var a=arguments[3],e=arguments[4],r=arguments[5],t=JSON.stringify;i.exports=function(u){for(var i,o=Object.keys(r),n=0,l=o.length;l>n;n++){var s=o[n];if(r[s].exports===u){i=s;break}}if(!i){i=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var d={},n=0,l=o.length;l>n;n++){var s=o[n];d[s]=s}e[i]=[Function(["require","module","exports"],"("+u+")(self)"),d]}var h=Math.floor(Math.pow(16,8)*Math.random()).toString(16),f={};f[i]=i,e[h]=[Function(["require"],"require("+t(i)+")(self)"),f];var c="("+a+")({"+Object.keys(e).map(function(r){return t(r)+":["+e[r][0]+","+t(e[r][1])+"]"}).join(",")+"},{},["+t(h)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL;return new Worker(g.createObjectURL(new Blob([c],{type:"text/javascript"})))}},{}],3:[function(r,i,e){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function e(i,r){for(var t=0;t=e;e++)if(r=e<=this.lastfetchlevel?.8*i:.7*i,r=0&&iP){if(o.nextLoadLevel=l,this.level=l,n=this.levels[l].details,"undefined"==typeof n){this.state=e.WAITING_LEVEL;break}var u=n.fragments,g=u.length,p=u[0].start,w=u[g-1].start+u[g-1].duration,a=void 0;if(n.live){if(d=n.startSN&&S<=n.endSN&&(a=u[S-n.startSN],t.logger.log("live playlist, switching playlist, load frag with next SN: "+a.sn))}a||(a=u[Math.min(g-1,Math.round(g/2))],t.logger.log("live playlist, switching playlist, unknown, load middle frag : "+a.sn))}}else p>d&&(a=u[0]);if(!a){var m;if(m=w>d?f.default.search(u,function(e){return e.start+e.duration<=d?1:e.start>d?-1:0}):u[g-1],m&&(a=m,p=m.start,c&&a.level===c.level&&a.sn===c.sn))if(a.sn1&&(a.expectedLen=Math.round(a.duration*this.levels[l].bitrate/8),a.trequest=performance.now()),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,a.loadCounter){a.loadCounter++;var D=this.config.fragLoadingLoopThreshold;if(a.loadCounter>D&&Math.abs(this.fragLoadIdx-a.loadIdx)1){var T=performance.now()-s.trequest;if(T>500*s.duration){var k=1e3*s.loaded/T;s.expectedLenb&&R>O&&(t.logger.warn("loading too slow, abort fragment loading"),t.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay :"+R.toFixed(1)+"/"+b.toFixed(1)+"/"+O.toFixed(1)),s.loader.abort(),o.trigger(r.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:s}),this.state=e.IDLE)}}break;case e.PARSING:break;case e.PARSED:case e.APPENDING:if(this.sourceBuffer){if(this.media.error)return t.logger.error("trying to append although a media error occured, switch to ERROR state"),void(this.state=e.ERROR);if(this.sourceBuffer.audio&&this.sourceBuffer.audio.updating||this.sourceBuffer.video&&this.sourceBuffer.video.updating);else if(this.mp4segments.length){var A=this.mp4segments.shift();try{this.sourceBuffer[A.type].appendBuffer(A.data),this.appendError=0}catch(a){if(t.logger.error("error while trying to append buffer:"+a.message+",try appending later"),this.mp4segments.unshift(A),22!==a.code){this.appendError?this.appendError++:this.appendError=1;var y={type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_APPEND_ERROR,frag:this.fragCurrent};if(this.appendError>this.config.appendErrorMaxRetry)return t.logger.log("fail "+this.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),y.fatal=!0,o.trigger(r.default.ERROR,y),void(this.state=e.ERROR);y.fatal=!1,o.trigger(r.default.ERROR,y)}}this.state=e.APPENDING}}else this.state=e.IDLE;break;case e.BUFFER_FLUSHING:for(;this.flushRange.length;){var x=this.flushRange[0];if(!this.flushBuffer(x.start,x.end))break;this.flushRange.shift()}0===this.flushRange.length&&(this.immediateSwitch&&this.immediateLevelSwitchEnd(),this.state=e.IDLE,this.fragPrevious=null)}this._checkFragmentChanged(),this._checkBuffer()}},{key:"bufferInfo",value:function(i,a){var e,n=this.media,t=n.buffered,r=[];for(e=0;ed&&(t[u-1].end=r[e].end):t.push(r[e])}else t.push(r[e])}for(e=0,o=0,l=n=i;e=s&&h>i?(l=s,n=h+a,o=n-i):s>i+a&&(f=s)}return{len:o,start:l,end:n,nextStart:f}}},{key:"getBufferRange",value:function(r){var e,t;for(e=this.bufferRange.length-1;e>=0;e--)if(t=this.bufferRange[e],r>=t.start&&r<=t.end)return t;return null}},{key:"followingBufferRange",value:function(e){return e?this.getBufferRange(e.end+.5):null}},{key:"isBuffered",value:function(r){for(var i=this.media,t=i.buffered,e=0;e=t.start(e)&&r<=t.end(e))return!0;return!1}},{key:"_checkFragmentChanged",value:function(){var t,e,i=this.media;if(i&&i.seeking===!1&&(e=i.currentTime,e>i.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),this.isBuffered(e)?t=this.getBufferRange(e):this.isBuffered(e+.1)&&(t=this.getBufferRange(e+.1)),t)){var a=t.frag;a!==this.fragPlaying&&(this.fragPlaying=a,this.hls.trigger(r.default.FRAG_CHANGED,{frag:a}))}}},{key:"flushBuffer",value:function(d,l){var r,e,o,s,i,a;if(this.flushBufferCounter++<2*this.bufferRange.length&&this.sourceBuffer)for(var u in this.sourceBuffer){if(r=this.sourceBuffer[u],r.updating)return!1;for(e=0;e.5)return t.logger.log("flush "+u+" ["+i+","+a+"], of ["+o+","+s+"], pos:"+this.media.currentTime),r.remove(i,a),!1}var n,h=[];for(e=0;e "+a+"/"+i.videoCodec+"; audio => "+r+"/"+i.audioCodec),(void 0===r||void 0===i.audioCodec)&&(r=i.audioCodec),(void 0===a||void 0===i.videoCodec)&&(a=i.videoCodec);var s=navigator.userAgent.toLowerCase();this.audiocodecswitch&&1!==i.audioChannelCount&&-1===s.indexOf("android")&&-1===s.indexOf("firefox")&&(r="mp4a.40.5"),this.sourceBuffer||(this.sourceBuffer={},t.logger.log("selected A/V codecs for sourceBuffers:"+r+","+a),r&&(n=this.sourceBuffer.audio=this.mediaSource.addSourceBuffer("video/mp4;codecs="+r),n.addEventListener("updateend",this.onsbue),n.addEventListener("error",this.onsbe)),a&&(n=this.sourceBuffer.video=this.mediaSource.addSourceBuffer("video/mp4;codecs="+a),n.addEventListener("updateend",this.onsbue),n.addEventListener("error",this.onsbe))),r&&this.mp4segments.push({type:"audio",data:i.audioMoov}),a&&this.mp4segments.push({type:"video",data:i.videoMoov}),this.tick()}}},{key:"onFragParsing",value:function(s,i){if(this.state===e.PARSING){this.tparse2=Date.now();var a=this.levels[this.level],n=this.fragCurrent;t.logger.log("parsed data, type/startPTS/endPTS/startDTS/endDTS/nb:"+i.type+"/"+i.startPTS.toFixed(3)+"/"+i.endPTS.toFixed(3)+"/"+i.startDTS.toFixed(3)+"/"+i.endDTS.toFixed(3)+"/"+i.nb);var l=o.default.updateFragPTS(a.details,n.sn,i.startPTS,i.endPTS);this.hls.trigger(r.default.LEVEL_PTS_UPDATED,{details:a.details,level:this.level,drift:l}),this.mp4segments.push({type:i.type,data:i.moof}),this.mp4segments.push({type:i.type,data:i.mdat}),this.nextLoadPosition=i.endPTS,this.bufferRange.push({type:i.type,start:i.startPTS,end:i.endPTS,frag:n}),this.tick()}else t.logger.warn("not in PARSING state, discarding "+s)}},{key:"onFragParsed",value:function(){this.state===e.PARSING&&(this.state=e.PARSED,this.stats.tparsed=performance.now(),this.tick())}},{key:"onError",value:function(a,r){switch(r.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:case i.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case i.ErrorDetails.LEVEL_LOAD_ERROR:case i.ErrorDetails.LEVEL_LOAD_TIMEOUT:case i.ErrorDetails.KEY_LOAD_ERROR:case i.ErrorDetails.KEY_LOAD_TIMEOUT:t.logger.warn("mediaController: "+r.details+" while loading frag,switch to "+(r.fatal?"ERROR":"IDLE")+" state ..."),this.state=r.fatal?e.ERROR:e.IDLE}}},{key:"onSBUpdateEnd",value:function(){if(this.state===e.APPENDING&&0===this.mp4segments.length){var a=this.fragCurrent,i=this.stats;a&&(this.fragPrevious=a,i.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*i.length/(i.tbuffered-i.tfirst)),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:i,frag:a}),t.logger.log("media buffered : "+this.timeRangesToString(this.media.buffered)),this.state=e.IDLE)}this.tick()}},{key:"_checkBuffer",value:function(){var e=this.media;if(e){var n=e.readyState;if(n){var i=this.seekAfterBuffered;if(i)e.duration>=i&&(e.currentTime=i,this.seekAfterBuffered=void 0);else if(3>n){var a=e.currentTime,s=this.bufferInfo(a,0);if(0===s.len){var r=s.nextStart;r&&.3>r-a&&(t.logger.log("adjust currentTime from "+a+" to "+r),e.currentTime=r)}}}}}},{key:"swapAudioCodec",value:function(){this.audioCodecSwap=!this.audioCodecSwap}},{key:"onSBUpdateError",value:function(a){t.logger.error("sourceBuffer error:"+a),this.state=e.ERROR,this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1,frag:this.fragCurrent})}},{key:"timeRangesToString",value:function(t){for(var r="",i=t.length,e=0;i>e;e++)r+="["+t.start(e)+","+t.end(e)+"]";return r}},{key:"onMediaSourceOpen",value:function(){t.logger.log("media source opened"),this.hls.trigger(r.default.MEDIA_ATTACHED),this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvmetadata=this.onMediaMetadata.bind(this),this.onvended=this.onMediaEnded.bind(this);var e=this.media;e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("loadedmetadata",this.onvmetadata), +e.addEventListener("ended",this.onvended),this.levels&&this.config.autoStartLoad&&this.startLoad(),this.mediaSource.removeEventListener("sourceopen",this.onmso)}},{key:"onMediaSourceClose",value:function(){t.logger.log("media source closed")}},{key:"onMediaSourceEnded",value:function(){t.logger.log("media source ended")}},{key:"currentLevel",get:function(){if(this.media){var e=this.getBufferRange(this.media.currentTime);if(e)return e.frag.level}return-1}},{key:"nextBufferRange",get:function(){return this.media?this.followingBufferRange(this.getBufferRange(this.media.currentTime)):null}},{key:"nextLevel",get:function(){var e=this.nextBufferRange;return e?e.frag.level:-1}}]),a}();s.default=y,u.exports=s.default},{"../demux/demuxer":12,"../errors":16,"../events":17,"../helper/level-helper":18,"../utils/binary-search":25,"../utils/logger":26}],6:[function(n,t,e){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function e(i,r){for(var t=0;te;e++)c[(a[e]=e<<1^283*(e>>7))^e]=e;for(i=r=0;!f[i];i^=u||1,r=c[r]||1)for(t=r^r<<1^r<<2^r<<3^r<<4,t=t>>8^255&t^99,f[i]=t,g[t]=i,d=a[h=a[u=a[i]]],l=16843009*d^65537*h^257*u^16843008*i,s=257*a[t]^16843008*t,e=0;4>e;e++)n[e][i]=s=s<<24^s>>>8,o[e][t]=l=l<<24^l>>>8;for(e=0;5>e;e++)n[e]=n[e].slice(0),o[e]=o[e].slice(0)}},{key:"decrypt",value:function(A,p,_,b,E,m){var f,v,g,n,e=this._key[1],t=A^e[0],i=b^e[1],a=_^e[2],r=p^e[3],y=e.length/4-2,s=4,o=this._tables[1],h=o[0],d=o[1],u=o[2],l=o[3],c=o[4];for(n=0;y>n;n++)f=h[t>>>24]^d[i>>16&255]^u[a>>8&255]^l[255&r]^e[s],v=h[i>>>24]^d[a>>16&255]^u[r>>8&255]^l[255&t]^e[s+1],g=h[a>>>24]^d[r>>16&255]^u[t>>8&255]^l[255&i]^e[s+2],r=h[r>>>24]^d[t>>16&255]^u[i>>8&255]^l[255&a]^e[s+3],s+=4,t=f,i=v,a=g;for(n=0;4>n;n++)E[(3&-n)+m]=c[t>>>24]<<24^c[i>>16&255]<<16^c[a>>8&255]<<8^c[255&r]^e[s++],f=t,t=i,i=a,a=r,r=f}}]),e}();e.default=a,t.exports=e.default},{}],7:[function(t,r,e){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t>8|e>>>24}},{key:"doDecrypt",value:function(i,v,a){var u,f,s,h,l,c,d,n,e,r=new Int32Array(i.buffer,i.byteOffset,i.byteLength>>2),p=new o.default(Array.prototype.slice.call(v)),g=new Uint8Array(i.byteLength),t=new Int32Array(g.buffer);for(u=~~a[0],f=~~a[1],s=~~a[2],h=~~a[3],e=0;ee&&(255!==t[e]||240!==(240&t[e+1]));e++);for(a.audiosamplerate||(s=this._ADTStoAudioConfig(t,e,v),a.config=s.config,a.audiosamplerate=s.samplerate,a.channelCount=s.channelCount,a.codec=s.codec,a.timescale=this.remuxer.timescale,a.duration=this.remuxer.timescale*g,r.logger.log("parsed codec:"+a.codec+",rate:"+s.samplerate+",nb channel:"+s.channelCount)),h=0;l>e+5&&(n=(3&t[e+3])<<11,n|=t[e+4]<<3,n|=(224&t[e+5])>>>5,o=1&t[e+1]?7:9,n-=o,f=Math.round(90*u+1024*h*9e4/a.audiosamplerate),n>0&&l>=e+o+n);)for(c={unit:t.subarray(e+o,e+o+n),pts:f,dts:f},a.samples.push(c),a.len+=n,e+=n+o,h++;l-1>e&&(255!==t[e]||240!==(240&t[e+1]));e++);this.remuxer.remux(this._aacTrack,{samples:[]},{samples:[{pts:u,dts:u,unit:d.payload}]},p)}},{key:"_ADTStoAudioConfig",value:function(l,u,s){var i,e,n,o,t,h=navigator.userAgent.toLowerCase(),d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return i=((192&l[u+2])>>>6)+1,e=(60&l[u+2])>>>2,e>d.length-1?void this.observer.trigger(Event.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+e}):(o=(1&l[u+2])<<2,o|=(192&l[u+3])>>>6,r.logger.log("manifest codec:"+s+",ADTS data:type:"+i+",sampleingIndex:"+e+"["+d[e]+"Hz],channelConfig:"+o),-1!==h.indexOf("firefox")?e>=6?(i=5,t=new Array(4),n=e-3):(i=2,t=new Array(2),n=e):-1!==h.indexOf("android")?(i=2,t=new Array(2),n=e):(i=5,t=new Array(4),s&&-1!==s.indexOf("mp4a.40.5")||!s&&e>=6?n=e-3:(s&&-1!==s.indexOf("mp4a.40.2")&&(e>=6||1===o)&&(i=2,t=new Array(2)),n=e)),t[0]=i<<3,t[0]|=(14&e)>>1,t[1]|=(1&e)<<7,t[1]|=o<<3,5===i&&(t[1]|=(14&n)>>1,t[2]=(1&n)<<7,t[2]|=8,t[3]=0),{config:t,samplerate:d[e],channelCount:o,codec:"mp4a.40."+i})}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(t){var e,r,a=new i.default(t);if(a.hasTimeStamp)for(e=a.length,r=t.length;r-1>e;e++)if(255===t[e]&&240===(240&t[e+1]))return!0;return!1}}]),e}();t.default=s,n.exports=t.default},{"../demux/id3":14,"../errors":16,"../utils/logger":26}],10:[function(e,o,t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;t1?r-1:0),e=1;r>e;e++)a[e-1]=arguments[e];t.emit.apply(t,[i,i].concat(a))},t.off=function(a){for(var r=arguments.length,i=Array(r>1?r-1:0),e=1;r>e;e++)i[e-1]=arguments[e];t.removeListener.apply(t,[a].concat(i))},r.addEventListener("message",function(i){switch(i.data.cmd){case"init":r.demuxer=new n.default(t,h.default);break;case"demux":var e=i.data;r.demuxer.push(new Uint8Array(e.data),e.audioCodec,e.videoCodec,e.timeOffset,e.cc,e.level,e.sn,e.duration)}}),t.on(e.default.FRAG_PARSING_INIT_SEGMENT,function(a,t){var e={event:a},i=[];t.audioCodec&&(e.audioCodec=t.audioCodec,e.audioMoov=t.audioMoov.buffer,e.audioChannelCount=t.audioChannelCount,i.push(e.audioMoov)),t.videoCodec&&(e.videoCodec=t.videoCodec,e.videoMoov=t.videoMoov.buffer,e.videoWidth=t.videoWidth,e.videoHeight=t.videoHeight,i.push(e.videoMoov)),r.postMessage(e,i)}),t.on(e.default.FRAG_PARSING_DATA,function(i,e){var t={event:i,type:e.type,startPTS:e.startPTS,endPTS:e.endPTS,startDTS:e.startDTS,endDTS:e.endDTS,moof:e.moof.buffer,mdat:e.mdat.buffer,nb:e.nb};r.postMessage(t,[t.moof,t.mdat])}),t.on(e.default.FRAG_PARSED,function(e){r.postMessage({event:e})}),t.on(e.default.ERROR,function(e,t){r.postMessage({event:e,data:t})}),t.on(e.default.FRAG_PARSING_METADATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)})};i.default=o,s.exports=i.default},{"../demux/demuxer-inline":10,"../events":17,"../remux/mp4-remuxer":24,events:1}],12:[function(e,u,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;t0&&null!=e&&null!=e.key&&"AES-128"===e.method){null==this.decrypter&&(this.decrypter=new p.default(this.hls));var u=this;this.decrypter.decrypt(t,e.key,e.iv,function(e){u.pushDecrypted(e,r,i,a,n,s,o,l)})}else this.pushDecrypted(t,r,i,a,n,s,o,l)}},{key:"onWorkerMessage",value:function(e){switch(e.data.event){case t.default.FRAG_PARSING_INIT_SEGMENT:var r={};e.data.audioMoov&&(r.audioMoov=new Uint8Array(e.data.audioMoov),r.audioCodec=e.data.audioCodec,r.audioChannelCount=e.data.audioChannelCount),e.data.videoMoov&&(r.videoMoov=new Uint8Array(e.data.videoMoov),r.videoCodec=e.data.videoCodec,r.videoWidth=e.data.videoWidth,r.videoHeight=e.data.videoHeight),this.hls.trigger(t.default.FRAG_PARSING_INIT_SEGMENT,r);break;case t.default.FRAG_PARSING_DATA:this.hls.trigger(t.default.FRAG_PARSING_DATA,{moof:new Uint8Array(e.data.moof),mdat:new Uint8Array(e.data.mdat),startPTS:e.data.startPTS,endPTS:e.data.endPTS,startDTS:e.data.startDTS,endDTS:e.data.endDTS,type:e.data.type,nb:e.data.nb});break;case t.default.FRAG_PARSING_METADATA:this.hls.trigger(t.default.FRAG_PARSING_METADATA,{samples:e.data.samples});break;default:this.hls.trigger(e.data.event,e.data.data)}}}]),r}();i.default=y,u.exports=i.default},{"../crypt/decrypter":8,"../demux/demuxer-inline":10,"../demux/demuxer-worker":11,"../events":17,"../remux/mp4-remuxer":24,"../utils/logger":26,webworkify:2}],13:[function(t,r,e){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function e(i,r){for(var t=0;te?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}},{key:"readBits",value:function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&n.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0?r<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"skipScalingList",value:function(a){var t,i,r=8,e=8;for(t=0;a>t;t++)0!==e&&(i=this.readEG(),e=(r+i+256)%256),r=0===e?r:e}},{key:"readSPS",value:function(){var r,v,p,l,a,n,i,o,t,s=0,d=0,h=0,f=0,c=1;if(this.readUByte(),r=this.readUByte(),v=this.readBits(5),this.skipBits(3),p=this.readUByte(),this.skipUEG(),100===r||110===r||122===r||144===r){var g=this.readUEG();if(3===g&&this.skipBits(1),this.skipUEG(),this.skipUEG(),this.skipBits(1),this.readBoolean())for(o=3!==g?8:12,t=0;o>t;t++)this.readBoolean()&&(6>t?this.skipScalingList(16):this.skipScalingList(64))}this.skipUEG();var u=this.readUEG();if(0===u)this.readUEG();else if(1===u)for(this.skipBits(1),this.skipEG(),this.skipEG(),l=this.readUEG(),t=0;l>t;t++)this.skipEG();if(this.skipUEG(),this.skipBits(1),a=this.readUEG(),n=this.readUEG(),i=this.readBits(1),0===i&&this.skipBits(1),this.skipBits(1),this.readBoolean()&&(s=this.readUEG(),d=this.readUEG(),h=this.readUEG(),f=this.readUEG()),this.readBoolean()&&this.readBoolean()){var e=void 0,y=this.readUByte();switch(y){case 2:e=[12,11];break;case 3:e=[10,11];break;case 4:e=[16,11];break;case 5:e=[40,33];break;case 6:e=[24,11];break;case 7:e=[20,11];break;case 8:e=[32,11];break;case 9:e=[80,33];break;case 10:e=[18,11];break;case 11:e=[15,11];break;case 12:e=[64,33];break;case 13:e=[160,99];break;case 14:e=[4,3];break;case 15:e=[3,2];break;case 16:e=[2,1];break;case 255:e=[this.readUByte()<<8|this.readUByte(),this.readUByte()<<8|this.readUByte()]}e&&(c=e[0]/e[1])}return{width:(16*(a+1)-2*s-2*d)*c,height:(2-i)*(n+1)*16-(i?2:4)*(h+f)}}},{key:"readSliceType",value:function(){return this.readUByte(),this.readUEG(),this.readUEG()}}]),e}();e.default=s,r.exports=e.default},{"../utils/logger":26}],14:[function(r,i,e){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;tr);return t}},{key:"_parseID3Frames",value:function(r,e,n){for(var a,s,o,l,i;n>=e+8;)switch(a=this.readUTF(r,e,4),e+=4,s=r[e++]<<24+r[e++]<<16+r[e++]<<8+r[e++],l=r[e++]<<8+r[e++],o=e,a){case"PRIV":if("com.apple.streaming.transportStreamTimestamp"===this.readUTF(r,e,44)){e+=44,e+=4;var u=1&r[e++];this._hasTimeStamp=!0,i=((r[e++]<<23)+(r[e++]<<15)+(r[e++]<<7)+r[e++])/45,u&&(i+=47721858.84),i=Math.round(i),t.logger.trace("ID3 timestamp found: "+i),this._timeStamp=i}}}},{key:"hasTimeStamp",get:function(){return this._hasTimeStamp}},{key:"timeStamp",get:function(){return this._timeStamp}},{key:"length",get:function(){return this._length}},{key:"payload",get:function(){return this._payload}}]),e}();e.default=s,i.exports=e.default},{"../utils/logger":26}],15:[function(r,s,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;tr;r+=188)if(71===i[r]){if(d=!!(64&i[r+1]),u=((31&i[r+1])<<8)+i[r+2],y=(48&i[r+3])>>4,y>1){if(n=r+5+i[r+4],n===r+188)continue}else n=r+4;p?u===g?(d&&(l&&this._parseAVCPES(this._parsePES(l)),l={data:[],size:0}),l&&(l.data.push(i.subarray(n,r+188)),l.size+=r+188-n)):u===c?(d&&(o&&this._parseAACPES(this._parsePES(o)),o={data:[],size:0}),o&&(o.data.push(i.subarray(n,r+188)),o.size+=r+188-n)):u===m&&(d&&(s&&this._parseID3PES(this._parsePES(s)),s={data:[],size:0}),s&&(s.data.push(i.subarray(n,r+188)),s.size+=r+188-n)):(d&&(n+=i[n]+1),0===u?this._parsePAT(i,n):u===this._pmtId&&(this._parsePMT(i,n),p=this.pmtParsed=!0,g=this._avcTrack.id,c=this._aacTrack.id,m=this._id3Track.id))}else this.observer.trigger(a.default.ERROR,{type:t.ErrorTypes.MEDIA_ERROR,details:t.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});l&&this._parseAVCPES(this._parsePES(l)),o&&this._parseAACPES(this._parsePES(o)),s&&this._parseID3PES(this._parsePES(s)),this.remux()}},{key:"remux",value:function(){this.remuxer.remux(this._aacTrack,this._avcTrack,this._id3Track,this.timeOffset,this.contiguous)}},{key:"destroy",value:function(){this.switchLevel(),this._initPTS=this._initDTS=void 0,this._duration=0}},{key:"_parsePAT",value:function(e,t){this._pmtId=(31&e[t+10])<<8|e[t+11]}},{key:"_parsePMT",value:function(r,t){var a,n,s,i;for(a=(15&r[t+1])<<8|r[t+2],n=t+3+a-4,s=(15&r[t+10])<<8|r[t+11],t+=12+s;n>t;){switch(i=(31&r[t+1])<<8|r[t+2],r[t]){case 15:this._aacTrack.id=i;break;case 21:this._id3Track.id=i;break;case 27:this._avcTrack.id=i;break;default:e.logger.log("unkown stream type:"+r[t])}t+=((15&r[t+3])<<8|r[t+4])+5}}},{key:"_parsePES",value:function(t){var e,a,u,o,d,n,r,i,s,l=0;if(e=t.data[0],u=(e[0]<<16)+(e[1]<<8)+e[2],1===u){for(o=(e[4]<<8)+e[5],a=e[7],192&a&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,r>4294967295&&(r-=8589934592),64&a?(i=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i>4294967295&&(i-=8589934592)):i=r),d=e[8],s=d+9,t.data[0]=t.data[0].subarray(s),t.size-=s,n=new Uint8Array(t.size);t.data.length;)e=t.data.shift(),n.set(e,l),l+=e.byteLength;return{data:n,pts:r,dts:i,len:o}}return null}},{key:"_parseAVCPES",value:function(a){var v,i,h=this,t=this._avcTrack,l=t.samples,p=this._parseAVCNALu(a.data),s=[],n=!1,g=!1,f=0;if(0===p.length&&l.length>0){var c=l[l.length-1],o=c.units.units[c.units.units.length-1],d=new Uint8Array(o.data.byteLength+a.data.byteLength);d.set(o.data,0),d.set(a.data,o.data.byteLength),o.data=d,c.units.length+=a.data.byteLength,t.len+=a.data.byteLength}a.data=null;var r="";p.forEach(function(e){switch(e.type){case 1:i=!0,n&&(r+="NDR ");break;case 5:i=!0,n&&(r+="IDR "),g=!0;break;case 6:i=!0,n&&(r+="SEI ");break;case 7:if(i=!0,n&&(r+="SPS "),!t.sps){var c=new u.default(e.data),l=c.readSPS();t.width=l.width,t.height=l.height,t.sps=[e.data],t.timescale=h.remuxer.timescale,t.duration=h.remuxer.timescale*h._duration;for(var v=e.data.subarray(1,4),d="avc1.",o=0;3>o;o++){var a=v[o].toString(16);a.length<2&&(a="0"+a),d+=a}t.codec=d}break;case 8:i=!0,n&&(r+="PPS "),t.pps||(t.pps=[e.data]);break;case 9:i=!0,n&&(r+="AUD ");break;default:i=!1,r+="unknown NAL "+e.type+" "}i&&(s.push(e),f+=e.data.byteLength)}),(n||r.length)&&e.logger.log(r),s.length&&(g===!0||t.sps)&&(v={units:{units:s,length:f},pts:a.pts,dts:a.dts,key:g},l.push(v),t.len+=f,t.nbNalu+=s.length)}},{key:"_parseAVCNALu",value:function(i){for(var n,r,o,s,a,u,t=0,d=i.byteLength,e=0,h=[];d>t;)switch(n=i[t++],e){case 0:0===n&&(e=1);break;case 1:e=0===n?2:0;break;case 2:case 3:if(0===n)e=3;else if(1===n){if(s=31&i[t],a)o={data:i.subarray(a,t-e-1),type:u},h.push(o);else if(r=t-e-1,r&&this._avcTrack.samples.length){var f=this._avcTrack.samples[this._avcTrack.samples.length-1],l=f.units.units[f.units.units.length-1],c=new Uint8Array(l.data.byteLength+r);c.set(l.data,0),c.set(i.subarray(0,r),l.data.byteLength),l.data=c,f.units.length+=r,this._avcTrack.len+=r}a=t,u=s,(1===s||5===s)&&(t=d),e=0}else e=0}return a&&(o={data:i.subarray(a,d),type:u},h.push(o)),h}},{key:"_parseAACPES",value:function(p){var v,l,n,r,u,f,h,o,s=this._aacTrack,i=p.data;if(this.aacOverFlow){var g=new Uint8Array(this.aacOverFlow.byteLength+i.byteLength);g.set(this.aacOverFlow,0),g.set(i,this.aacOverFlow.byteLength),i=g}for(r=0,o=i.length;o-1>r&&(255!==i[r]||240!==(240&i[r+1]));r++);if(r){var c,d;if(o-1>r?(c="AAC PES did not start with ADTS header,offset:"+r,d=!1):(c="no ADTS header found in AAC PES",d=!0),this.observer.trigger(a.default.ERROR,{type:t.ErrorTypes.MEDIA_ERROR,details:t.ErrorDetails.FRAG_PARSING_ERROR,fatal:d,reason:c}),d)return}for(s.audiosamplerate||(l=this._ADTStoAudioConfig(i,r,this.audioCodec),s.config=l.config,s.audiosamplerate=l.samplerate,s.channelCount=l.channelCount,s.codec=l.codec,s.timescale=this.remuxer.timescale,s.duration=this.remuxer.timescale*this._duration,e.logger.log("parsed codec:"+s.codec+",rate:"+l.samplerate+",nb channel:"+l.channelCount)),h=0;o>r+5&&(n=(3&i[r+3])<<11,n|=i[r+4]<<3,n|=(224&i[r+5])>>>5,u=1&i[r+1]?7:9,n-=u,f=Math.round(p.pts+1024*h*this.PES_TIMESCALE/s.audiosamplerate),n>0&&o>=r+u+n);)for(v={unit:i.subarray(r+u,r+u+n),pts:f,dts:f},this._aacTrack.samples.push(v),this._aacTrack.len+=n,r+=n+u,h++;o-1>r&&(255!==i[r]||240!==(240&i[r+1]));r++);o>r?this.aacOverFlow=i.subarray(r,o):this.aacOverFlow=null}},{key:"_ADTStoAudioConfig",value:function(u,d,s){var n,r,o,l,i,f=navigator.userAgent.toLowerCase(),h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return n=((192&u[d+2])>>>6)+1,r=(60&u[d+2])>>>2,r>h.length-1?void this.observer.trigger(a.default.ERROR,{type:t.ErrorTypes.MEDIA_ERROR,details:t.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+r}):(l=(1&u[d+2])<<2,l|=(192&u[d+3])>>>6,e.logger.log("manifest codec:"+s+",ADTS data:type:"+n+",sampleingIndex:"+r+"["+h[r]+"Hz],channelConfig:"+l),-1!==f.indexOf("firefox")?r>=6?(n=5,i=new Array(4),o=r-3):(n=2,i=new Array(2),o=r):-1!==f.indexOf("android")?(n=2,i=new Array(2),o=r):(n=5,i=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&r>=6?o=r-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(r>=6||1===l)||!s&&1===l)&&(n=2,i=new Array(2)),o=r)),i[0]=n<<3,i[0]|=(14&r)>>1,i[1]|=(1&r)<<7,i[1]|=l<<3,5===n&&(i[1]|=(14&o)>>1,i[2]=(1&o)<<7,i[2]|=8,i[3]=0),{config:i,samplerate:h[r],channelCount:l,codec:"mp4a.40."+n})}},{key:"_parseID3PES",value:function(e){this._id3Track.samples.push(e)}}],[{key:"probe",value:function(e){return e.length>=564&&71===e[0]&&71===e[188]&&71===e[376]?!0:!1}}]),r}();i.default=o,s.exports=i.default},{"../errors":16,"../events":17,"../utils/logger":26,"./exp-golomb":13}],16:[function(i,a,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t={NETWORK_ERROR:"hlsNetworkError",MEDIA_ERROR:"hlsMediaError",OTHER_ERROR:"hlsOtherError"};e.ErrorTypes=t;var r={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError"};e.ErrorDetails=r},{}],17:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsPTSUpdated",LEVEL_SWITCH:"hlsLevelSwitch",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_METADATA:"hlsFraParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFPSDrop",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded"},t.exports=e.default},{}],18:[function(r,i,e){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;td)return void(i.PTSKnown=!1);for(var r=c;d>=r;r++){var l=f[h+r],a=o[r];u=l.cc-a.cc,isNaN(l.startPTS)||(a.start=a.startPTS=l.startPTS,a.endPTS=l.endPTS,a.duration=l.duration,s=a)}if(u)for(t.logger.log("discontinuity sliding from playlist, take drift into account"),r=0;ri.endSN)return 0;o=l-i.startSN,n=i.fragments,r=n[o],isNaN(r.startPTS)||(a=Math.max(a,r.startPTS),s=Math.min(s,r.endPTS));var u=a-r.start;for(r.start=r.startPTS=a,r.endPTS=s,r.duration=s-a,t=o;t>0;t--)e.updatePTS(n,t,t-1);for(t=o;ti?r.start=e.start+e.duration:r.start=e.start-r.duration:a>i?(e.duration=n-e.start,e.duration<0&&t.logger.error("negative duration computed for "+e+", there should be some duration drift between playlist and fragment!")):(r.duration=e.start-n,r.duration<0&&t.logger.error("negative duration computed for "+r+", there should be some duration drift between playlist and fragment!"))}}]),e}();e.default=s,i.exports=e.default},{"../utils/logger":26}],19:[function(t,c,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(a,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t1?t-1:0),e=1;t>e;e++)a[e-1]=arguments[e];r.emit.apply(r,[i,i].concat(a))},r.off=function(a){for(var t=arguments.length,i=Array(t>1?t-1:0),e=1;t>e;e++)i[e-1]=arguments[e];r.removeListener.apply(r,[a].concat(i))},this.on=r.on.bind(r),this.off=r.off.bind(r),this.trigger=r.trigger.bind(r),this.playlistLoader=new d.default(this),this.fragmentLoader=new f.default(this),this.levelController=new m.default(this),this.abrController=new i.abrController(this),this.mediaController=new i.mediaController(this),this.keyLoader=new S.default(this)}return n(t,null,[{key:"isSupported",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"Events",get:function(){return i.default}},{key:"ErrorTypes",get:function(){return s.ErrorTypes}},{key:"ErrorDetails",get:function(){return s.ErrorDetails}}]),n(t,[{key:"destroy",value:function(){e.logger.log("destroy"),this.trigger(i.default.DESTROYING),this.detachMedia(),this.playlistLoader.destroy(),this.fragmentLoader.destroy(),this.levelController.destroy(),this.mediaController.destroy(),this.keyLoader.destroy(),this.url=null,this.observer.removeAllListeners()}},{key:"attachMedia",value:function(t){e.logger.log("attachMedia"),this.media=t,this.trigger(i.default.MEDIA_ATTACHING,{media:t})}},{key:"detachMedia",value:function(){e.logger.log("detachMedia"),this.trigger(i.default.MEDIA_DETACHING),this.media=null}},{key:"loadSource",value:function(t){e.logger.log("loadSource:"+t),this.url=t,this.trigger(i.default.MANIFEST_LOADING,{url:t})}},{key:"startLoad",value:function(){e.logger.log("startLoad"),this.mediaController.startLoad()}},{key:"swapAudioCodec",value:function(){e.logger.log("swapAudioCodec"),this.mediaController.swapAudioCodec()}},{key:"recoverMediaError",value:function(){e.logger.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)}},{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.mediaController.currentLevel},set:function(t){e.logger.log("set currentLevel:"+t),this.loadLevel=t,this.mediaController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.mediaController.nextLevel},set:function(t){e.logger.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.mediaController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){e.logger.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel()},set:function(e){this.levelController.level=e}},{key:"firstLevel",get:function(){return this.levelController.firstLevel},set:function(t){e.logger.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){e.logger.log("set startLevel:"+t),this.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this.abrController.autoLevelCapping},set:function(t){e.logger.log("set autoLevelCapping:"+t),this.abrController.autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}}]),t}();a.default=l,c.exports=a.default},{"./controller/abr-controller":3,"./controller/level-controller":4,"./controller/mse-media-controller":5,"./errors":16,"./events":17,"./loader/fragment-loader":20,"./loader/key-loader":21,"./loader/playlist-loader":22,"./utils/logger":26,"./utils/xhr-loader":28,events:1}],20:[function(i,a,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;t0;)switch(e.shift()){case"RES":t.width=parseInt(e.shift()),t.height=parseInt(e.shift());break;case"BAND":t.bitrate=parseInt(e.shift());break;case"NAME":t.name=e.shift();break;case"CODECS":for(i=e.shift().split(",");i.length>0;)r=i.shift(),-1!==r.indexOf("avc1")?t.videoCodec=this.avc1toavcoti(r):t.audioCodec=r}a.push(t),t={}}return a}},{key:"avc1toavcoti",value:function(r){var e,t=r.split(".");return t.length>2?(e=t.shift()+".",e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).substr(-4)):e=r,e}},{key:"parseKeyParamsByRegex",value:function(t,r){var e=r.exec(t);return e&&(e.shift(),e=e.filter(function(e){return void 0!==e}),2===e.length)?e[1]:null}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(A,n,_){var t,m,i,s,a,c=0,u=0,r={url:n,fragments:[],live:!0,startSN:0},v=0,e={method:null,key:null,iv:null,uri:null};for(m=/(?:#EXT-X-(MEDIA-SEQUENCE):(\d+))|(?:#EXT-X-(TARGETDURATION):(\d+))|(?:#EXT-X-(KEY):(.*))|(?:#EXT(INF):([\d\.]+)[^\r\n]*([\r\n]+[^#|\r\n]+)?)|(?:#EXT-X-(BYTERANGE):([\d]+[@[\d]*)]*[\r\n]+([^#|\r\n]+)?|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DIS)CONTINUITY))/g;null!==(t=m.exec(A));)switch(t.shift(),t=t.filter(function(e){return void 0!==e}),t[0]){case"MEDIA-SEQUENCE":c=r.startSN=parseInt(t[1]);break;case"TARGETDURATION":r.targetduration=parseFloat(t[1]);break;case"ENDLIST":r.live=!1;break;case"DIS":v++;break;case"BYTERANGE":var d=t[1].split("@");a=1===d.length?s:parseInt(d[1]),s=parseInt(d[0])+a,i=r.fragments.length?r.fragments[r.fragments.length-1]:null,i&&!i.url&&(i.byteRangeStartOffset=a,i.byteRangeEndOffset=s,i.url=this.resolve(t[2],n));break;case"INF":var h=parseFloat(t[1]);if(!isNaN(h)){var o,p=c++;if(e.method&&e.uri&&!e.iv){o=this.cloneObj(e);for(var y=new Uint8Array(16),l=12;16>l;l++)y[l]=p>>8*(15-l)&255;o.iv=y}else o=e;r.fragments.push({url:t[2]?this.resolve(t[2],n):null,duration:h,start:u,sn:p,level:_,cc:v,byteRangeStartOffset:a,byteRangeEndOffset:s,decryptdata:o}),u+=h,a=null}break;case"KEY":var g=t[1],f=this.parseKeyParamsByRegex(g,/(METHOD)=([^,]*)/),E=this.parseKeyParamsByRegex(g,/(URI)=["]([^,]*)["]/),b=this.parseKeyParamsByRegex(g,/(IV)=([^,]*)/);f&&(e={method:null,key:null,iv:null,uri:null},E&&"AES-128"===f&&(e.method=f,e.uri=this.resolve(E,n),e.key=null,b&&(e.iv=b,"0x"===e.iv.substring(0,2)&&(e.iv=e.iv.substring(2)),e.iv=e.iv.match(/.{8}/g),e.iv[0]=parseInt(e.iv[0],16),e.iv[1]=parseInt(e.iv[1],16),e.iv[2]=parseInt(e.iv[2],16),e.iv[3]=parseInt(e.iv[3],16),e.iv=new Uint32Array(e.iv))))}return r.totalduration=u,r.endSN=c-1,r}},{key:"loadsuccess",value:function(s,i){var o,n=s.currentTarget.responseText,r=s.currentTarget.responseURL,l=this.id,u=this.id2,a=this.hls;if(void 0===r&&(r=this.url),i.tload=performance.now(),i.mtime=new Date(s.currentTarget.getResponseHeader("Last-Modified")),0===n.indexOf("#EXTM3U"))if(n.indexOf("#EXTINF:")>0)if(null===this.id)a.trigger(e.default.MANIFEST_LOADED,{levels:[{url:r}],url:r,stats:i});else{var d=this.parseLevelPlaylist(n,r,l);i.tparsed=performance.now(),a.trigger(e.default.LEVEL_LOADED,{details:d,level:l,id:u,stats:i})}else o=this.parseMasterPlaylist(n,r),o.length?a.trigger(e.default.MANIFEST_LOADED,{levels:o,url:r,stats:i}):a.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:t.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no level found in manifest"});else a.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:t.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(a){var r,i;null===this.id?(r=t.ErrorDetails.MANIFEST_LOAD_ERROR,i=!0):(r=t.ErrorDetails.LEVEL_LOAD_ERROR,i=!1),this.loader.abort(),this.hls.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,response:a.currentTarget,level:this.id,id:this.id2})}},{key:"loadtimeout",value:function(){var r,i;null===this.id?(r=t.ErrorDetails.MANIFEST_LOAD_TIMEOUT,i=!0):(r=t.ErrorDetails.LEVEL_LOAD_TIMEOUT,i=!1),this.loader.abort(),this.hls.trigger(e.default.ERROR,{type:t.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),r}();i.default=o,s.exports=i.default},{"../errors":16,"../events":17,"../utils/url":27}],23:[function(n,t,e){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function e(i,r){for(var t=0;te;e++)t.set(i[e],r),r+=i[e].byteLength;return t}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}},{key:"mdhd",value:function(t,r){return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"minf",value:function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))}},{key:"moof",value:function(t,r,i){return e.box(e.types.moof,e.mfhd(t),e.traf(i,r))}},{key:"moov",value:function(t){for(var r=t.length,i=[];r--;)i[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(i).concat(e.mvex(t)))}},{key:"mvex",value:function(r){for(var t=r.length,i=[];t--;)i[t]=e.trex(r[t]);return e.box.apply(null,[e.types.mvex].concat(i))}},{key:"mvhd",value:function(t,r){var i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,i)}},{key:"sdtp",value:function(n){var r,t,i=n.samples||[],a=new Uint8Array(4+i.length);for(t=0;t>>8&255),i.push(255&n),i=i.concat(Array.prototype.slice.call(a));for(r=0;r>>8&255),s.push(255&n),s=s.concat(Array.prototype.slice.call(a));var u=e.box(e.types.avcC,new Uint8Array([1,i[3],i[4],i[5],255,224|t.sps.length].concat(i).concat([t.pps.length]).concat(s))),o=t.width,l=t.height;return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),u,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"esds",value:function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}},{key:"mp4a",value:function(t){var r=t.audiosamplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))}},{key:"stsd",value:function(t){return"audio"===t.type?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))}},{key:"tkhd",value:function(t){var r=t.id,i=t.duration,a=t.width,n=t.height;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,a>>8&255,255&a,0,0,n>>8&255,255&n,0,0]))}},{key:"traf",value:function(i,t){var a=e.sdtp(i),r=i.id;return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),e.box(e.types.tfdt,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t])),e.trun(i,a.length+16+16+8+16+8+8),a)}},{key:"trak",value:function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"trex",value:function(r){var t=r.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(f,o){var a,r,n,s,t,l,d=f.samples||[],i=d.length,h=12+16*i,u=new Uint8Array(h);for(o+=8+h,u.set([0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),a=0;i>a;a++)r=d[a],n=r.duration,s=r.size,t=r.flags,l=r.cts,u.set([n>>>24&255,n>>>16&255,n>>>8&255,255&n,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t.isLeading<<2|r.flags.dependsOn,t.isDependedOn<<6|t.hasRedundancy<<4|t.paddingValue<<1|t.isNonSync,61440&t.degradPrio,15&t.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*a);return e.box(e.types.trun,u)}},{key:"initSegment",value:function(i){e.types||e.init();var t,r=e.moov(i);return t=new Uint8Array(e.FTYP.byteLength+r.byteLength),t.set(e.FTYP),t.set(r,e.FTYP.byteLength),t}}]),e}();e.default=a,t.exports=e.default},{}],24:[function(i,h,a){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(a,"__esModule",{value:!0});var d=function(){function e(i,r){for(var t=0;t1?r.logger.log("AVC:"+l+" ms hole between fragments detected,filling it"):-1>l&&r.logger.log("AVC:"+-l+" ms overlapping between fragments detected"),a=g,s=Math.max(s-l,a),r.logger.log("Video/PTS/DTS adjusted:"+s+"/"+a)),A=Math.max(0,s),_=Math.max(0,a)}i={size:E,duration:0,cts:(s-a)/h,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},d.key===!0?(i.flags.dependsOn=2,i.flags.isNonSync=0):(i.flags.dependsOn=1,i.flags.isNonSync=1),o.push(i),c=a}o.length>=2&&(i.duration=o[o.length-2].duration),this.nextAvcDts=a+i.duration*h,n.len=0,n.nbNalu=0,navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(o[0].flags.dependsOn=2,o[0].flags.isNonSync=0),n.samples=o,R=t.default.moof(n.sequenceNumber++,_/h,n),n.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:R,mdat:u,startPTS:A/v,endPTS:(s+h*i.duration)/v,startDTS:_/v,endDTS:(a+h*i.duration)/v,type:"video",nb:o.length})}},{key:"remuxAudio",value:function(a,L,R){var _,d,i,v,l,E,b,y,h,m,p,u,s,A=8,f=this.PES_TIMESCALE,g=this.PES2MP4SCALEFACTOR,o=[];for(l=new Uint8Array(a.len+8),_=new DataView(l.buffer),_.setUint32(0,l.byteLength),l.set(t.default.types.mdat,4);a.samples.length;){if(d=a.samples.shift(),v=d.unit,l.set(v,A),A+=v.byteLength,m=d.pts-this._initDTS,p=d.dts-this._initDTS,void 0!==h)u=this._PTSNormalize(m,h),s=this._PTSNormalize(p,h),i.duration=(s-h)/g,i.duration<0&&(r.logger.log("invalid AAC sample duration at PTS:"+d.pts+":"+i.duration),i.duration=0);else{var n,c=this.nextAacPts;u=this._PTSNormalize(m,c),s=this._PTSNormalize(p,c),n=Math.round(1e3*(u-c)/f),(R||Math.abs(n)<600)&&n&&(n>1?r.logger.log(n+" ms hole between AAC samples detected,filling it"):-1>n&&r.logger.log(-n+" ms overlapping between AAC samples detected"),u=s=c),b=Math.max(0,u),y=Math.max(0,s)}i={size:v.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},o.push(i),h=s}o.length>=2&&(i.duration=o[o.length-2].duration),this.nextAacPts=u+g*i.duration,a.len=0,a.samples=o,E=t.default.moof(a.sequenceNumber++,y/g,a),a.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:E,mdat:l,startPTS:b/f,endPTS:this.nextAacPts/f,startDTS:y/f,endDTS:(s+g*i.duration)/f,type:"audio",nb:o.length})}},{key:"remuxID3",value:function(r,a){var t,n=r.samples.length;if(n){for(var i=0;n>i;i++)t=r.samples[i],t.pts=(t.pts-this._initPTS)/this.PES_TIMESCALE,t.dts=(t.dts-this._initDTS)/this.PES_TIMESCALE;this.observer.trigger(e.default.FRAG_PARSING_METADATA,{samples:r.samples})}r.samples=[],a=a}},{key:"_PTSNormalize",value:function(e,t){var r;if(void 0===t)return e;for(r=e>t?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}},{key:"timescale",get:function(){return this.MP4_TIMESCALE}}]),i}();a.default=o,h.exports=a.default},{"../errors":16,"../events":17,"../remux/mp4-generator":23,"../utils/logger":26}],25:[function(r,e,i){"use strict";var t={search:function(a,s){for(var t=0,r=a.length-1,e=null,i=null;r>=t;){e=(t+r)/2|0,i=a[e];var n=s(i);if(n>0)t=e+1;else{if(!(0>n))return i;r=e-1}}return null}};e.exports=t},{}],26:[function(d,u,r){"use strict";function e(){}function l(t,e){return e="["+t+"] > "+e}function a(t){var r=window.console[t];return r?function(){for(var a=arguments.length,e=Array(a),i=0;a>i;i++)e[i]=arguments[i];e[0]&&(e[0]=l(t,e[0])),r.apply(window.console,e)}:e}function s(r){for(var i=arguments.length,n=Array(i>1?i-1:0),e=1;i>e;e++)n[e-1]=arguments[e];n.forEach(function(e){t[e]=r[e]?r[e].bind(r):a(e)})}Object.defineProperty(r,"__esModule",{value:!0});var i={trace:e,debug:e,log:e,warn:e,info:e,error:e},t=i,n=function(e){if(e===!0||"object"==typeof e){s(e,"debug","log","info","warn","error");try{t.log()}catch(e){t=i}}else t=i};r.enableLogs=n;var o=t;r.logger=o},{}],27:[function(r,t,i){"use strict";var e={buildAbsoluteURL:function(i,t){if(t=t.trim(),/^[a-z]+:/i.test(t))return t;var a=null,n=null,s=/^([^#]*)(.*)$/.exec(t);s&&(n=s[2],t=s[1]);var o=/^([^\?]*)(.*)$/.exec(t);o&&(a=o[2],t=o[1]);var u=/^([^#]*)(.*)$/.exec(i);u&&(i=u[1]);var d=/^([^\?]*)(.*)$/.exec(i);d&&(i=d[1]);var l=/^((([a-z]+):)?\/\/[a-z0-9\.-]+(:[0-9]+)?\/)(.*)$/i.exec(i),c=l[3],h=l[1],f=l[5],r=null;if(/^\/\//.test(t))r=c+"://"+e.buildAbsolutePath("",t.substring(2));else if(/^\//.test(t))r=h+e.buildAbsolutePath("",t.substring(1));else{var g=e.buildAbsolutePath(f,t);r=h+g}return a&&(r+=a),n&&(r+=n),r},buildAbsolutePath:function(n,s){for(var i,e,o=s,a="",t=n.replace(/[^\/]*$/,o.replace(/(\/|^)(?:\.?\/+)+/g,"$1")),r=0;e=t.indexOf("/../",r),e>-1;r=e+i)i=/^\/(?:\.\.\/)*/.exec(t.slice(e))[0].length,a=(a+t.substring(r,e)).replace(new RegExp("(?:\\/+[^\\/]*){0,"+(i-1)/3+"}$"),"/");return a+t.substr(r)}};t.exports=e},{}],28:[function(r,i,e){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function"); +}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t this.config.appendErrorMaxRetry) { - logger.log(`fail ${this.config.appendErrorMaxRetry} times to append segment in sourceBuffer`); - event.fatal = true; - hls.trigger(Event.ERROR, event); - this.state = State.ERROR; - return; - } else { - event.fatal = false; - hls.trigger(Event.ERROR, event); + // just discard QuotaExceededError for now, and wait for the natural browser buffer eviction + //http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror + if(err.code !== 22) { + if (this.appendError) { + this.appendError++; + } else { + this.appendError = 1; + } + var event = {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPEND_ERROR, frag: this.fragCurrent}; + /* with UHD content, we could get loop of quota exceeded error until + browser is able to evict some data from sourcebuffer. retrying help recovering this + */ + if (this.appendError > this.config.appendErrorMaxRetry) { + logger.log(`fail ${this.config.appendErrorMaxRetry} times to append segment in sourceBuffer`); + event.fatal = true; + hls.trigger(Event.ERROR, event); + this.state = State.ERROR; + return; + } else { + event.fatal = false; + hls.trigger(Event.ERROR, event); + } } } this.state = State.APPENDING; diff --git a/dashboard-ui/bower_components/hls.js/src/hls.js b/dashboard-ui/bower_components/hls.js/src/hls.js index 7b7fe52fb6..d0c1e334c5 100644 --- a/dashboard-ui/bower_components/hls.js/src/hls.js +++ b/dashboard-ui/bower_components/hls.js/src/hls.js @@ -54,7 +54,7 @@ class Hls { manifestLoadingRetryDelay: 1000, // fpsDroppedMonitoringPeriod: 5000, // fpsDroppedMonitoringThreshold: 0.2, - appendErrorMaxRetry: 200, + appendErrorMaxRetry: 3, loader: XhrLoader, fLoader: undefined, pLoader: undefined, diff --git a/dashboard-ui/bower_components/hls.js/src/remux/mp4-generator.js b/dashboard-ui/bower_components/hls.js/src/remux/mp4-generator.js index ad98894950..699a0101fb 100644 --- a/dashboard-ui/bower_components/hls.js/src/remux/mp4-generator.js +++ b/dashboard-ui/bower_components/hls.js/src/remux/mp4-generator.js @@ -152,6 +152,7 @@ class MP4 { payload = Array.prototype.slice.call(arguments, 1), size = 0, i = payload.length, + len = i, result, view; // calculate the total size we need to allocate @@ -163,7 +164,7 @@ class MP4 { view.setUint32(0, result.byteLength); result.set(type, 4); // copy the payload into the result - for (i = 0, size = 8; i < payload.length; i++) { + for (i = 0, size = 8; i < len; i++) { result.set(payload[i], size); size += payload[i].byteLength; } @@ -341,7 +342,9 @@ class MP4 { 0xE0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets ].concat(sps).concat([ track.pps.length // numOfPictureParameterSets - ]).concat(pps))); // "PPS" + ]).concat(pps))), // "PPS" + width = track.width, + height = track.height; //console.log('avcc:' + Hex.hexDump(avcc)); return MP4.box(MP4.types.avc1, new Uint8Array([ 0x00, 0x00, 0x00, // reserved @@ -352,10 +355,10 @@ class MP4 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined - (track.width >> 8) & 0xFF, - track.width & 0xff, // width - (track.height >> 8) & 0xFF, - track.height & 0xff, // height + (width >> 8) & 0xFF, + width & 0xff, // width + (height >> 8) & 0xFF, + height & 0xff, // height 0x00, 0x48, 0x00, 0x00, // horizresolution 0x00, 0x48, 0x00, 0x00, // vertresolution 0x00, 0x00, 0x00, 0x00, // reserved @@ -380,17 +383,18 @@ class MP4 { } static esds(track) { + var configlen = track.config.length; return new Uint8Array([ 0x00, // version 0 0x00, 0x00, 0x00, // flags 0x03, // descriptor_type - 0x17+track.config.length, // length + 0x17+configlen, // length 0x00, 0x01, //es_id 0x00, // stream_priority 0x04, // descriptor_type - 0x0f+track.config.length, // length + 0x0f+configlen, // length 0x40, //codec : mpeg4_audio 0x15, // stream_type 0x00, 0x00, 0x00, // buffer_size @@ -398,23 +402,24 @@ class MP4 { 0x00, 0x00, 0x00, 0x00, // avgBitrate 0x05 // descriptor_type - ].concat([track.config.length]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor + ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor } static mp4a(track) { - return MP4.box(MP4.types.mp4a, new Uint8Array([ - 0x00, 0x00, 0x00, // reserved - 0x00, 0x00, 0x00, // reserved - 0x00, 0x01, // data_reference_index - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, // reserved - 0x00, track.channelCount, // channelcount - 0x00, 0x10, // sampleSize:16bits - 0x00, 0x00, 0x00, 0x00, // reserved2 - (track.audiosamplerate >> 8) & 0xFF, - track.audiosamplerate & 0xff, // - 0x00, 0x00]), - MP4.box(MP4.types.esds, MP4.esds(track))); + var audiosamplerate = track.audiosamplerate; + return MP4.box(MP4.types.mp4a, new Uint8Array([ + 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, track.channelCount, // channelcount + 0x00, 0x10, // sampleSize:16bits + 0x00, 0x00, 0x00, 0x00, // reserved2 + (audiosamplerate >> 8) & 0xFF, + audiosamplerate & 0xff, // + 0x00, 0x00]), + MP4.box(MP4.types.esds, MP4.esds(track))); } static stsd(track) { @@ -426,20 +431,24 @@ class MP4 { } static tkhd(track) { + var id = track.id, + duration = track.duration, + width = track.width, + height = track.height; return MP4.box(MP4.types.tkhd, new Uint8Array([ 0x00, // version 0 0x00, 0x00, 0x07, // flags 0x00, 0x00, 0x00, 0x00, // creation_time 0x00, 0x00, 0x00, 0x00, // modification_time - (track.id >> 24) & 0xFF, - (track.id >> 16) & 0xFF, - (track.id >> 8) & 0xFF, - track.id & 0xFF, // track_ID + (id >> 24) & 0xFF, + (id >> 16) & 0xFF, + (id >> 8) & 0xFF, + id & 0xFF, // track_ID 0x00, 0x00, 0x00, 0x00, // reserved - (track.duration >> 24), - (track.duration >> 16) & 0xFF, - (track.duration >> 8) & 0xFF, - track.duration & 0xFF, // duration + (duration >> 24), + (duration >> 16) & 0xFF, + (duration >> 8) & 0xFF, + duration & 0xFF, // duration 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved 0x00, 0x00, // layer @@ -455,25 +464,26 @@ class MP4 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix - (track.width >> 8) & 0xFF, - track.width & 0xFF, + (width >> 8) & 0xFF, + width & 0xFF, 0x00, 0x00, // width - (track.height >> 8) & 0xFF, - track.height & 0xFF, + (height >> 8) & 0xFF, + height & 0xFF, 0x00, 0x00 // height ])); } static traf(track,baseMediaDecodeTime) { - var sampleDependencyTable = MP4.sdtp(track); + var sampleDependencyTable = MP4.sdtp(track), + id = track.id; return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([ 0x00, // version 0 0x00, 0x00, 0x00, // flags - (track.id >> 24), - (track.id >> 16) & 0XFF, - (track.id >> 8) & 0XFF, - (track.id & 0xFF) // track_ID + (id >> 24), + (id >> 16) & 0XFF, + (id >> 8) & 0XFF, + (id & 0xFF) // track_ID ])), MP4.box(MP4.types.tfdt, new Uint8Array([ 0x00, // version 0 @@ -505,13 +515,14 @@ class MP4 { } static trex(track) { + var id = track.id; return MP4.box(MP4.types.trex, new Uint8Array([ 0x00, // version 0 0x00, 0x00, 0x00, // flags - (track.id >> 24), - (track.id >> 16) & 0XFF, - (track.id >> 8) & 0XFF, - (track.id & 0xFF), // track_ID + (id >> 24), + (id >> 16) & 0XFF, + (id >> 8) & 0XFF, + (id & 0xFF), // track_ID 0x00, 0x00, 0x00, 0x01, // default_sample_description_index 0x00, 0x00, 0x00, 0x00, // default_sample_duration 0x00, 0x00, 0x00, 0x00, // default_sample_size @@ -520,44 +531,50 @@ class MP4 { } static trun(track, offset) { - var samples, sample, i, array; - samples = track.samples || []; - array = new Uint8Array(12 + (16 * samples.length)); - offset += 8 + array.byteLength; + var samples= track.samples || [], + len = samples.length, + arraylen = 12 + (16 * len), + array = new Uint8Array(arraylen), + i,sample,duration,size,flags,cts; + offset += 8 + arraylen; array.set([ 0x00, // version 0 0x00, 0x0f, 0x01, // flags - (samples.length >>> 24) & 0xFF, - (samples.length >>> 16) & 0xFF, - (samples.length >>> 8) & 0xFF, - samples.length & 0xFF, // sample_count + (len >>> 24) & 0xFF, + (len >>> 16) & 0xFF, + (len >>> 8) & 0xFF, + len & 0xFF, // sample_count (offset >>> 24) & 0xFF, (offset >>> 16) & 0xFF, (offset >>> 8) & 0xFF, offset & 0xFF // data_offset ],0); - for (i = 0; i < samples.length; i++) { + for (i = 0; i < len; i++) { sample = samples[i]; + duration = sample.duration; + size = sample.size; + flags = sample.flags; + cts = sample.cts; array.set([ - (sample.duration >>> 24) & 0xFF, - (sample.duration >>> 16) & 0xFF, - (sample.duration >>> 8) & 0xFF, - sample.duration & 0xFF, // sample_duration - (sample.size >>> 24) & 0xFF, - (sample.size >>> 16) & 0xFF, - (sample.size >>> 8) & 0xFF, - sample.size & 0xFF, // sample_size - (sample.flags.isLeading << 2) | sample.flags.dependsOn, - (sample.flags.isDependedOn << 6) | - (sample.flags.hasRedundancy << 4) | - (sample.flags.paddingValue << 1) | - sample.flags.isNonSync, - sample.flags.degradPrio & 0xF0 << 8, - sample.flags.degradPrio & 0x0F, // sample_flags - (sample.cts >>> 24) & 0xFF, - (sample.cts >>> 16) & 0xFF, - (sample.cts >>> 8) & 0xFF, - sample.cts & 0xFF // sample_composition_time_offset + (duration >>> 24) & 0xFF, + (duration >>> 16) & 0xFF, + (duration >>> 8) & 0xFF, + duration & 0xFF, // sample_duration + (size >>> 24) & 0xFF, + (size >>> 16) & 0xFF, + (size >>> 8) & 0xFF, + size & 0xFF, // sample_size + (flags.isLeading << 2) | sample.flags.dependsOn, + (flags.isDependedOn << 6) | + (flags.hasRedundancy << 4) | + (flags.paddingValue << 1) | + flags.isNonSync, + flags.degradPrio & 0xF0 << 8, + flags.degradPrio & 0x0F, // sample_flags + (cts >>> 24) & 0xFF, + (cts >>> 16) & 0xFF, + (cts >>> 8) & 0xFF, + cts & 0xFF // sample_composition_time_offset ],12+16*i); } return MP4.box(MP4.types.trun, array); diff --git a/dashboard-ui/bower_components/paper-ripple/.bower.json b/dashboard-ui/bower_components/paper-ripple/.bower.json index 2f654d71c6..157225ee71 100644 --- a/dashboard-ui/bower_components/paper-ripple/.bower.json +++ b/dashboard-ui/bower_components/paper-ripple/.bower.json @@ -32,14 +32,14 @@ "iron-test-helpers": "PolymerElements/iron-test-helpers#^1.0.0" }, "ignore": [], - "homepage": "https://github.com/polymerelements/paper-ripple", + "homepage": "https://github.com/PolymerElements/paper-ripple", "_release": "1.0.5", "_resolution": { "type": "version", "tag": "v1.0.5", "commit": "d72e7a9a8ab518b901ed18dde492df3b87a93be5" }, - "_source": "git://github.com/polymerelements/paper-ripple.git", + "_source": "git://github.com/PolymerElements/paper-ripple.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/paper-ripple" + "_originalSource": "PolymerElements/paper-ripple" } \ No newline at end of file