diff --git a/dashboard-ui/bower_components/hls.js/.bower.json b/dashboard-ui/bower_components/hls.js/.bower.json index b08f841559..fcc1dca235 100644 --- a/dashboard-ui/bower_components/hls.js/.bower.json +++ b/dashboard-ui/bower_components/hls.js/.bower.json @@ -1,6 +1,7 @@ { "name": "hls.js", - "version": "0.4.8", + "version": "0.4.9", + "license": "Apache-2.0", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", "authors": [ @@ -15,11 +16,11 @@ "test", "tests" ], - "_release": "0.4.8", + "_release": "0.4.9", "_resolution": { "type": "version", - "tag": "v0.4.8", - "commit": "de1534ca184ffa3a313fc5b433713512f6ab1c27" + "tag": "v0.4.9", + "commit": "11f271bfa1f17571756d1b4cf79271c45035bbbf" }, "_source": "git://github.com/dailymotion/hls.js.git", "_target": "~0.4.5", diff --git a/dashboard-ui/bower_components/hls.js/bower.json b/dashboard-ui/bower_components/hls.js/bower.json index e59c4d6b47..3bef0f23d4 100644 --- a/dashboard-ui/bower_components/hls.js/bower.json +++ b/dashboard-ui/bower_components/hls.js/bower.json @@ -1,6 +1,7 @@ { "name": "hls.js", - "version": "0.4.8", + "version": "0.4.9", + "license" : "Apache-2.0", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", "authors": [ diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.js b/dashboard-ui/bower_components/hls.js/dist/hls.js index ffdf2ec755..ded3b3014e 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.js +++ b/dashboard-ui/bower_components/hls.js/dist/hls.js @@ -881,13 +881,15 @@ var MSEMediaController = (function (_EventHandler) { }, { key: 'startLoad', value: function startLoad() { - if (this.levels && this.media) { + if (this.levels) { this.startInternal(); - if (this.lastCurrentTime) { - _utilsLogger.logger.log('seeking @ ' + this.lastCurrentTime); + var media = this.media, + lastCurrentTime = this.lastCurrentTime; + if (media && lastCurrentTime) { + _utilsLogger.logger.log('seeking @ ' + lastCurrentTime); if (!this.lastPaused) { _utilsLogger.logger.log('resuming video'); - this.media.play(); + media.play(); } this.state = State.IDLE; } else { @@ -897,7 +899,7 @@ var MSEMediaController = (function (_EventHandler) { this.nextLoadPosition = this.startPosition = this.lastCurrentTime; this.tick(); } else { - _utilsLogger.logger.warn('cannot start loading as either manifest not parsed or video not attached'); + _utilsLogger.logger.warn('cannot start loading as manifest not parsed yet'); } } }, { @@ -1486,7 +1488,7 @@ var MSEMediaController = (function (_EventHandler) { to avoid rounding issues/infinite loop, only flush buffer range of length greater than 500ms. */ - if (flushEnd - flushStart > 0.5) { + if (Math.min(flushEnd, bufEnd) - flushStart > 0.5) { _utilsLogger.logger.log('flush ' + type + ' [' + flushStart + ',' + flushEnd + '], of [' + bufStart + ',' + bufEnd + '], pos:' + this.media.currentTime); sb.remove(flushStart, flushEnd); return false; @@ -1499,6 +1501,8 @@ var MSEMediaController = (function (_EventHandler) { return false; } } + } else { + _utilsLogger.logger.warn('abort flushing too many retries'); } /* after successful buffer flushing, rebuild buffer Range array @@ -2063,7 +2067,7 @@ var MSEMediaController = (function (_EventHandler) { jumpThreshold = 0; } else { // playhead not moving AND media playing - _utilsLogger.logger.log('playback seems stuck'); + _utilsLogger.logger.log('playback seems stuck @' + currentTime); if (!this.stalled) { this.hls.trigger(_events2['default'].ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_STALLED_ERROR, fatal: false }); this.stalled = true; @@ -2850,52 +2854,52 @@ var AACDemuxer = (function () { id3 = new _demuxId32['default'](data), pts = 90 * id3.timeStamp, config, - adtsFrameSize, - adtsStartOffset, - adtsHeaderLen, + frameLength, + frameDuration, + frameIndex, + offset, + headerLength, stamp, - nbSamples, len, aacSample; // look for ADTS header (0xFFFx) - for (adtsStartOffset = id3.length, len = data.length; adtsStartOffset < len - 1; adtsStartOffset++) { - if (data[adtsStartOffset] === 0xff && (data[adtsStartOffset + 1] & 0xf0) === 0xf0) { + for (offset = id3.length, len = data.length; offset < len - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf0) === 0xf0) { break; } } if (!track.audiosamplerate) { - config = _adts2['default'].getAudioConfig(this.observer, data, adtsStartOffset, audioCodec); + config = _adts2['default'].getAudioConfig(this.observer, data, offset, audioCodec); track.config = config.config; track.audiosamplerate = config.samplerate; track.channelCount = config.channelCount; track.codec = config.codec; - track.timescale = this.remuxer.timescale; - track.duration = this.remuxer.timescale * duration; + track.timescale = config.samplerate; + track.duration = config.samplerate * duration; _utilsLogger.logger.log('parsed codec:' + track.codec + ',rate:' + config.samplerate + ',nb channel:' + config.channelCount); } - nbSamples = 0; - while (adtsStartOffset + 5 < len) { + frameIndex = 0; + frameDuration = 1024 * 90000 / track.audiosamplerate; + while (offset + 5 < len) { + // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header + headerLength = !!(data[offset + 1] & 0x01) ? 7 : 9; // retrieve frame size - adtsFrameSize = (data[adtsStartOffset + 3] & 0x03) << 11; - // byte 4 - adtsFrameSize |= data[adtsStartOffset + 4] << 3; - // byte 5 - adtsFrameSize |= (data[adtsStartOffset + 5] & 0xE0) >>> 5; - adtsHeaderLen = !!(data[adtsStartOffset + 1] & 0x01) ? 7 : 9; - adtsFrameSize -= adtsHeaderLen; - stamp = Math.round(pts + nbSamples * 1024 * 90000 / track.audiosamplerate); + frameLength = (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xE0) >>> 5; + frameLength -= headerLength; //stamp = pes.pts; - //console.log('AAC frame, offset/length/pts:' + (adtsStartOffset+7) + '/' + adtsFrameSize + '/' + stamp.toFixed(0)); - if (adtsFrameSize > 0 && adtsStartOffset + adtsHeaderLen + adtsFrameSize <= len) { - aacSample = { unit: data.subarray(adtsStartOffset + adtsHeaderLen, adtsStartOffset + adtsHeaderLen + adtsFrameSize), pts: stamp, dts: stamp }; + + if (frameLength > 0 && offset + headerLength + frameLength <= len) { + stamp = pts + frameIndex * frameDuration; + //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`); + aacSample = { unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp }; track.samples.push(aacSample); - track.len += adtsFrameSize; - adtsStartOffset += adtsFrameSize + adtsHeaderLen; - nbSamples++; + track.len += frameLength; + offset += frameLength + headerLength; + frameIndex++; // look for ADTS header (0xFFFx) - for (; adtsStartOffset < len - 1; adtsStartOffset++) { - if (data[adtsStartOffset] === 0xff && (data[adtsStartOffset + 1] & 0xf0) === 0xf0) { + for (; offset < len - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf0) === 0xf0) { break; } } @@ -2913,12 +2917,12 @@ var AACDemuxer = (function () { value: function probe(data) { // check if data contains ID3 timestamp and ADTS sync worc var id3 = new _demuxId32['default'](data), - adtsStartOffset, + offset, len; if (id3.hasTimeStamp) { // look for ADTS header (0xFFFx) - for (adtsStartOffset = id3.length, len = data.length; adtsStartOffset < len - 1; adtsStartOffset++) { - if (data[adtsStartOffset] === 0xff && (data[adtsStartOffset + 1] & 0xf0) === 0xf0) { + for (offset = id3.length, len = data.length; offset < len - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf0) === 0xf0) { //logger.log('ADTS sync word found !'); return true; } @@ -4553,8 +4557,8 @@ var TSDemuxer = (function () { track.audiosamplerate = config.samplerate; track.channelCount = config.channelCount; track.codec = config.codec; - track.timescale = this.remuxer.timescale; - track.duration = track.timescale * duration; + track.timescale = config.samplerate; + track.duration = config.samplerate * duration; _utilsLogger.logger.log('parsed codec:' + track.codec + ',rate:' + config.samplerate + ',nb channel:' + config.channelCount); } frameIndex = 0; @@ -4579,7 +4583,7 @@ var TSDemuxer = (function () { //stamp = pes.pts; if (frameLength > 0 && offset + headerLength + frameLength <= len) { - stamp = Math.round(pts + frameIndex * frameDuration); + stamp = pts + frameIndex * frameDuration; //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`); aacSample = { unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp }; track.samples.push(aacSample); @@ -5076,7 +5080,7 @@ var Hls = (function () { debug: false, maxBufferLength: 30, maxBufferSize: 60 * 1000 * 1000, - maxBufferHole: 0.3, + maxBufferHole: 0.5, maxSeekHole: 2, liveSyncDurationCount: 3, liveMaxLatencyDurationCount: Infinity, @@ -6674,7 +6678,8 @@ var MP4Remuxer = (function () { var view, offset = 8, pesTimeScale = this.PES_TIMESCALE, - pes2mp4ScaleFactor = this.PES2MP4SCALEFACTOR, + mp4timeScale = track.timescale, + pes2mp4ScaleFactor = pesTimeScale / mp4timeScale, aacSample, mp4Sample, unit, @@ -6690,15 +6695,10 @@ var MP4Remuxer = (function () { samples = [], samples0 = []; - track.samples.forEach(function (aacSample) { - if (pts === undefined || aacSample.pts > pts) { - samples0.push(aacSample); - pts = aacSample.pts; - } else { - _utilsLogger.logger.warn('dropping past audio frame'); - track.len -= aacSample.unit.byteLength; - } + track.samples.sort(function (a, b) { + return a.pts - b.pts; }); + samples0 = track.samples; while (samples0.length) { aacSample = samples0.shift(); @@ -6710,13 +6710,15 @@ var MP4Remuxer = (function () { if (lastDTS !== undefined) { ptsnorm = this._PTSNormalize(pts, lastDTS); dtsnorm = this._PTSNormalize(dts, lastDTS); - // let's compute sample duration + // let's compute sample duration. + // there should be 1024 audio samples in one AAC frame mp4Sample.duration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor; - if (mp4Sample.duration < 0) { + if (Math.abs(mp4Sample.duration - 1024) > 10) { // not expected to happen ... - _utilsLogger.logger.log('invalid AAC sample duration at PTS:' + aacSample.pts + ':' + mp4Sample.duration); - mp4Sample.duration = 0; + _utilsLogger.logger.log('invalid AAC sample duration at PTS ' + Math.round(pts / 90) + ',should be 1024,found :' + Math.round(mp4Sample.duration)); } + mp4Sample.duration = 1024; + dtsnorm = 1024 * pes2mp4ScaleFactor + lastDTS; } else { var nextAacPts = this.nextAacPts, delta; 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 6615133cc3..9e94e2a4b3 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.js.map +++ b/dashboard-ui/bower_components/hls.js/dist/hls.js.map @@ -37,7 +37,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;sBC7DkB,WAAW;;;;4BACJ,kBAAkB;;;;IAErC,aAAa;YAAb,aAAa;;AAEN,WAFP,aAAa,CAEL,GAAG,EAAE;0BAFb,aAAa;;AAGf,+BAHE,aAAa,6CAGT,GAAG,EAAE,oBAAM,kBAAkB,EAAE;AACrC,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC5B,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;GAC1B;;eAPG,aAAa;;WASV,mBAAG;AACR,gCAAa,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;;;WAEiB,4BAAC,IAAI,EAAE;AACvB,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,Q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", + "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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;sBC7DkB,WAAW;;;;4BACJ,kBAAkB;;;;IAErC,aAAa;YAAb,aAAa;;AAEN,WAFP,aAAa,CAEL,GAAG,EAAE;0BAFb,aAAa;;AAGf,+BAHE,aAAa,6CAGT,GAAG,EAAE,oBAAM,kBAAkB,EAAE;AACrC,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC5B,QAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;GAC1B;;eAPG,aAAa;;WASV,mBAAG;AACR,gCAAa,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;;;WAEiB,4BAAC,IAAI,EAAE;AACvB,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,Q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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -46,29 +46,29 @@ "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 var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp.default === 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'], (\n // try to call default if defined to also support babel esmodule\n // exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);'\n )),\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';\nimport EventHandler from '../event-handler';\n\nclass AbrController extends EventHandler {\n\n constructor(hls) {\n super(hls, Event.FRAG_LOAD_PROGRESS);\n this.lastfetchlevel = 0;\n this._autoLevelCapping = -1;\n this._nextAutoLevel = -1;\n }\n\n destroy() {\n EventHandler.prototype.destroy.call(this);\n }\n\n onFragLoadProgress(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 EventHandler from '../event-handler';\nimport {logger} from '../utils/logger';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass LevelController extends EventHandler {\n\n constructor(hls) {\n super(hls,\n Event.MANIFEST_LOADED,\n Event.LEVEL_LOADED,\n Event.ERROR);\n this.ontick = this.tick.bind(this);\n this._manualLevel = this._autoLevelCapping = -1;\n }\n\n destroy() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n this._manualLevel = -1;\n }\n\n onManifestLoaded(data) {\n var levels0 = [], levels = [], bitrateStart, i, bitrateSet = {}, videoCodecFound = false, audioCodecFound = false, hls = this.hls;\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 checkSupportedAudio = function(codec) { return MediaSource.isTypeSupported(`audio/mp4;codecs=${codec}`);};\n var checkSupportedVideo = function(codec) { return MediaSource.isTypeSupported(`video/mp4;codecs=${codec}`);};\n var audioCodec = level.audioCodec, videoCodec = level.videoCodec;\n\n return (!audioCodec || checkSupportedAudio(audioCodec)) &&\n (!videoCodec || checkSupportedVideo(videoCodec));\n });\n\n if(levels.length) {\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 hls.trigger(Event.MANIFEST_PARSED, {levels: this._levels, firstLevel: this._firstLevel, stats: data.stats});\n } else {\n hls.trigger(Event.ERROR, {type: ErrorTypes.NETWORK_ERROR, details: ErrorDetails.MANIFEST_PARSING_ERROR, fatal: true, url: hls.url, reason: 'no compatible level found in manifest'});\n }\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(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 * don't raise FRAG_LOAD_ERROR and FRAG_LOAD_TIMEOUT as fatal, as it is handled by mediaController\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 // FRAG_LOAD_ERROR and FRAG_LOAD_TIMEOUT are handled by mediaController\n } else if (details !== ErrorDetails.FRAG_LOAD_ERROR && details !== ErrorDetails.FRAG_LOAD_TIMEOUT) {\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(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 EventHandler from '../event-handler';\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 FRAG_LOADING_WAITING_RETRY : 3,\n WAITING_LEVEL : 4,\n PARSING : 5,\n PARSED : 6,\n APPENDING : 7,\n BUFFER_FLUSHING : 8,\n ENDED : 9\n};\n\nclass MSEMediaController extends EventHandler {\n\n constructor(hls) {\n super(hls, Event.MEDIA_ATTACHING,\n Event.MEDIA_DETACHING,\n Event.MANIFEST_PARSED,\n Event.LEVEL_LOADED,\n Event.KEY_LOADED,\n Event.FRAG_LOADED,\n Event.FRAG_PARSING_INIT_SEGMENT,\n Event.FRAG_PARSING_DATA,\n Event.FRAG_PARSED,\n Event.ERROR);\n this.config = hls.config;\n this.audioCodecSwap = false;\n this.ticks = 0;\n // Source Buffer listeners\n this.onsbue = this.onSBUpdateEnd.bind(this);\n this.onsbe = this.onSBUpdateError.bind(this);\n this.ontick = this.tick.bind(this);\n }\n\n destroy() {\n this.stop();\n EventHandler.prototype.destroy.call(this);\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 this.fragLoadError = 0;\n }\n\n stop() {\n this.mp4segments = [];\n this.flushRange = [];\n this.bufferRange = [];\n this.stalled = false;\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 }\n\n tick() {\n this.ticks++;\n if (this.ticks === 1) {\n this.doTick();\n if (this.ticks > 1) {\n setTimeout(this.tick, 1);\n }\n this.ticks = 0;\n }\n }\n\n doTick() {\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,this.config.maxBufferHole),\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 live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n if (typeof levelDetails === 'undefined' || levelDetails.live && this.levelLastLoaded !== level) {\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) {\n switch(mediaSource.readyState) {\n case 'open':\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 and stop loading fragment');\n //Notify the media element that it now has all of the media data\n mediaSource.endOfStream();\n this.state = State.ENDED;\n }\n break;\n case 'ended':\n logger.log('all media data available and mediaSource ended, stop loading fragment');\n this.state = State.ENDED;\n break;\n default:\n break;\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,this.config.maxBufferHole).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.FRAG_LOADING_WAITING_RETRY:\n var now = performance.now();\n var retryDate = this.retryDate;\n var media = this.media;\n var isSeeking = media && media.seeking;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if(!retryDate || (now >= retryDate) || isSeeking) {\n logger.log(`mediaController: retryDate reached, switch back to IDLE state`);\n this.state = State.IDLE;\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 case State.ENDED:\n break;\n default:\n break;\n }\n // check buffer\n this._checkBuffer();\n // check/update current fragment\n this._checkFragmentChanged();\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 break;\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(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,this.config.maxBufferHole).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 } else if (this.state === State.ENDED) {\n // switch to IDLE state to check for potential new fragment\n this.state = State.IDLE;\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 var media = this.media,\n currentTime = media.currentTime;\n // only adjust currentTime if not equal to 0\n if (!currentTime && currentTime !== this.startPosition) {\n logger.log('onMediaMetadata: adjust currentTime to startPosition');\n 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(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(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 this.levelLastLoaded = newLevelId;\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(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(this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec === undefined) {\n audioCodec = this.lastAudioCodec;\n }\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 this.fragLoadError = 0;\n }\n\n onFragParsingInitSegment(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 this.lastAudioCodec = data.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(`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(`audio/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 onFragParsingData(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},PTS:[${data.startPTS.toFixed(3)},${data.endPTS.toFixed(3)}],DTS:[${data.startDTS.toFixed(3)}/${data.endDTS.toFixed(3)}],nb:${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, ignoring FRAG_PARSING_DATA 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(data) {\n switch(data.details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n if(!data.fatal) {\n var loadError = this.fragLoadError;\n if(loadError) {\n loadError++;\n } else {\n loadError=1;\n }\n if (loadError <= this.config.fragLoadingMaxRetry) {\n this.fragLoadError = loadError;\n // reset load counter to avoid frag loop loading error\n data.frag.loadCounter = 0;\n // exponential backoff capped to 64s\n var delay = Math.min(Math.pow(2,loadError-1)*this.config.fragLoadingRetryDelay,64000);\n logger.warn(`mediaController: frag loading failed, retry in ${delay} ms`);\n this.retryDate = performance.now() + delay;\n // retry loading state\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else {\n logger.error(`mediaController: ${data.details} reaches max retry, redispatch as fatal ...`);\n // redispatch same error but with fatal set to true\n data.fatal = true;\n this.hls.trigger(Event.ERROR, data);\n this.state = State.ERROR;\n }\n }\n break;\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 {\n var currentTime = media.currentTime,\n bufferInfo = this.bufferInfo(currentTime,0),\n isPlaying = !(media.paused || media.ended || media.seeking || readyState < 3),\n jumpThreshold = 0.2,\n playheadMoving = currentTime > media.playbackRate*this.lastCurrentTime;\n\n if (this.stalled && playheadMoving) {\n this.stalled = false;\n }\n\n // check buffer upfront\n // if less than 200ms is buffered, and media is playing but playhead is not moving,\n // and we have a new buffer range available upfront, let's seek to that one\n if(bufferInfo.len <= jumpThreshold) {\n if(playheadMoving || !isPlaying) {\n // playhead moving or media not playing\n jumpThreshold = 0;\n } else {\n // playhead not moving AND media playing\n logger.log('playback seems stuck');\n if(!this.stalled) {\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_STALLED_ERROR, fatal: false});\n this.stalled = true;\n }\n }\n // if we are below threshold, try to jump if next buffer range is close\n if(bufferInfo.len <= jumpThreshold) {\n // no buffer available @ currentTime, check if next buffer is close (more than 5ms diff but within a config.maxSeekHole second range)\n var nextBufferStart = bufferInfo.nextStart, delta = nextBufferStart-currentTime;\n if(nextBufferStart &&\n (delta < this.config.maxSeekHole) &&\n (delta > 0.005) &&\n !media.seeking) {\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\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 1) {\n setTimeout(this.tick, 1);\n }\n this.ticks = 0;\n }\n }\n\n doTick() {\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,this.config.maxBufferHole),\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 live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n if (typeof levelDetails === 'undefined' || levelDetails.live && this.levelLastLoaded !== level) {\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) {\n switch(mediaSource.readyState) {\n case 'open':\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 and stop loading fragment');\n //Notify the media element that it now has all of the media data\n mediaSource.endOfStream();\n this.state = State.ENDED;\n }\n break;\n case 'ended':\n logger.log('all media data available and mediaSource ended, stop loading fragment');\n this.state = State.ENDED;\n break;\n default:\n break;\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,this.config.maxBufferHole).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.FRAG_LOADING_WAITING_RETRY:\n var now = performance.now();\n var retryDate = this.retryDate;\n var media = this.media;\n var isSeeking = media && media.seeking;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if(!retryDate || (now >= retryDate) || isSeeking) {\n logger.log(`mediaController: retryDate reached, switch back to IDLE state`);\n this.state = State.IDLE;\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 case State.ENDED:\n break;\n default:\n break;\n }\n // check buffer\n this._checkBuffer();\n // check/update current fragment\n this._checkFragmentChanged();\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 break;\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 (Math.min(flushEnd,bufEnd) - 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 } else {\n logger.warn('abort flushing too many retries');\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(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,this.config.maxBufferHole).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 } else if (this.state === State.ENDED) {\n // switch to IDLE state to check for potential new fragment\n this.state = State.IDLE;\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 var media = this.media,\n currentTime = media.currentTime;\n // only adjust currentTime if not equal to 0\n if (!currentTime && currentTime !== this.startPosition) {\n logger.log('onMediaMetadata: adjust currentTime to startPosition');\n 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(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(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 this.levelLastLoaded = newLevelId;\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(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(this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec === undefined) {\n audioCodec = this.lastAudioCodec;\n }\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 this.fragLoadError = 0;\n }\n\n onFragParsingInitSegment(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 this.lastAudioCodec = data.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(`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(`audio/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 onFragParsingData(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},PTS:[${data.startPTS.toFixed(3)},${data.endPTS.toFixed(3)}],DTS:[${data.startDTS.toFixed(3)}/${data.endDTS.toFixed(3)}],nb:${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, ignoring FRAG_PARSING_DATA 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(data) {\n switch(data.details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n if(!data.fatal) {\n var loadError = this.fragLoadError;\n if(loadError) {\n loadError++;\n } else {\n loadError=1;\n }\n if (loadError <= this.config.fragLoadingMaxRetry) {\n this.fragLoadError = loadError;\n // reset load counter to avoid frag loop loading error\n data.frag.loadCounter = 0;\n // exponential backoff capped to 64s\n var delay = Math.min(Math.pow(2,loadError-1)*this.config.fragLoadingRetryDelay,64000);\n logger.warn(`mediaController: frag loading failed, retry in ${delay} ms`);\n this.retryDate = performance.now() + delay;\n // retry loading state\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else {\n logger.error(`mediaController: ${data.details} reaches max retry, redispatch as fatal ...`);\n // redispatch same error but with fatal set to true\n data.fatal = true;\n this.hls.trigger(Event.ERROR, data);\n this.state = State.ERROR;\n }\n }\n break;\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 {\n var currentTime = media.currentTime,\n bufferInfo = this.bufferInfo(currentTime,0),\n isPlaying = !(media.paused || media.ended || media.seeking || readyState < 3),\n jumpThreshold = 0.2,\n playheadMoving = currentTime > media.playbackRate*this.lastCurrentTime;\n\n if (this.stalled && playheadMoving) {\n this.stalled = false;\n }\n\n // check buffer upfront\n // if less than 200ms is buffered, and media is playing but playhead is not moving,\n // and we have a new buffer range available upfront, let's seek to that one\n if(bufferInfo.len <= jumpThreshold) {\n if(playheadMoving || !isPlaying) {\n // playhead moving or media not playing\n jumpThreshold = 0;\n } else {\n // playhead not moving AND media playing\n logger.log(`playback seems stuck @${currentTime}`);\n if(!this.stalled) {\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_STALLED_ERROR, fatal: false});\n this.stalled = true;\n }\n }\n // if we are below threshold, try to jump if next buffer range is close\n if(bufferInfo.len <= jumpThreshold) {\n // no buffer available @ currentTime, check if next buffer is close (more than 5ms diff but within a config.maxSeekHole second range)\n var nextBufferStart = bufferInfo.nextStart, delta = nextBufferStart-currentTime;\n if(nextBufferStart &&\n (delta < this.config.maxSeekHole) &&\n (delta > 0.005) &&\n !media.seeking) {\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\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 localDecrypt(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.localDecrypt(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.localDecrypt(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", - "/**\n * AAC demuxer\n */\nimport ADTS from './adts';\nimport {logger} from '../utils/logger';\nimport ID3 from '../demux/id3';\n\n class AACDemuxer {\n\n constructor(observer,remuxerClass) {\n this.observer = observer;\n this.remuxerClass = remuxerClass;\n this.remuxer = new this.remuxerClass(observer);\n this._aacTrack = {type: 'audio', id :-1, sequenceNumber: 0, samples : [], len : 0};\n }\n\n static probe(data) {\n // check if data contains ID3 timestamp and ADTS sync worc\n var id3 = new ID3(data), adtsStartOffset,len;\n if(id3.hasTimeStamp) {\n // look for ADTS header (0xFFFx)\n for (adtsStartOffset = id3.length, len = data.length; adtsStartOffset < len - 1; adtsStartOffset++) {\n if ((data[adtsStartOffset] === 0xff) && (data[adtsStartOffset+1] & 0xf0) === 0xf0) {\n //logger.log('ADTS sync word found !');\n return true;\n }\n }\n }\n return false;\n }\n\n\n // feed incoming data to the front of the parsing pipeline\n push(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration) {\n var track = this._aacTrack,\n id3 = new ID3(data),\n pts = 90*id3.timeStamp,\n config, adtsFrameSize, adtsStartOffset, adtsHeaderLen, stamp, nbSamples, len, aacSample;\n // look for ADTS header (0xFFFx)\n for (adtsStartOffset = id3.length, len = data.length; adtsStartOffset < len - 1; adtsStartOffset++) {\n if ((data[adtsStartOffset] === 0xff) && (data[adtsStartOffset+1] & 0xf0) === 0xf0) {\n break;\n }\n }\n\n if (!track.audiosamplerate) {\n config = ADTS.getAudioConfig(this.observer,data, adtsStartOffset, audioCodec);\n track.config = config.config;\n track.audiosamplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.timescale = this.remuxer.timescale;\n track.duration = this.remuxer.timescale * duration;\n logger.log(`parsed codec:${track.codec},rate:${config.samplerate},nb channel:${config.channelCount}`);\n }\n nbSamples = 0;\n while ((adtsStartOffset + 5) < len) {\n // retrieve frame size\n adtsFrameSize = ((data[adtsStartOffset + 3] & 0x03) << 11);\n // byte 4\n adtsFrameSize |= (data[adtsStartOffset + 4] << 3);\n // byte 5\n adtsFrameSize |= ((data[adtsStartOffset + 5] & 0xE0) >>> 5);\n adtsHeaderLen = (!!(data[adtsStartOffset + 1] & 0x01) ? 7 : 9);\n adtsFrameSize -= adtsHeaderLen;\n stamp = Math.round(pts + nbSamples * 1024 * 90000 / track.audiosamplerate);\n //stamp = pes.pts;\n //console.log('AAC frame, offset/length/pts:' + (adtsStartOffset+7) + '/' + adtsFrameSize + '/' + stamp.toFixed(0));\n if ((adtsFrameSize > 0) && ((adtsStartOffset + adtsHeaderLen + adtsFrameSize) <= len)) {\n aacSample = {unit: data.subarray(adtsStartOffset + adtsHeaderLen, adtsStartOffset + adtsHeaderLen + adtsFrameSize), pts: stamp, dts: stamp};\n track.samples.push(aacSample);\n track.len += adtsFrameSize;\n adtsStartOffset += adtsFrameSize + adtsHeaderLen;\n nbSamples++;\n // look for ADTS header (0xFFFx)\n for ( ; adtsStartOffset < (len - 1); adtsStartOffset++) {\n if ((data[adtsStartOffset] === 0xff) && ((data[adtsStartOffset + 1] & 0xf0) === 0xf0)) {\n break;\n }\n }\n } else {\n break;\n }\n }\n this.remuxer.remux(this._aacTrack,{samples : []}, {samples : [ { pts: pts, dts : pts, unit : id3.payload} ]}, timeOffset);\n }\n\n destroy() {\n }\n\n}\n\nexport default AACDemuxer;\n", + "/**\n * AAC demuxer\n */\nimport ADTS from './adts';\nimport {logger} from '../utils/logger';\nimport ID3 from '../demux/id3';\n\n class AACDemuxer {\n\n constructor(observer,remuxerClass) {\n this.observer = observer;\n this.remuxerClass = remuxerClass;\n this.remuxer = new this.remuxerClass(observer);\n this._aacTrack = {type: 'audio', id :-1, sequenceNumber: 0, samples : [], len : 0};\n }\n\n static probe(data) {\n // check if data contains ID3 timestamp and ADTS sync worc\n var id3 = new ID3(data), offset,len;\n if(id3.hasTimeStamp) {\n // look for ADTS header (0xFFFx)\n for (offset = id3.length, len = data.length; offset < len - 1; offset++) {\n if ((data[offset] === 0xff) && (data[offset+1] & 0xf0) === 0xf0) {\n //logger.log('ADTS sync word found !');\n return true;\n }\n }\n }\n return false;\n }\n\n\n // feed incoming data to the front of the parsing pipeline\n push(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration) {\n var track = this._aacTrack,\n id3 = new ID3(data),\n pts = 90*id3.timeStamp,\n config, frameLength, frameDuration, frameIndex, offset, headerLength, stamp, len, aacSample;\n // look for ADTS header (0xFFFx)\n for (offset = id3.length, len = data.length; offset < len - 1; offset++) {\n if ((data[offset] === 0xff) && (data[offset+1] & 0xf0) === 0xf0) {\n break;\n }\n }\n\n if (!track.audiosamplerate) {\n config = ADTS.getAudioConfig(this.observer,data, offset, audioCodec);\n track.config = config.config;\n track.audiosamplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.timescale = config.samplerate;\n track.duration = config.samplerate * duration;\n logger.log(`parsed codec:${track.codec},rate:${config.samplerate},nb channel:${config.channelCount}`);\n }\n frameIndex = 0;\n frameDuration = 1024 * 90000 / track.audiosamplerate;\n while ((offset + 5) < len) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n headerLength = (!!(data[offset + 1] & 0x01) ? 7 : 9);\n // retrieve frame size\n frameLength = ((data[offset + 3] & 0x03) << 11) |\n (data[offset + 4] << 3) |\n ((data[offset + 5] & 0xE0) >>> 5);\n frameLength -= headerLength;\n //stamp = pes.pts;\n\n if ((frameLength > 0) && ((offset + headerLength + frameLength) <= len)) {\n stamp = pts + frameIndex * frameDuration;\n //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n aacSample = {unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp};\n track.samples.push(aacSample);\n track.len += frameLength;\n offset += frameLength + headerLength;\n frameIndex++;\n // look for ADTS header (0xFFFx)\n for ( ; offset < (len - 1); offset++) {\n if ((data[offset] === 0xff) && ((data[offset + 1] & 0xf0) === 0xf0)) {\n break;\n }\n }\n } else {\n break;\n }\n }\n this.remuxer.remux(this._aacTrack,{samples : []}, {samples : [ { pts: pts, dts : pts, unit : id3.payload} ]}, timeOffset);\n }\n\n destroy() {\n }\n\n}\n\nexport default AACDemuxer;\n", "/**\n * ADTS parser helper\n */\nimport {logger} from '../utils/logger';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\n class ADTS {\n\n static getAudioConfig(observer, data, offset, audioCodec) {\n var adtsObjectType, // :int\n adtsSampleingIndex, // :int\n adtsExtensionSampleingIndex, // :int\n adtsChanelConfig, // :int\n config,\n userAgent = navigator.userAgent.toLowerCase(),\n adtsSampleingRates = [\n 96000, 88200,\n 64000, 48000,\n 44100, 32000,\n 24000, 22050,\n 16000, 12000,\n 11025, 8000,\n 7350];\n // byte 2\n adtsObjectType = ((data[offset + 2] & 0xC0) >>> 6) + 1;\n adtsSampleingIndex = ((data[offset + 2] & 0x3C) >>> 2);\n if(adtsSampleingIndex > adtsSampleingRates.length-1) {\n observer.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: true, reason: `invalid ADTS sampling index:${adtsSampleingIndex}`});\n return;\n }\n adtsChanelConfig = ((data[offset + 2] & 0x01) << 2);\n // byte 3\n adtsChanelConfig |= ((data[offset + 3] & 0xC0) >>> 6);\n logger.log(`manifest codec:${audioCodec},ADTS data:type:${adtsObjectType},sampleingIndex:${adtsSampleingIndex}[${adtsSampleingRates[adtsSampleingIndex]}Hz],channelConfig:${adtsChanelConfig}`);\n // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n if (userAgent.indexOf('firefox') !== -1) {\n if (adtsSampleingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4);\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n }\n // Android : always use AAC\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n } else {\n /* for other browsers (chrome ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4);\n // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n if ((audioCodec && ((audioCodec.indexOf('mp4a.40.29') !== -1) ||\n (audioCodec.indexOf('mp4a.40.5') !== -1))) ||\n (!audioCodec && adtsSampleingIndex >= 6)) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSampleingIndex = adtsSampleingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz OR nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSampleingIndex >= 6 || adtsChanelConfig === 1) ||\n (!audioCodec && adtsChanelConfig === 1)) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n adtsExtensionSampleingIndex = adtsSampleingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n config[0] = adtsObjectType << 3;\n // samplingFrequencyIndex\n config[0] |= (adtsSampleingIndex & 0x0E) >> 1;\n config[1] |= (adtsSampleingIndex & 0x01) << 7;\n // channelConfiguration\n config[1] |= adtsChanelConfig << 3;\n if (adtsObjectType === 5) {\n // adtsExtensionSampleingIndex\n config[1] |= (adtsExtensionSampleingIndex & 0x0E) >> 1;\n config[2] = (adtsExtensionSampleingIndex & 0x01) << 7;\n // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n return {config: config, samplerate: adtsSampleingRates[adtsSampleingIndex], channelCount: adtsChanelConfig, codec: ('mp4a.40.' + adtsObjectType)};\n }\n}\n\nexport default ADTS;\n", "/* inline demuxer.\n * probe fragments and instantiate appropriate demuxer depending on content type (TSDemuxer, AACDemuxer, ...)\n */\n\nimport Event from '../events';\nimport {ErrorTypes, ErrorDetails} from '../errors';\nimport AACDemuxer from '../demux/aacdemuxer';\nimport TSDemuxer from '../demux/tsdemuxer';\n\nclass DemuxerInline {\n\n constructor(hls,remuxer) {\n this.hls = hls;\n this.remuxer = remuxer;\n }\n\n destroy() {\n var demuxer = this.demuxer;\n if (demuxer) {\n demuxer.destroy();\n }\n }\n\n push(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration) {\n var demuxer = this.demuxer;\n if (!demuxer) {\n // probe for content type\n if (TSDemuxer.probe(data)) {\n demuxer = this.demuxer = new TSDemuxer(this.hls,this.remuxer);\n } else if(AACDemuxer.probe(data)) {\n demuxer = this.demuxer = new AACDemuxer(this.hls,this.remuxer);\n } else {\n this.hls.trigger(Event.ERROR, {type : ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: true, reason: 'no demux matching with content found'});\n return;\n }\n }\n demuxer.push(data,audioCodec,videoCodec,timeOffset,cc,level,sn,duration);\n }\n}\n\nexport default DemuxerInline;\n", "/* demuxer web worker.\n * - listen to worker message, and trigger DemuxerInline upon reception of Fragments.\n * - provides MP4 Boxes back to main thread using [transferable objects](https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast) in order to minimize message passing overhead.\n */\n\n import DemuxerInline from '../demux/demuxer-inline';\n import Event from '../events';\n import EventEmitter from 'events';\n import MP4Remuxer from '../remux/mp4-remuxer';\n\nvar DemuxerWorker = function (self) {\n // observer setup\n var 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 self.addEventListener('message', function (ev) {\n //console.log('demuxer cmd:' + ev.data.cmd);\n switch (ev.data.cmd) {\n case 'init':\n self.demuxer = new DemuxerInline(observer,MP4Remuxer);\n break;\n case 'demux':\n var data = ev.data;\n self.demuxer.push(new Uint8Array(data.data), data.audioCodec, data.videoCodec, data.timeOffset, data.cc, data.level, data.sn, data.duration);\n break;\n default:\n break;\n }\n });\n\n // listen to events triggered by TS Demuxer\n observer.on(Event.FRAG_PARSING_INIT_SEGMENT, function(ev, data) {\n var objData = {event: ev};\n var objTransferable = [];\n if (data.audioCodec) {\n objData.audioCodec = data.audioCodec;\n objData.audioMoov = data.audioMoov.buffer;\n objData.audioChannelCount = data.audioChannelCount;\n objTransferable.push(objData.audioMoov);\n }\n if (data.videoCodec) {\n objData.videoCodec = data.videoCodec;\n objData.videoMoov = data.videoMoov.buffer;\n objData.videoWidth = data.videoWidth;\n objData.videoHeight = data.videoHeight;\n objTransferable.push(objData.videoMoov);\n }\n // pass moov as transferable object (no copy)\n self.postMessage(objData,objTransferable);\n });\n\n observer.on(Event.FRAG_PARSING_DATA, function(ev, data) {\n var objData = {event: ev, type: data.type, startPTS: data.startPTS, endPTS: data.endPTS, startDTS: data.startDTS, endDTS: data.endDTS, moof: data.moof.buffer, mdat: data.mdat.buffer, nb: data.nb};\n // pass moof/mdat data as transferable object (no copy)\n self.postMessage(objData, [objData.moof, objData.mdat]);\n });\n\n observer.on(Event.FRAG_PARSED, function(event) {\n self.postMessage({event: event});\n });\n\n observer.on(Event.ERROR, function(event, data) {\n self.postMessage({event: event, data: data});\n });\n\n observer.on(Event.FRAG_PARSING_METADATA, function(event, data) {\n var objData = {event: event, samples: data.samples};\n self.postMessage(objData);\n });\n\n observer.on(Event.FRAG_PARSING_USERDATA, function(event, data) {\n var objData = {event: event, samples: data.samples};\n self.postMessage(objData);\n });\n\n};\n\nexport default DemuxerWorker;\n\n", "import Event from '../events';\nimport DemuxerInline from '../demux/demuxer-inline';\nimport DemuxerWorker from '../demux/demuxer-worker';\nimport {logger} from '../utils/logger';\nimport MP4Remuxer from '../remux/mp4-remuxer';\nimport Decrypter from '../crypt/decrypter';\n\nclass Demuxer {\n\n constructor(hls) {\n this.hls = hls;\n if (hls.config.enableWorker && (typeof(Worker) !== 'undefined')) {\n logger.log('demuxing in webworker');\n try {\n var work = require('webworkify');\n this.w = work(DemuxerWorker);\n this.onwmsg = this.onWorkerMessage.bind(this);\n this.w.addEventListener('message', this.onwmsg);\n this.w.postMessage({cmd: 'init'});\n } catch(err) {\n logger.error('error while initializing DemuxerWorker, fallback on DemuxerInline');\n this.demuxer = new DemuxerInline(hls,MP4Remuxer);\n }\n } else {\n this.demuxer = new DemuxerInline(hls,MP4Remuxer);\n }\n this.demuxInitialized = true;\n }\n\n destroy() {\n if (this.w) {\n this.w.removeEventListener('message', this.onwmsg);\n this.w.terminate();\n this.w = null;\n } else {\n this.demuxer.destroy();\n this.demuxer = null;\n }\n if (this.decrypter) {\n this.decrypter.destroy();\n this.decrypter = null;\n }\n }\n\n pushDecrypted(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration) {\n if (this.w) {\n // post fragment payload as transferable objects (no copy)\n this.w.postMessage({cmd: 'demux', data: data, audioCodec: audioCodec, videoCodec: videoCodec, timeOffset: timeOffset, cc: cc, level: level, sn : sn, duration: duration}, [data]);\n } else {\n this.demuxer.push(new Uint8Array(data), audioCodec, videoCodec, timeOffset, cc, level, sn, duration);\n }\n }\n\n push(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration, decryptdata) {\n if ((data.byteLength > 0) && (decryptdata != null) && (decryptdata.key != null) && (decryptdata.method === 'AES-128')) {\n if (this.decrypter == null) {\n this.decrypter = new Decrypter(this.hls);\n }\n \n var localthis = this;\n this.decrypter.decrypt(data, decryptdata.key, decryptdata.iv, function(decryptedData){\n localthis.pushDecrypted(decryptedData, audioCodec, videoCodec, timeOffset, cc, level, sn, duration);\n });\n } else {\n this.pushDecrypted(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration);\n }\n }\n\n onWorkerMessage(ev) {\n //console.log('onWorkerMessage:' + ev.data.event);\n switch(ev.data.event) {\n case Event.FRAG_PARSING_INIT_SEGMENT:\n var obj = {};\n if (ev.data.audioMoov) {\n obj.audioMoov = new Uint8Array(ev.data.audioMoov);\n obj.audioCodec = ev.data.audioCodec;\n obj.audioChannelCount = ev.data.audioChannelCount;\n }\n if (ev.data.videoMoov) {\n obj.videoMoov = new Uint8Array(ev.data.videoMoov);\n obj.videoCodec = ev.data.videoCodec;\n obj.videoWidth = ev.data.videoWidth;\n obj.videoHeight = ev.data.videoHeight;\n }\n this.hls.trigger(Event.FRAG_PARSING_INIT_SEGMENT, obj);\n break;\n case Event.FRAG_PARSING_DATA:\n this.hls.trigger(Event.FRAG_PARSING_DATA,{\n moof: new Uint8Array(ev.data.moof),\n mdat: new Uint8Array(ev.data.mdat),\n startPTS: ev.data.startPTS,\n endPTS: ev.data.endPTS,\n startDTS: ev.data.startDTS,\n endDTS: ev.data.endDTS,\n type: ev.data.type,\n nb: ev.data.nb\n });\n break;\n case Event.FRAG_PARSING_METADATA:\n this.hls.trigger(Event.FRAG_PARSING_METADATA, {\n samples: ev.data.samples\n });\n break;\n case Event.FRAG_PARSING_USERDATA:\n this.hls.trigger(Event.FRAG_PARSING_USERDATA, {\n samples: ev.data.samples\n });\n break;\n default:\n this.hls.trigger(ev.data.event, ev.data.data);\n break;\n }\n }\n}\n\nexport default Demuxer;\n\n", "/**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n*/\n\nimport {logger} from '../utils/logger';\n\nclass ExpGolomb {\n\n constructor(data) {\n this.data = data;\n // the number of bytes left to examine in this.data\n this.bytesAvailable = this.data.byteLength;\n // the current word being examined\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n this.bitsAvailable = 0; // :uint\n }\n\n // ():void\n loadWord() {\n var\n position = this.data.byteLength - this.bytesAvailable,\n workingBytes = new Uint8Array(4),\n availableBytes = Math.min(4, this.bytesAvailable);\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n workingBytes.set(this.data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0);\n // track the amount of this.data that has been processed\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n }\n\n // (count:int):void\n skipBits(count) {\n var skipBytes; // :int\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= (skipBytes >> 3);\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n }\n\n // (size:int):uint\n readBits(size) {\n var\n bits = Math.min(this.bitsAvailable, size), // :uint\n valu = this.word >>> (32 - bits); // :uint\n if (size > 32) {\n logger.error('Cannot read more than 32 bits at a time');\n }\n this.bitsAvailable -= bits;\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n }\n bits = size - bits;\n if (bits > 0) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n }\n\n // ():uint\n skipLZ() {\n var leadingZeroCount; // :uint\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if (0 !== (this.word & (0x80000000 >>> leadingZeroCount))) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n }\n // we exhausted word and still have not found a 1\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n }\n\n // ():void\n skipUEG() {\n this.skipBits(1 + this.skipLZ());\n }\n\n // ():void\n skipEG() {\n this.skipBits(1 + this.skipLZ());\n }\n\n // ():uint\n readUEG() {\n var clz = this.skipLZ(); // :uint\n return this.readBits(clz + 1) - 1;\n }\n\n // ():int\n readEG() {\n var valu = this.readUEG(); // :int\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return (1 + valu) >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n }\n\n // Some convenience functions\n // :Boolean\n readBoolean() {\n return 1 === this.readBits(1);\n }\n\n // ():int\n readUByte() {\n return this.readBits(8);\n }\n\n // ():int\n readUShort() {\n return this.readBits(16);\n }\n // ():int\n readUInt() {\n return this.readBits(32);\n }\n\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count {number} the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n skipScalingList(count) {\n var\n lastScale = 8,\n nextScale = 8,\n j,\n deltaScale;\n for (j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n lastScale = (nextScale === 0) ? lastScale : nextScale;\n }\n }\n\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @param data {Uint8Array} the bytes of a sequence parameter set\n * @return {object} an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n readSPS() {\n var\n frameCropLeftOffset = 0,\n frameCropRightOffset = 0,\n frameCropTopOffset = 0,\n frameCropBottomOffset = 0,\n sarScale = 1,\n profileIdc,profileCompat,levelIdc,\n numRefFramesInPicOrderCntCycle, picWidthInMbsMinus1,\n picHeightInMapUnitsMinus1,\n frameMbsOnlyFlag,\n scalingListCount,\n i;\n this.readUByte();\n profileIdc = this.readUByte(); // profile_idc\n profileCompat = this.readBits(5); // constraint_set[0-4]_flag, u(5)\n this.skipBits(3); // reserved_zero_3bits u(3),\n levelIdc = this.readUByte(); //level_idc u(8)\n this.skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n if (profileIdc === 100 ||\n profileIdc === 110 ||\n profileIdc === 122 ||\n profileIdc === 244 ||\n profileIdc === 44 ||\n profileIdc === 83 ||\n profileIdc === 86 ||\n profileIdc === 118 ||\n profileIdc === 128) {\n var chromaFormatIdc = this.readUEG();\n if (chromaFormatIdc === 3) {\n this.skipBits(1); // separate_colour_plane_flag\n }\n this.skipUEG(); // bit_depth_luma_minus8\n this.skipUEG(); // bit_depth_chroma_minus8\n this.skipBits(1); // qpprime_y_zero_transform_bypass_flag\n if (this.readBoolean()) { // seq_scaling_matrix_present_flag\n scalingListCount = (chromaFormatIdc !== 3) ? 8 : 12;\n for (i = 0; i < scalingListCount; i++) {\n if (this.readBoolean()) { // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n this.skipScalingList(16);\n } else {\n this.skipScalingList(64);\n }\n }\n }\n }\n }\n this.skipUEG(); // log2_max_frame_num_minus4\n var picOrderCntType = this.readUEG();\n if (picOrderCntType === 0) {\n this.readUEG(); //log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n this.skipBits(1); // delta_pic_order_always_zero_flag\n this.skipEG(); // offset_for_non_ref_pic\n this.skipEG(); // offset_for_top_to_bottom_field\n numRefFramesInPicOrderCntCycle = this.readUEG();\n for(i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n this.skipEG(); // offset_for_ref_frame[ i ]\n }\n }\n this.skipUEG(); // max_num_ref_frames\n this.skipBits(1); // gaps_in_frame_num_value_allowed_flag\n picWidthInMbsMinus1 = this.readUEG();\n picHeightInMapUnitsMinus1 = this.readUEG();\n frameMbsOnlyFlag = this.readBits(1);\n if (frameMbsOnlyFlag === 0) {\n this.skipBits(1); // mb_adaptive_frame_field_flag\n }\n this.skipBits(1); // direct_8x8_inference_flag\n if (this.readBoolean()) { // frame_cropping_flag\n frameCropLeftOffset = this.readUEG();\n frameCropRightOffset = this.readUEG();\n frameCropTopOffset = this.readUEG();\n frameCropBottomOffset = this.readUEG();\n }\n if (this.readBoolean()) {\n // vui_parameters_present_flag\n if (this.readBoolean()) {\n // aspect_ratio_info_present_flag\n let sarRatio;\n const aspectRatioIdc = this.readUByte();\n switch (aspectRatioIdc) {\n //case 1: sarRatio = [1,1]; break;\n case 2: sarRatio = [12,11]; break;\n case 3: sarRatio = [10,11]; break;\n case 4: sarRatio = [16,11]; break;\n case 5: sarRatio = [40,33]; break;\n case 6: sarRatio = [24,11]; break;\n case 7: sarRatio = [20,11]; break;\n case 8: sarRatio = [32,11]; break;\n case 9: sarRatio = [80,33]; break;\n case 10: sarRatio = [18,11]; break;\n case 11: sarRatio = [15,11]; break;\n case 12: sarRatio = [64,33]; break;\n case 13: sarRatio = [160,99]; break;\n case 14: sarRatio = [4,3]; break;\n case 15: sarRatio = [3,2]; break;\n case 16: sarRatio = [2,1]; break;\n case 255: {\n sarRatio = [this.readUByte() << 8 | this.readUByte(), this.readUByte() << 8 | this.readUByte()];\n break;\n }\n }\n if (sarRatio) {\n sarScale = sarRatio[0] / sarRatio[1];\n }\n }\n }\n return {\n width: (((picWidthInMbsMinus1 + 1) * 16) - frameCropLeftOffset * 2 - frameCropRightOffset * 2) * sarScale,\n height: ((2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16) - ((frameMbsOnlyFlag? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset))\n };\n }\n\n readSliceType() {\n // skip NALu type\n this.readUByte();\n // discard first_mb_in_slice\n this.readUEG();\n // return slice_type\n return this.readUEG();\n }\n}\n\nexport default ExpGolomb;\n", "/**\n * ID3 parser\n */\nimport {logger} from '../utils/logger';\n//import Hex from '../utils/hex';\n\n class ID3 {\n\n constructor(data) {\n this._hasTimeStamp = false;\n var offset = 0, byte1,byte2,byte3,byte4,tagSize,endPos,header,len;\n do {\n header = this.readUTF(data,offset,3);\n offset+=3;\n // first check for ID3 header\n if (header === 'ID3') {\n // skip 24 bits\n offset += 3;\n // retrieve tag(s) length\n byte1 = data[offset++] & 0x7f;\n byte2 = data[offset++] & 0x7f;\n byte3 = data[offset++] & 0x7f;\n byte4 = data[offset++] & 0x7f;\n tagSize = (byte1 << 21) + (byte2 << 14) + (byte3 << 7) + byte4;\n endPos = offset + tagSize;\n //logger.log(`ID3 tag found, size/end: ${tagSize}/${endPos}`);\n\n // read ID3 tags\n this._parseID3Frames(data, offset,endPos);\n offset = endPos;\n } else if (header === '3DI') {\n // http://id3.org/id3v2.4.0-structure chapter 3.4. ID3v2 footer\n offset += 7;\n logger.log(`3DI footer found, end: ${offset}`);\n } else {\n offset -= 3;\n len = offset;\n if (len) {\n //logger.log(`ID3 len: ${len}`);\n if (!this.hasTimeStamp) {\n logger.warn('ID3 tag found, but no timestamp');\n }\n this._length = len;\n this._payload = data.subarray(0,len);\n }\n return;\n }\n } while (true);\n }\n\n readUTF(data,start,len) {\n\n var result = '',offset = start, end = start + len;\n do {\n result += String.fromCharCode(data[offset++]);\n } while(offset < end);\n return result;\n }\n\n _parseID3Frames(data,offset,endPos) {\n var tagId,tagLen,tagStart,tagFlags,timestamp;\n while(offset + 8 <= endPos) {\n tagId = this.readUTF(data,offset,4);\n offset +=4;\n\n tagLen = data[offset++] << 24 +\n data[offset++] << 16 +\n data[offset++] << 8 +\n data[offset++];\n\n tagFlags = data[offset++] << 8 +\n data[offset++];\n\n tagStart = offset;\n //logger.log(\"ID3 tag id:\" + tagId);\n switch(tagId) {\n case 'PRIV':\n //logger.log('parse frame:' + Hex.hexDump(data.subarray(offset,endPos)));\n // owner should be \"com.apple.streaming.transportStreamTimestamp\"\n if (this.readUTF(data,offset,44) === 'com.apple.streaming.transportStreamTimestamp') {\n offset+=44;\n // smelling even better ! we found the right descriptor\n // skip null character (string end) + 3 first bytes\n offset+= 4;\n\n // timestamp is 33 bit expressed as a big-endian eight-octet number, with the upper 31 bits set to zero.\n var pts33Bit = data[offset++] & 0x1;\n this._hasTimeStamp = true;\n\n timestamp = ((data[offset++] << 23) +\n (data[offset++] << 15) +\n (data[offset++] << 7) +\n data[offset++]) /45;\n\n if (pts33Bit) {\n timestamp += 47721858.84; // 2^32 / 90\n }\n timestamp = Math.round(timestamp);\n logger.trace(`ID3 timestamp found: ${timestamp}`);\n this._timeStamp = timestamp;\n }\n break;\n default:\n break;\n }\n }\n }\n\n get hasTimeStamp() {\n return this._hasTimeStamp;\n }\n\n get timeStamp() {\n return this._timeStamp;\n }\n\n get length() {\n return this._length;\n }\n\n get payload() {\n return this._payload;\n }\n\n}\n\nexport default ID3;\n\n", - "/**\n * highly optimized TS demuxer:\n * parse PAT, PMT\n * extract PES packet from audio and video PIDs\n * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet\n * trigger the remuxer upon parsing completion\n * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.\n * it also controls the remuxing process :\n * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.\n*/\n\n import ADTS from './adts';\n import Event from '../events';\n import ExpGolomb from './exp-golomb';\n// import Hex from '../utils/hex';\n import {logger} from '../utils/logger';\n import {ErrorTypes, ErrorDetails} from '../errors';\n\n class TSDemuxer {\n\n constructor(observer,remuxerClass) {\n this.observer = observer;\n this.remuxerClass = remuxerClass;\n this.lastCC = 0;\n this.remuxer = new this.remuxerClass(observer);\n this._userData = [];\n }\n\n static probe(data) {\n // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47\n if (data.length >= 3*188 && data[0] === 0x47 && data[188] === 0x47 && data[2*188] === 0x47) {\n return true;\n } else {\n return false;\n }\n }\n\n switchLevel() {\n this.pmtParsed = false;\n this._pmtId = -1;\n this.lastAacPTS = null;\n this.aacOverFlow = null;\n this._avcTrack = {type: 'video', id :-1, sequenceNumber: 0, samples : [], len : 0, nbNalu : 0};\n this._aacTrack = {type: 'audio', id :-1, sequenceNumber: 0, samples : [], len : 0};\n this._id3Track = {type: 'id3', id :-1, sequenceNumber: 0, samples : [], len : 0};\n this._txtTrack = {type: 'text', id: -1, sequenceNumber: 0, samples: [], len: 0};\n this.remuxer.switchLevel();\n }\n\n insertDiscontinuity() {\n this.switchLevel();\n this.remuxer.insertDiscontinuity();\n }\n\n // feed incoming data to the front of the parsing pipeline\n push(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration) {\n var avcData, aacData, id3Data,\n start, len = data.length, stt, pid, atf, offset;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.timeOffset = timeOffset;\n this._duration = duration;\n this.contiguous = false;\n if (cc !== this.lastCC) {\n logger.log('discontinuity detected');\n this.insertDiscontinuity();\n this.lastCC = cc;\n } else if (level !== this.lastLevel) {\n logger.log('level switch detected');\n this.switchLevel();\n this.lastLevel = level;\n } else if (sn === (this.lastSN+1)) {\n this.contiguous = true;\n }\n this.lastSN = sn;\n\n if(!this.contiguous) {\n // flush any partial content\n this.aacOverFlow = null;\n }\n\n var pmtParsed = this.pmtParsed,\n avcId = this._avcTrack.id,\n aacId = this._aacTrack.id,\n id3Id = this._id3Track.id;\n\n // don't parse last TS packet if incomplete\n len -= len % 188;\n // loop through TS packets\n for (start = 0; start < len; start += 188) {\n if (data[start] === 0x47) {\n stt = !!(data[start + 1] & 0x40);\n // pid is a 13-bit field starting at the last bit of TS[1]\n pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n atf = (data[start + 3] & 0x30) >> 4;\n // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n if (atf > 1) {\n offset = start + 5 + data[start + 4];\n // continue if there is only adaptation field\n if (offset === (start + 188)) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n if (pmtParsed) {\n if (pid === avcId) {\n if (stt) {\n if (avcData) {\n this._parseAVCPES(this._parsePES(avcData));\n }\n avcData = {data: [], size: 0};\n }\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n } else if (pid === aacId) {\n if (stt) {\n if (aacData) {\n this._parseAACPES(this._parsePES(aacData));\n }\n aacData = {data: [], size: 0};\n }\n if (aacData) {\n aacData.data.push(data.subarray(offset, start + 188));\n aacData.size += start + 188 - offset;\n }\n } else if (pid === id3Id) {\n if (stt) {\n if (id3Data) {\n this._parseID3PES(this._parsePES(id3Data));\n }\n id3Data = {data: [], size: 0};\n }\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n }\n } else {\n if (stt) {\n offset += data[offset] + 1;\n }\n if (pid === 0) {\n this._parsePAT(data, offset);\n } else if (pid === this._pmtId) {\n this._parsePMT(data, offset);\n pmtParsed = this.pmtParsed = true;\n avcId = this._avcTrack.id;\n aacId = this._aacTrack.id;\n id3Id = this._id3Track.id;\n }\n }\n } else {\n this.observer.trigger(Event.ERROR, {type : ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: false, reason: 'TS packet did not start with 0x47'});\n }\n }\n // parse last PES packet\n if (avcData) {\n this._parseAVCPES(this._parsePES(avcData));\n }\n if (aacData) {\n this._parseAACPES(this._parsePES(aacData));\n }\n if (id3Data) {\n this._parseID3PES(this._parsePES(id3Data));\n }\n this.remux();\n }\n\n remux() {\n this.remuxer.remux(this._aacTrack, this._avcTrack, this._id3Track, this._txtTrack, this.timeOffset, this.contiguous);\n }\n\n destroy() {\n this.switchLevel();\n this._initPTS = this._initDTS = undefined;\n this._duration = 0;\n }\n\n _parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n this._pmtId = (data[offset + 10] & 0x1F) << 8 | data[offset + 11];\n //logger.log('PMT PID:' + this._pmtId);\n }\n\n _parsePMT(data, offset) {\n var sectionLength, tableEnd, programInfoLength, pid;\n sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n tableEnd = offset + 3 + sectionLength - 4;\n // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11];\n // advance the offset to the first entry in the mapping table\n offset += 12 + programInfoLength;\n while (offset < tableEnd) {\n pid = (data[offset + 1] & 0x1F) << 8 | data[offset + 2];\n switch(data[offset]) {\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n case 0x0f:\n //logger.log('AAC PID:' + pid);\n this._aacTrack.id = pid;\n break;\n // Packetized metadata (ID3)\n case 0x15:\n //logger.log('ID3 PID:' + pid);\n this._id3Track.id = pid;\n break;\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n case 0x1b:\n //logger.log('AVC PID:' + pid);\n this._avcTrack.id = pid;\n break;\n default:\n logger.log('unkown stream type:' + data[offset]);\n break;\n }\n // move to the next table entry\n // skip past the elementary stream descriptors, if present\n offset += ((data[offset + 3] & 0x0F) << 8 | data[offset + 4]) + 5;\n }\n }\n\n _parsePES(stream) {\n var i = 0, frag, pesFlags, pesPrefix, pesLen, pesHdrLen, pesData, pesPts, pesDts, payloadStartOffset;\n //retrieve PTS/DTS from first fragment\n frag = stream.data[0];\n pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5];\n pesFlags = frag[7];\n if (pesFlags & 0xC0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0E) * 536870912 +// 1 << 29\n (frag[10] & 0xFF) * 4194304 +// 1 << 22\n (frag[11] & 0xFE) * 16384 +// 1 << 14\n (frag[12] & 0xFF) * 128 +// 1 << 7\n (frag[13] & 0xFE) / 2;\n // check if greater than 2^32 -1\n if (pesPts > 4294967295) {\n // decrement 2^33\n pesPts -= 8589934592;\n }\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0E ) * 536870912 +// 1 << 29\n (frag[15] & 0xFF ) * 4194304 +// 1 << 22\n (frag[16] & 0xFE ) * 16384 +// 1 << 14\n (frag[17] & 0xFF ) * 128 +// 1 << 7\n (frag[18] & 0xFE ) / 2;\n // check if greater than 2^32 -1\n if (pesDts > 4294967295) {\n // decrement 2^33\n pesDts -= 8589934592;\n }\n } else {\n pesDts = pesPts;\n }\n }\n pesHdrLen = frag[8];\n payloadStartOffset = pesHdrLen + 9;\n // trim PES header\n stream.data[0] = stream.data[0].subarray(payloadStartOffset);\n stream.size -= payloadStartOffset;\n //reassemble PES packet\n pesData = new Uint8Array(stream.size);\n // reassemble the packet\n while (stream.data.length) {\n frag = stream.data.shift();\n pesData.set(frag, i);\n i += frag.byteLength;\n }\n return {data: pesData, pts: pesPts, dts: pesDts, len: pesLen};\n } else {\n return null;\n }\n }\n\n _parseAVCPES(pes) {\n var track = this._avcTrack,\n samples = track.samples,\n units = this._parseAVCNALu(pes.data),\n units2 = [],\n debug = false,\n key = false,\n length = 0,\n expGolombDecoder,\n avcSample,\n push,\n i;\n // no NALu found\n if (units.length === 0 && samples.length > 0) {\n // append pes.data to previous NAL unit\n var lastavcSample = samples[samples.length - 1];\n var lastUnit = lastavcSample.units.units[lastavcSample.units.units.length - 1];\n var tmp = new Uint8Array(lastUnit.data.byteLength + pes.data.byteLength);\n tmp.set(lastUnit.data, 0);\n tmp.set(pes.data, lastUnit.data.byteLength);\n lastUnit.data = tmp;\n lastavcSample.units.length += pes.data.byteLength;\n track.len += pes.data.byteLength;\n }\n //free pes.data to save up some memory\n pes.data = null;\n var debugString = '';\n\n units.forEach(unit => {\n switch(unit.type) {\n //NDR\n case 1:\n push = true;\n if(debug) {\n debugString += 'NDR ';\n }\n break;\n //IDR\n case 5:\n push = true;\n if(debug) {\n debugString += 'IDR ';\n }\n key = true;\n break;\n //SEI\n case 6:\n push = true;\n if(debug) {\n debugString += 'SEI ';\n }\n expGolombDecoder = new ExpGolomb(unit.data);\n\n // skip frameType\n expGolombDecoder.readUByte();\n\n var payloadType = expGolombDecoder.readUByte();\n\n // TODO: there can be more than one payload in an SEI packet...\n // TODO: need to read type and size in a while loop to get them all\n if (payloadType === 4)\n {\n var payloadSize = 0;\n\n do {\n payloadSize = expGolombDecoder.readUByte();\n }\n while (payloadSize === 255);\n\n var countryCode = expGolombDecoder.readUByte();\n\n if (countryCode === 181)\n {\n var providerCode = expGolombDecoder.readUShort();\n\n if (providerCode === 49)\n {\n var userStructure = expGolombDecoder.readUInt();\n\n if (userStructure === 0x47413934)\n {\n var userDataType = expGolombDecoder.readUByte();\n\n // Raw CEA-608 bytes wrapped in CEA-708 packet\n if (userDataType === 3)\n {\n var firstByte = expGolombDecoder.readUByte();\n var secondByte = expGolombDecoder.readUByte();\n\n var totalCCs = 31 & firstByte;\n var byteArray = [firstByte, secondByte];\n\n for (i=0; i 1) {\n logger.log(`AAC: align PTS for overlapping frames by ${Math.round((newPTS-pts)/90)}`);\n pts=newPTS;\n }\n }\n\n while ((offset + 5) < len) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n headerLength = (!!(data[offset + 1] & 0x01) ? 7 : 9);\n // retrieve frame size\n frameLength = ((data[offset + 3] & 0x03) << 11) |\n (data[offset + 4] << 3) |\n ((data[offset + 5] & 0xE0) >>> 5);\n frameLength -= headerLength;\n //stamp = pes.pts;\n\n if ((frameLength > 0) && ((offset + headerLength + frameLength) <= len)) {\n stamp = Math.round(pts + frameIndex * frameDuration);\n //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n aacSample = {unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp};\n track.samples.push(aacSample);\n track.len += frameLength;\n offset += frameLength + headerLength;\n frameIndex++;\n // look for ADTS header (0xFFFx)\n for ( ; offset < (len - 1); offset++) {\n if ((data[offset] === 0xff) && ((data[offset + 1] & 0xf0) === 0xf0)) {\n break;\n }\n }\n } else {\n break;\n }\n }\n if (offset < len) {\n aacOverFlow = data.subarray(offset, len);\n //logger.log(`AAC: overflow detected:${len-offset}`);\n } else {\n aacOverFlow = null;\n }\n this.aacOverFlow = aacOverFlow;\n this.lastAacPTS = stamp;\n }\n\n _parseID3PES(pes) {\n this._id3Track.samples.push(pes);\n }\n}\n\nexport default TSDemuxer;\n\n", + "/**\n * highly optimized TS demuxer:\n * parse PAT, PMT\n * extract PES packet from audio and video PIDs\n * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet\n * trigger the remuxer upon parsing completion\n * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.\n * it also controls the remuxing process :\n * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.\n*/\n\n import ADTS from './adts';\n import Event from '../events';\n import ExpGolomb from './exp-golomb';\n// import Hex from '../utils/hex';\n import {logger} from '../utils/logger';\n import {ErrorTypes, ErrorDetails} from '../errors';\n\n class TSDemuxer {\n\n constructor(observer,remuxerClass) {\n this.observer = observer;\n this.remuxerClass = remuxerClass;\n this.lastCC = 0;\n this.remuxer = new this.remuxerClass(observer);\n this._userData = [];\n }\n\n static probe(data) {\n // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47\n if (data.length >= 3*188 && data[0] === 0x47 && data[188] === 0x47 && data[2*188] === 0x47) {\n return true;\n } else {\n return false;\n }\n }\n\n switchLevel() {\n this.pmtParsed = false;\n this._pmtId = -1;\n this.lastAacPTS = null;\n this.aacOverFlow = null;\n this._avcTrack = {type: 'video', id :-1, sequenceNumber: 0, samples : [], len : 0, nbNalu : 0};\n this._aacTrack = {type: 'audio', id :-1, sequenceNumber: 0, samples : [], len : 0};\n this._id3Track = {type: 'id3', id :-1, sequenceNumber: 0, samples : [], len : 0};\n this._txtTrack = {type: 'text', id: -1, sequenceNumber: 0, samples: [], len: 0};\n this.remuxer.switchLevel();\n }\n\n insertDiscontinuity() {\n this.switchLevel();\n this.remuxer.insertDiscontinuity();\n }\n\n // feed incoming data to the front of the parsing pipeline\n push(data, audioCodec, videoCodec, timeOffset, cc, level, sn, duration) {\n var avcData, aacData, id3Data,\n start, len = data.length, stt, pid, atf, offset;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.timeOffset = timeOffset;\n this._duration = duration;\n this.contiguous = false;\n if (cc !== this.lastCC) {\n logger.log('discontinuity detected');\n this.insertDiscontinuity();\n this.lastCC = cc;\n } else if (level !== this.lastLevel) {\n logger.log('level switch detected');\n this.switchLevel();\n this.lastLevel = level;\n } else if (sn === (this.lastSN+1)) {\n this.contiguous = true;\n }\n this.lastSN = sn;\n\n if(!this.contiguous) {\n // flush any partial content\n this.aacOverFlow = null;\n }\n\n var pmtParsed = this.pmtParsed,\n avcId = this._avcTrack.id,\n aacId = this._aacTrack.id,\n id3Id = this._id3Track.id;\n\n // don't parse last TS packet if incomplete\n len -= len % 188;\n // loop through TS packets\n for (start = 0; start < len; start += 188) {\n if (data[start] === 0x47) {\n stt = !!(data[start + 1] & 0x40);\n // pid is a 13-bit field starting at the last bit of TS[1]\n pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n atf = (data[start + 3] & 0x30) >> 4;\n // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n if (atf > 1) {\n offset = start + 5 + data[start + 4];\n // continue if there is only adaptation field\n if (offset === (start + 188)) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n if (pmtParsed) {\n if (pid === avcId) {\n if (stt) {\n if (avcData) {\n this._parseAVCPES(this._parsePES(avcData));\n }\n avcData = {data: [], size: 0};\n }\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n } else if (pid === aacId) {\n if (stt) {\n if (aacData) {\n this._parseAACPES(this._parsePES(aacData));\n }\n aacData = {data: [], size: 0};\n }\n if (aacData) {\n aacData.data.push(data.subarray(offset, start + 188));\n aacData.size += start + 188 - offset;\n }\n } else if (pid === id3Id) {\n if (stt) {\n if (id3Data) {\n this._parseID3PES(this._parsePES(id3Data));\n }\n id3Data = {data: [], size: 0};\n }\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n }\n } else {\n if (stt) {\n offset += data[offset] + 1;\n }\n if (pid === 0) {\n this._parsePAT(data, offset);\n } else if (pid === this._pmtId) {\n this._parsePMT(data, offset);\n pmtParsed = this.pmtParsed = true;\n avcId = this._avcTrack.id;\n aacId = this._aacTrack.id;\n id3Id = this._id3Track.id;\n }\n }\n } else {\n this.observer.trigger(Event.ERROR, {type : ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_PARSING_ERROR, fatal: false, reason: 'TS packet did not start with 0x47'});\n }\n }\n // parse last PES packet\n if (avcData) {\n this._parseAVCPES(this._parsePES(avcData));\n }\n if (aacData) {\n this._parseAACPES(this._parsePES(aacData));\n }\n if (id3Data) {\n this._parseID3PES(this._parsePES(id3Data));\n }\n this.remux();\n }\n\n remux() {\n this.remuxer.remux(this._aacTrack, this._avcTrack, this._id3Track, this._txtTrack, this.timeOffset, this.contiguous);\n }\n\n destroy() {\n this.switchLevel();\n this._initPTS = this._initDTS = undefined;\n this._duration = 0;\n }\n\n _parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n this._pmtId = (data[offset + 10] & 0x1F) << 8 | data[offset + 11];\n //logger.log('PMT PID:' + this._pmtId);\n }\n\n _parsePMT(data, offset) {\n var sectionLength, tableEnd, programInfoLength, pid;\n sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n tableEnd = offset + 3 + sectionLength - 4;\n // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11];\n // advance the offset to the first entry in the mapping table\n offset += 12 + programInfoLength;\n while (offset < tableEnd) {\n pid = (data[offset + 1] & 0x1F) << 8 | data[offset + 2];\n switch(data[offset]) {\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n case 0x0f:\n //logger.log('AAC PID:' + pid);\n this._aacTrack.id = pid;\n break;\n // Packetized metadata (ID3)\n case 0x15:\n //logger.log('ID3 PID:' + pid);\n this._id3Track.id = pid;\n break;\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n case 0x1b:\n //logger.log('AVC PID:' + pid);\n this._avcTrack.id = pid;\n break;\n default:\n logger.log('unkown stream type:' + data[offset]);\n break;\n }\n // move to the next table entry\n // skip past the elementary stream descriptors, if present\n offset += ((data[offset + 3] & 0x0F) << 8 | data[offset + 4]) + 5;\n }\n }\n\n _parsePES(stream) {\n var i = 0, frag, pesFlags, pesPrefix, pesLen, pesHdrLen, pesData, pesPts, pesDts, payloadStartOffset;\n //retrieve PTS/DTS from first fragment\n frag = stream.data[0];\n pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5];\n pesFlags = frag[7];\n if (pesFlags & 0xC0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0E) * 536870912 +// 1 << 29\n (frag[10] & 0xFF) * 4194304 +// 1 << 22\n (frag[11] & 0xFE) * 16384 +// 1 << 14\n (frag[12] & 0xFF) * 128 +// 1 << 7\n (frag[13] & 0xFE) / 2;\n // check if greater than 2^32 -1\n if (pesPts > 4294967295) {\n // decrement 2^33\n pesPts -= 8589934592;\n }\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0E ) * 536870912 +// 1 << 29\n (frag[15] & 0xFF ) * 4194304 +// 1 << 22\n (frag[16] & 0xFE ) * 16384 +// 1 << 14\n (frag[17] & 0xFF ) * 128 +// 1 << 7\n (frag[18] & 0xFE ) / 2;\n // check if greater than 2^32 -1\n if (pesDts > 4294967295) {\n // decrement 2^33\n pesDts -= 8589934592;\n }\n } else {\n pesDts = pesPts;\n }\n }\n pesHdrLen = frag[8];\n payloadStartOffset = pesHdrLen + 9;\n // trim PES header\n stream.data[0] = stream.data[0].subarray(payloadStartOffset);\n stream.size -= payloadStartOffset;\n //reassemble PES packet\n pesData = new Uint8Array(stream.size);\n // reassemble the packet\n while (stream.data.length) {\n frag = stream.data.shift();\n pesData.set(frag, i);\n i += frag.byteLength;\n }\n return {data: pesData, pts: pesPts, dts: pesDts, len: pesLen};\n } else {\n return null;\n }\n }\n\n _parseAVCPES(pes) {\n var track = this._avcTrack,\n samples = track.samples,\n units = this._parseAVCNALu(pes.data),\n units2 = [],\n debug = false,\n key = false,\n length = 0,\n expGolombDecoder,\n avcSample,\n push,\n i;\n // no NALu found\n if (units.length === 0 && samples.length > 0) {\n // append pes.data to previous NAL unit\n var lastavcSample = samples[samples.length - 1];\n var lastUnit = lastavcSample.units.units[lastavcSample.units.units.length - 1];\n var tmp = new Uint8Array(lastUnit.data.byteLength + pes.data.byteLength);\n tmp.set(lastUnit.data, 0);\n tmp.set(pes.data, lastUnit.data.byteLength);\n lastUnit.data = tmp;\n lastavcSample.units.length += pes.data.byteLength;\n track.len += pes.data.byteLength;\n }\n //free pes.data to save up some memory\n pes.data = null;\n var debugString = '';\n\n units.forEach(unit => {\n switch(unit.type) {\n //NDR\n case 1:\n push = true;\n if(debug) {\n debugString += 'NDR ';\n }\n break;\n //IDR\n case 5:\n push = true;\n if(debug) {\n debugString += 'IDR ';\n }\n key = true;\n break;\n //SEI\n case 6:\n push = true;\n if(debug) {\n debugString += 'SEI ';\n }\n expGolombDecoder = new ExpGolomb(unit.data);\n\n // skip frameType\n expGolombDecoder.readUByte();\n\n var payloadType = expGolombDecoder.readUByte();\n\n // TODO: there can be more than one payload in an SEI packet...\n // TODO: need to read type and size in a while loop to get them all\n if (payloadType === 4)\n {\n var payloadSize = 0;\n\n do {\n payloadSize = expGolombDecoder.readUByte();\n }\n while (payloadSize === 255);\n\n var countryCode = expGolombDecoder.readUByte();\n\n if (countryCode === 181)\n {\n var providerCode = expGolombDecoder.readUShort();\n\n if (providerCode === 49)\n {\n var userStructure = expGolombDecoder.readUInt();\n\n if (userStructure === 0x47413934)\n {\n var userDataType = expGolombDecoder.readUByte();\n\n // Raw CEA-608 bytes wrapped in CEA-708 packet\n if (userDataType === 3)\n {\n var firstByte = expGolombDecoder.readUByte();\n var secondByte = expGolombDecoder.readUByte();\n\n var totalCCs = 31 & firstByte;\n var byteArray = [firstByte, secondByte];\n\n for (i=0; i 1) {\n logger.log(`AAC: align PTS for overlapping frames by ${Math.round((newPTS-pts)/90)}`);\n pts=newPTS;\n }\n }\n\n while ((offset + 5) < len) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n headerLength = (!!(data[offset + 1] & 0x01) ? 7 : 9);\n // retrieve frame size\n frameLength = ((data[offset + 3] & 0x03) << 11) |\n (data[offset + 4] << 3) |\n ((data[offset + 5] & 0xE0) >>> 5);\n frameLength -= headerLength;\n //stamp = pes.pts;\n\n if ((frameLength > 0) && ((offset + headerLength + frameLength) <= len)) {\n stamp = pts + frameIndex * frameDuration;\n //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`);\n aacSample = {unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp};\n track.samples.push(aacSample);\n track.len += frameLength;\n offset += frameLength + headerLength;\n frameIndex++;\n // look for ADTS header (0xFFFx)\n for ( ; offset < (len - 1); offset++) {\n if ((data[offset] === 0xff) && ((data[offset + 1] & 0xf0) === 0xf0)) {\n break;\n }\n }\n } else {\n break;\n }\n }\n if (offset < len) {\n aacOverFlow = data.subarray(offset, len);\n //logger.log(`AAC: overflow detected:${len-offset}`);\n } else {\n aacOverFlow = null;\n }\n this.aacOverFlow = aacOverFlow;\n this.lastAacPTS = stamp;\n }\n\n _parseID3PES(pes) {\n this._id3Track.samples.push(pes);\n }\n}\n\nexport default TSDemuxer;\n\n", "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 // Identifier for a buffer stalled error event\n BUFFER_STALLED_ERROR: 'bufferStalledError'\n};\n", "/*\n*\n* All objects in the event handling chain should inherit from this class\n*\n*/\n\n//import {logger} from './utils/logger';\n\nclass EventHandler {\n\n constructor(hls, ...events) {\n this.hls = hls;\n this.onEvent = this.onEvent.bind(this);\n this.handledEvents = events;\n this.useGenericHandler = true;\n\n this.registerListeners();\n }\n\n destroy() {\n this.unregisterListeners();\n }\n\n isEventHandler() {\n return typeof this.handledEvents === 'object' && this.handledEvents.length && typeof this.onEvent === 'function';\n }\n\n registerListeners() {\n if (this.isEventHandler()) {\n this.handledEvents.forEach(function(event) {\n if (event === 'hlsEventGeneric') {\n throw new Error('Forbidden event name: ' + event);\n }\n this.hls.on(event, this.onEvent);\n }.bind(this));\n }\n }\n\n unregisterListeners() {\n if (this.isEventHandler()) {\n this.handledEvents.forEach(function(event) {\n this.hls.off(event, this.onEvent);\n }.bind(this));\n }\n }\n\n /*\n * arguments: event (string), data (any)\n */\n onEvent(event, data) {\n this.onEventGeneric(event, data);\n }\n\n onEventGeneric(event, data) {\n var eventToFunction = function(event, data) {\n var funcName = 'on' + event.replace('hls', '');\n if (typeof this[funcName] !== 'function') {\n throw new Error(`Event ${event} has no generic handler in this ${this.constructor.name} class (tried ${funcName})`);\n }\n return this[funcName].bind(this, data);\n };\n eventToFunction.call(this, event, data).call();\n }\n}\n\nexport default EventHandler;", "module.exports = {\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: 'hlsLevelPtsUpdated',\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 sei text is completed - data: { samples : [ sei samples pes ] }\n FRAG_PARSING_USERDATA: 'hlsFragParsingUserdata',\n // fired when parsing id3 is completed - data: { samples : [ id3 samples pes ] }\n FRAG_PARSING_METADATA: 'hlsFragParsingMetadata',\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.min(startPTS,frag.startPTS);\n endPTS = Math.max(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 frag ${fragFrom.sn},level ${fragFrom.level}, 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 frag ${fragTo.sn},level ${fragTo.level}, 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';\nimport TimelineController from './controller/timeline-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 static get DefaultConfig() {\n if(!Hls.defaultConfig) {\n Hls.defaultConfig = {\n autoStartLoad: true,\n debug: false,\n maxBufferLength: 30,\n maxBufferSize: 60 * 1000 * 1000,\n maxBufferHole: 0.3,\n maxSeekHole: 2,\n liveSyncDurationCount:3,\n liveMaxLatencyDurationCount: Infinity,\n maxMaxBufferLength: 600,\n enableWorker: true,\n enableSoftwareAES: true,\n manifestLoadingTimeOut: 10000,\n manifestLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n levelLoadingTimeOut: 10000,\n levelLoadingMaxRetry: 4,\n levelLoadingRetryDelay: 1000,\n fragLoadingTimeOut: 20000,\n fragLoadingMaxRetry: 6,\n fragLoadingRetryDelay: 1000,\n fragLoadingLoopThreshold: 3,\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 timelineController: TimelineController,\n enableCEA708Captions: true\n };\n }\n return Hls.defaultConfig;\n }\n\n static set DefaultConfig(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n\n constructor(config = {}) {\n var defaultConfig = Hls.DefaultConfig;\n for (var prop in defaultConfig) {\n if (prop in config) { continue; }\n config[prop] = defaultConfig[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.timelineController = new config.timelineController(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.timelineController.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';\nimport TimelineController from './controller/timeline-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 static get DefaultConfig() {\n if(!Hls.defaultConfig) {\n Hls.defaultConfig = {\n autoStartLoad: true,\n debug: false,\n maxBufferLength: 30,\n maxBufferSize: 60 * 1000 * 1000,\n maxBufferHole: 0.5,\n maxSeekHole: 2,\n liveSyncDurationCount:3,\n liveMaxLatencyDurationCount: Infinity,\n maxMaxBufferLength: 600,\n enableWorker: true,\n enableSoftwareAES: true,\n manifestLoadingTimeOut: 10000,\n manifestLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n levelLoadingTimeOut: 10000,\n levelLoadingMaxRetry: 4,\n levelLoadingRetryDelay: 1000,\n fragLoadingTimeOut: 20000,\n fragLoadingMaxRetry: 6,\n fragLoadingRetryDelay: 1000,\n fragLoadingLoopThreshold: 3,\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 timelineController: TimelineController,\n enableCEA708Captions: true\n };\n }\n return Hls.defaultConfig;\n }\n\n static set DefaultConfig(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n\n constructor(config = {}) {\n var defaultConfig = Hls.DefaultConfig;\n for (var prop in defaultConfig) {\n if (prop in config) { continue; }\n config[prop] = defaultConfig[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.timelineController = new config.timelineController(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.timelineController.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 EventHandler from '../event-handler';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass FragmentLoader extends EventHandler {\n\n constructor(hls) {\n super(hls, Event.FRAG_LOADING);\n }\n\n destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n EventHandler.prototype.destroy.call(this);\n }\n\n onFragLoading(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, 1, 0, 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 EventHandler from '../event-handler';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass KeyLoader extends EventHandler {\n\n constructor(hls) {\n super(hls, Event.KEY_LOADING);\n this.decryptkey = null;\n this.decrypturl = null;\n }\n\n destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n EventHandler.prototype.destroy.call(this);\n }\n\n onKeyLoading(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 EventHandler from '../event-handler';\nimport {ErrorTypes, ErrorDetails} from '../errors';\nimport URLHelper from '../utils/url';\nimport AttrList from '../utils/attr-list';\n//import {logger} from '../utils/logger';\n\nclass PlaylistLoader extends EventHandler {\n\n constructor(hls) {\n super(hls,\n Event.MANIFEST_LOADING,\n Event.LEVEL_LOADING);\n }\n\n destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n this.url = this.id = null;\n EventHandler.prototype.destroy.call(this);\n }\n\n onManifestLoading(data) {\n this.load(data.url, null);\n }\n\n onLevelLoading(data) {\n this.load(data.url, data.level, data.id);\n }\n\n load(url, id1, id2) {\n var config = this.hls.config,\n retry,\n timeout,\n retryDelay;\n this.url = url;\n this.id = id1;\n this.id2 = id2;\n if(this.id === undefined) {\n retry = config.manifestLoadingMaxRetry;\n timeout = config.manifestLoadingTimeOut;\n retryDelay = config.manifestLoadingRetryDelay;\n } else {\n retry = config.levelLoadingMaxRetry;\n timeout = config.levelLoadingTimeOut;\n retryDelay = config.levelLoadingRetryDelay;\n }\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), timeout, retry, retryDelay);\n }\n\n resolve(url, baseUrl) {\n return URLHelper.buildAbsoluteURL(baseUrl, url);\n }\n\n parseMasterPlaylist(string, baseurl) {\n let levels = [], result;\n\n // https://regex101.com is your friend\n const re = /#EXT-X-STREAM-INF:([^\\n\\r]*)[\\r\\n]+([^\\r\\n]+)/g;\n while ((result = re.exec(string)) != null){\n const level = {};\n\n var attrs = level.attrs = new AttrList(result[1]);\n level.url = this.resolve(result[2], baseurl);\n\n var resolution = attrs.decimalResolution('RESOLUTION');\n if(resolution) {\n level.width = resolution.width;\n level.height = resolution.height;\n }\n level.bitrate = attrs.decimalInteger('BANDWIDTH');\n level.name = attrs.NAME;\n\n var codecs = attrs.CODECS;\n if(codecs) {\n codecs = codecs.split(',');\n for (let i = 0; i < codecs.length; i++) {\n const codec = codecs[i];\n if (codec.indexOf('avc1') !== -1) {\n level.videoCodec = this.avc1toavcoti(codec);\n } else {\n level.audioCodec = codec;\n }\n }\n }\n\n levels.push(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 cloneObj(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n\n parseLevelPlaylist(string, baseurl, id) {\n var currentSN = 0,\n totalduration = 0,\n level = {url: baseurl, fragments: [], live: true, startSN: 0},\n levelkey = {method : null, key : null, iv : null, uri : null},\n cc = 0,\n programDateTime = null,\n frag = null,\n result,\n regexp,\n byteRangeEndOffset,\n byteRangeStartOffset;\n\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))|(?:#EXT-X-(PROGRAM-DATE-TIME):(.*))/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 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 var url = result[2] ? this.resolve(result[2], baseurl) : null;\n frag = {url: url, duration: duration, start: totalduration, sn: sn, level: id, cc: cc, byteRangeStartOffset: byteRangeStartOffset, byteRangeEndOffset: byteRangeEndOffset, decryptdata : fragdecryptdata, programDateTime: programDateTime};\n level.fragments.push(frag);\n totalduration += duration;\n byteRangeStartOffset = null;\n programDateTime = 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 keyAttrs = new AttrList(decryptparams);\n var decryptmethod = keyAttrs.enumeratedString('METHOD'),\n decrypturi = keyAttrs.URI,\n decryptiv = keyAttrs.hexadecimalInteger('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 levelkey.iv = decryptiv;\n }\n }\n break;\n case 'PROGRAM-DATE-TIME':\n programDateTime = new Date(Date.parse(result[1]));\n break;\n default:\n break;\n }\n }\n //logger.log('found ' + level.fragments.length + ' fragments');\n if(frag && !frag.url) {\n level.fragments.pop();\n totalduration-=frag.duration;\n }\n level.totalduration = totalduration;\n level.endSN = currentSN - 1;\n return level;\n }\n\n loadsuccess(event, stats) {\n var target = event.currentTarget,\n string = target.responseText,\n url = target.responseURL,\n id = this.id,\n id2 = this.id2,\n hls = this.hls,\n 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(target.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 var videoHdlr = 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 var audioHdlr = 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': videoHdlr,\n 'audio': audioHdlr\n };\n\n var 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\n var stco = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n MP4.STTS = MP4.STSC = MP4.STCO = stco;\n\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 var majorBrand = new Uint8Array([105,115,111,109]); // isom\n var avc1Brand = new Uint8Array([97,118,99,49]); // avc1\n var minorVersion = new Uint8Array([0, 0, 0, 1]);\n\n MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n }\n\n static box(type) {\n var\n payload = Array.prototype.slice.call(arguments, 1),\n size = 8,\n i = payload.length,\n len = i,\n result;\n // calculate the total size we need to allocate\n while (i--) {\n size += payload[i].byteLength;\n }\n result = new Uint8Array(size);\n result[0] = (size >> 24) & 0xff;\n result[1] = (size >> 16) & 0xff;\n result[2] = (size >> 8) & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4);\n // copy the payload into the result\n for (i = 0, size = 8; i < len; i++) {\n // copy payload[i] array @ offset size\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 0x12,\n 0x64, 0x61, 0x69, 0x6C, //dailymotion/hls.js\n 0x79, 0x6D, 0x6F, 0x74,\n 0x69, 0x6F, 0x6E, 0x2F,\n 0x68, 0x6C, 0x73, 0x2E,\n 0x6A, 0x73, 0x00, 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) | 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,textTrack,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 //logger.log('nb ID3 samples:' + audioTrack.samples.length);\n if (textTrack.samples.length) {\n this.remuxText(textTrack,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 offset = 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 flags,\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(offset, unit.data.byteLength);\n offset += 4;\n mdat.set(unit.data, offset);\n offset += unit.data.byteLength;\n mp4SampleLength += 4 + unit.data.byteLength;\n }\n pts = avcSample.pts - this._initDTS;\n dts = avcSample.dts - this._initDTS;\n // ensure DTS is not bigger than PTS\n dts = Math.min(pts,dts);\n //logger.log(`Video/PTS/DTS:${Math.round(pts/90)}/${Math.round(dts/90)}`);\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 var sampleDuration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor;\n if (sampleDuration <= 0) {\n logger.log(`invalid sample duration at PTS/DTS: ${avcSample.pts}/${avcSample.dts}:${sampleDuration}`);\n sampleDuration = 1;\n }\n mp4Sample.duration = sampleDuration;\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},delta:${delta}`);\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 flags = mp4Sample.flags;\n if (avcSample.key === true) {\n // the current sample is a key frame\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n } else {\n flags.dependsOn = 1;\n flags.isNonSync = 1;\n }\n samples.push(mp4Sample);\n lastDTS = dtsnorm;\n }\n var lastSampleDuration = 0;\n if (samples.length >= 2) {\n lastSampleDuration = samples[samples.length - 2].duration;\n mp4Sample.duration = lastSampleDuration;\n }\n // next AVC sample DTS should be equal to last sample DTS + last sample duration\n this.nextAvcDts = dtsnorm + lastSampleDuration * pes2mp4ScaleFactor;\n track.len = 0;\n track.nbNalu = 0;\n if(samples.length && navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n flags = samples[0].flags;\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 flags.dependsOn = 2;\n 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 * lastSampleDuration) / pesTimeScale,\n startDTS: firstDTS / pesTimeScale,\n endDTS: this.nextAvcDts / pesTimeScale,\n type: 'video',\n nb: samples.length\n });\n }\n\n remuxAudio(track,timeOffset, contiguous) {\n var view,\n offset = 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 samples0 = [];\n\n track.samples.forEach(aacSample => {\n if(pts === undefined || aacSample.pts > pts) {\n samples0.push(aacSample);\n pts = aacSample.pts;\n } else {\n logger.warn('dropping past audio frame');\n track.len -= aacSample.unit.byteLength;\n }\n });\n\n while (samples0.length) {\n aacSample = samples0.shift();\n unit = aacSample.unit;\n pts = aacSample.pts - this._initDTS;\n dts = aacSample.dts - this._initDTS;\n //logger.log(`Audio/PTS:${Math.round(pts/90)}`);\n // if not first sample\n if (lastDTS !== undefined) {\n ptsnorm = this._PTSNormalize(pts, lastDTS);\n dtsnorm = this._PTSNormalize(dts, lastDTS);\n // let's compute sample duration\n mp4Sample.duration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor;\n if (mp4Sample.duration < 0) {\n // not expected to happen ...\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 > 0) {\n logger.log(`${delta} ms hole between AAC samples detected,filling it`);\n // if we have frame overlap, overlapping for more than half a frame duraion\n } else if (delta < -12) {\n // drop overlapping audio frames... browser will deal with it\n logger.log(`${(-delta)} ms overlapping between AAC samples detected, drop frame`);\n track.len -= unit.byteLength;\n continue;\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 if(track.len > 0) {\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 } else {\n // no audio samples\n return;\n }\n }\n mdat.set(unit, offset);\n offset += unit.byteLength;\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 var lastSampleDuration = 0;\n var nbSamples = samples.length;\n //set last sample duration as being identical to previous sample\n if (nbSamples >= 2) {\n lastSampleDuration = samples[nbSamples - 2].duration;\n mp4Sample.duration = lastSampleDuration;\n }\n if (nbSamples) {\n // next aac sample PTS should be equal to last sample PTS + duration\n this.nextAacPts = ptsnorm + pes2mp4ScaleFactor * lastSampleDuration;\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 * lastSampleDuration) / pesTimeScale,\n type: 'audio',\n nb: nbSamples\n });\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 remuxText(track,timeOffset) {\n track.samples.sort(function(a, b) {\n return (a.pts-b.pts);\n });\n\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 text 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 }\n this.observer.trigger(Event.FRAG_PARSING_USERDATA, {\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", + "/**\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,textTrack,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 //logger.log('nb ID3 samples:' + audioTrack.samples.length);\n if (textTrack.samples.length) {\n this.remuxText(textTrack,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 offset = 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 flags,\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(offset, unit.data.byteLength);\n offset += 4;\n mdat.set(unit.data, offset);\n offset += unit.data.byteLength;\n mp4SampleLength += 4 + unit.data.byteLength;\n }\n pts = avcSample.pts - this._initDTS;\n dts = avcSample.dts - this._initDTS;\n // ensure DTS is not bigger than PTS\n dts = Math.min(pts,dts);\n //logger.log(`Video/PTS/DTS:${Math.round(pts/90)}/${Math.round(dts/90)}`);\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 var sampleDuration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor;\n if (sampleDuration <= 0) {\n logger.log(`invalid sample duration at PTS/DTS: ${avcSample.pts}/${avcSample.dts}:${sampleDuration}`);\n sampleDuration = 1;\n }\n mp4Sample.duration = sampleDuration;\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},delta:${delta}`);\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 flags = mp4Sample.flags;\n if (avcSample.key === true) {\n // the current sample is a key frame\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n } else {\n flags.dependsOn = 1;\n flags.isNonSync = 1;\n }\n samples.push(mp4Sample);\n lastDTS = dtsnorm;\n }\n var lastSampleDuration = 0;\n if (samples.length >= 2) {\n lastSampleDuration = samples[samples.length - 2].duration;\n mp4Sample.duration = lastSampleDuration;\n }\n // next AVC sample DTS should be equal to last sample DTS + last sample duration\n this.nextAvcDts = dtsnorm + lastSampleDuration * pes2mp4ScaleFactor;\n track.len = 0;\n track.nbNalu = 0;\n if(samples.length && navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n flags = samples[0].flags;\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 flags.dependsOn = 2;\n 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 * lastSampleDuration) / pesTimeScale,\n startDTS: firstDTS / pesTimeScale,\n endDTS: this.nextAvcDts / pesTimeScale,\n type: 'video',\n nb: samples.length\n });\n }\n\n remuxAudio(track,timeOffset, contiguous) {\n var view,\n offset = 8,\n pesTimeScale = this.PES_TIMESCALE,\n mp4timeScale = track.timescale,\n pes2mp4ScaleFactor = pesTimeScale/mp4timeScale,\n aacSample, mp4Sample,\n unit,\n mdat, moof,\n firstPTS, firstDTS, lastDTS,\n pts, dts, ptsnorm, dtsnorm,\n samples = [],\n samples0 = [];\n\n track.samples.sort(function(a, b) {\n return (a.pts-b.pts);\n });\n samples0 = track.samples;\n\n while (samples0.length) {\n aacSample = samples0.shift();\n unit = aacSample.unit;\n pts = aacSample.pts - this._initDTS;\n dts = aacSample.dts - this._initDTS;\n //logger.log(`Audio/PTS:${Math.round(pts/90)}`);\n // if not first sample\n if (lastDTS !== undefined) {\n ptsnorm = this._PTSNormalize(pts, lastDTS);\n dtsnorm = this._PTSNormalize(dts, lastDTS);\n // let's compute sample duration.\n // there should be 1024 audio samples in one AAC frame\n mp4Sample.duration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor;\n if(Math.abs(mp4Sample.duration - 1024) > 10) {\n // not expected to happen ...\n logger.log(`invalid AAC sample duration at PTS ${Math.round(pts/90)},should be 1024,found :${Math.round(mp4Sample.duration)}`);\n }\n mp4Sample.duration = 1024;\n dtsnorm = 1024 * pes2mp4ScaleFactor + lastDTS;\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 > 0) {\n logger.log(`${delta} ms hole between AAC samples detected,filling it`);\n // if we have frame overlap, overlapping for more than half a frame duraion\n } else if (delta < -12) {\n // drop overlapping audio frames... browser will deal with it\n logger.log(`${(-delta)} ms overlapping between AAC samples detected, drop frame`);\n track.len -= unit.byteLength;\n continue;\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 if(track.len > 0) {\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 } else {\n // no audio samples\n return;\n }\n }\n mdat.set(unit, offset);\n offset += unit.byteLength;\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 var lastSampleDuration = 0;\n var nbSamples = samples.length;\n //set last sample duration as being identical to previous sample\n if (nbSamples >= 2) {\n lastSampleDuration = samples[nbSamples - 2].duration;\n mp4Sample.duration = lastSampleDuration;\n }\n if (nbSamples) {\n // next aac sample PTS should be equal to last sample PTS + duration\n this.nextAacPts = ptsnorm + pes2mp4ScaleFactor * lastSampleDuration;\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 * lastSampleDuration) / pesTimeScale,\n type: 'audio',\n nb: nbSamples\n });\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 remuxText(track,timeOffset) {\n track.samples.sort(function(a, b) {\n return (a.pts-b.pts);\n });\n\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 text 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 }\n this.observer.trigger(Event.FRAG_PARSING_USERDATA, {\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", "\n// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\nclass AttrList {\n\n constructor(attrs) {\n if (typeof attrs === 'string') {\n attrs = AttrList.parseAttrList(attrs);\n }\n for(var attr in attrs){\n if(attrs.hasOwnProperty(attr)) {\n this[attr] = attrs[attr];\n }\n }\n }\n\n decimalInteger(attrName) {\n const intValue = parseInt(this[attrName], 10);\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n return intValue;\n }\n\n hexadecimalInteger(attrName) {\n if(this[attrName]) {\n let stringValue = (this[attrName] || '0x').slice(2);\n stringValue = ((stringValue.length & 1) ? '0' : '') + stringValue;\n\n const value = new Uint8Array(stringValue.length / 2);\n for (let i = 0; i < stringValue.length / 2; i++) {\n value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n }\n return value;\n } else {\n return null;\n }\n }\n\n hexadecimalIntegerAsNumber(attrName) {\n const intValue = parseInt(this[attrName], 16);\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n return intValue;\n }\n\n decimalFloatingPoint(attrName) {\n return parseFloat(this[attrName]);\n }\n\n enumeratedString(attrName) {\n return this[attrName];\n }\n\n decimalResolution(attrName) {\n const res = /^(\\d+)x(\\d+)$/.exec(this[attrName]);\n if (res === null) {\n return undefined;\n }\n return {\n width: parseInt(res[1], 10),\n height: parseInt(res[2], 10)\n };\n }\n\n static parseAttrList(input) {\n const re = /\\s*(.+?)\\s*=((?:\\\".*?\\\")|.*?)(?:,|$)/g;\n var match, attrs = {};\n while ((match = re.exec(input)) !== null) {\n var value = match[2], quote = '\"';\n\n if (value.indexOf(quote) === 0 &&\n value.lastIndexOf(quote) === (value.length-1)) {\n value = value.slice(1, -1);\n }\n attrs[match[1]] = value;\n }\n return attrs;\n }\n\n}\n\nexport default AttrList;\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", "/*\n * CEA-708 interpreter\n*/\n\nclass CEA708Interpreter {\n\n constructor() {\n }\n\n attach(media) {\n this.media = media;\n this.display = [];\n this.memory = [];\n }\n\n detach()\n {\n this.clear();\n }\n\n destroy() {\n }\n\n _createCue()\n {\n var VTTCue = window.VTTCue || window.TextTrackCue;\n\n this.cue = new VTTCue(-1, -1, '');\n this.cue.text = '';\n this.cue.pauseOnExit = false;\n\n // make sure it doesn't show up before it's ready\n this.startTime = Number.MAX_VALUE;\n\n // show it 'forever' once we do show it\n // (we'll set the end time once we know it later)\n this.cue.endTime = Number.MAX_VALUE;\n\n this.memory.push(this.cue);\n }\n\n clear()\n {\n if (this._textTrack && this._textTrack.cues)\n {\n while (this._textTrack.cues.length > 0)\n {\n this._textTrack.removeCue(this._textTrack.cues[0]);\n }\n }\n }\n\n push(timestamp, bytes)\n {\n if (!this.cue)\n {\n this._createCue();\n }\n\n var count = bytes[0] & 31;\n var position = 2;\n var byte, ccbyte1, ccbyte2, ccValid, ccType;\n\n for (var j=0; j= 0x30 && ccbyte2 <= 0x3F)\n {\n // extended chars, e.g. musical note, accents\n switch (ccbyte2)\n {\n case 48:\n this.cue.text += '®';\n break;\n case 49:\n this.cue.text += '°';\n break;\n case 50:\n this.cue.text += '½';\n break;\n case 51:\n this.cue.text += '¿';\n break;\n case 52:\n this.cue.text += '™';\n break;\n case 53:\n this.cue.text += '¢';\n break;\n case 54:\n this.cue.text += '';\n break;\n case 55:\n this.cue.text += '£';\n break;\n case 56:\n this.cue.text += '♪';\n break;\n case 57:\n this.cue.text += ' ';\n break;\n case 58:\n this.cue.text += 'è';\n break;\n case 59:\n this.cue.text += 'â';\n break;\n case 60:\n this.cue.text += 'ê';\n break;\n case 61:\n this.cue.text += 'î';\n break;\n case 62:\n this.cue.text += 'ô';\n break;\n case 63:\n this.cue.text += 'û';\n break;\n }\n }\n if ((ccbyte1 === 0x11 || ccbyte1 === 0x19) && ccbyte2 >= 0x20 && ccbyte2 <= 0x2F)\n {\n // Mid-row codes: color/underline\n switch (ccbyte2)\n {\n case 0x20:\n // White\n break;\n case 0x21:\n // White Underline\n break;\n case 0x22:\n // Green\n break;\n case 0x23:\n // Green Underline\n break;\n case 0x24:\n // Blue\n break;\n case 0x25:\n // Blue Underline\n break;\n case 0x26:\n // Cyan\n break;\n case 0x27:\n // Cyan Underline\n break;\n case 0x28:\n // Red\n break;\n case 0x29:\n // Red Underline\n break;\n case 0x2A:\n // Yellow\n break;\n case 0x2B:\n // Yellow Underline\n break;\n case 0x2C:\n // Magenta\n break;\n case 0x2D:\n // Magenta Underline\n break;\n case 0x2E:\n // Italics\n break;\n case 0x2F:\n // Italics Underline\n break;\n }\n }\n if ((ccbyte1 === 0x14 || ccbyte1 === 0x1C) && ccbyte2 >= 0x20 && ccbyte2 <= 0x2F)\n {\n // Mid-row codes: color/underline\n switch (ccbyte2)\n {\n case 0x20:\n // TODO: shouldn't affect roll-ups...\n this._clearActiveCues(timestamp);\n // RCL: Resume Caption Loading\n // begin pop on\n break;\n case 0x21:\n // BS: Backspace\n this.cue.text = this.cue.text.substr(0, this.cue.text.length-1);\n break;\n case 0x22:\n // AOF: reserved (formerly alarm off)\n break;\n case 0x23:\n // AON: reserved (formerly alarm on)\n break;\n case 0x24:\n // DER: Delete to end of row\n break;\n case 0x25:\n // RU2: roll-up 2 rows\n //this._rollup(2);\n break;\n case 0x26:\n // RU3: roll-up 3 rows\n //this._rollup(3);\n break;\n case 0x27:\n // RU4: roll-up 4 rows\n //this._rollup(4);\n break;\n case 0x28:\n // FON: Flash on\n break;\n case 0x29:\n // RDC: Resume direct captioning\n this._clearActiveCues(timestamp);\n break;\n case 0x2A:\n // TR: Text Restart\n break;\n case 0x2B:\n // RTD: Resume Text Display\n break;\n case 0x2C:\n // EDM: Erase Displayed Memory\n this._clearActiveCues(timestamp);\n break;\n case 0x2D:\n // CR: Carriage Return\n // only affects roll-up\n //this._rollup(1);\n break;\n case 0x2E:\n // ENM: Erase non-displayed memory\n this._text = '';\n break;\n case 0x2F:\n this._flipMemory(timestamp);\n // EOC: End of caption\n // hide any displayed captions and show any hidden one\n break;\n }\n }\n if ((ccbyte1 === 0x17 || ccbyte1 === 0x1F) && ccbyte2 >= 0x21 && ccbyte2 <= 0x23)\n {\n // Mid-row codes: color/underline\n switch (ccbyte2)\n {\n case 0x21:\n // TO1: tab offset 1 column\n break;\n case 0x22:\n // TO1: tab offset 2 column\n break;\n case 0x23:\n // TO1: tab offset 3 column\n break;\n }\n }\n else {\n // Probably a pre-amble address code\n }\n }\n }\n }\n }\n\n _fromCharCode(byte)\n {\n switch (byte)\n {\n case 42:\n return 'á';\n\n case 2:\n return 'á';\n\n case 2:\n return 'é';\n\n case 4:\n return 'í';\n\n case 5:\n return 'ó';\n\n case 6:\n return 'ú';\n\n case 3:\n return 'ç';\n\n case 4:\n return '÷';\n\n case 5:\n return 'Ñ';\n\n case 6:\n return 'ñ';\n\n case 7:\n return '█';\n\n default:\n return String.fromCharCode(byte);\n }\n }\n\n _flipMemory(timestamp)\n {\n this._clearActiveCues(timestamp);\n this._flushCaptions(timestamp);\n }\n\n _flushCaptions(timestamp)\n {\n if (!this._has708)\n {\n this._textTrack = this.media.addTextTrack('captions', 'English', 'en');\n this._has708 = true;\n }\n\n for (var i=0; ie||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(l){for(var i,s=Object.keys(r),n=0,d=s.length;d>n;n++){var o=s[n],u=r[o].exports;if(u===l||u.default===l){i=o;break}}if(!i){i=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var h={},n=0,d=s.length;d>n;n++){var o=s[n];h[o]=o}e[i]=[Function(["require","module","exports"],"("+l+")(self)"),h]}var f=Math.floor(Math.pow(16,8)*Math.random()).toString(16),c={};c[i]=i,e[f]=[Function(["require"],"var f = require("+t(i)+");(f.default ? f.default : f)(self);"),c];var v="("+a+")({"+Object.keys(e).map(function(r){return t(r)+":["+e[r][0]+","+t(e[r][1])+"]"}).join(",")+"},{},["+t(f)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL;return new Worker(g.createObjectURL(new Blob([v],{type:"text/javascript"})))}},{}],3:[function(t,s,e){"use strict";function r(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")}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;t=e;e++)if(r=e<=this.lastfetchlevel?.8*i:.7*i,r=0&&i1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){var h,o,n,l=this.hls;switch(this.state){case e.ERROR:break;case e.STARTING:this.startLevel=l.startLevel,-1===this.startLevel&&(this.startLevel=0,this.fragBitrateTest=!0),this.level=l.nextLoadLevel=this.startLevel,this.state=e.WAITING_LEVEL,this.loadedmetadata=!1;break;case e.IDLE:if(!this.media)break;h=this.loadedmetadata?this.media.currentTime:this.nextLoadPosition,o=this.startFragmentRequested===!1?this.startLevel:l.nextLoadLevel;var v,x=this.bufferInfo(h,this.config.maxBufferHole),N=x.len,d=x.end,f=this.fragPrevious;if(this.levels[o].hasOwnProperty("bitrate")?(v=Math.max(8*this.config.maxBufferSize/this.levels[o].bitrate,this.config.maxBufferLength),v=Math.min(v,this.config.maxMaxBufferLength)):v=this.config.maxBufferLength,v>N){if(l.nextLoadLevel=o,this.level=o,n=this.levels[o].details,"undefined"==typeof n||n.live&&this.levelLastLoaded!==o){this.state=e.WAITING_LEVEL;break}var u=n.fragments,c=u.length,g=u[0].start,O=u[c-1].start+u[c-1].duration,a=void 0;if(n.live){if(d=n.startSN&&k<=n.endSN&&(a=u[k-n.startSN],t.logger.log("live playlist, switching playlist, load frag with next SN: "+a.sn))}a||(a=u[Math.min(c-1,Math.round(c/2))],t.logger.log("live playlist, switching playlist, unknown, load middle frag : "+a.sn))}}else g>d&&(a=u[0]);if(!a){var m;if(m=O>d?p.default.search(u,function(e){return e.start+e.duration<=d?1:e.start>d?-1:0}):u[c-1],m&&(a=m,g=m.start,f&&a.level===f.level&&a.sn===f.sn))if(a.sn1&&(a.expectedLen=Math.round(a.duration*this.levels[o].bitrate/8),a.trequest=performance.now()),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,a.loadCounter){a.loadCounter++;var w=this.config.fragLoadingLoopThreshold;if(a.loadCounter>w&&Math.abs(this.fragLoadIdx-a.loadIdx)1){var S=performance.now()-s.trequest;if(S>500*s.duration){var P=1e3*s.loaded/S;s.expectedLen_&&A>D&&(t.logger.warn("loading too slow, abort fragment loading"),t.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay :"+A.toFixed(1)+"/"+_.toFixed(1)+"/"+D.toFixed(1)),s.loader.abort(),l.trigger(r.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:s}),this.state=e.IDLE)}}break;case e.FRAG_LOADING_WAITING_RETRY:var G=performance.now(),T=this.retryDate,I=this.media,M=I&&I.seeking;(!T||G>=T||M)&&(t.logger.log("mediaController: retryDate reached, switch back to IDLE state"),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 R=this.mp4segments.shift();try{this.sourceBuffer[R.type].appendBuffer(R.data),this.appendError=0}catch(a){if(t.logger.error("error while trying to append buffer:"+a.message+",try appending later"),this.mp4segments.unshift(R),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,l.trigger(r.default.ERROR,y),void(this.state=e.ERROR);y.fatal=!1,l.trigger(r.default.ERROR,y)}}this.state=e.APPENDING}}else this.state=e.IDLE;break;case e.BUFFER_FLUSHING:for(;this.flushRange.length;){var C=this.flushRange[0];if(!this.flushBuffer(C.start,C.end))break;this.flushRange.shift()}0===this.flushRange.length&&(this.immediateSwitch&&this.immediateLevelSwitchEnd(),this.state=e.IDLE,this.fragPrevious=null);break;case e.ENDED:}this._checkBuffer(),this._checkFragmentChanged()}},{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;else if(s>i+a){f=s;break}}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("audio/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:"onFragParsingData",value:function(i){if(this.state===e.PARSING){this.tparse2=Date.now();var a=this.levels[this.level],n=this.fragCurrent;t.logger.log("parsed "+i.type+",PTS:["+i.startPTS.toFixed(3)+","+i.endPTS.toFixed(3)+"],DTS:["+i.startDTS.toFixed(3)+"/"+i.endDTS.toFixed(3)+"],nb:"+i.nb);var s=l.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:s}),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, ignoring FRAG_PARSING_DATA event")}},{key:"onFragParsed",value:function(){this.state===e.PARSING&&(this.state=e.PARSED, -this.stats.tparsed=performance.now(),this.tick())}},{key:"onError",value:function(a){switch(a.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:if(!a.fatal){var n=this.fragLoadError;if(n?n++:n=1,n<=this.config.fragLoadingMaxRetry){this.fragLoadError=n,a.frag.loadCounter=0;var s=Math.min(Math.pow(2,n-1)*this.config.fragLoadingRetryDelay,64e3);t.logger.warn("mediaController: frag loading failed, retry in "+s+" ms"),this.retryDate=performance.now()+s,this.state=e.FRAG_LOADING_WAITING_RETRY}else t.logger.error("mediaController: "+a.details+" reaches max retry, redispatch as fatal ..."),a.fatal=!0,this.hls.trigger(r.default.ERROR,a),this.state=e.ERROR}break;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: "+a.details+" while loading frag,switch to "+(a.fatal?"ERROR":"IDLE")+" state ..."),this.state=a.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 u=e.readyState;if(u){var s=this.seekAfterBuffered;if(s)e.duration>=s&&(e.currentTime=s,this.seekAfterBuffered=void 0);else{var a=e.currentTime,o=this.bufferInfo(a,0),f=!(e.paused||e.ended||e.seeking||3>u),l=.2,d=a>e.playbackRate*this.lastCurrentTime;if(this.stalled&&d&&(this.stalled=!1),o.len<=l&&(d||!f?l=0:(t.logger.log("playback seems stuck"),this.stalled||(this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1}),this.stalled=!0)),o.len<=l)){var n=o.nextStart,h=n-a;n&&h.005&&!e.seeking&&(t.logger.log("adjust currentTime from "+a+" to "+n),e.currentTime=n)}}}}}},{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}(o.default);s.default=_,h.exports=s.default},{"../demux/demuxer":14,"../errors":18,"../event-handler":19,"../events":20,"../helper/level-helper":21,"../utils/binary-search":29,"../utils/logger":31}],6:[function(t,o,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(r,"__esModule",{value:!0});var s=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,v[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(R,p,_,E,b,m){var f,g,v,n,e=this._key[1],t=R^e[0],i=E^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],g=h[i>>>24]^d[a>>16&255]^u[r>>8&255]^l[255&t]^e[s+1],v=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=g,a=v;for(n=0;4>n;n++)b[(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},{}],8:[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,g,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(g)),v=new Uint8Array(i.byteLength),t=new Int32Array(v.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(r.audiosamplerate||(n=o.default.getAudioConfig(this.observer,t,e,p),r.config=n.config,r.audiosamplerate=n.samplerate,r.channelCount=n.channelCount,r.codec=n.codec,r.timescale=this.remuxer.timescale,r.duration=this.remuxer.timescale*y,l.logger.log("parsed codec:"+r.codec+",rate:"+n.samplerate+",nb channel:"+n.channelCount)),f=0;u>e+5&&(a=(3&t[e+3])<<11,a|=t[e+4]<<3,a|=(224&t[e+5])>>>5,s=1&t[e+1]?7:9,a-=s,c=Math.round(d+1024*f*9e4/r.audiosamplerate),a>0&&u>=e+s+a);)for(v={unit:t.subarray(e+s,e+s+a),pts:c,dts:c},r.samples.push(v),r.len+=a,e+=a+s,f++;u-1>e&&(255!==t[e]||240!==(240&t[e+1]));e++);this.remuxer.remux(this._aacTrack,{samples:[]},{samples:[{pts:d,dts:d,unit:h.payload}]},g)}},{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=d,s.exports=t.default},{"../demux/id3":16,"../utils/logger":31,"./adts":11}],11:[function(t,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>>6)+1,e=(60&u[l+2])>>>2,e>d.length-1?void f.trigger(Event.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+e}):(o=(1&u[l+2])<<2,o|=(192&u[l+3])>>>6,s.logger.log("manifest codec:"+a+",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),a&&(-1!==a.indexOf("mp4a.40.29")||-1!==a.indexOf("mp4a.40.5"))||!a&&e>=6?n=e-3:((a&&-1!==a.indexOf("mp4a.40.2")&&(e>=6||1===o)||!a&&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})}}]),e}();e.default=o,i.exports=e.default},{"../errors":18,"../utils/logger":31}],12:[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)}),t.on(e.default.FRAG_PARSING_USERDATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)})};i.default=o,s.exports=i.default},{"../demux/demuxer-inline":12,"../events":20,"../remux/mp4-remuxer":27,events:1}],14:[function(t,u,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function v(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(t){switch(t.data.event){case e.default.FRAG_PARSING_INIT_SEGMENT:var r={};t.data.audioMoov&&(r.audioMoov=new Uint8Array(t.data.audioMoov),r.audioCodec=t.data.audioCodec,r.audioChannelCount=t.data.audioChannelCount),t.data.videoMoov&&(r.videoMoov=new Uint8Array(t.data.videoMoov),r.videoCodec=t.data.videoCodec,r.videoWidth=t.data.videoWidth,r.videoHeight=t.data.videoHeight),this.hls.trigger(e.default.FRAG_PARSING_INIT_SEGMENT,r);break;case e.default.FRAG_PARSING_DATA:this.hls.trigger(e.default.FRAG_PARSING_DATA,{moof:new Uint8Array(t.data.moof),mdat:new Uint8Array(t.data.mdat),startPTS:t.data.startPTS,endPTS:t.data.endPTS,startDTS:t.data.startDTS,endDTS:t.data.endDTS,type:t.data.type,nb:t.data.nb});break;case e.default.FRAG_PARSING_METADATA:this.hls.trigger(e.default.FRAG_PARSING_METADATA,{samples:t.data.samples});break;case e.default.FRAG_PARSING_USERDATA:this.hls.trigger(e.default.FRAG_PARSING_USERDATA,{samples:t.data.samples});break;default:this.hls.trigger(t.data.event,t.data.data)}}}]),r}();i.default=y,u.exports=i.default},{"../crypt/decrypter":9,"../demux/demuxer-inline":12,"../demux/demuxer-worker":13,"../events":20,"../remux/mp4-remuxer":27,"../utils/logger":31,webworkify:2}],15:[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:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}},{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 t,g,p,l,a,n,i,o,r,s=0,d=0,h=0,f=0,c=1;if(this.readUByte(),t=this.readUByte(),g=this.readBits(5),this.skipBits(3),p=this.readUByte(),this.skipUEG(),100===t||110===t||122===t||244===t||44===t||83===t||86===t||118===t||128===t){var v=this.readUEG();if(3===v&&this.skipBits(1),this.skipUEG(),this.skipUEG(),this.skipBits(1),this.readBoolean())for(o=3!==v?8:12,r=0;o>r;r++)this.readBoolean()&&(6>r?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(),r=0;l>r;r++)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":31}],16:[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":31}],17:[function(t,o,i){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;tt;t+=188)if(71===i[t]){if(d=!!(64&i[t+1]),u=((31&i[t+1])<<8)+i[t+2],y=(48&i[t+3])>>4,y>1){if(a=t+5+i[t+4],a===t+188)continue}else a=t+4;p?u===v?(d&&(l&&this._parseAVCPES(this._parsePES(l)),l={data:[],size:0}),l&&(l.data.push(i.subarray(a,t+188)),l.size+=t+188-a)):u===c?(d&&(o&&this._parseAACPES(this._parsePES(o)),o={data:[],size:0}),o&&(o.data.push(i.subarray(a,t+188)),o.size+=t+188-a)):u===b&&(d&&(s&&this._parseID3PES(this._parsePES(s)),s={data:[],size:0}),s&&(s.data.push(i.subarray(a,t+188)),s.size+=t+188-a)):(d&&(a+=i[a]+1),0===u?this._parsePAT(i,a):u===this._pmtId&&(this._parsePMT(i,a),p=this.pmtParsed=!0,v=this._avcTrack.id,c=this._aacTrack.id,b=this._id3Track.id))}else this.observer.trigger(n.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.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._txtTrack,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(i){var t,y,n,l,h=this,r=this._avcTrack,u=r.samples,m=this._parseAVCNALu(i.data),d=[],o=!1,c=!1,v=0;if(0===m.length&&u.length>0){var g=u[u.length-1],f=g.units.units[g.units.units.length-1],p=new Uint8Array(f.data.byteLength+i.data.byteLength); -p.set(f.data,0),p.set(i.data,f.data.byteLength),f.data=p,g.units.length+=i.data.byteLength,r.len+=i.data.byteLength}i.data=null;var a="";m.forEach(function(e){switch(e.type){case 1:n=!0,o&&(a+="NDR ");break;case 5:n=!0,o&&(a+="IDR "),c=!0;break;case 6:n=!0,o&&(a+="SEI "),t=new s.default(e.data),t.readUByte();var b=t.readUByte();if(4===b){var p=0;do p=t.readUByte();while(255===p);var R=t.readUByte();if(181===R){var _=t.readUShort();if(49===_){var A=t.readUInt();if(1195456820===A){var k=t.readUByte();if(3===k){var g=t.readUByte(),E=t.readUByte(),T=31&g,f=[g,E];for(l=0;T>l;l++)f.push(t.readUByte()),f.push(t.readUByte()),f.push(t.readUByte());h._txtTrack.samples.push({type:3,pts:i.pts,bytes:f})}}}}}break;case 7:if(n=!0,o&&(a+="SPS "),!r.sps){t=new s.default(e.data);var y=t.readSPS();r.width=y.width,r.height=y.height,r.sps=[e.data],r.timescale=h.remuxer.timescale,r.duration=h.remuxer.timescale*h._duration;var L=e.data.subarray(1,4),m="avc1.";for(l=0;3>l;l++){var u=L[l].toString(16);u.length<2&&(u="0"+u),m+=u}r.codec=m}break;case 8:n=!0,o&&(a+="PPS "),r.pps||(r.pps=[e.data]);break;case 9:n=!1,o&&(a+="AUD ");break;default:n=!1,a+="unknown NAL "+e.type+" "}n&&(d.push(e),v+=e.data.byteLength)}),(o||a.length)&&e.logger.log(a),d.length&&(c===!0||r.sps)&&(y={units:{units:d,length:v},pts:i.pts,dts:i.dts,key:c},u.push(y),r.len+=v,r.nbNalu+=d.length)}},{key:"_parseAVCNALu",value:function(r){for(var n,i,s,p,a,l,t=0,f=r.byteLength,e=0,d=[];f>t;)switch(n=r[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&&f>t){if(p=31&r[t],a)s={data:r.subarray(a,t-e-1),type:l},d.push(s);else if(i=t-e-1){var c=this._avcTrack,h=c.samples;if(h.length){var v=h[h.length-1],g=v.units.units,o=g[g.length-1],u=new Uint8Array(o.data.byteLength+i);u.set(o.data,0),u.set(r.subarray(0,i),o.data.byteLength),o.data=u,v.units.length+=i,c.len+=i}}a=t,l=p,e=0}else e=0}return a&&(s={data:r.subarray(a,f),type:l},d.push(s)),d}},{key:"_parseAACPES",value:function(R){var l,o,p,b,t,d,h,s,_,a=this._aacTrack,i=R.data,c=R.pts,k=0,L=this._duration,A=this.audioCodec,u=this.aacOverFlow,E=this.lastAacPTS;if(u){var m=new Uint8Array(u.byteLength+i.byteLength);m.set(u,0),m.set(i,u.byteLength),i=m}for(t=k,s=i.length;s-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);if(t){var y,f;if(s-1>t?(y="AAC PES did not start with ADTS header,offset:"+t,f=!1):(y="no ADTS header found in AAC PES",f=!0),this.observer.trigger(n.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:f,reason:y}),f)return}if(a.audiosamplerate||(l=v.default.getAudioConfig(this.observer,i,t,A),a.config=l.config,a.audiosamplerate=l.samplerate,a.channelCount=l.channelCount,a.codec=l.codec,a.timescale=this.remuxer.timescale,a.duration=a.timescale*L,e.logger.log("parsed codec:"+a.codec+",rate:"+l.samplerate+",nb channel:"+l.channelCount)),b=0,p=9216e4/a.audiosamplerate,u&&E){var g=E+p;Math.abs(g-c)>1&&(e.logger.log("AAC: align PTS for overlapping frames by "+Math.round((g-c)/90)),c=g)}for(;s>t+5&&(d=1&i[t+1]?7:9,o=(3&i[t+3])<<11|i[t+4]<<3|(224&i[t+5])>>>5,o-=d,o>0&&s>=t+d+o);)for(h=Math.round(c+b*p),_={unit:i.subarray(t+d,t+d+o),pts:h,dts:h},a.samples.push(_),a.len+=o,t+=o+d,b++;s-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);u=s>t?i.subarray(t,s):null,this.aacOverFlow=u,this.lastAacPTS=h}},{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}}]),t}();i.default=u,o.exports=i.default},{"../errors":18,"../events":20,"../utils/logger":31,"./adts":11,"./exp-golomb":15}],18:[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",BUFFER_STALLED_ERROR:"bufferStalledError"};e.ErrorDetails=r},{}],19:[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;t1?i-1:0),t=1;i>t;t++)a[t-1]=arguments[t];this.handledEvents=a,this.useGenericHandler=!0,this.registerListeners()}return i(e,[{key:"destroy",value:function(){this.unregisterListeners()}},{key:"isEventHandler",value:function(){return"object"==typeof this.handledEvents&&this.handledEvents.length&&"function"==typeof this.onEvent}},{key:"registerListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){if("hlsEventGeneric"===e)throw new Error("Forbidden event name: "+e);this.hls.on(e,this.onEvent)}.bind(this))}},{key:"unregisterListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){this.hls.off(e,this.onEvent)}.bind(this))}},{key:"onEvent",value:function(e,t){this.onEventGeneric(e,t)}},{key:"onEventGeneric",value:function(e,t){var r=function(t,r){var e="on"+t.replace("hls","");if("function"!=typeof this[e])throw new Error("Event "+t+" has no generic handler in this "+this.constructor.name+" class (tried "+e+")");return this[e].bind(this,r)};r.call(this,e,t).call()}}]),e}();e.default=a,t.exports=e.default},{}],20:[function(t,e,r){"use strict";e.exports={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:"hlsLevelPtsUpdated",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_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",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"}},{}],21:[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.min(a,r.startPTS),s=Math.max(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 frag "+e.sn+",level "+e.level+", 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 frag "+r.sn+",level "+r.level+", there should be some duration drift between playlist and fragment!"))}}]),e}();e.default=s,i.exports=e.default},{"../utils/logger":31}],22:[function(t,v,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.timelineController=new i.timelineController(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}},{key:"DefaultConfig",get:function(){return t.defaultConfig||(t.defaultConfig={autoStartLoad:!0,debug:!1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.3,maxSeekHole:2,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingLoopThreshold:3,appendErrorMaxRetry:3,loader:A.default,fLoader:void 0,pLoader:void 0,abrController:w.default,mediaController:p.default,timelineController:E.default,enableCEA708Captions:!0}),t.defaultConfig},set:function(e){t.defaultConfig=e}}]),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.timelineController.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,v.exports=a.default},{"./controller/abr-controller":3,"./controller/level-controller":4,"./controller/mse-media-controller":5,"./controller/timeline-controller":6,"./errors":18,"./events":20,"./loader/fragment-loader":23,"./loader/key-loader":24,"./loader/playlist-loader":25,"./utils/logger":31,"./utils/xhr-loader":33,events:1}],23:[function(r,o,i){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(i,"__esModule",{value:!0});var s=function(){function e(i,r){for(var t=0;t2?(e=t.shift()+".",e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).substr(-4)):e=r,e}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(L,l,A){var e,E,n,a,g=0,o=0,i={url:l,fragments:[],live:!0,startSN:0},r={method:null,key:null,iv:null,uri:null},b=0,h=null,t=null;for(E=/(?:#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))|(?:#EXT-X-(PROGRAM-DATE-TIME):(.*))/g;null!==(e=E.exec(L));)switch(e.shift(),e=e.filter(function(e){return void 0!==e}),e[0]){case"MEDIA-SEQUENCE":g=i.startSN=parseInt(e[1]);break;case"TARGETDURATION":i.targetduration=parseFloat(e[1]);break;case"ENDLIST":i.live=!1;break;case"DIS":b++;break;case"BYTERANGE":var c=e[1].split("@");a=1===c.length?n:parseInt(c[1]),n=parseInt(c[0])+a,t&&!t.url&&(t.byteRangeStartOffset=a,t.byteRangeEndOffset=n,t.url=this.resolve(e[2],l));break;case"INF":var v=parseFloat(e[1]);if(!isNaN(v)){var u,m=g++;if(r.method&&r.uri&&!r.iv){u=this.cloneObj(r);for(var y=new Uint8Array(16),d=12;16>d;d++)y[d]=m>>8*(15-d)&255;u.iv=y}else u=r;var k=e[2]?this.resolve(e[2],l):null;t={url:k,duration:v,start:o,sn:m,level:A,cc:b,byteRangeStartOffset:a,byteRangeEndOffset:n,decryptdata:u,programDateTime:h},i.fragments.push(t),o+=v,a=null,h=null}break;case"KEY":var R=e[1],p=new s.default(R),f=p.enumeratedString("METHOD"),_=p.URI,T=p.hexadecimalInteger("IV");f&&(r={method:null,key:null,iv:null,uri:null},_&&"AES-128"===f&&(r.method=f,r.uri=this.resolve(_,l),r.key=null,r.iv=T));break;case"PROGRAM-DATE-TIME":h=new Date(Date.parse(e[1]))}return t&&!t.url&&(i.fragments.pop(),o-=t.duration),i.totalduration=o,i.endSN=g-1,i}},{key:"loadsuccess",value:function(u,i){var s,o=u.currentTarget,n=o.responseText,r=o.responseURL,l=this.id,d=this.id2,a=this.hls;if(void 0===r&&(r=this.url),i.tload=performance.now(),i.mtime=new Date(o.getResponseHeader("Last-Modified")),0===n.indexOf("#EXTM3U"))if(n.indexOf("#EXTINF:")>0)if(null===this.id)a.trigger(t.default.MANIFEST_LOADED,{levels:[{url:r}],url:r,stats:i});else{var h=this.parseLevelPlaylist(n,r,l);i.tparsed=performance.now(),a.trigger(t.default.LEVEL_LOADED,{details:h,level:l,id:d,stats:i})}else s=this.parseMasterPlaylist(n,r),s.length?a.trigger(t.default.MANIFEST_LOADED,{levels:s,url:r,stats:i}):a.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no level found in manifest"});else a.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(a){var r,i;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_ERROR,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_ERROR,i=!1),this.loader.abort(),this.hls.trigger(t.default.ERROR,{type:e.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=e.ErrorDetails.MANIFEST_LOAD_TIMEOUT,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_TIMEOUT,i=!1),this.loader.abort(),this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),r}(n.default);a.default=h,u.exports=a.default},{"../errors":18,"../event-handler":19,"../events":20,"../utils/attr-list":28,"../utils/url":32}],26:[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[1]=e>>16&255,t[2]=e>>8&255,t[3]=255&e,t.set(a,4),r=0,e=8;n>r;r++)t.set(i[r],e),e+=i[r].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,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,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 i,a,n,s,t,l,d=f.samples||[],r=d.length,h=12+16*r,u=new Uint8Array(h);for(o+=8+h,u.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),i=0;r>i;i++)a=d[i],n=a.duration,s=a.size,t=a.flags,l=a.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|t.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*i);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},{}],27:[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;t=y&&(t.logger.log("invalid sample duration at PTS/DTS: "+l.pts+"/"+l.dts+":"+y),y=1),g.duration=y}else{var n,m=this.nextAvcDts;o=this._PTSNormalize(_,m),i=this._PTSNormalize(c,m),n=Math.round((i-m)/90),(S||Math.abs(n)<600)&&n&&(n>1?t.logger.log("AVC:"+n+" ms hole between fragments detected,filling it"):-1>n&&t.logger.log("AVC:"+-n+" ms overlapping between fragments detected"),i=m,o=Math.max(o-n,i),t.logger.log("Video/PTS/DTS adjusted: "+o+"/"+i+",delta:"+n)),k=Math.max(0,o),R=Math.max(0,i)}g={size:A,duration:0,cts:(o-i)/h,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},s=g.flags,l.key===!0?(s.dependsOn=2,s.isNonSync=0):(s.dependsOn=1,s.isNonSync=1),u.push(g),f=i}var E=0;u.length>=2&&(E=u[u.length-2].duration,g.duration=E),this.nextAvcDts=i+E*h,a.len=0,a.nbNalu=0,u.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(s=u[0].flags,s.dependsOn=2,s.isNonSync=0),a.samples=u,T=r.default.moof(a.sequenceNumber++,R/h,a),a.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:T,mdat:d,startPTS:k/b,endPTS:(o+h*E)/b,startDTS:R/b,endDTS:this.nextAvcDts/b,type:"video",nb:u.length})}},{key:"remuxAudio",value:function(i,S,T){var A,f,s,d,u,R,L,_,h,l,b,o,n,k=8,c=this.PES_TIMESCALE,p=this.PES2MP4SCALEFACTOR,g=[],E=[];for(i.samples.forEach(function(e){void 0===l||e.pts>l?(E.push(e),l=e.pts):(t.logger.warn("dropping past audio frame"),i.len-=e.unit.byteLength)});E.length;){if(f=E.shift(),d=f.unit,l=f.pts-this._initDTS,b=f.dts-this._initDTS,void 0!==h)o=this._PTSNormalize(l,h),n=this._PTSNormalize(b,h),s.duration=(n-h)/p,s.duration<0&&(t.logger.log("invalid AAC sample duration at PTS:"+f.pts+":"+s.duration),s.duration=0);else{var a,m=this.nextAacPts;if(o=this._PTSNormalize(l,m),n=this._PTSNormalize(b,m),a=Math.round(1e3*(o-m)/c),(T||Math.abs(a)<600)&&a){if(a>0)t.logger.log(a+" ms hole between AAC samples detected,filling it");else if(-12>a){t.logger.log(-a+" ms overlapping between AAC samples detected, drop frame"),i.len-=d.byteLength;continue}o=n=m}if(L=Math.max(0,o),_=Math.max(0,n),!(i.len>0))return;u=new Uint8Array(i.len+8),A=new DataView(u.buffer),A.setUint32(0,u.byteLength),u.set(r.default.types.mdat,4)}u.set(d,k),k+=d.byteLength,s={size:d.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},g.push(s),h=n}var y=0,v=g.length;v>=2&&(y=g[v-2].duration,s.duration=y),v&&(this.nextAacPts=o+p*y,i.len=0,i.samples=g,R=r.default.moof(i.sequenceNumber++,_/p,i),i.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:R,mdat:u,startPTS:L/c,endPTS:this.nextAacPts/c,startDTS:_/c,endDTS:(n+p*y)/c,type:"audio",nb:v}))}},{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:"remuxText",value:function(t,a){t.samples.sort(function(e,t){return e.pts-t.pts});var r,n=t.samples.length;if(n){for(var i=0;n>i;i++)r=t.samples[i],r.pts=(r.pts-this._initPTS)/this.PES_TIMESCALE;this.observer.trigger(e.default.FRAG_PARSING_USERDATA,{samples:t.samples})}t.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":18,"../events":20,"../remux/mp4-generator":26,"../utils/logger":31}],28:[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;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"hexadecimalInteger",value:function(r){if(this[r]){var e=(this[r]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var i=new Uint8Array(e.length/2),t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"decimalFloatingPoint",value:function(e){return parseFloat(this[e])}},{key:"enumeratedString",value:function(e){return this[e]}},{key:"decimalResolution",value:function(t){var e=/^(\d+)x(\d+)$/.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}}],[{key:"parseAttrList",value:function(a){for(var t,n=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,r={};null!==(t=n.exec(a));){var e=t[2],i='"';0===e.indexOf(i)&&e.lastIndexOf(i)===e.length-1&&(e=e.slice(1,-1)),r[t[1]]=e}return r}}]),e}();e.default=a,t.exports=e.default},{}],29:[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},{}],30:[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;t0;)this._textTrack.removeCue(this._textTrack.cues[0])}},{key:"push",value:function(r,i){this.cue||this._createCue();for(var a,t,e,s,o,u=31&i[0],n=2,l=0;u>l;l++)if(a=i[n++],t=127&i[n++],e=127&i[n++],s=0===(4&a)?!1:!0,o=3&a,(0!==t||0!==e)&&s&&0===o){if(32&t||64&t)this.cue.text+=this._fromCharCode(t)+this._fromCharCode(e);else if((17===t||25===t)&&e>=48&&63>=e)switch(e){case 48:this.cue.text+="®";break;case 49:this.cue.text+="°";break;case 50:this.cue.text+="½";break;case 51:this.cue.text+="¿";break;case 52:this.cue.text+="™";break;case 53:this.cue.text+="¢";break;case 54:this.cue.text+="";break;case 55:this.cue.text+="£";break;case 56:this.cue.text+="♪";break;case 57:this.cue.text+=" ";break;case 58:this.cue.text+="è";break;case 59:this.cue.text+="â";break;case 60:this.cue.text+="ê";break;case 61:this.cue.text+="î";break;case 62:this.cue.text+="ô";break;case 63:this.cue.text+="û"}if((17===t||25===t)&&e>=32&&47>=e)switch(e){case 32:break;case 33:break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:break;case 42:break;case 43:break;case 44:break;case 45:break;case 46:break;case 47:}if((20===t||28===t)&&e>=32&&47>=e)switch(e){case 32:this._clearActiveCues(r);break;case 33:this.cue.text=this.cue.text.substr(0,this.cue.text.length-1);break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:this._clearActiveCues(r);break;case 42:break;case 43:break;case 44:this._clearActiveCues(r);break;case 45:break;case 46:this._text="";break;case 47:this._flipMemory(r)}if((23===t||31===t)&&e>=33&&35>=e)switch(e){case 33:break;case 34:break;case 35:}}}},{key:"_fromCharCode",value:function(e){switch(e){case 42:return"á";case 2:return"á";case 2:return"é";case 4:return"í";case 5:return"ó";case 6:return"ú";case 3:return"ç";case 4:return"÷";case 5:return"Ñ";case 6:return"ñ";case 7:return"█";default:return String.fromCharCode(e)}}},{key:"_flipMemory",value:function(e){this._clearActiveCues(e),this._flushCaptions(e)}},{key:"_flushCaptions",value:function(t){this._has708||(this._textTrack=this.media.addTextTrack("captions","English","en"),this._has708=!0);for(var e=0;e "+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},{}],32:[function(r,t,i){"use strict";var e={buildAbsoluteURL:function(r,t){if(t=t.trim(),/^[a-z]+:/i.test(t))return t;var o=null,a=null,n=/^([^#]*)(.*)$/.exec(t);n&&(a=n[2],t=n[1]);var s=/^([^\?]*)(.*)$/.exec(t);s&&(o=s[2],t=s[1]);var h=/^([^#]*)(.*)$/.exec(r);h&&(r=h[1]);var u=/^([^\?]*)(.*)$/.exec(r);u&&(r=u[1]);var l=/^((([a-z]+):)?\/\/[a-z0-9\.-]+(:[0-9]+)?\/)(.*)$/i.exec(r),f=l[3],d=l[1],c=l[5],i=null;return i=/^\/\//.test(t)?f+"://"+e.buildAbsolutePath("",t.substring(2)):/^\//.test(t)?d+e.buildAbsolutePath("",t.substring(1)):e.buildAbsolutePath(d+c,t),o&&(i+=o),a&&(i+=a),i},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},{}],33:[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=200&&300>r?(window.clearTimeout(this.timeoutHandle),e.tload=performance.now(),this.onSuccess(i,e)):e.retrye||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(l){for(var i,s=Object.keys(r),n=0,d=s.length;d>n;n++){var o=s[n],u=r[o].exports;if(u===l||u.default===l){i=o;break}}if(!i){i=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var h={},n=0,d=s.length;d>n;n++){var o=s[n];h[o]=o}e[i]=[Function(["require","module","exports"],"("+l+")(self)"),h]}var f=Math.floor(Math.pow(16,8)*Math.random()).toString(16),c={};c[i]=i,e[f]=[Function(["require"],"var f = require("+t(i)+");(f.default ? f.default : f)(self);"),c];var v="("+a+")({"+Object.keys(e).map(function(r){return t(r)+":["+e[r][0]+","+t(e[r][1])+"]"}).join(",")+"},{},["+t(f)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL;return new Worker(g.createObjectURL(new Blob([v],{type:"text/javascript"})))}},{}],3:[function(t,s,e){"use strict";function r(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")}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;t=e;e++)if(r=e<=this.lastfetchlevel?.8*i:.7*i,r=0&&i1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){var h,o,n,l=this.hls;switch(this.state){case e.ERROR:break;case e.STARTING:this.startLevel=l.startLevel,-1===this.startLevel&&(this.startLevel=0,this.fragBitrateTest=!0),this.level=l.nextLoadLevel=this.startLevel,this.state=e.WAITING_LEVEL,this.loadedmetadata=!1;break;case e.IDLE:if(!this.media)break;h=this.loadedmetadata?this.media.currentTime:this.nextLoadPosition,o=this.startFragmentRequested===!1?this.startLevel:l.nextLoadLevel;var v,x=this.bufferInfo(h,this.config.maxBufferHole),N=x.len,d=x.end,f=this.fragPrevious;if(this.levels[o].hasOwnProperty("bitrate")?(v=Math.max(8*this.config.maxBufferSize/this.levels[o].bitrate,this.config.maxBufferLength),v=Math.min(v,this.config.maxMaxBufferLength)):v=this.config.maxBufferLength,v>N){if(l.nextLoadLevel=o,this.level=o,n=this.levels[o].details,"undefined"==typeof n||n.live&&this.levelLastLoaded!==o){this.state=e.WAITING_LEVEL;break}var u=n.fragments,c=u.length,g=u[0].start,O=u[c-1].start+u[c-1].duration,a=void 0;if(n.live){if(d=n.startSN&&k<=n.endSN&&(a=u[k-n.startSN],t.logger.log("live playlist, switching playlist, load frag with next SN: "+a.sn))}a||(a=u[Math.min(c-1,Math.round(c/2))],t.logger.log("live playlist, switching playlist, unknown, load middle frag : "+a.sn))}}else g>d&&(a=u[0]);if(!a){var m;if(m=O>d?p.default.search(u,function(e){return e.start+e.duration<=d?1:e.start>d?-1:0}):u[c-1],m&&(a=m,g=m.start,f&&a.level===f.level&&a.sn===f.sn))if(a.sn1&&(a.expectedLen=Math.round(a.duration*this.levels[o].bitrate/8),a.trequest=performance.now()),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,a.loadCounter){a.loadCounter++;var w=this.config.fragLoadingLoopThreshold;if(a.loadCounter>w&&Math.abs(this.fragLoadIdx-a.loadIdx)1){var S=performance.now()-s.trequest;if(S>500*s.duration){var P=1e3*s.loaded/S;s.expectedLen_&&A>D&&(t.logger.warn("loading too slow, abort fragment loading"),t.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay :"+A.toFixed(1)+"/"+_.toFixed(1)+"/"+D.toFixed(1)),s.loader.abort(),l.trigger(r.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:s}),this.state=e.IDLE)}}break;case e.FRAG_LOADING_WAITING_RETRY:var G=performance.now(),T=this.retryDate,I=this.media,M=I&&I.seeking;(!T||G>=T||M)&&(t.logger.log("mediaController: retryDate reached, switch back to IDLE state"),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 R=this.mp4segments.shift();try{this.sourceBuffer[R.type].appendBuffer(R.data),this.appendError=0}catch(a){if(t.logger.error("error while trying to append buffer:"+a.message+",try appending later"),this.mp4segments.unshift(R),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,l.trigger(r.default.ERROR,y),void(this.state=e.ERROR);y.fatal=!1,l.trigger(r.default.ERROR,y)}}this.state=e.APPENDING}}else this.state=e.IDLE;break;case e.BUFFER_FLUSHING:for(;this.flushRange.length;){var C=this.flushRange[0];if(!this.flushBuffer(C.start,C.end))break;this.flushRange.shift()}0===this.flushRange.length&&(this.immediateSwitch&&this.immediateLevelSwitchEnd(),this.state=e.IDLE,this.fragPrevious=null);break;case e.ENDED:}this._checkBuffer(),this._checkFragmentChanged()}},{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;else if(s>i+a){f=s;break}}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,n,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+","+n+"], pos:"+this.media.currentTime),r.remove(i,a),!1}else t.logger.warn("abort flushing too many retries");var s,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("audio/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:"onFragParsingData",value:function(i){if(this.state===e.PARSING){this.tparse2=Date.now();var a=this.levels[this.level],n=this.fragCurrent;t.logger.log("parsed "+i.type+",PTS:["+i.startPTS.toFixed(3)+","+i.endPTS.toFixed(3)+"],DTS:["+i.startDTS.toFixed(3)+"/"+i.endDTS.toFixed(3)+"],nb:"+i.nb);var s=l.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:s}),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, ignoring FRAG_PARSING_DATA event")}},{key:"onFragParsed",value:function(){this.state===e.PARSING&&(this.state=e.PARSED, +this.stats.tparsed=performance.now(),this.tick())}},{key:"onError",value:function(a){switch(a.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:if(!a.fatal){var n=this.fragLoadError;if(n?n++:n=1,n<=this.config.fragLoadingMaxRetry){this.fragLoadError=n,a.frag.loadCounter=0;var s=Math.min(Math.pow(2,n-1)*this.config.fragLoadingRetryDelay,64e3);t.logger.warn("mediaController: frag loading failed, retry in "+s+" ms"),this.retryDate=performance.now()+s,this.state=e.FRAG_LOADING_WAITING_RETRY}else t.logger.error("mediaController: "+a.details+" reaches max retry, redispatch as fatal ..."),a.fatal=!0,this.hls.trigger(r.default.ERROR,a),this.state=e.ERROR}break;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: "+a.details+" while loading frag,switch to "+(a.fatal?"ERROR":"IDLE")+" state ..."),this.state=a.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 u=e.readyState;if(u){var s=this.seekAfterBuffered;if(s)e.duration>=s&&(e.currentTime=s,this.seekAfterBuffered=void 0);else{var a=e.currentTime,o=this.bufferInfo(a,0),f=!(e.paused||e.ended||e.seeking||3>u),l=.2,d=a>e.playbackRate*this.lastCurrentTime;if(this.stalled&&d&&(this.stalled=!1),o.len<=l&&(d||!f?l=0:(t.logger.log("playback seems stuck @"+a),this.stalled||(this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1}),this.stalled=!0)),o.len<=l)){var n=o.nextStart,h=n-a;n&&h.005&&!e.seeking&&(t.logger.log("adjust currentTime from "+a+" to "+n),e.currentTime=n)}}}}}},{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}(o.default);s.default=_,h.exports=s.default},{"../demux/demuxer":14,"../errors":18,"../event-handler":19,"../events":20,"../helper/level-helper":21,"../utils/binary-search":29,"../utils/logger":31}],6:[function(t,o,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(r,"__esModule",{value:!0});var s=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,v[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(R,p,_,E,b,m){var f,g,v,n,e=this._key[1],t=R^e[0],i=E^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],g=h[i>>>24]^d[a>>16&255]^u[r>>8&255]^l[255&t]^e[s+1],v=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=g,a=v;for(n=0;4>n;n++)b[(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},{}],8:[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,g,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(g)),v=new Uint8Array(i.byteLength),t=new Int32Array(v.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(r.audiosamplerate||(a=o.default.getAudioConfig(this.observer,t,e,p),r.config=a.config,r.audiosamplerate=a.samplerate,r.channelCount=a.channelCount,r.codec=a.codec,r.timescale=a.samplerate,r.duration=a.samplerate*y,l.logger.log("parsed codec:"+r.codec+",rate:"+a.samplerate+",nb channel:"+a.channelCount)),c=0,g=9216e4/r.audiosamplerate;u>e+5&&(s=1&t[e+1]?7:9,n=(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5,n-=s,n>0&&u>=e+s+n);)for(h=f+c*g,v={unit:t.subarray(e+s,e+s+n),pts:h,dts:h},r.samples.push(v),r.len+=n,e+=n+s,c++;u-1>e&&(255!==t[e]||240!==(240&t[e+1]));e++);this.remuxer.remux(this._aacTrack,{samples:[]},{samples:[{pts:f,dts:f,unit:d.payload}]},m)}},{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=d,s.exports=t.default},{"../demux/id3":16,"../utils/logger":31,"./adts":11}],11:[function(t,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>>6)+1,e=(60&u[l+2])>>>2,e>d.length-1?void f.trigger(Event.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+e}):(o=(1&u[l+2])<<2,o|=(192&u[l+3])>>>6,s.logger.log("manifest codec:"+a+",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),a&&(-1!==a.indexOf("mp4a.40.29")||-1!==a.indexOf("mp4a.40.5"))||!a&&e>=6?n=e-3:((a&&-1!==a.indexOf("mp4a.40.2")&&(e>=6||1===o)||!a&&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})}}]),e}();e.default=o,i.exports=e.default},{"../errors":18,"../utils/logger":31}],12:[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)}),t.on(e.default.FRAG_PARSING_USERDATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)})};i.default=o,s.exports=i.default},{"../demux/demuxer-inline":12,"../events":20,"../remux/mp4-remuxer":27,events:1}],14:[function(t,u,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function v(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(t){switch(t.data.event){case e.default.FRAG_PARSING_INIT_SEGMENT:var r={};t.data.audioMoov&&(r.audioMoov=new Uint8Array(t.data.audioMoov),r.audioCodec=t.data.audioCodec,r.audioChannelCount=t.data.audioChannelCount),t.data.videoMoov&&(r.videoMoov=new Uint8Array(t.data.videoMoov),r.videoCodec=t.data.videoCodec,r.videoWidth=t.data.videoWidth,r.videoHeight=t.data.videoHeight),this.hls.trigger(e.default.FRAG_PARSING_INIT_SEGMENT,r);break;case e.default.FRAG_PARSING_DATA:this.hls.trigger(e.default.FRAG_PARSING_DATA,{moof:new Uint8Array(t.data.moof),mdat:new Uint8Array(t.data.mdat),startPTS:t.data.startPTS,endPTS:t.data.endPTS,startDTS:t.data.startDTS,endDTS:t.data.endDTS,type:t.data.type,nb:t.data.nb});break;case e.default.FRAG_PARSING_METADATA:this.hls.trigger(e.default.FRAG_PARSING_METADATA,{samples:t.data.samples});break;case e.default.FRAG_PARSING_USERDATA:this.hls.trigger(e.default.FRAG_PARSING_USERDATA,{samples:t.data.samples});break;default:this.hls.trigger(t.data.event,t.data.data)}}}]),r}();i.default=y,u.exports=i.default},{"../crypt/decrypter":9,"../demux/demuxer-inline":12,"../demux/demuxer-worker":13,"../events":20,"../remux/mp4-remuxer":27,"../utils/logger":31,webworkify:2}],15:[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:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}},{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 t,g,p,l,a,n,i,o,r,s=0,d=0,h=0,f=0,c=1;if(this.readUByte(),t=this.readUByte(),g=this.readBits(5),this.skipBits(3),p=this.readUByte(),this.skipUEG(),100===t||110===t||122===t||244===t||44===t||83===t||86===t||118===t||128===t){var v=this.readUEG();if(3===v&&this.skipBits(1),this.skipUEG(),this.skipUEG(),this.skipBits(1),this.readBoolean())for(o=3!==v?8:12,r=0;o>r;r++)this.readBoolean()&&(6>r?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(),r=0;l>r;r++)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":31}],16:[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":31}],17:[function(t,o,i){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;tt;t+=188)if(71===i[t]){if(d=!!(64&i[t+1]),u=((31&i[t+1])<<8)+i[t+2],y=(48&i[t+3])>>4,y>1){if(a=t+5+i[t+4],a===t+188)continue}else a=t+4;p?u===v?(d&&(l&&this._parseAVCPES(this._parsePES(l)),l={data:[],size:0}),l&&(l.data.push(i.subarray(a,t+188)),l.size+=t+188-a)):u===c?(d&&(o&&this._parseAACPES(this._parsePES(o)),o={data:[],size:0}),o&&(o.data.push(i.subarray(a,t+188)),o.size+=t+188-a)):u===b&&(d&&(s&&this._parseID3PES(this._parsePES(s)),s={data:[],size:0}),s&&(s.data.push(i.subarray(a,t+188)),s.size+=t+188-a)):(d&&(a+=i[a]+1),0===u?this._parsePAT(i,a):u===this._pmtId&&(this._parsePMT(i,a),p=this.pmtParsed=!0,v=this._avcTrack.id,c=this._aacTrack.id,b=this._id3Track.id))}else this.observer.trigger(n.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.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._txtTrack,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(i){var t,y,n,l,h=this,r=this._avcTrack,u=r.samples,m=this._parseAVCNALu(i.data),d=[],o=!1,c=!1,v=0;if(0===m.length&&u.length>0){var g=u[u.length-1],f=g.units.units[g.units.units.length-1],p=new Uint8Array(f.data.byteLength+i.data.byteLength);p.set(f.data,0),p.set(i.data,f.data.byteLength), +f.data=p,g.units.length+=i.data.byteLength,r.len+=i.data.byteLength}i.data=null;var a="";m.forEach(function(e){switch(e.type){case 1:n=!0,o&&(a+="NDR ");break;case 5:n=!0,o&&(a+="IDR "),c=!0;break;case 6:n=!0,o&&(a+="SEI "),t=new s.default(e.data),t.readUByte();var b=t.readUByte();if(4===b){var p=0;do p=t.readUByte();while(255===p);var R=t.readUByte();if(181===R){var _=t.readUShort();if(49===_){var A=t.readUInt();if(1195456820===A){var k=t.readUByte();if(3===k){var g=t.readUByte(),E=t.readUByte(),T=31&g,f=[g,E];for(l=0;T>l;l++)f.push(t.readUByte()),f.push(t.readUByte()),f.push(t.readUByte());h._txtTrack.samples.push({type:3,pts:i.pts,bytes:f})}}}}}break;case 7:if(n=!0,o&&(a+="SPS "),!r.sps){t=new s.default(e.data);var y=t.readSPS();r.width=y.width,r.height=y.height,r.sps=[e.data],r.timescale=h.remuxer.timescale,r.duration=h.remuxer.timescale*h._duration;var L=e.data.subarray(1,4),m="avc1.";for(l=0;3>l;l++){var u=L[l].toString(16);u.length<2&&(u="0"+u),m+=u}r.codec=m}break;case 8:n=!0,o&&(a+="PPS "),r.pps||(r.pps=[e.data]);break;case 9:n=!1,o&&(a+="AUD ");break;default:n=!1,a+="unknown NAL "+e.type+" "}n&&(d.push(e),v+=e.data.byteLength)}),(o||a.length)&&e.logger.log(a),d.length&&(c===!0||r.sps)&&(y={units:{units:d,length:v},pts:i.pts,dts:i.dts,key:c},u.push(y),r.len+=v,r.nbNalu+=d.length)}},{key:"_parseAVCNALu",value:function(r){for(var n,i,s,p,a,l,t=0,f=r.byteLength,e=0,d=[];f>t;)switch(n=r[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&&f>t){if(p=31&r[t],a)s={data:r.subarray(a,t-e-1),type:l},d.push(s);else if(i=t-e-1){var c=this._avcTrack,h=c.samples;if(h.length){var v=h[h.length-1],g=v.units.units,o=g[g.length-1],u=new Uint8Array(o.data.byteLength+i);u.set(o.data,0),u.set(r.subarray(0,i),o.data.byteLength),o.data=u,v.units.length+=i,c.len+=i}}a=t,l=p,e=0}else e=0}return a&&(s={data:r.subarray(a,f),type:l},d.push(s)),d}},{key:"_parseAACPES",value:function(R){var s,l,p,b,t,d,f,o,_,a=this._aacTrack,i=R.data,c=R.pts,k=0,L=this._duration,A=this.audioCodec,u=this.aacOverFlow,E=this.lastAacPTS;if(u){var m=new Uint8Array(u.byteLength+i.byteLength);m.set(u,0),m.set(i,u.byteLength),i=m}for(t=k,o=i.length;o-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);if(t){var y,h;if(o-1>t?(y="AAC PES did not start with ADTS header,offset:"+t,h=!1):(y="no ADTS header found in AAC PES",h=!0),this.observer.trigger(n.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:h,reason:y}),h)return}if(a.audiosamplerate||(s=v.default.getAudioConfig(this.observer,i,t,A),a.config=s.config,a.audiosamplerate=s.samplerate,a.channelCount=s.channelCount,a.codec=s.codec,a.timescale=s.samplerate,a.duration=s.samplerate*L,e.logger.log("parsed codec:"+a.codec+",rate:"+s.samplerate+",nb channel:"+s.channelCount)),b=0,p=9216e4/a.audiosamplerate,u&&E){var g=E+p;Math.abs(g-c)>1&&(e.logger.log("AAC: align PTS for overlapping frames by "+Math.round((g-c)/90)),c=g)}for(;o>t+5&&(d=1&i[t+1]?7:9,l=(3&i[t+3])<<11|i[t+4]<<3|(224&i[t+5])>>>5,l-=d,l>0&&o>=t+d+l);)for(f=c+b*p,_={unit:i.subarray(t+d,t+d+l),pts:f,dts:f},a.samples.push(_),a.len+=l,t+=l+d,b++;o-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);u=o>t?i.subarray(t,o):null,this.aacOverFlow=u,this.lastAacPTS=f}},{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}}]),t}();i.default=u,o.exports=i.default},{"../errors":18,"../events":20,"../utils/logger":31,"./adts":11,"./exp-golomb":15}],18:[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",BUFFER_STALLED_ERROR:"bufferStalledError"};e.ErrorDetails=r},{}],19:[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;t1?i-1:0),t=1;i>t;t++)a[t-1]=arguments[t];this.handledEvents=a,this.useGenericHandler=!0,this.registerListeners()}return i(e,[{key:"destroy",value:function(){this.unregisterListeners()}},{key:"isEventHandler",value:function(){return"object"==typeof this.handledEvents&&this.handledEvents.length&&"function"==typeof this.onEvent}},{key:"registerListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){if("hlsEventGeneric"===e)throw new Error("Forbidden event name: "+e);this.hls.on(e,this.onEvent)}.bind(this))}},{key:"unregisterListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){this.hls.off(e,this.onEvent)}.bind(this))}},{key:"onEvent",value:function(e,t){this.onEventGeneric(e,t)}},{key:"onEventGeneric",value:function(e,t){var r=function(t,r){var e="on"+t.replace("hls","");if("function"!=typeof this[e])throw new Error("Event "+t+" has no generic handler in this "+this.constructor.name+" class (tried "+e+")");return this[e].bind(this,r)};r.call(this,e,t).call()}}]),e}();e.default=a,t.exports=e.default},{}],20:[function(t,e,r){"use strict";e.exports={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:"hlsLevelPtsUpdated",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_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",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"}},{}],21:[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.min(a,r.startPTS),s=Math.max(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 frag "+e.sn+",level "+e.level+", 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 frag "+r.sn+",level "+r.level+", there should be some duration drift between playlist and fragment!"))}}]),e}();e.default=s,i.exports=e.default},{"../utils/logger":31}],22:[function(t,v,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.timelineController=new i.timelineController(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}},{key:"DefaultConfig",get:function(){return t.defaultConfig||(t.defaultConfig={autoStartLoad:!0,debug:!1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingLoopThreshold:3,appendErrorMaxRetry:3,loader:A.default,fLoader:void 0,pLoader:void 0,abrController:w.default,mediaController:p.default,timelineController:E.default,enableCEA708Captions:!0}),t.defaultConfig},set:function(e){t.defaultConfig=e}}]),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.timelineController.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,v.exports=a.default},{"./controller/abr-controller":3,"./controller/level-controller":4,"./controller/mse-media-controller":5,"./controller/timeline-controller":6,"./errors":18,"./events":20,"./loader/fragment-loader":23,"./loader/key-loader":24,"./loader/playlist-loader":25,"./utils/logger":31,"./utils/xhr-loader":33,events:1}],23:[function(r,o,i){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(i,"__esModule",{value:!0});var s=function(){function e(i,r){for(var t=0;t2?(e=t.shift()+".",e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).substr(-4)):e=r,e}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(L,l,A){var e,E,n,a,g=0,o=0,i={url:l,fragments:[],live:!0,startSN:0},r={method:null,key:null,iv:null,uri:null},b=0,h=null,t=null;for(E=/(?:#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))|(?:#EXT-X-(PROGRAM-DATE-TIME):(.*))/g;null!==(e=E.exec(L));)switch(e.shift(),e=e.filter(function(e){return void 0!==e}),e[0]){case"MEDIA-SEQUENCE":g=i.startSN=parseInt(e[1]);break;case"TARGETDURATION":i.targetduration=parseFloat(e[1]);break;case"ENDLIST":i.live=!1;break;case"DIS":b++;break;case"BYTERANGE":var c=e[1].split("@");a=1===c.length?n:parseInt(c[1]),n=parseInt(c[0])+a,t&&!t.url&&(t.byteRangeStartOffset=a,t.byteRangeEndOffset=n,t.url=this.resolve(e[2],l));break;case"INF":var v=parseFloat(e[1]);if(!isNaN(v)){var u,m=g++;if(r.method&&r.uri&&!r.iv){u=this.cloneObj(r);for(var y=new Uint8Array(16),d=12;16>d;d++)y[d]=m>>8*(15-d)&255;u.iv=y}else u=r;var k=e[2]?this.resolve(e[2],l):null;t={url:k,duration:v,start:o,sn:m,level:A,cc:b,byteRangeStartOffset:a,byteRangeEndOffset:n,decryptdata:u,programDateTime:h},i.fragments.push(t),o+=v,a=null,h=null}break;case"KEY":var R=e[1],p=new s.default(R),f=p.enumeratedString("METHOD"),_=p.URI,T=p.hexadecimalInteger("IV");f&&(r={method:null,key:null,iv:null,uri:null},_&&"AES-128"===f&&(r.method=f,r.uri=this.resolve(_,l),r.key=null,r.iv=T));break;case"PROGRAM-DATE-TIME":h=new Date(Date.parse(e[1]))}return t&&!t.url&&(i.fragments.pop(),o-=t.duration),i.totalduration=o,i.endSN=g-1,i}},{key:"loadsuccess",value:function(u,i){var s,o=u.currentTarget,n=o.responseText,r=o.responseURL,l=this.id,d=this.id2,a=this.hls;if(void 0===r&&(r=this.url),i.tload=performance.now(),i.mtime=new Date(o.getResponseHeader("Last-Modified")),0===n.indexOf("#EXTM3U"))if(n.indexOf("#EXTINF:")>0)if(null===this.id)a.trigger(t.default.MANIFEST_LOADED,{levels:[{url:r}],url:r,stats:i});else{var h=this.parseLevelPlaylist(n,r,l);i.tparsed=performance.now(),a.trigger(t.default.LEVEL_LOADED,{details:h,level:l,id:d,stats:i})}else s=this.parseMasterPlaylist(n,r),s.length?a.trigger(t.default.MANIFEST_LOADED,{levels:s,url:r,stats:i}):a.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no level found in manifest"});else a.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(a){var r,i;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_ERROR,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_ERROR,i=!1),this.loader.abort(),this.hls.trigger(t.default.ERROR,{type:e.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=e.ErrorDetails.MANIFEST_LOAD_TIMEOUT,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_TIMEOUT,i=!1),this.loader.abort(),this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),r}(n.default);a.default=h,u.exports=a.default},{"../errors":18,"../event-handler":19,"../events":20,"../utils/attr-list":28,"../utils/url":32}],26:[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[1]=e>>16&255,t[2]=e>>8&255,t[3]=255&e,t.set(a,4),r=0,e=8;n>r;r++)t.set(i[r],e),e+=i[r].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,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,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 i,a,n,s,t,l,d=f.samples||[],r=d.length,h=12+16*r,u=new Uint8Array(h);for(o+=8+h,u.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),i=0;r>i;i++)a=d[i],n=a.duration,s=a.size,t=a.flags,l=a.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|t.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*i);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},{}],27:[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;t=y&&(r.logger.log("invalid sample duration at PTS/DTS: "+l.pts+"/"+l.dts+":"+y),y=1),g.duration=y}else{var n,m=this.nextAvcDts;o=this._PTSNormalize(_,m),i=this._PTSNormalize(c,m),n=Math.round((i-m)/90),(S||Math.abs(n)<600)&&n&&(n>1?r.logger.log("AVC:"+n+" ms hole between fragments detected,filling it"):-1>n&&r.logger.log("AVC:"+-n+" ms overlapping between fragments detected"),i=m,o=Math.max(o-n,i),r.logger.log("Video/PTS/DTS adjusted: "+o+"/"+i+",delta:"+n)),k=Math.max(0,o),R=Math.max(0,i)}g={size:A,duration:0,cts:(o-i)/h,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},s=g.flags,l.key===!0?(s.dependsOn=2,s.isNonSync=0):(s.dependsOn=1,s.isNonSync=1),u.push(g),f=i}var E=0;u.length>=2&&(E=u[u.length-2].duration,g.duration=E),this.nextAvcDts=i+E*h,a.len=0,a.nbNalu=0,u.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(s=u[0].flags,s.dependsOn=2,s.isNonSync=0),a.samples=u,T=t.default.moof(a.sequenceNumber++,R/h,a),a.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:T,mdat:d,startPTS:k/b,endPTS:(o+h*E)/b,startDTS:R/b,endDTS:this.nextAvcDts/b,type:"video",nb:u.length})}},{key:"remuxAudio",value:function(i,w,S){var k,y,n,h,o,L,A,b,l,g,_,d,a,R=8,u=this.PES_TIMESCALE,T=i.timescale,f=u/T,m=[],E=[];for(i.samples.sort(function(e,t){return e.pts-t.pts}),E=i.samples;E.length;){if(y=E.shift(),h=y.unit,g=y.pts-this._initDTS,_=y.dts-this._initDTS,void 0!==l)d=this._PTSNormalize(g,l),a=this._PTSNormalize(_,l),n.duration=(a-l)/f,Math.abs(n.duration-1024)>10&&r.logger.log("invalid AAC sample duration at PTS "+Math.round(g/90)+",should be 1024,found :"+Math.round(n.duration)),n.duration=1024,a=1024*f+l;else{var s,p=this.nextAacPts;if(d=this._PTSNormalize(g,p),a=this._PTSNormalize(_,p),s=Math.round(1e3*(d-p)/u),(S||Math.abs(s)<600)&&s){if(s>0)r.logger.log(s+" ms hole between AAC samples detected,filling it");else if(-12>s){r.logger.log(-s+" ms overlapping between AAC samples detected, drop frame"),i.len-=h.byteLength;continue}d=a=p}if(A=Math.max(0,d),b=Math.max(0,a),!(i.len>0))return;o=new Uint8Array(i.len+8),k=new DataView(o.buffer),k.setUint32(0,o.byteLength),o.set(t.default.types.mdat,4)}o.set(h,R),R+=h.byteLength,n={size:h.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},m.push(n),l=a}var v=0,c=m.length;c>=2&&(v=m[c-2].duration,n.duration=v),c&&(this.nextAacPts=d+f*v,i.len=0,i.samples=m,L=t.default.moof(i.sequenceNumber++,b/f,i),i.samples=[],this.observer.trigger(e.default.FRAG_PARSING_DATA,{moof:L,mdat:o,startPTS:A/u,endPTS:this.nextAacPts/u,startDTS:b/u,endDTS:(a+f*v)/u,type:"audio",nb:c}))}},{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:"remuxText",value:function(t,a){t.samples.sort(function(e,t){return e.pts-t.pts});var r,n=t.samples.length;if(n){for(var i=0;n>i;i++)r=t.samples[i],r.pts=(r.pts-this._initPTS)/this.PES_TIMESCALE;this.observer.trigger(e.default.FRAG_PARSING_USERDATA,{samples:t.samples})}t.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":18,"../events":20,"../remux/mp4-generator":26,"../utils/logger":31}],28:[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;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"hexadecimalInteger",value:function(r){if(this[r]){var e=(this[r]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var i=new Uint8Array(e.length/2),t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"decimalFloatingPoint",value:function(e){return parseFloat(this[e])}},{key:"enumeratedString",value:function(e){return this[e]}},{key:"decimalResolution",value:function(t){var e=/^(\d+)x(\d+)$/.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}}],[{key:"parseAttrList",value:function(a){for(var t,n=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,r={};null!==(t=n.exec(a));){var e=t[2],i='"';0===e.indexOf(i)&&e.lastIndexOf(i)===e.length-1&&(e=e.slice(1,-1)),r[t[1]]=e}return r}}]),e}();e.default=a,t.exports=e.default},{}],29:[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},{}],30:[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;t0;)this._textTrack.removeCue(this._textTrack.cues[0])}},{key:"push",value:function(r,i){this.cue||this._createCue();for(var a,t,e,s,o,u=31&i[0],n=2,l=0;u>l;l++)if(a=i[n++],t=127&i[n++],e=127&i[n++],s=0===(4&a)?!1:!0,o=3&a,(0!==t||0!==e)&&s&&0===o){if(32&t||64&t)this.cue.text+=this._fromCharCode(t)+this._fromCharCode(e);else if((17===t||25===t)&&e>=48&&63>=e)switch(e){case 48:this.cue.text+="®";break;case 49:this.cue.text+="°";break;case 50:this.cue.text+="½";break;case 51:this.cue.text+="¿";break;case 52:this.cue.text+="™";break;case 53:this.cue.text+="¢";break;case 54:this.cue.text+="";break;case 55:this.cue.text+="£";break;case 56:this.cue.text+="♪";break;case 57:this.cue.text+=" ";break;case 58:this.cue.text+="è";break;case 59:this.cue.text+="â";break;case 60:this.cue.text+="ê";break;case 61:this.cue.text+="î";break;case 62:this.cue.text+="ô";break;case 63:this.cue.text+="û"}if((17===t||25===t)&&e>=32&&47>=e)switch(e){case 32:break;case 33:break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:break;case 42:break;case 43:break;case 44:break;case 45:break;case 46:break;case 47:}if((20===t||28===t)&&e>=32&&47>=e)switch(e){case 32:this._clearActiveCues(r);break;case 33:this.cue.text=this.cue.text.substr(0,this.cue.text.length-1);break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:this._clearActiveCues(r);break;case 42:break;case 43:break;case 44:this._clearActiveCues(r);break;case 45:break;case 46:this._text="";break;case 47:this._flipMemory(r)}if((23===t||31===t)&&e>=33&&35>=e)switch(e){case 33:break;case 34:break;case 35:}}}},{key:"_fromCharCode",value:function(e){switch(e){case 42:return"á";case 2:return"á";case 2:return"é";case 4:return"í";case 5:return"ó";case 6:return"ú";case 3:return"ç";case 4:return"÷";case 5:return"Ñ";case 6:return"ñ";case 7:return"█";default:return String.fromCharCode(e)}}},{key:"_flipMemory",value:function(e){this._clearActiveCues(e),this._flushCaptions(e)}},{key:"_flushCaptions",value:function(t){this._has708||(this._textTrack=this.media.addTextTrack("captions","English","en"),this._has708=!0);for(var e=0;e "+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},{}],32:[function(r,t,i){"use strict";var e={buildAbsoluteURL:function(r,t){if(t=t.trim(),/^[a-z]+:/i.test(t))return t;var o=null,a=null,n=/^([^#]*)(.*)$/.exec(t);n&&(a=n[2],t=n[1]);var s=/^([^\?]*)(.*)$/.exec(t);s&&(o=s[2],t=s[1]);var h=/^([^#]*)(.*)$/.exec(r);h&&(r=h[1]);var u=/^([^\?]*)(.*)$/.exec(r);u&&(r=u[1]);var l=/^((([a-z]+):)?\/\/[a-z0-9\.-]+(:[0-9]+)?\/)(.*)$/i.exec(r),f=l[3],d=l[1],c=l[5],i=null;return i=/^\/\//.test(t)?f+"://"+e.buildAbsolutePath("",t.substring(2)):/^\//.test(t)?d+e.buildAbsolutePath("",t.substring(1)):e.buildAbsolutePath(d+c,t),o&&(i+=o),a&&(i+=a),i},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},{}],33:[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=200&&300>r?(window.clearTimeout(this.timeoutHandle),e.tload=performance.now(),this.onSuccess(i,e)):e.retry", @@ -12,7 +13,7 @@ "url": "https://github.com/dailymotion/hls.js/issues" }, "main": "src/hls.js", - "private": true, + "private": false, "scripts": { "clean": "find dist -mindepth 1 -delete", "prebuild": "npm run clean & npm run test", diff --git a/dashboard-ui/bower_components/hls.js/src/controller/mse-media-controller.js b/dashboard-ui/bower_components/hls.js/src/controller/mse-media-controller.js index 69f5328e7b..3d0ee5907a 100644 --- a/dashboard-ui/bower_components/hls.js/src/controller/mse-media-controller.js +++ b/dashboard-ui/bower_components/hls.js/src/controller/mse-media-controller.js @@ -54,13 +54,14 @@ class MSEMediaController extends EventHandler { } startLoad() { - if (this.levels && this.media) { + if (this.levels) { this.startInternal(); - if (this.lastCurrentTime) { - logger.log(`seeking @ ${this.lastCurrentTime}`); + var media = this.media, lastCurrentTime = this.lastCurrentTime; + if (media && lastCurrentTime) { + logger.log(`seeking @ ${lastCurrentTime}`); if (!this.lastPaused) { logger.log('resuming video'); - this.media.play(); + media.play(); } this.state = State.IDLE; } else { @@ -70,7 +71,7 @@ class MSEMediaController extends EventHandler { this.nextLoadPosition = this.startPosition = this.lastCurrentTime; this.tick(); } else { - logger.warn('cannot start loading as either manifest not parsed or video not attached'); + logger.warn('cannot start loading as manifest not parsed yet'); } } @@ -666,7 +667,7 @@ class MSEMediaController extends EventHandler { to avoid rounding issues/infinite loop, only flush buffer range of length greater than 500ms. */ - if (flushEnd - flushStart > 0.5) { + if (Math.min(flushEnd,bufEnd) - flushStart > 0.5) { logger.log(`flush ${type} [${flushStart},${flushEnd}], of [${bufStart},${bufEnd}], pos:${this.media.currentTime}`); sb.remove(flushStart, flushEnd); return false; @@ -679,6 +680,8 @@ class MSEMediaController extends EventHandler { return false; } } + } else { + logger.warn('abort flushing too many retries'); } /* after successful buffer flushing, rebuild buffer Range array @@ -1221,7 +1224,7 @@ _checkBuffer() { jumpThreshold = 0; } else { // playhead not moving AND media playing - logger.log('playback seems stuck'); + logger.log(`playback seems stuck @${currentTime}`); if(!this.stalled) { this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_STALLED_ERROR, fatal: false}); this.stalled = true; diff --git a/dashboard-ui/bower_components/hls.js/src/demux/aacdemuxer.js b/dashboard-ui/bower_components/hls.js/src/demux/aacdemuxer.js index 3fd5edb21e..bbaac913a2 100644 --- a/dashboard-ui/bower_components/hls.js/src/demux/aacdemuxer.js +++ b/dashboard-ui/bower_components/hls.js/src/demux/aacdemuxer.js @@ -16,11 +16,11 @@ import ID3 from '../demux/id3'; static probe(data) { // check if data contains ID3 timestamp and ADTS sync worc - var id3 = new ID3(data), adtsStartOffset,len; + var id3 = new ID3(data), offset,len; if(id3.hasTimeStamp) { // look for ADTS header (0xFFFx) - for (adtsStartOffset = id3.length, len = data.length; adtsStartOffset < len - 1; adtsStartOffset++) { - if ((data[adtsStartOffset] === 0xff) && (data[adtsStartOffset+1] & 0xf0) === 0xf0) { + for (offset = id3.length, len = data.length; offset < len - 1; offset++) { + if ((data[offset] === 0xff) && (data[offset+1] & 0xf0) === 0xf0) { //logger.log('ADTS sync word found !'); return true; } @@ -35,46 +35,47 @@ import ID3 from '../demux/id3'; var track = this._aacTrack, id3 = new ID3(data), pts = 90*id3.timeStamp, - config, adtsFrameSize, adtsStartOffset, adtsHeaderLen, stamp, nbSamples, len, aacSample; + config, frameLength, frameDuration, frameIndex, offset, headerLength, stamp, len, aacSample; // look for ADTS header (0xFFFx) - for (adtsStartOffset = id3.length, len = data.length; adtsStartOffset < len - 1; adtsStartOffset++) { - if ((data[adtsStartOffset] === 0xff) && (data[adtsStartOffset+1] & 0xf0) === 0xf0) { + for (offset = id3.length, len = data.length; offset < len - 1; offset++) { + if ((data[offset] === 0xff) && (data[offset+1] & 0xf0) === 0xf0) { break; } } if (!track.audiosamplerate) { - config = ADTS.getAudioConfig(this.observer,data, adtsStartOffset, audioCodec); + config = ADTS.getAudioConfig(this.observer,data, offset, audioCodec); track.config = config.config; track.audiosamplerate = config.samplerate; track.channelCount = config.channelCount; track.codec = config.codec; - track.timescale = this.remuxer.timescale; - track.duration = this.remuxer.timescale * duration; + track.timescale = config.samplerate; + track.duration = config.samplerate * duration; logger.log(`parsed codec:${track.codec},rate:${config.samplerate},nb channel:${config.channelCount}`); } - nbSamples = 0; - while ((adtsStartOffset + 5) < len) { + frameIndex = 0; + frameDuration = 1024 * 90000 / track.audiosamplerate; + while ((offset + 5) < len) { + // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header + headerLength = (!!(data[offset + 1] & 0x01) ? 7 : 9); // retrieve frame size - adtsFrameSize = ((data[adtsStartOffset + 3] & 0x03) << 11); - // byte 4 - adtsFrameSize |= (data[adtsStartOffset + 4] << 3); - // byte 5 - adtsFrameSize |= ((data[adtsStartOffset + 5] & 0xE0) >>> 5); - adtsHeaderLen = (!!(data[adtsStartOffset + 1] & 0x01) ? 7 : 9); - adtsFrameSize -= adtsHeaderLen; - stamp = Math.round(pts + nbSamples * 1024 * 90000 / track.audiosamplerate); + frameLength = ((data[offset + 3] & 0x03) << 11) | + (data[offset + 4] << 3) | + ((data[offset + 5] & 0xE0) >>> 5); + frameLength -= headerLength; //stamp = pes.pts; - //console.log('AAC frame, offset/length/pts:' + (adtsStartOffset+7) + '/' + adtsFrameSize + '/' + stamp.toFixed(0)); - if ((adtsFrameSize > 0) && ((adtsStartOffset + adtsHeaderLen + adtsFrameSize) <= len)) { - aacSample = {unit: data.subarray(adtsStartOffset + adtsHeaderLen, adtsStartOffset + adtsHeaderLen + adtsFrameSize), pts: stamp, dts: stamp}; + + if ((frameLength > 0) && ((offset + headerLength + frameLength) <= len)) { + stamp = pts + frameIndex * frameDuration; + //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`); + aacSample = {unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp}; track.samples.push(aacSample); - track.len += adtsFrameSize; - adtsStartOffset += adtsFrameSize + adtsHeaderLen; - nbSamples++; + track.len += frameLength; + offset += frameLength + headerLength; + frameIndex++; // look for ADTS header (0xFFFx) - for ( ; adtsStartOffset < (len - 1); adtsStartOffset++) { - if ((data[adtsStartOffset] === 0xff) && ((data[adtsStartOffset + 1] & 0xf0) === 0xf0)) { + for ( ; offset < (len - 1); offset++) { + if ((data[offset] === 0xff) && ((data[offset + 1] & 0xf0) === 0xf0)) { break; } } diff --git a/dashboard-ui/bower_components/hls.js/src/demux/tsdemuxer.js b/dashboard-ui/bower_components/hls.js/src/demux/tsdemuxer.js index 21d7051521..1162932451 100644 --- a/dashboard-ui/bower_components/hls.js/src/demux/tsdemuxer.js +++ b/dashboard-ui/bower_components/hls.js/src/demux/tsdemuxer.js @@ -568,8 +568,8 @@ track.audiosamplerate = config.samplerate; track.channelCount = config.channelCount; track.codec = config.codec; - track.timescale = this.remuxer.timescale; - track.duration = track.timescale * duration; + track.timescale = config.samplerate; + track.duration = config.samplerate * duration; logger.log(`parsed codec:${track.codec},rate:${config.samplerate},nb channel:${config.channelCount}`); } frameIndex = 0; @@ -596,7 +596,7 @@ //stamp = pes.pts; if ((frameLength > 0) && ((offset + headerLength + frameLength) <= len)) { - stamp = Math.round(pts + frameIndex * frameDuration); + stamp = pts + frameIndex * frameDuration; //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`); aacSample = {unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp}; track.samples.push(aacSample); diff --git a/dashboard-ui/bower_components/hls.js/src/hls.js b/dashboard-ui/bower_components/hls.js/src/hls.js index 8730e85ce0..f40029e87b 100644 --- a/dashboard-ui/bower_components/hls.js/src/hls.js +++ b/dashboard-ui/bower_components/hls.js/src/hls.js @@ -42,7 +42,7 @@ class Hls { debug: false, maxBufferLength: 30, maxBufferSize: 60 * 1000 * 1000, - maxBufferHole: 0.3, + maxBufferHole: 0.5, maxSeekHole: 2, liveSyncDurationCount:3, liveMaxLatencyDurationCount: Infinity, diff --git a/dashboard-ui/bower_components/hls.js/src/remux/mp4-remuxer.js b/dashboard-ui/bower_components/hls.js/src/remux/mp4-remuxer.js index 00b82c3851..da2f45e18c 100644 --- a/dashboard-ui/bower_components/hls.js/src/remux/mp4-remuxer.js +++ b/dashboard-ui/bower_components/hls.js/src/remux/mp4-remuxer.js @@ -253,7 +253,8 @@ class MP4Remuxer { var view, offset = 8, pesTimeScale = this.PES_TIMESCALE, - pes2mp4ScaleFactor = this.PES2MP4SCALEFACTOR, + mp4timeScale = track.timescale, + pes2mp4ScaleFactor = pesTimeScale/mp4timeScale, aacSample, mp4Sample, unit, mdat, moof, @@ -262,15 +263,10 @@ class MP4Remuxer { samples = [], samples0 = []; - track.samples.forEach(aacSample => { - if(pts === undefined || aacSample.pts > pts) { - samples0.push(aacSample); - pts = aacSample.pts; - } else { - logger.warn('dropping past audio frame'); - track.len -= aacSample.unit.byteLength; - } + track.samples.sort(function(a, b) { + return (a.pts-b.pts); }); + samples0 = track.samples; while (samples0.length) { aacSample = samples0.shift(); @@ -282,13 +278,15 @@ class MP4Remuxer { if (lastDTS !== undefined) { ptsnorm = this._PTSNormalize(pts, lastDTS); dtsnorm = this._PTSNormalize(dts, lastDTS); - // let's compute sample duration + // let's compute sample duration. + // there should be 1024 audio samples in one AAC frame mp4Sample.duration = (dtsnorm - lastDTS) / pes2mp4ScaleFactor; - if (mp4Sample.duration < 0) { + if(Math.abs(mp4Sample.duration - 1024) > 10) { // not expected to happen ... - logger.log(`invalid AAC sample duration at PTS:${aacSample.pts}:${mp4Sample.duration}`); - mp4Sample.duration = 0; + logger.log(`invalid AAC sample duration at PTS ${Math.round(pts/90)},should be 1024,found :${Math.round(mp4Sample.duration)}`); } + mp4Sample.duration = 1024; + dtsnorm = 1024 * pes2mp4ScaleFactor + lastDTS; } else { var nextAacPts = this.nextAacPts,delta; ptsnorm = this._PTSNormalize(pts, nextAacPts); diff --git a/dashboard-ui/bower_components/iron-meta/.bower.json b/dashboard-ui/bower_components/iron-meta/.bower.json index f4bfef4a7c..e1304d174b 100644 --- a/dashboard-ui/bower_components/iron-meta/.bower.json +++ b/dashboard-ui/bower_components/iron-meta/.bower.json @@ -26,14 +26,14 @@ "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, "main": "iron-meta.html", - "homepage": "https://github.com/polymerelements/iron-meta", + "homepage": "https://github.com/PolymerElements/iron-meta", "_release": "1.1.1", "_resolution": { "type": "version", "tag": "v1.1.1", "commit": "e171ee234b482219c9514e6f9551df48ef48bd9f" }, - "_source": "git://github.com/polymerelements/iron-meta.git", + "_source": "git://github.com/PolymerElements/iron-meta.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/iron-meta" + "_originalSource": "PolymerElements/iron-meta" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-selector/.bower.json b/dashboard-ui/bower_components/iron-selector/.bower.json index 483a2b608c..d875e3cb00 100644 --- a/dashboard-ui/bower_components/iron-selector/.bower.json +++ b/dashboard-ui/bower_components/iron-selector/.bower.json @@ -36,7 +36,7 @@ "tag": "v1.2.0", "commit": "17a94bd1555d3321f4ecefd472f0c470d48e9e94" }, - "_source": "git://github.com/PolymerElements/iron-selector.git", + "_source": "git://github.com/polymerelements/iron-selector.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-selector" + "_originalSource": "polymerelements/iron-selector" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/paper-collapse-item/.bower.json b/dashboard-ui/bower_components/paper-collapse-item/.bower.json deleted file mode 100644 index 4e6bf5946f..0000000000 --- a/dashboard-ui/bower_components/paper-collapse-item/.bower.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "paper-collapse-item", - "version": "1.0.6", - "authors": [ - "collaborne" - ], - "description": "A Material Design item with header and collapsible content (Polymer 1.x)", - "main": "paper-collapse-item.html", - "keywords": [ - "web-components", - "polymer", - "paper", - "material design", - "lists", - "item" - ], - "license": "Apache 2", - "homepage": "https://github.com/collaborne/paper-collapse-item", - "ignore": [ - "**/.*" - ], - "dependencies": { - "polymer": "Polymer/polymer#^1.0.0", - "iron-icon": "PolymerElements/iron-icon#^1.0.0", - "iron-icons": "PolymerElements/iron-icons#^1.0.0", - "iron-collapse": "PolymerElements/iron-collapse#^1.0.0", - "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0", - "paper-item": "PolymerElements/paper-item#^1.0.0", - "paper-styles": "PolymerElements/paper-styles#^1.0.0" - }, - "devDependencies": { - "test-fixture": "PolymerElements/test-fixture#^1.0.0", - "web-component-tester": "*", - "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" - }, - "_release": "1.0.6", - "_resolution": { - "type": "version", - "tag": "1.0.6", - "commit": "1f809936cb13108bffd49ff2280baf8690f38ab1" - }, - "_source": "git://github.com/Collaborne/paper-collapse-item.git", - "_target": "~1.0.5", - "_originalSource": "paper-collapse-item" -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/paper-collapse-item/LICENSE b/dashboard-ui/bower_components/paper-collapse-item/LICENSE deleted file mode 100644 index 8f71f43fee..0000000000 --- a/dashboard-ui/bower_components/paper-collapse-item/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/dashboard-ui/bower_components/paper-collapse-item/bower.json b/dashboard-ui/bower_components/paper-collapse-item/bower.json deleted file mode 100644 index 1bed7d4787..0000000000 --- a/dashboard-ui/bower_components/paper-collapse-item/bower.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "paper-collapse-item", - "version": "1.0.6", - "authors": [ - "collaborne" - ], - "description": "A Material Design item with header and collapsible content (Polymer 1.x)", - "main": "paper-collapse-item.html", - "keywords": [ - "web-components", - "polymer", - "paper", - "material design", - "lists", - "item" - ], - "license": "Apache 2", - "homepage": "https://github.com/collaborne/paper-collapse-item", - "ignore": [ - "**/.*" - ], - "dependencies": { - "polymer": "Polymer/polymer#^1.0.0", - "iron-icon": "PolymerElements/iron-icon#^1.0.0", - "iron-icons": "PolymerElements/iron-icons#^1.0.0", - "iron-collapse": "PolymerElements/iron-collapse#^1.0.0", - "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0", - "paper-item": "PolymerElements/paper-item#^1.0.0", - "paper-styles": "PolymerElements/paper-styles#^1.0.0" - }, - "devDependencies": { - "test-fixture": "PolymerElements/test-fixture#^1.0.0", - "web-component-tester": "*", - "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" - } -} diff --git a/dashboard-ui/bower_components/paper-collapse-item/demo/index.html b/dashboard-ui/bower_components/paper-collapse-item/demo/index.html deleted file mode 100644 index cb814cf8b2..0000000000 --- a/dashboard-ui/bower_components/paper-collapse-item/demo/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - Lots of very interesting content. - - - Lots of very interesting content. - - - Lots of very interesting content. - - - diff --git a/dashboard-ui/bower_components/paper-collapse-item/doc/screenshot.png b/dashboard-ui/bower_components/paper-collapse-item/doc/screenshot.png deleted file mode 100644 index f7321c4e4c..0000000000 Binary files a/dashboard-ui/bower_components/paper-collapse-item/doc/screenshot.png and /dev/null differ diff --git a/dashboard-ui/bower_components/paper-collapse-item/paper-collapse-item.html b/dashboard-ui/bower_components/paper-collapse-item/paper-collapse-item.html deleted file mode 100644 index acca09faf9..0000000000 --- a/dashboard-ui/bower_components/paper-collapse-item/paper-collapse-item.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/paper-collapse-item/test/index.html b/dashboard-ui/bower_components/paper-collapse-item/test/index.html deleted file mode 100644 index 2c4f92e458..0000000000 --- a/dashboard-ui/bower_components/paper-collapse-item/test/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Tests - - - - - - diff --git a/dashboard-ui/bower_components/paper-collapse-item/test/paper-collapse-item.html b/dashboard-ui/bower_components/paper-collapse-item/test/paper-collapse-item.html deleted file mode 100644 index 3bcfc3d390..0000000000 --- a/dashboard-ui/bower_components/paper-collapse-item/test/paper-collapse-item.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - paper-collapse-item - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/prism-element/.bower.json b/dashboard-ui/bower_components/prism-element/.bower.json new file mode 100644 index 0000000000..61437e22d4 --- /dev/null +++ b/dashboard-ui/bower_components/prism-element/.bower.json @@ -0,0 +1,44 @@ +{ + "name": "prism-element", + "description": "Prism.js import and syntax highlighting", + "version": "1.0.3", + "authors": [ + "The Polymer Project Authors (https://polymer.github.io/AUTHORS.txt)" + ], + "keywords": [ + "web-components", + "polymer", + "prism", + "molecule" + ], + "repository": { + "type": "git", + "url": "git://github.com/PolymerElements/prism-element.git" + }, + "license": "http://polymer.github.io/LICENSE.txt", + "homepage": "https://github.com/PolymerElements/prism-highlighter", + "main": "prism-highlighter.html", + "ignore": [ + "/.*", + "/test/", + "/demo/" + ], + "dependencies": { + "prism": "*", + "polymer": "Polymer/polymer#^1.0.0" + }, + "devDependencies": { + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", + "iron-component-page": "PolymerElements/iron-component-page#^1.0.0", + "paper-styles": "PolymerElements/paper-styles#^1.0.0" + }, + "_release": "1.0.3", + "_resolution": { + "type": "version", + "tag": "v1.0.3", + "commit": "9de59abd5a8081a253dca5a7066e7be95e34bfbc" + }, + "_source": "git://github.com/PolymerElements/prism-element.git", + "_target": "^1.0.0", + "_originalSource": "PolymerElements/prism-element" +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism-element/CONTRIBUTING.md b/dashboard-ui/bower_components/prism-element/CONTRIBUTING.md new file mode 100644 index 0000000000..7b10141565 --- /dev/null +++ b/dashboard-ui/bower_components/prism-element/CONTRIBUTING.md @@ -0,0 +1,72 @@ + + +# Polymer Elements +## Guide for Contributors + +Polymer Elements are built in the open, and the Polymer authors eagerly encourage any and all forms of community contribution. When contributing, please follow these guidelines: + +### Filing Issues + +**If you are filing an issue to request a feature**, please provide a clear description of the feature. It can be helpful to describe answers to the following questions: + + 1. **Who will use the feature?** _“As someone filling out a form…”_ + 2. **When will they use the feature?** _“When I enter an invalid value…”_ + 3. **What is the user’s goal?** _“I want to be visually notified that the value needs to be corrected…”_ + +**If you are filing an issue to report a bug**, please provide: + + 1. **A clear description of the bug and related expectations.** Consider using the following example template for reporting a bug: + + ```markdown + The `paper-foo` element causes the page to turn pink when clicked. + + ## Expected outcome + + The page stays the same color. + + ## Actual outcome + + The page turns pink. + + ## Steps to reproduce + + 1. Put a `paper-foo` element in the page. + 2. Open the page in a web browser. + 3. Click the `paper-foo` element. + ``` + + 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [http://jsbin.com/cagaye](http://jsbin.com/cagaye/edit?html,output). + + 3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers. + +### Submitting Pull Requests + +**Before creating a pull request**, please ensure that an issue exists for the corresponding change in the pull request that you intend to make. **If an issue does not exist, please create one per the guidelines above**. The goal is to discuss the design and necessity of the proposed change with Polymer authors and community before diving into a pull request. + +When submitting pull requests, please provide: + + 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues using the following syntax: + + ```markdown + (For a single issue) + Fixes #20 + + (For multiple issues) + Fixes #32, #40 + ``` + + 2. **A succinct description of the design** used to fix any related issues. For example: + + ```markdown + This fixes #20 by removing styles that leaked which would cause the page to turn pink whenever `paper-foo` is clicked. + ``` + + 3. **At least one test for each bug fixed or feature added** as part of the pull request. Pull requests that fix bugs or add features without accompanying tests will not be considered. + +If a proposed change contains multiple commits, please [squash commits](https://www.google.com/url?q=http://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request) to as few as is necessary to succinctly express the change. A Polymer author can help you squash commits, so don’t be afraid to ask us if you need help with that! diff --git a/dashboard-ui/bower_components/prism-element/bower.json b/dashboard-ui/bower_components/prism-element/bower.json new file mode 100644 index 0000000000..d8fad7702f --- /dev/null +++ b/dashboard-ui/bower_components/prism-element/bower.json @@ -0,0 +1,35 @@ +{ + "name": "prism-element", + "description": "Prism.js import and syntax highlighting", + "version": "1.0.3", + "authors": [ + "The Polymer Project Authors (https://polymer.github.io/AUTHORS.txt)" + ], + "keywords": [ + "web-components", + "polymer", + "prism", + "molecule" + ], + "repository": { + "type": "git", + "url": "git://github.com/PolymerElements/prism-element.git" + }, + "license": "http://polymer.github.io/LICENSE.txt", + "homepage": "https://github.com/PolymerElements/prism-highlighter", + "main": "prism-highlighter.html", + "ignore": [ + "/.*", + "/test/", + "/demo/" + ], + "dependencies": { + "prism": "*", + "polymer": "Polymer/polymer#^1.0.0" + }, + "devDependencies": { + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", + "iron-component-page": "PolymerElements/iron-component-page#^1.0.0", + "paper-styles": "PolymerElements/paper-styles#^1.0.0" + } +} diff --git a/dashboard-ui/bower_components/prism-element/index.html b/dashboard-ui/bower_components/prism-element/index.html new file mode 100644 index 0000000000..3f70371cc8 --- /dev/null +++ b/dashboard-ui/bower_components/prism-element/index.html @@ -0,0 +1,28 @@ + + + + + + + + + prism-element + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/prism-element/prism-highlighter.html b/dashboard-ui/bower_components/prism-element/prism-highlighter.html new file mode 100644 index 0000000000..c81d48272e --- /dev/null +++ b/dashboard-ui/bower_components/prism-element/prism-highlighter.html @@ -0,0 +1,95 @@ + + + + + + + + diff --git a/dashboard-ui/bower_components/prism-element/prism-import.html b/dashboard-ui/bower_components/prism-element/prism-import.html new file mode 100644 index 0000000000..98ecdeb4bb --- /dev/null +++ b/dashboard-ui/bower_components/prism-element/prism-import.html @@ -0,0 +1,11 @@ + + + diff --git a/dashboard-ui/bower_components/prism/.bower.json b/dashboard-ui/bower_components/prism/.bower.json new file mode 100644 index 0000000000..46d1d7fa99 --- /dev/null +++ b/dashboard-ui/bower_components/prism/.bower.json @@ -0,0 +1,39 @@ +{ + "name": "prism", + "main": [ + "prism.js", + "themes/prism.css" + ], + "homepage": "http://prismjs.com", + "authors": "Lea Verou", + "description": "Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/PrismJS/prism.git" + }, + "ignore": [ + "**/.*", + "img", + "templates", + "CNAME", + "*.html", + "style.css", + "favicon.png", + "logo.svg", + "download.js", + "prefixfree.min.js", + "utopia.js", + "code.js" + ], + "version": "1.4.1", + "_release": "1.4.1", + "_resolution": { + "type": "version", + "tag": "v1.4.1", + "commit": "97b0eb5a1a74760c5c0f37f82116679b33876634" + }, + "_source": "git://github.com/LeaVerou/prism.git", + "_target": "*", + "_originalSource": "prism" +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/CHANGELOG.md b/dashboard-ui/bower_components/prism/CHANGELOG.md new file mode 100644 index 0000000000..92e2d958bc --- /dev/null +++ b/dashboard-ui/bower_components/prism/CHANGELOG.md @@ -0,0 +1,525 @@ +# Prism Changelog + +## 1.4.1 (2016-02-03) + +### Other changes + +* Fix DFS bug in Prism core [[`b86c727`](https://github.com/PrismJS/prism/commit/b86c727)] + +## 1.4.0 (2016-02-03) + +### New components + +* __Solarized Light__ ([#855](https://github.com/PrismJS/prism/pull/855)) [[`70846ba`](https://github.com/PrismJS/prism/commit/70846ba)] +* __JSON__ ([#370](https://github.com/PrismJS/prism/pull/370)) [[`ad2fcd0`](https://github.com/PrismJS/prism/commit/ad2fcd0)] + +### Updated components + +* __Show Language__: + * Remove data-language attribute ([#840](https://github.com/PrismJS/prism/pull/840)) [[`eb9a83c`](https://github.com/PrismJS/prism/commit/eb9a83c)] + * Allow custom label without a language mapping ([#837](https://github.com/PrismJS/prism/pull/837)) [[`7e74aef`](https://github.com/PrismJS/prism/commit/7e74aef)] +* __JSX__: + * Better Nesting in JSX attributes ([#842](https://github.com/PrismJS/prism/pull/842)) [[`971dda7`](https://github.com/PrismJS/prism/commit/971dda7)] +* __File Highlight__: + * Defer File Highlight until the full DOM has loaded. ([#844](https://github.com/PrismJS/prism/pull/844)) [[`6f995ef`](https://github.com/PrismJS/prism/commit/6f995ef)] +* __Coy Theme__: + * Fix coy theme shadows ([#865](https://github.com/PrismJS/prism/pull/865)) [[`58d2337`](https://github.com/PrismJS/prism/commit/58d2337)] +* __Show Invisibles__: + * Ensure show-invisibles compat with autoloader ([#874](https://github.com/PrismJS/prism/pull/874)) [[`c3cfb1f`](https://github.com/PrismJS/prism/commit/c3cfb1f)] + * Add support for the space character for the show-invisibles plugin ([#876](https://github.com/PrismJS/prism/pull/876)) [[`05442d3`](https://github.com/PrismJS/prism/commit/05442d3)] + +### New plugins + +* __Command Line__ ([#831](https://github.com/PrismJS/prism/pull/831)) [[`8378906`](https://github.com/PrismJS/prism/commit/8378906)] + +### Other changes + +* Use document.currentScript instead of document.getElementsByTagName() [[`fa98743`](https://github.com/PrismJS/prism/commit/fa98743)] +* Add prefix for Firefox selection and move prefixed rule first [[`6d54717`](https://github.com/PrismJS/prism/commit/6d54717)] +* No background for `` in `
` [[`8c310bc`](https://github.com/PrismJS/prism/commit/8c310bc)]
+* Fixing to initial copyright year [[`69cbf7a`](https://github.com/PrismJS/prism/commit/69cbf7a)]
+* Simplify the “lang” regex [[`417f54a`](https://github.com/PrismJS/prism/commit/417f54a)]
+* Fix broken heading links [[`a7f9e62`](https://github.com/PrismJS/prism/commit/a7f9e62)]
+* Prevent infinite recursion in DFS [[`02894e1`](https://github.com/PrismJS/prism/commit/02894e1)]
+* Fix incorrect page title [[`544b56f`](https://github.com/PrismJS/prism/commit/544b56f)]
+* Link scss to webplatform wiki [[`08d979a`](https://github.com/PrismJS/prism/commit/08d979a)]
+* Revert white-space to normal when code is inline instead of in a pre [[`1a971b5`](https://github.com/PrismJS/prism/commit/1a971b5)]
+
+## 1.3.0 (2015-10-26)
+
+### New components
+
+* __AsciiDoc__ ([#800](https://github.com/PrismJS/prism/issues/800)) [[`6803ca0`](https://github.com/PrismJS/prism/commit/6803ca0)]
+* __Haxe__ ([#811](https://github.com/PrismJS/prism/issues/811)) [[`bd44341`](https://github.com/PrismJS/prism/commit/bd44341)]
+* __Icon__ ([#803](https://github.com/PrismJS/prism/issues/803)) [[`b43c5f3`](https://github.com/PrismJS/prism/commit/b43c5f3)]
+* __Kotlin ([#814](https://github.com/PrismJS/prism/issues/814)) [[`e8a31a5`](https://github.com/PrismJS/prism/commit/e8a31a5)]
+* __Lua__ ([#804](https://github.com/PrismJS/prism/issues/804)) [[`a36bc4a`](https://github.com/PrismJS/prism/commit/a36bc4a)]
+* __Nix__ ([#795](https://github.com/PrismJS/prism/issues/795)) [[`9b275c8`](https://github.com/PrismJS/prism/commit/9b275c8)]
+* __Oz__ ([#805](https://github.com/PrismJS/prism/issues/805)) [[`388c53f`](https://github.com/PrismJS/prism/commit/388c53f)]
+* __PARI/GP__ ([#802](https://github.com/PrismJS/prism/issues/802)) [[`253c035`](https://github.com/PrismJS/prism/commit/253c035)]
+* __Parser__ ([#808](https://github.com/PrismJS/prism/issues/808)) [[`a953b3a`](https://github.com/PrismJS/prism/commit/a953b3a)]
+* __Puppet__ ([#813](https://github.com/PrismJS/prism/issues/813)) [[`81933ee`](https://github.com/PrismJS/prism/commit/81933ee)]
+* __Roboconf__ ([#812](https://github.com/PrismJS/prism/issues/812)) [[`f5db346`](https://github.com/PrismJS/prism/commit/f5db346)]
+
+### Updated components
+
+* __C__:
+	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+* __C#__:
+	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+	* Fix detection of float numbers ([#806](https://github.com/PrismJS/prism/issues/806)) [[`1dae72b`](https://github.com/PrismJS/prism/commit/1dae72b)]
+* __F#__:
+	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+* __JavaScript__:
+	* Highlight true and false as booleans ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+* __Python__:
+	* Highlight triple-quoted strings before comments. Fix [#815](https://github.com/PrismJS/prism/issues/815) [[`90fbf0b`](https://github.com/PrismJS/prism/commit/90fbf0b)]
+
+### New plugins
+
+* __Previewer: Time__ ([#790](https://github.com/PrismJS/prism/issues/790)) [[`88173de`](https://github.com/PrismJS/prism/commit/88173de)]
+* __Previewer: Angle__ ([#791](https://github.com/PrismJS/prism/issues/791)) [[`a434c86`](https://github.com/PrismJS/prism/commit/a434c86)]
+
+### Other changes
+
+* Increase mocha's timeout [[`f1c41db`](https://github.com/PrismJS/prism/commit/f1c41db)]
+* Prevent most errors in IE8. Fix [#9](https://github.com/PrismJS/prism/issues/9) [[`9652d75`](https://github.com/PrismJS/prism/commit/9652d75)]
+* Add U.S. Web Design Standards on homepage. Fix [#785](https://github.com/PrismJS/prism/issues/785) [[`e10d48b`](https://github.com/PrismJS/prism/commit/e10d48b), [`79ebbf8`](https://github.com/PrismJS/prism/commit/79ebbf8), [`2f7088d`](https://github.com/PrismJS/prism/commit/2f7088d)]
+* Added gulp task to autolink PRs and commits in changelog [[`5ec4e4d`](https://github.com/PrismJS/prism/commit/5ec4e4d)]
+* Use child processes to run each set of tests, in order to deal with the memory leak in vm.runInNewContext() [[`9a4b6fa`](https://github.com/PrismJS/prism/commit/9a4b6fa)]
+
+## 1.2.0 (2015-10-07)
+
+### New components
+
+* __Batch__ ([#781](https://github.com/PrismJS/prism/issues/781)) [[`eab5b06`](https://github.com/PrismJS/prism/commit/eab5b06)]
+
+### Updated components
+
+* __ASP.NET__:
+	* Simplified pattern for `
+
+
+----------------------------------------------------
+
+[
+
+	["tag", [
+		["tag", [
+			["punctuation", "<"],
+			"script"
+		]],
+		["attr-name", [
+			"type"
+		]],
+		["attr-value", [
+			["punctuation", "="],
+			["punctuation", "\""],
+			"text/javascript",
+			["punctuation", "\""]
+		]],
+		["punctuation", ">"]
+	]],
+	["script", [
+		["function", "foo"],
+		["punctuation", "("],
+		["punctuation", ")"]
+	]],
+	["tag", [
+		["tag", [
+			["punctuation", ""]
+	]],
+
+	["tag", [
+		["tag", [
+			["punctuation", "<"],
+			"script"
+		]],
+		["punctuation", ">"]
+	]],
+	["script", [
+		["string", "\"foo bar\""]
+	]],
+	["tag", [
+		["tag", [
+			["punctuation", ""]
+	]]
+]
+
+----------------------------------------------------
+
+Checks for Javascript usage inside Markup, using 
+
+
+----------------------------------------------------
+
+[
+	["tag", [
+		["tag", [
+			["punctuation", "<"],
+			"script"
+		]],
+		["attr-name", [
+			"runat"
+		]],
+		["attr-value", [
+			["punctuation", "="],
+			["punctuation", "\""],
+			"server",
+			["punctuation", "\""]
+		]],
+		["punctuation", ">"]
+	]],
+	["asp script", [
+		["preprocessor", ["#", ["directive", "pragma"]]]
+	]],
+	["tag", [
+		["tag", [
+			["punctuation", ""]
+	]],
+
+	["tag", [
+		["tag", [
+			["punctuation", "<"],
+			"script"
+		]],
+		["punctuation", ">"]
+	]],
+	["script", [
+		["regex", "/foo/"]
+	]],
+	["tag", [
+		["tag", [
+			["punctuation", ""]
+	]]
+]
+
+----------------------------------------------------
+
+Checks for scripts containing C# code.
+Also checks that those don't break normal JS scripts.
+Note: Markup is loaded before Javascript so that scripts are added into grammar.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup+php/markup_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup+php/markup_feature.test
new file mode 100644
index 0000000000..beb2027c5d
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/markup+php/markup_feature.test
@@ -0,0 +1,37 @@
+
+ +---------------------------------------------------- + +[ + ["markup", [ + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", [ + "class" + ]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "foo", + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]] + ]], + ["markup", [ + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]] + ]] +] + +---------------------------------------------------- + +Checks for markup in PHP. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/cdata_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup/cdata_feature.test new file mode 100644 index 0000000000..c2854c9c62 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/cdata_feature.test @@ -0,0 +1,15 @@ + + + +---------------------------------------------------- + +[ + ["cdata", ""], + ["cdata", ""] +] + +---------------------------------------------------- + +Checks for CDATA sections, single-line and multi-line. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup/comment_feature.test new file mode 100644 index 0000000000..8acbb0deb7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/comment_feature.test @@ -0,0 +1,16 @@ + + + + +---------------------------------------------------- + +[ + ["comment", ""], + ["comment", ""], + ["comment", ""] +] + +---------------------------------------------------- + +Checks for empty comment, single-line comment and multi-line comment. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/doctype_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup/doctype_feature.test new file mode 100644 index 0000000000..a7212073ee --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/doctype_feature.test @@ -0,0 +1,16 @@ + + + + +---------------------------------------------------- + +[ + ["doctype", ""], + ["doctype", ""], + ["doctype", ""] +] + +---------------------------------------------------- + +Checks for different doctypes, single-line and multi-line. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/entity_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup/entity_feature.test new file mode 100644 index 0000000000..2212c6b10f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/entity_feature.test @@ -0,0 +1,14 @@ +& ϑ ⛵   + +---------------------------------------------------- + +[ + ["entity", "&"], + ["entity", "ϑ"], + ["entity", "⛵"], + ["entity", " "] +] + +---------------------------------------------------- + +Checks for HTML/XML character entity references. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/issue585.test b/dashboard-ui/bower_components/prism/tests/languages/markup/issue585.test new file mode 100644 index 0000000000..090506ab06 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/issue585.test @@ -0,0 +1,63 @@ +foo + +baz + +---------------------------------------------------- + +[ + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "Läufer" + ]], + ["punctuation", ">"] + ]], + "foo", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "tag" + ]], + ["attr-name", [ + "läufer" + ]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "läufer", + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + ["namespace", "läufer:"], + "tag" + ]], + ["punctuation", ">"] + ]], + "baz", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]] +] + +---------------------------------------------------- + +Checks for tags, attributes and namespaces containing unicode characters. +See #585 for details. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/prolog_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup/prolog_feature.test new file mode 100644 index 0000000000..bb3f5a52a1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/prolog_feature.test @@ -0,0 +1,16 @@ + + + + +---------------------------------------------------- + +[ + ["prolog", ""], + ["prolog", ""], + ["prolog", ""] +] + +---------------------------------------------------- + +Checks for different XML prologs, single-line and multi-line. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/tag_attribute_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup/tag_attribute_feature.test new file mode 100644 index 0000000000..57eba1abf6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/tag_attribute_feature.test @@ -0,0 +1,92 @@ +
+
+
+
+ +---------------------------------------------------- + +[ + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", [ + "class" + ]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "test", + ["punctuation", "\""] + ]], + ["attr-name", [ + "foo" + ]], + ["attr-name", [ + "bar" + ]], + ["attr-value", [ + ["punctuation", "="], + "baz" + ]], + ["punctuation", ">"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", [ + "foo" + ]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "'"], + "bar", + ["punctuation", "'"] + ]], + ["punctuation", ">"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", [ + "class" + ]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "foo\r\nbar\r\nbaz", + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", [ + ["namespace", "foo:"], + "bar" + ]], + ["attr-value", [ + ["punctuation", "="], + "42" + ]], + ["punctuation", ">"] + ]] +] + +---------------------------------------------------- + +Checks for single-quoted, double-quoted and unquoted attributes, attributes without value and +namespaced attributes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/markup/tag_feature.test b/dashboard-ui/bower_components/prism/tests/languages/markup/tag_feature.test new file mode 100644 index 0000000000..110de1df87 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/markup/tag_feature.test @@ -0,0 +1,81 @@ +

+
dummy
+
+ +
"] + ]], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["punctuation", ">"] + ]], + "dummy", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["punctuation", ">"] + ]], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + ["namespace", "foo:"], + "bar" + ]], + ["punctuation", ">"] + ]], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\r\n >= +== ~= +& && +| || +A' + +---------------------------------------------------- + +[ + ["operator", ".'"], ["operator", ".^"], + ["operator", ".*"], ["operator", "./"], ["operator", ".\\"], + ["operator", "@"], ["operator", "^"], ["operator", ":"], + ["operator", "+"], ["operator", "-"], ["operator", "~"], + ["operator", "*"], ["operator", "/"], ["operator", "\\"], + ["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="], + ["operator", "=="], ["operator", "~="], + ["operator", "&"], ["operator", "&&"], + ["operator", "|"], ["operator", "||"], + "\r\nA", ["operator", "'"] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/matlab/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/matlab/string_feature.test new file mode 100644 index 0000000000..3c97ba7484 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/matlab/string_feature.test @@ -0,0 +1,13 @@ +'' +'foo''bar' + +---------------------------------------------------- + +[ + ["string", "''"], + ["string", "'foo''bar'"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/code_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/code_feature.test new file mode 100644 index 0000000000..56bf8c1a98 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/code_feature.test @@ -0,0 +1,16 @@ +`ls -selection` + +---------------------------------------------------- + +[ + ["code", [ + ["delimiter", "`"], + ["function", "ls"], + ["flag", "-selection"], + ["delimiter", "`"] + ]] +] + +---------------------------------------------------- + +Checks for code. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/comment_feature.test new file mode 100644 index 0000000000..1d674d12a7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/comment_feature.test @@ -0,0 +1,13 @@ +// +// Foobar + +---------------------------------------------------- + +[ + ["comment", "//"], + ["comment", "// Foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/flag_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/flag_feature.test new file mode 100644 index 0000000000..c9509b2d02 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/flag_feature.test @@ -0,0 +1,15 @@ +-d +-foo +-foo42 + +---------------------------------------------------- + +[ + ["flag", "-d"], + ["flag", "-foo"], + ["flag", "-foo42"] +] + +---------------------------------------------------- + +Checks for flags. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/function_feature.test new file mode 100644 index 0000000000..4079eff209 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/function_feature.test @@ -0,0 +1,2453 @@ +foobar() +foo_bar_42() + +about +abs +addAttr +addAttributeEditorNodeHelp +addDynamic +addNewShelfTab +addPP +addPanelCategory +addPrefixToName +advanceToNextDrivenKey +affectedNet +affects +aimConstraint +air +alias +aliasAttr +align +alignCtx +alignCurve +alignSurface +allViewFit +ambientLight +angle +angleBetween +animCone +animCurveEditor +animDisplay +animView +annotate +appendStringArray +applicationName +applyAttrPreset +applyTake +arcLenDimContext +arcLengthDimension +arclen +arrayMapper +art3dPaintCtx +artAttrCtx +artAttrPaintVertexCtx +artAttrSkinPaintCtx +artAttrTool +artBuildPaintMenu +artFluidAttrCtx +artPuttyCtx +artSelectCtx +artSetPaintCtx +artUserPaintCtx +assignCommand +assignInputDevice +assignViewportFactories +attachCurve +attachDeviceAttr +attachSurface +attrColorSliderGrp +attrCompatibility +attrControlGrp +attrEnumOptionMenu +attrEnumOptionMenuGrp +attrFieldGrp +attrFieldSliderGrp +attrNavigationControlGrp +attrPresetEditWin +attributeExists +attributeInfo +attributeMenu +attributeQuery +autoKeyframe +autoPlace +bakeClip +bakeFluidShading +bakePartialHistory +bakeResults +bakeSimulation +basename +basenameEx +batchRender +bessel +bevel +bevelPlus +binMembership +bindSkin +blend2 +blendShape +blendShapeEditor +blendShapePanel +blendTwoAttr +blindDataType +boneLattice +boundary +boxDollyCtx +boxZoomCtx +bufferCurve +buildBookmarkMenu +buildKeyframeMenu +button +buttonManip +CBG +cacheFile +cacheFileCombine +cacheFileMerge +cacheFileTrack +camera +cameraView +canCreateManip +canvas +capitalizeString +catch +catchQuiet +ceil +changeSubdivComponentDisplayLevel +changeSubdivRegion +channelBox +character +characterMap +characterOutlineEditor +characterize +chdir +checkBox +checkBoxGrp +checkDefaultRenderGlobals +choice +circle +circularFillet +clamp +clear +clearCache +clip +clipEditor +clipEditorCurrentTimeCtx +clipSchedule +clipSchedulerOutliner +clipTrimBefore +closeCurve +closeSurface +cluster +cmdFileOutput +cmdScrollFieldExecuter +cmdScrollFieldReporter +cmdShell +coarsenSubdivSelectionList +collision +color +colorAtPoint +colorEditor +colorIndex +colorIndexSliderGrp +colorSliderButtonGrp +colorSliderGrp +columnLayout +commandEcho +commandLine +commandPort +compactHairSystem +componentEditor +compositingInterop +computePolysetVolume +condition +cone +confirmDialog +connectAttr +connectControl +connectDynamic +connectJoint +connectionInfo +constrain +constrainValue +constructionHistory +container +containsMultibyte +contextInfo +control +convertFromOldLayers +convertIffToPsd +convertLightmap +convertSolidTx +convertTessellation +convertUnit +copyArray +copyFlexor +copyKey +copySkinWeights +cos +cpButton +cpCache +cpClothSet +cpCollision +cpConstraint +cpConvClothToMesh +cpForces +cpGetSolverAttr +cpPanel +cpProperty +cpRigidCollisionFilter +cpSeam +cpSetEdit +cpSetSolverAttr +cpSolver +cpSolverTypes +cpTool +cpUpdateClothUVs +createDisplayLayer +createDrawCtx +createEditor +createLayeredPsdFile +createMotionField +createNewShelf +createNode +createRenderLayer +createSubdivRegion +cross +crossProduct +ctxAbort +ctxCompletion +ctxEditMode +ctxTraverse +currentCtx +currentTime +currentTimeCtx +currentUnit +curve +curveAddPtCtx +curveCVCtx +curveEPCtx +curveEditorCtx +curveIntersect +curveMoveEPCtx +curveOnSurface +curveSketchCtx +cutKey +cycleCheck +cylinder +dagPose +date +defaultLightListCheckBox +defaultNavigation +defineDataServer +defineVirtualDevice +deformer +deg_to_rad +delete +deleteAttr +deleteShadingGroupsAndMaterials +deleteShelfTab +deleteUI +deleteUnusedBrushes +delrandstr +detachCurve +detachDeviceAttr +detachSurface +deviceEditor +devicePanel +dgInfo +dgdirty +dgeval +dgtimer +dimWhen +directKeyCtx +directionalLight +dirmap +dirname +disable +disconnectAttr +disconnectJoint +diskCache +displacementToPoly +displayAffected +displayColor +displayCull +displayLevelOfDetail +displayPref +displayRGBColor +displaySmoothness +displayStats +displayString +displaySurface +distanceDimContext +distanceDimension +doBlur +dolly +dollyCtx +dopeSheetEditor +dot +dotProduct +doubleProfileBirailSurface +drag +dragAttrContext +draggerContext +dropoffLocator +duplicate +duplicateCurve +duplicateSurface +dynCache +dynControl +dynExport +dynExpression +dynGlobals +dynPaintEditor +dynParticleCtx +dynPref +dynRelEdPanel +dynRelEditor +dynamicLoad +editAttrLimits +editDisplayLayerGlobals +editDisplayLayerMembers +editRenderLayerAdjustment +editRenderLayerGlobals +editRenderLayerMembers +editor +editorTemplate +effector +emit +emitter +enableDevice +encodeString +endString +endsWith +env +equivalent +equivalentTol +erf +error +eval +evalDeferred +evalEcho +event +exactWorldBoundingBox +exclusiveLightCheckBox +exec +executeForEachObject +exists +exp +expression +expressionEditorListen +extendCurve +extendSurface +extrude +fcheck +fclose +feof +fflush +fgetline +fgetword +file +fileBrowserDialog +fileDialog +fileExtension +fileInfo +filetest +filletCurve +filter +filterCurve +filterExpand +filterStudioImport +findAllIntersections +findAnimCurves +findKeyframe +findMenuItem +findRelatedSkinCluster +finder +firstParentOf +fitBspline +flexor +floatEq +floatField +floatFieldGrp +floatScrollBar +floatSlider +floatSlider2 +floatSliderButtonGrp +floatSliderGrp +floor +flow +fluidCacheInfo +fluidEmitter +fluidVoxelInfo +flushUndo +fmod +fontDialog +fopen +formLayout +format +fprint +frameLayout +fread +freeFormFillet +frewind +fromNativePath +fwrite +gamma +gauss +geometryConstraint +getApplicationVersionAsFloat +getAttr +getClassification +getDefaultBrush +getFileList +getFluidAttr +getInputDeviceRange +getMayaPanelTypes +getModifiers +getPanel +getParticleAttr +getPluginResource +getenv +getpid +glRender +glRenderEditor +globalStitch +gmatch +goal +gotoBindPose +grabColor +gradientControl +gradientControlNoAttr +graphDollyCtx +graphSelectContext +graphTrackCtx +gravity +grid +gridLayout +group +groupObjectsByName +HfAddAttractorToAS +HfAssignAS +HfBuildEqualMap +HfBuildFurFiles +HfBuildFurImages +HfCancelAFR +HfConnectASToHF +HfCreateAttractor +HfDeleteAS +HfEditAS +HfPerformCreateAS +HfRemoveAttractorFromAS +HfSelectAttached +HfSelectAttractors +HfUnAssignAS +hardenPointCurve +hardware +hardwareRenderPanel +headsUpDisplay +headsUpMessage +help +helpLine +hermite +hide +hilite +hitTest +hotBox +hotkey +hotkeyCheck +hsv_to_rgb +hudButton +hudSlider +hudSliderButton +hwReflectionMap +hwRender +hwRenderLoad +hyperGraph +hyperPanel +hyperShade +hypot +iconTextButton +iconTextCheckBox +iconTextRadioButton +iconTextRadioCollection +iconTextScrollList +iconTextStaticLabel +ikHandle +ikHandleCtx +ikHandleDisplayScale +ikSolver +ikSplineHandleCtx +ikSystem +ikSystemInfo +ikfkDisplayMethod +illustratorCurves +image +imfPlugins +inheritTransform +insertJoint +insertJointCtx +insertKeyCtx +insertKnotCurve +insertKnotSurface +instance +instanceable +instancer +intField +intFieldGrp +intScrollBar +intSlider +intSliderGrp +interToUI +internalVar +intersect +iprEngine +isAnimCurve +isConnected +isDirty +isParentOf +isSameObject +isTrue +isValidObjectName +isValidString +isValidUiName +isolateSelect +itemFilter +itemFilterAttr +itemFilterRender +itemFilterType +joint +jointCluster +jointCtx +jointDisplayScale +jointLattice +keyTangent +keyframe +keyframeOutliner +keyframeRegionCurrentTimeCtx +keyframeRegionDirectKeyCtx +keyframeRegionDollyCtx +keyframeRegionInsertKeyCtx +keyframeRegionMoveKeyCtx +keyframeRegionScaleKeyCtx +keyframeRegionSelectKeyCtx +keyframeRegionSetKeyCtx +keyframeRegionTrackCtx +keyframeStats +lassoContext +lattice +latticeDeformKeyCtx +launch +launchImageEditor +layerButton +layeredShaderPort +layeredTexturePort +layout +layoutDialog +lightList +lightListEditor +lightListPanel +lightlink +lineIntersection +linearPrecision +linstep +listAnimatable +listAttr +listCameras +listConnections +listDeviceAttachments +listHistory +listInputDeviceAxes +listInputDeviceButtons +listInputDevices +listMenuAnnotation +listNodeTypes +listPanelCategories +listRelatives +listSets +listTransforms +listUnselected +listerEditor +loadFluid +loadNewShelf +loadPlugin +loadPluginLanguageResources +loadPrefObjects +localizedPanelLabel +lockNode +loft +log +longNameOf +lookThru +ls +lsThroughFilter +lsType +lsUI +Mayatomr +mag +makeIdentity +makeLive +makePaintable +makeRoll +makeSingleSurface +makeTubeOn +makebot +manipMoveContext +manipMoveLimitsCtx +manipOptions +manipRotateContext +manipRotateLimitsCtx +manipScaleContext +manipScaleLimitsCtx +marker +match +max +memory +menu +menuBarLayout +menuEditor +menuItem +menuItemToShelf +menuSet +menuSetPref +messageLine +min +minimizeApp +mirrorJoint +modelCurrentTimeCtx +modelEditor +modelPanel +mouse +movIn +movOut +move +moveIKtoFK +moveKeyCtx +moveVertexAlongDirection +multiProfileBirailSurface +mute +nParticle +nameCommand +nameField +namespace +namespaceInfo +newPanelItems +newton +nodeCast +nodeIconButton +nodeOutliner +nodePreset +nodeType +noise +nonLinear +normalConstraint +normalize +nurbsBoolean +nurbsCopyUVSet +nurbsCube +nurbsEditUV +nurbsPlane +nurbsSelect +nurbsSquare +nurbsToPoly +nurbsToPolygonsPref +nurbsToSubdiv +nurbsToSubdivPref +nurbsUVSet +nurbsViewDirectionVector +objExists +objectCenter +objectLayer +objectType +objectTypeUI +obsoleteProc +oceanNurbsPreviewPlane +offsetCurve +offsetCurveOnSurface +offsetSurface +openGLExtension +openMayaPref +optionMenu +optionMenuGrp +optionVar +orbit +orbitCtx +orientConstraint +outlinerEditor +outlinerPanel +overrideModifier +paintEffectsDisplay +pairBlend +palettePort +paneLayout +panel +panelConfiguration +panelHistory +paramDimContext +paramDimension +paramLocator +parent +parentConstraint +particle +particleExists +particleInstancer +particleRenderInfo +partition +pasteKey +pathAnimation +pause +pclose +percent +performanceOptions +pfxstrokes +pickWalk +picture +pixelMove +planarSrf +plane +play +playbackOptions +playblast +plugAttr +plugNode +pluginInfo +pluginResourceUtil +pointConstraint +pointCurveConstraint +pointLight +pointMatrixMult +pointOnCurve +pointOnSurface +pointPosition +poleVectorConstraint +polyAppend +polyAppendFacetCtx +polyAppendVertex +polyAutoProjection +polyAverageNormal +polyAverageVertex +polyBevel +polyBlendColor +polyBlindData +polyBoolOp +polyBridgeEdge +polyCacheMonitor +polyCheck +polyChipOff +polyClipboard +polyCloseBorder +polyCollapseEdge +polyCollapseFacet +polyColorBlindData +polyColorDel +polyColorPerVertex +polyColorSet +polyCompare +polyCone +polyCopyUV +polyCrease +polyCreaseCtx +polyCreateFacet +polyCreateFacetCtx +polyCube +polyCut +polyCutCtx +polyCylinder +polyCylindricalProjection +polyDelEdge +polyDelFacet +polyDelVertex +polyDuplicateAndConnect +polyDuplicateEdge +polyEditUV +polyEditUVShell +polyEvaluate +polyExtrudeEdge +polyExtrudeFacet +polyExtrudeVertex +polyFlipEdge +polyFlipUV +polyForceUV +polyGeoSampler +polyHelix +polyInfo +polyInstallAction +polyLayoutUV +polyListComponentConversion +polyMapCut +polyMapDel +polyMapSew +polyMapSewMove +polyMergeEdge +polyMergeEdgeCtx +polyMergeFacet +polyMergeFacetCtx +polyMergeUV +polyMergeVertex +polyMirrorFace +polyMoveEdge +polyMoveFacet +polyMoveFacetUV +polyMoveUV +polyMoveVertex +polyNormal +polyNormalPerVertex +polyNormalizeUV +polyOptUvs +polyOptions +polyOutput +polyPipe +polyPlanarProjection +polyPlane +polyPlatonicSolid +polyPoke +polyPrimitive +polyPrism +polyProjection +polyPyramid +polyQuad +polyQueryBlindData +polyReduce +polySelect +polySelectConstraint +polySelectConstraintMonitor +polySelectCtx +polySelectEditCtx +polySeparate +polySetToFaceNormal +polySewEdge +polyShortestPathCtx +polySmooth +polySoftEdge +polySphere +polySphericalProjection +polySplit +polySplitCtx +polySplitEdge +polySplitRing +polySplitVertex +polyStraightenUVBorder +polySubdivideEdge +polySubdivideFacet +polyToSubdiv +polyTorus +polyTransfer +polyTriangulate +polyUVSet +polyUnite +polyWedgeFace +popen +popupMenu +pose +pow +preloadRefEd +print +progressBar +progressWindow +projFileViewer +projectCurve +projectTangent +projectionContext +projectionManip +promptDialog +propModCtx +propMove +psdChannelOutliner +psdEditTextureFile +psdExport +psdTextureFile +putenv +pwd +python +querySubdiv +quit +rad_to_deg +radial +radioButton +radioButtonGrp +radioCollection +radioMenuItemCollection +rampColorPort +rand +randomizeFollicles +randstate +rangeControl +readTake +rebuildCurve +rebuildSurface +recordAttr +recordDevice +redo +reference +referenceEdit +referenceQuery +refineSubdivSelectionList +refresh +refreshAE +registerPluginResource +rehash +reloadImage +removeJoint +removeMultiInstance +removePanelCategory +rename +renameAttr +renameSelectionList +renameUI +render +renderGlobalsNode +renderInfo +renderLayerButton +renderLayerParent +renderLayerPostProcess +renderLayerUnparent +renderManip +renderPartition +renderQualityNode +renderSettings +renderThumbnailUpdate +renderWindowEditor +renderWindowSelectContext +renderer +reorder +reorderDeformers +requires +reroot +resampleFluid +resetAE +resetPfxToPolyCamera +resetTool +resolutionNode +retarget +reverseCurve +reverseSurface +revolve +rgb_to_hsv +rigidBody +rigidSolver +roll +rollCtx +rootOf +rot +rotate +rotationInterpolation +roundConstantRadius +rowColumnLayout +rowLayout +runTimeCommand +runup +sampleImage +saveAllShelves +saveAttrPreset +saveFluid +saveImage +saveInitialState +saveMenu +savePrefObjects +savePrefs +saveShelf +saveToolSettings +scale +scaleBrushBrightness +scaleComponents +scaleConstraint +scaleKey +scaleKeyCtx +sceneEditor +sceneUIReplacement +scmh +scriptCtx +scriptEditorInfo +scriptJob +scriptNode +scriptTable +scriptToShelf +scriptedPanel +scriptedPanelType +scrollField +scrollLayout +sculpt +searchPathArray +seed +selLoadSettings +select +selectContext +selectCurveCV +selectKey +selectKeyCtx +selectKeyframeRegionCtx +selectMode +selectPref +selectPriority +selectType +selectedNodes +selectionConnection +separator +setAttr +setAttrEnumResource +setAttrMapping +setAttrNiceNameResource +setConstraintRestPosition +setDefaultShadingGroup +setDrivenKeyframe +setDynamic +setEditCtx +setEditor +setFluidAttr +setFocus +setInfinity +setInputDeviceMapping +setKeyCtx +setKeyPath +setKeyframe +setKeyframeBlendshapeTargetWts +setMenuMode +setNodeNiceNameResource +setNodeTypeFlag +setParent +setParticleAttr +setPfxToPolyCamera +setPluginResource +setProject +setStampDensity +setStartupMessage +setState +setToolTo +setUITemplate +setXformManip +sets +shadingConnection +shadingGeometryRelCtx +shadingLightRelCtx +shadingNetworkCompare +shadingNode +shapeCompare +shelfButton +shelfLayout +shelfTabLayout +shellField +shortNameOf +showHelp +showHidden +showManipCtx +showSelectionInTitle +showShadingGroupAttrEditor +showWindow +sign +simplify +sin +singleProfileBirailSurface +size +sizeBytes +skinCluster +skinPercent +smoothCurve +smoothTangentSurface +smoothstep +snap2to2 +snapKey +snapMode +snapTogetherCtx +snapshot +soft +softMod +softModCtx +sort +sound +soundControl +source +spaceLocator +sphere +sphrand +spotLight +spotLightPreviewPort +spreadSheetEditor +spring +sqrt +squareSurface +srtContext +stackTrace +startString +startsWith +stitchAndExplodeShell +stitchSurface +stitchSurfacePoints +strcmp +stringArrayCatenate +stringArrayContains +stringArrayCount +stringArrayInsertAtIndex +stringArrayIntersector +stringArrayRemove +stringArrayRemoveAtIndex +stringArrayRemoveDuplicates +stringArrayRemoveExact +stringArrayToString +stringToStringArray +strip +stripPrefixFromName +stroke +subdAutoProjection +subdCleanTopology +subdCollapse +subdDuplicateAndConnect +subdEditUV +subdListComponentConversion +subdMapCut +subdMapSewMove +subdMatchTopology +subdMirror +subdToBlind +subdToPoly +subdTransferUVsToCache +subdiv +subdivCrease +subdivDisplaySmoothness +substitute +substituteAllString +substituteGeometry +substring +surface +surfaceSampler +surfaceShaderList +swatchDisplayPort +switchTable +symbolButton +symbolCheckBox +sysFile +system +tabLayout +tan +tangentConstraint +texLatticeDeformContext +texManipContext +texMoveContext +texMoveUVShellContext +texRotateContext +texScaleContext +texSelectContext +texSelectShortestPathCtx +texSmudgeUVContext +texWinToolCtx +text +textCurves +textField +textFieldButtonGrp +textFieldGrp +textManip +textScrollList +textToShelf +textureDisplacePlane +textureHairColor +texturePlacementContext +textureWindow +threadCount +threePointArcCtx +timeControl +timePort +timerX +toNativePath +toggle +toggleAxis +toggleWindowVisibility +tokenize +tokenizeList +tolerance +tolower +toolButton +toolCollection +toolDropped +toolHasOptions +toolPropertyWindow +torus +toupper +trace +track +trackCtx +transferAttributes +transformCompare +transformLimits +translator +trim +trunc +truncateFluidCache +truncateHairCache +tumble +tumbleCtx +turbulence +twoPointArcCtx +uiRes +uiTemplate +unassignInputDevice +undo +undoInfo +ungroup +uniform +unit +unloadPlugin +untangleUV +untitledFileName +untrim +upAxis +updateAE +userCtx +uvLink +uvSnapshot +validateShelfName +vectorize +view2dToolCtx +viewCamera +viewClipPlane +viewFit +viewHeadOn +viewLookAt +viewManip +viewPlace +viewSet +visor +volumeAxis +vortex +waitCursor +warning +webBrowser +webBrowserPrefs +whatIs +window +windowPref +wire +wireContext +workspace +wrinkle +wrinkleContext +writeTake +xbmLangPathList +xform + +---------------------------------------------------- + +[ + ["function", "foobar"], ["punctuation", "("], ["punctuation", ")"], + ["function", "foo_bar_42"], ["punctuation", "("], ["punctuation", ")"], + + ["function", "about"], + ["function", "abs"], + ["function", "addAttr"], + ["function", "addAttributeEditorNodeHelp"], + ["function", "addDynamic"], + ["function", "addNewShelfTab"], + ["function", "addPP"], + ["function", "addPanelCategory"], + ["function", "addPrefixToName"], + ["function", "advanceToNextDrivenKey"], + ["function", "affectedNet"], + ["function", "affects"], + ["function", "aimConstraint"], + ["function", "air"], + ["function", "alias"], + ["function", "aliasAttr"], + ["function", "align"], + ["function", "alignCtx"], + ["function", "alignCurve"], + ["function", "alignSurface"], + ["function", "allViewFit"], + ["function", "ambientLight"], + ["function", "angle"], + ["function", "angleBetween"], + ["function", "animCone"], + ["function", "animCurveEditor"], + ["function", "animDisplay"], + ["function", "animView"], + ["function", "annotate"], + ["function", "appendStringArray"], + ["function", "applicationName"], + ["function", "applyAttrPreset"], + ["function", "applyTake"], + ["function", "arcLenDimContext"], + ["function", "arcLengthDimension"], + ["function", "arclen"], + ["function", "arrayMapper"], + ["function", "art3dPaintCtx"], + ["function", "artAttrCtx"], + ["function", "artAttrPaintVertexCtx"], + ["function", "artAttrSkinPaintCtx"], + ["function", "artAttrTool"], + ["function", "artBuildPaintMenu"], + ["function", "artFluidAttrCtx"], + ["function", "artPuttyCtx"], + ["function", "artSelectCtx"], + ["function", "artSetPaintCtx"], + ["function", "artUserPaintCtx"], + ["function", "assignCommand"], + ["function", "assignInputDevice"], + ["function", "assignViewportFactories"], + ["function", "attachCurve"], + ["function", "attachDeviceAttr"], + ["function", "attachSurface"], + ["function", "attrColorSliderGrp"], + ["function", "attrCompatibility"], + ["function", "attrControlGrp"], + ["function", "attrEnumOptionMenu"], + ["function", "attrEnumOptionMenuGrp"], + ["function", "attrFieldGrp"], + ["function", "attrFieldSliderGrp"], + ["function", "attrNavigationControlGrp"], + ["function", "attrPresetEditWin"], + ["function", "attributeExists"], + ["function", "attributeInfo"], + ["function", "attributeMenu"], + ["function", "attributeQuery"], + ["function", "autoKeyframe"], + ["function", "autoPlace"], + ["function", "bakeClip"], + ["function", "bakeFluidShading"], + ["function", "bakePartialHistory"], + ["function", "bakeResults"], + ["function", "bakeSimulation"], + ["function", "basename"], + ["function", "basenameEx"], + ["function", "batchRender"], + ["function", "bessel"], + ["function", "bevel"], + ["function", "bevelPlus"], + ["function", "binMembership"], + ["function", "bindSkin"], + ["function", "blend2"], + ["function", "blendShape"], + ["function", "blendShapeEditor"], + ["function", "blendShapePanel"], + ["function", "blendTwoAttr"], + ["function", "blindDataType"], + ["function", "boneLattice"], + ["function", "boundary"], + ["function", "boxDollyCtx"], + ["function", "boxZoomCtx"], + ["function", "bufferCurve"], + ["function", "buildBookmarkMenu"], + ["function", "buildKeyframeMenu"], + ["function", "button"], + ["function", "buttonManip"], + ["function", "CBG"], + ["function", "cacheFile"], + ["function", "cacheFileCombine"], + ["function", "cacheFileMerge"], + ["function", "cacheFileTrack"], + ["function", "camera"], + ["function", "cameraView"], + ["function", "canCreateManip"], + ["function", "canvas"], + ["function", "capitalizeString"], + ["function", "catch"], + ["function", "catchQuiet"], + ["function", "ceil"], + ["function", "changeSubdivComponentDisplayLevel"], + ["function", "changeSubdivRegion"], + ["function", "channelBox"], + ["function", "character"], + ["function", "characterMap"], + ["function", "characterOutlineEditor"], + ["function", "characterize"], + ["function", "chdir"], + ["function", "checkBox"], + ["function", "checkBoxGrp"], + ["function", "checkDefaultRenderGlobals"], + ["function", "choice"], + ["function", "circle"], + ["function", "circularFillet"], + ["function", "clamp"], + ["function", "clear"], + ["function", "clearCache"], + ["function", "clip"], + ["function", "clipEditor"], + ["function", "clipEditorCurrentTimeCtx"], + ["function", "clipSchedule"], + ["function", "clipSchedulerOutliner"], + ["function", "clipTrimBefore"], + ["function", "closeCurve"], + ["function", "closeSurface"], + ["function", "cluster"], + ["function", "cmdFileOutput"], + ["function", "cmdScrollFieldExecuter"], + ["function", "cmdScrollFieldReporter"], + ["function", "cmdShell"], + ["function", "coarsenSubdivSelectionList"], + ["function", "collision"], + ["function", "color"], + ["function", "colorAtPoint"], + ["function", "colorEditor"], + ["function", "colorIndex"], + ["function", "colorIndexSliderGrp"], + ["function", "colorSliderButtonGrp"], + ["function", "colorSliderGrp"], + ["function", "columnLayout"], + ["function", "commandEcho"], + ["function", "commandLine"], + ["function", "commandPort"], + ["function", "compactHairSystem"], + ["function", "componentEditor"], + ["function", "compositingInterop"], + ["function", "computePolysetVolume"], + ["function", "condition"], + ["function", "cone"], + ["function", "confirmDialog"], + ["function", "connectAttr"], + ["function", "connectControl"], + ["function", "connectDynamic"], + ["function", "connectJoint"], + ["function", "connectionInfo"], + ["function", "constrain"], + ["function", "constrainValue"], + ["function", "constructionHistory"], + ["function", "container"], + ["function", "containsMultibyte"], + ["function", "contextInfo"], + ["function", "control"], + ["function", "convertFromOldLayers"], + ["function", "convertIffToPsd"], + ["function", "convertLightmap"], + ["function", "convertSolidTx"], + ["function", "convertTessellation"], + ["function", "convertUnit"], + ["function", "copyArray"], + ["function", "copyFlexor"], + ["function", "copyKey"], + ["function", "copySkinWeights"], + ["function", "cos"], + ["function", "cpButton"], + ["function", "cpCache"], + ["function", "cpClothSet"], + ["function", "cpCollision"], + ["function", "cpConstraint"], + ["function", "cpConvClothToMesh"], + ["function", "cpForces"], + ["function", "cpGetSolverAttr"], + ["function", "cpPanel"], + ["function", "cpProperty"], + ["function", "cpRigidCollisionFilter"], + ["function", "cpSeam"], + ["function", "cpSetEdit"], + ["function", "cpSetSolverAttr"], + ["function", "cpSolver"], + ["function", "cpSolverTypes"], + ["function", "cpTool"], + ["function", "cpUpdateClothUVs"], + ["function", "createDisplayLayer"], + ["function", "createDrawCtx"], + ["function", "createEditor"], + ["function", "createLayeredPsdFile"], + ["function", "createMotionField"], + ["function", "createNewShelf"], + ["function", "createNode"], + ["function", "createRenderLayer"], + ["function", "createSubdivRegion"], + ["function", "cross"], + ["function", "crossProduct"], + ["function", "ctxAbort"], + ["function", "ctxCompletion"], + ["function", "ctxEditMode"], + ["function", "ctxTraverse"], + ["function", "currentCtx"], + ["function", "currentTime"], + ["function", "currentTimeCtx"], + ["function", "currentUnit"], + ["function", "curve"], + ["function", "curveAddPtCtx"], + ["function", "curveCVCtx"], + ["function", "curveEPCtx"], + ["function", "curveEditorCtx"], + ["function", "curveIntersect"], + ["function", "curveMoveEPCtx"], + ["function", "curveOnSurface"], + ["function", "curveSketchCtx"], + ["function", "cutKey"], + ["function", "cycleCheck"], + ["function", "cylinder"], + ["function", "dagPose"], + ["function", "date"], + ["function", "defaultLightListCheckBox"], + ["function", "defaultNavigation"], + ["function", "defineDataServer"], + ["function", "defineVirtualDevice"], + ["function", "deformer"], + ["function", "deg_to_rad"], + ["function", "delete"], + ["function", "deleteAttr"], + ["function", "deleteShadingGroupsAndMaterials"], + ["function", "deleteShelfTab"], + ["function", "deleteUI"], + ["function", "deleteUnusedBrushes"], + ["function", "delrandstr"], + ["function", "detachCurve"], + ["function", "detachDeviceAttr"], + ["function", "detachSurface"], + ["function", "deviceEditor"], + ["function", "devicePanel"], + ["function", "dgInfo"], + ["function", "dgdirty"], + ["function", "dgeval"], + ["function", "dgtimer"], + ["function", "dimWhen"], + ["function", "directKeyCtx"], + ["function", "directionalLight"], + ["function", "dirmap"], + ["function", "dirname"], + ["function", "disable"], + ["function", "disconnectAttr"], + ["function", "disconnectJoint"], + ["function", "diskCache"], + ["function", "displacementToPoly"], + ["function", "displayAffected"], + ["function", "displayColor"], + ["function", "displayCull"], + ["function", "displayLevelOfDetail"], + ["function", "displayPref"], + ["function", "displayRGBColor"], + ["function", "displaySmoothness"], + ["function", "displayStats"], + ["function", "displayString"], + ["function", "displaySurface"], + ["function", "distanceDimContext"], + ["function", "distanceDimension"], + ["function", "doBlur"], + ["function", "dolly"], + ["function", "dollyCtx"], + ["function", "dopeSheetEditor"], + ["function", "dot"], + ["function", "dotProduct"], + ["function", "doubleProfileBirailSurface"], + ["function", "drag"], + ["function", "dragAttrContext"], + ["function", "draggerContext"], + ["function", "dropoffLocator"], + ["function", "duplicate"], + ["function", "duplicateCurve"], + ["function", "duplicateSurface"], + ["function", "dynCache"], + ["function", "dynControl"], + ["function", "dynExport"], + ["function", "dynExpression"], + ["function", "dynGlobals"], + ["function", "dynPaintEditor"], + ["function", "dynParticleCtx"], + ["function", "dynPref"], + ["function", "dynRelEdPanel"], + ["function", "dynRelEditor"], + ["function", "dynamicLoad"], + ["function", "editAttrLimits"], + ["function", "editDisplayLayerGlobals"], + ["function", "editDisplayLayerMembers"], + ["function", "editRenderLayerAdjustment"], + ["function", "editRenderLayerGlobals"], + ["function", "editRenderLayerMembers"], + ["function", "editor"], + ["function", "editorTemplate"], + ["function", "effector"], + ["function", "emit"], + ["function", "emitter"], + ["function", "enableDevice"], + ["function", "encodeString"], + ["function", "endString"], + ["function", "endsWith"], + ["function", "env"], + ["function", "equivalent"], + ["function", "equivalentTol"], + ["function", "erf"], + ["function", "error"], + ["function", "eval"], + ["function", "evalDeferred"], + ["function", "evalEcho"], + ["function", "event"], + ["function", "exactWorldBoundingBox"], + ["function", "exclusiveLightCheckBox"], + ["function", "exec"], + ["function", "executeForEachObject"], + ["function", "exists"], + ["function", "exp"], + ["function", "expression"], + ["function", "expressionEditorListen"], + ["function", "extendCurve"], + ["function", "extendSurface"], + ["function", "extrude"], + ["function", "fcheck"], + ["function", "fclose"], + ["function", "feof"], + ["function", "fflush"], + ["function", "fgetline"], + ["function", "fgetword"], + ["function", "file"], + ["function", "fileBrowserDialog"], + ["function", "fileDialog"], + ["function", "fileExtension"], + ["function", "fileInfo"], + ["function", "filetest"], + ["function", "filletCurve"], + ["function", "filter"], + ["function", "filterCurve"], + ["function", "filterExpand"], + ["function", "filterStudioImport"], + ["function", "findAllIntersections"], + ["function", "findAnimCurves"], + ["function", "findKeyframe"], + ["function", "findMenuItem"], + ["function", "findRelatedSkinCluster"], + ["function", "finder"], + ["function", "firstParentOf"], + ["function", "fitBspline"], + ["function", "flexor"], + ["function", "floatEq"], + ["function", "floatField"], + ["function", "floatFieldGrp"], + ["function", "floatScrollBar"], + ["function", "floatSlider"], + ["function", "floatSlider2"], + ["function", "floatSliderButtonGrp"], + ["function", "floatSliderGrp"], + ["function", "floor"], + ["function", "flow"], + ["function", "fluidCacheInfo"], + ["function", "fluidEmitter"], + ["function", "fluidVoxelInfo"], + ["function", "flushUndo"], + ["function", "fmod"], + ["function", "fontDialog"], + ["function", "fopen"], + ["function", "formLayout"], + ["function", "format"], + ["function", "fprint"], + ["function", "frameLayout"], + ["function", "fread"], + ["function", "freeFormFillet"], + ["function", "frewind"], + ["function", "fromNativePath"], + ["function", "fwrite"], + ["function", "gamma"], + ["function", "gauss"], + ["function", "geometryConstraint"], + ["function", "getApplicationVersionAsFloat"], + ["function", "getAttr"], + ["function", "getClassification"], + ["function", "getDefaultBrush"], + ["function", "getFileList"], + ["function", "getFluidAttr"], + ["function", "getInputDeviceRange"], + ["function", "getMayaPanelTypes"], + ["function", "getModifiers"], + ["function", "getPanel"], + ["function", "getParticleAttr"], + ["function", "getPluginResource"], + ["function", "getenv"], + ["function", "getpid"], + ["function", "glRender"], + ["function", "glRenderEditor"], + ["function", "globalStitch"], + ["function", "gmatch"], + ["function", "goal"], + ["function", "gotoBindPose"], + ["function", "grabColor"], + ["function", "gradientControl"], + ["function", "gradientControlNoAttr"], + ["function", "graphDollyCtx"], + ["function", "graphSelectContext"], + ["function", "graphTrackCtx"], + ["function", "gravity"], + ["function", "grid"], + ["function", "gridLayout"], + ["function", "group"], + ["function", "groupObjectsByName"], + ["function", "HfAddAttractorToAS"], + ["function", "HfAssignAS"], + ["function", "HfBuildEqualMap"], + ["function", "HfBuildFurFiles"], + ["function", "HfBuildFurImages"], + ["function", "HfCancelAFR"], + ["function", "HfConnectASToHF"], + ["function", "HfCreateAttractor"], + ["function", "HfDeleteAS"], + ["function", "HfEditAS"], + ["function", "HfPerformCreateAS"], + ["function", "HfRemoveAttractorFromAS"], + ["function", "HfSelectAttached"], + ["function", "HfSelectAttractors"], + ["function", "HfUnAssignAS"], + ["function", "hardenPointCurve"], + ["function", "hardware"], + ["function", "hardwareRenderPanel"], + ["function", "headsUpDisplay"], + ["function", "headsUpMessage"], + ["function", "help"], + ["function", "helpLine"], + ["function", "hermite"], + ["function", "hide"], + ["function", "hilite"], + ["function", "hitTest"], + ["function", "hotBox"], + ["function", "hotkey"], + ["function", "hotkeyCheck"], + ["function", "hsv_to_rgb"], + ["function", "hudButton"], + ["function", "hudSlider"], + ["function", "hudSliderButton"], + ["function", "hwReflectionMap"], + ["function", "hwRender"], + ["function", "hwRenderLoad"], + ["function", "hyperGraph"], + ["function", "hyperPanel"], + ["function", "hyperShade"], + ["function", "hypot"], + ["function", "iconTextButton"], + ["function", "iconTextCheckBox"], + ["function", "iconTextRadioButton"], + ["function", "iconTextRadioCollection"], + ["function", "iconTextScrollList"], + ["function", "iconTextStaticLabel"], + ["function", "ikHandle"], + ["function", "ikHandleCtx"], + ["function", "ikHandleDisplayScale"], + ["function", "ikSolver"], + ["function", "ikSplineHandleCtx"], + ["function", "ikSystem"], + ["function", "ikSystemInfo"], + ["function", "ikfkDisplayMethod"], + ["function", "illustratorCurves"], + ["function", "image"], + ["function", "imfPlugins"], + ["function", "inheritTransform"], + ["function", "insertJoint"], + ["function", "insertJointCtx"], + ["function", "insertKeyCtx"], + ["function", "insertKnotCurve"], + ["function", "insertKnotSurface"], + ["function", "instance"], + ["function", "instanceable"], + ["function", "instancer"], + ["function", "intField"], + ["function", "intFieldGrp"], + ["function", "intScrollBar"], + ["function", "intSlider"], + ["function", "intSliderGrp"], + ["function", "interToUI"], + ["function", "internalVar"], + ["function", "intersect"], + ["function", "iprEngine"], + ["function", "isAnimCurve"], + ["function", "isConnected"], + ["function", "isDirty"], + ["function", "isParentOf"], + ["function", "isSameObject"], + ["function", "isTrue"], + ["function", "isValidObjectName"], + ["function", "isValidString"], + ["function", "isValidUiName"], + ["function", "isolateSelect"], + ["function", "itemFilter"], + ["function", "itemFilterAttr"], + ["function", "itemFilterRender"], + ["function", "itemFilterType"], + ["function", "joint"], + ["function", "jointCluster"], + ["function", "jointCtx"], + ["function", "jointDisplayScale"], + ["function", "jointLattice"], + ["function", "keyTangent"], + ["function", "keyframe"], + ["function", "keyframeOutliner"], + ["function", "keyframeRegionCurrentTimeCtx"], + ["function", "keyframeRegionDirectKeyCtx"], + ["function", "keyframeRegionDollyCtx"], + ["function", "keyframeRegionInsertKeyCtx"], + ["function", "keyframeRegionMoveKeyCtx"], + ["function", "keyframeRegionScaleKeyCtx"], + ["function", "keyframeRegionSelectKeyCtx"], + ["function", "keyframeRegionSetKeyCtx"], + ["function", "keyframeRegionTrackCtx"], + ["function", "keyframeStats"], + ["function", "lassoContext"], + ["function", "lattice"], + ["function", "latticeDeformKeyCtx"], + ["function", "launch"], + ["function", "launchImageEditor"], + ["function", "layerButton"], + ["function", "layeredShaderPort"], + ["function", "layeredTexturePort"], + ["function", "layout"], + ["function", "layoutDialog"], + ["function", "lightList"], + ["function", "lightListEditor"], + ["function", "lightListPanel"], + ["function", "lightlink"], + ["function", "lineIntersection"], + ["function", "linearPrecision"], + ["function", "linstep"], + ["function", "listAnimatable"], + ["function", "listAttr"], + ["function", "listCameras"], + ["function", "listConnections"], + ["function", "listDeviceAttachments"], + ["function", "listHistory"], + ["function", "listInputDeviceAxes"], + ["function", "listInputDeviceButtons"], + ["function", "listInputDevices"], + ["function", "listMenuAnnotation"], + ["function", "listNodeTypes"], + ["function", "listPanelCategories"], + ["function", "listRelatives"], + ["function", "listSets"], + ["function", "listTransforms"], + ["function", "listUnselected"], + ["function", "listerEditor"], + ["function", "loadFluid"], + ["function", "loadNewShelf"], + ["function", "loadPlugin"], + ["function", "loadPluginLanguageResources"], + ["function", "loadPrefObjects"], + ["function", "localizedPanelLabel"], + ["function", "lockNode"], + ["function", "loft"], + ["function", "log"], + ["function", "longNameOf"], + ["function", "lookThru"], + ["function", "ls"], + ["function", "lsThroughFilter"], + ["function", "lsType"], + ["function", "lsUI"], + ["function", "Mayatomr"], + ["function", "mag"], + ["function", "makeIdentity"], + ["function", "makeLive"], + ["function", "makePaintable"], + ["function", "makeRoll"], + ["function", "makeSingleSurface"], + ["function", "makeTubeOn"], + ["function", "makebot"], + ["function", "manipMoveContext"], + ["function", "manipMoveLimitsCtx"], + ["function", "manipOptions"], + ["function", "manipRotateContext"], + ["function", "manipRotateLimitsCtx"], + ["function", "manipScaleContext"], + ["function", "manipScaleLimitsCtx"], + ["function", "marker"], + ["function", "match"], + ["function", "max"], + ["function", "memory"], + ["function", "menu"], + ["function", "menuBarLayout"], + ["function", "menuEditor"], + ["function", "menuItem"], + ["function", "menuItemToShelf"], + ["function", "menuSet"], + ["function", "menuSetPref"], + ["function", "messageLine"], + ["function", "min"], + ["function", "minimizeApp"], + ["function", "mirrorJoint"], + ["function", "modelCurrentTimeCtx"], + ["function", "modelEditor"], + ["function", "modelPanel"], + ["function", "mouse"], + ["function", "movIn"], + ["function", "movOut"], + ["function", "move"], + ["function", "moveIKtoFK"], + ["function", "moveKeyCtx"], + ["function", "moveVertexAlongDirection"], + ["function", "multiProfileBirailSurface"], + ["function", "mute"], + ["function", "nParticle"], + ["function", "nameCommand"], + ["function", "nameField"], + ["function", "namespace"], + ["function", "namespaceInfo"], + ["function", "newPanelItems"], + ["function", "newton"], + ["function", "nodeCast"], + ["function", "nodeIconButton"], + ["function", "nodeOutliner"], + ["function", "nodePreset"], + ["function", "nodeType"], + ["function", "noise"], + ["function", "nonLinear"], + ["function", "normalConstraint"], + ["function", "normalize"], + ["function", "nurbsBoolean"], + ["function", "nurbsCopyUVSet"], + ["function", "nurbsCube"], + ["function", "nurbsEditUV"], + ["function", "nurbsPlane"], + ["function", "nurbsSelect"], + ["function", "nurbsSquare"], + ["function", "nurbsToPoly"], + ["function", "nurbsToPolygonsPref"], + ["function", "nurbsToSubdiv"], + ["function", "nurbsToSubdivPref"], + ["function", "nurbsUVSet"], + ["function", "nurbsViewDirectionVector"], + ["function", "objExists"], + ["function", "objectCenter"], + ["function", "objectLayer"], + ["function", "objectType"], + ["function", "objectTypeUI"], + ["function", "obsoleteProc"], + ["function", "oceanNurbsPreviewPlane"], + ["function", "offsetCurve"], + ["function", "offsetCurveOnSurface"], + ["function", "offsetSurface"], + ["function", "openGLExtension"], + ["function", "openMayaPref"], + ["function", "optionMenu"], + ["function", "optionMenuGrp"], + ["function", "optionVar"], + ["function", "orbit"], + ["function", "orbitCtx"], + ["function", "orientConstraint"], + ["function", "outlinerEditor"], + ["function", "outlinerPanel"], + ["function", "overrideModifier"], + ["function", "paintEffectsDisplay"], + ["function", "pairBlend"], + ["function", "palettePort"], + ["function", "paneLayout"], + ["function", "panel"], + ["function", "panelConfiguration"], + ["function", "panelHistory"], + ["function", "paramDimContext"], + ["function", "paramDimension"], + ["function", "paramLocator"], + ["function", "parent"], + ["function", "parentConstraint"], + ["function", "particle"], + ["function", "particleExists"], + ["function", "particleInstancer"], + ["function", "particleRenderInfo"], + ["function", "partition"], + ["function", "pasteKey"], + ["function", "pathAnimation"], + ["function", "pause"], + ["function", "pclose"], + ["function", "percent"], + ["function", "performanceOptions"], + ["function", "pfxstrokes"], + ["function", "pickWalk"], + ["function", "picture"], + ["function", "pixelMove"], + ["function", "planarSrf"], + ["function", "plane"], + ["function", "play"], + ["function", "playbackOptions"], + ["function", "playblast"], + ["function", "plugAttr"], + ["function", "plugNode"], + ["function", "pluginInfo"], + ["function", "pluginResourceUtil"], + ["function", "pointConstraint"], + ["function", "pointCurveConstraint"], + ["function", "pointLight"], + ["function", "pointMatrixMult"], + ["function", "pointOnCurve"], + ["function", "pointOnSurface"], + ["function", "pointPosition"], + ["function", "poleVectorConstraint"], + ["function", "polyAppend"], + ["function", "polyAppendFacetCtx"], + ["function", "polyAppendVertex"], + ["function", "polyAutoProjection"], + ["function", "polyAverageNormal"], + ["function", "polyAverageVertex"], + ["function", "polyBevel"], + ["function", "polyBlendColor"], + ["function", "polyBlindData"], + ["function", "polyBoolOp"], + ["function", "polyBridgeEdge"], + ["function", "polyCacheMonitor"], + ["function", "polyCheck"], + ["function", "polyChipOff"], + ["function", "polyClipboard"], + ["function", "polyCloseBorder"], + ["function", "polyCollapseEdge"], + ["function", "polyCollapseFacet"], + ["function", "polyColorBlindData"], + ["function", "polyColorDel"], + ["function", "polyColorPerVertex"], + ["function", "polyColorSet"], + ["function", "polyCompare"], + ["function", "polyCone"], + ["function", "polyCopyUV"], + ["function", "polyCrease"], + ["function", "polyCreaseCtx"], + ["function", "polyCreateFacet"], + ["function", "polyCreateFacetCtx"], + ["function", "polyCube"], + ["function", "polyCut"], + ["function", "polyCutCtx"], + ["function", "polyCylinder"], + ["function", "polyCylindricalProjection"], + ["function", "polyDelEdge"], + ["function", "polyDelFacet"], + ["function", "polyDelVertex"], + ["function", "polyDuplicateAndConnect"], + ["function", "polyDuplicateEdge"], + ["function", "polyEditUV"], + ["function", "polyEditUVShell"], + ["function", "polyEvaluate"], + ["function", "polyExtrudeEdge"], + ["function", "polyExtrudeFacet"], + ["function", "polyExtrudeVertex"], + ["function", "polyFlipEdge"], + ["function", "polyFlipUV"], + ["function", "polyForceUV"], + ["function", "polyGeoSampler"], + ["function", "polyHelix"], + ["function", "polyInfo"], + ["function", "polyInstallAction"], + ["function", "polyLayoutUV"], + ["function", "polyListComponentConversion"], + ["function", "polyMapCut"], + ["function", "polyMapDel"], + ["function", "polyMapSew"], + ["function", "polyMapSewMove"], + ["function", "polyMergeEdge"], + ["function", "polyMergeEdgeCtx"], + ["function", "polyMergeFacet"], + ["function", "polyMergeFacetCtx"], + ["function", "polyMergeUV"], + ["function", "polyMergeVertex"], + ["function", "polyMirrorFace"], + ["function", "polyMoveEdge"], + ["function", "polyMoveFacet"], + ["function", "polyMoveFacetUV"], + ["function", "polyMoveUV"], + ["function", "polyMoveVertex"], + ["function", "polyNormal"], + ["function", "polyNormalPerVertex"], + ["function", "polyNormalizeUV"], + ["function", "polyOptUvs"], + ["function", "polyOptions"], + ["function", "polyOutput"], + ["function", "polyPipe"], + ["function", "polyPlanarProjection"], + ["function", "polyPlane"], + ["function", "polyPlatonicSolid"], + ["function", "polyPoke"], + ["function", "polyPrimitive"], + ["function", "polyPrism"], + ["function", "polyProjection"], + ["function", "polyPyramid"], + ["function", "polyQuad"], + ["function", "polyQueryBlindData"], + ["function", "polyReduce"], + ["function", "polySelect"], + ["function", "polySelectConstraint"], + ["function", "polySelectConstraintMonitor"], + ["function", "polySelectCtx"], + ["function", "polySelectEditCtx"], + ["function", "polySeparate"], + ["function", "polySetToFaceNormal"], + ["function", "polySewEdge"], + ["function", "polyShortestPathCtx"], + ["function", "polySmooth"], + ["function", "polySoftEdge"], + ["function", "polySphere"], + ["function", "polySphericalProjection"], + ["function", "polySplit"], + ["function", "polySplitCtx"], + ["function", "polySplitEdge"], + ["function", "polySplitRing"], + ["function", "polySplitVertex"], + ["function", "polyStraightenUVBorder"], + ["function", "polySubdivideEdge"], + ["function", "polySubdivideFacet"], + ["function", "polyToSubdiv"], + ["function", "polyTorus"], + ["function", "polyTransfer"], + ["function", "polyTriangulate"], + ["function", "polyUVSet"], + ["function", "polyUnite"], + ["function", "polyWedgeFace"], + ["function", "popen"], + ["function", "popupMenu"], + ["function", "pose"], + ["function", "pow"], + ["function", "preloadRefEd"], + ["function", "print"], + ["function", "progressBar"], + ["function", "progressWindow"], + ["function", "projFileViewer"], + ["function", "projectCurve"], + ["function", "projectTangent"], + ["function", "projectionContext"], + ["function", "projectionManip"], + ["function", "promptDialog"], + ["function", "propModCtx"], + ["function", "propMove"], + ["function", "psdChannelOutliner"], + ["function", "psdEditTextureFile"], + ["function", "psdExport"], + ["function", "psdTextureFile"], + ["function", "putenv"], + ["function", "pwd"], + ["function", "python"], + ["function", "querySubdiv"], + ["function", "quit"], + ["function", "rad_to_deg"], + ["function", "radial"], + ["function", "radioButton"], + ["function", "radioButtonGrp"], + ["function", "radioCollection"], + ["function", "radioMenuItemCollection"], + ["function", "rampColorPort"], + ["function", "rand"], + ["function", "randomizeFollicles"], + ["function", "randstate"], + ["function", "rangeControl"], + ["function", "readTake"], + ["function", "rebuildCurve"], + ["function", "rebuildSurface"], + ["function", "recordAttr"], + ["function", "recordDevice"], + ["function", "redo"], + ["function", "reference"], + ["function", "referenceEdit"], + ["function", "referenceQuery"], + ["function", "refineSubdivSelectionList"], + ["function", "refresh"], + ["function", "refreshAE"], + ["function", "registerPluginResource"], + ["function", "rehash"], + ["function", "reloadImage"], + ["function", "removeJoint"], + ["function", "removeMultiInstance"], + ["function", "removePanelCategory"], + ["function", "rename"], + ["function", "renameAttr"], + ["function", "renameSelectionList"], + ["function", "renameUI"], + ["function", "render"], + ["function", "renderGlobalsNode"], + ["function", "renderInfo"], + ["function", "renderLayerButton"], + ["function", "renderLayerParent"], + ["function", "renderLayerPostProcess"], + ["function", "renderLayerUnparent"], + ["function", "renderManip"], + ["function", "renderPartition"], + ["function", "renderQualityNode"], + ["function", "renderSettings"], + ["function", "renderThumbnailUpdate"], + ["function", "renderWindowEditor"], + ["function", "renderWindowSelectContext"], + ["function", "renderer"], + ["function", "reorder"], + ["function", "reorderDeformers"], + ["function", "requires"], + ["function", "reroot"], + ["function", "resampleFluid"], + ["function", "resetAE"], + ["function", "resetPfxToPolyCamera"], + ["function", "resetTool"], + ["function", "resolutionNode"], + ["function", "retarget"], + ["function", "reverseCurve"], + ["function", "reverseSurface"], + ["function", "revolve"], + ["function", "rgb_to_hsv"], + ["function", "rigidBody"], + ["function", "rigidSolver"], + ["function", "roll"], + ["function", "rollCtx"], + ["function", "rootOf"], + ["function", "rot"], + ["function", "rotate"], + ["function", "rotationInterpolation"], + ["function", "roundConstantRadius"], + ["function", "rowColumnLayout"], + ["function", "rowLayout"], + ["function", "runTimeCommand"], + ["function", "runup"], + ["function", "sampleImage"], + ["function", "saveAllShelves"], + ["function", "saveAttrPreset"], + ["function", "saveFluid"], + ["function", "saveImage"], + ["function", "saveInitialState"], + ["function", "saveMenu"], + ["function", "savePrefObjects"], + ["function", "savePrefs"], + ["function", "saveShelf"], + ["function", "saveToolSettings"], + ["function", "scale"], + ["function", "scaleBrushBrightness"], + ["function", "scaleComponents"], + ["function", "scaleConstraint"], + ["function", "scaleKey"], + ["function", "scaleKeyCtx"], + ["function", "sceneEditor"], + ["function", "sceneUIReplacement"], + ["function", "scmh"], + ["function", "scriptCtx"], + ["function", "scriptEditorInfo"], + ["function", "scriptJob"], + ["function", "scriptNode"], + ["function", "scriptTable"], + ["function", "scriptToShelf"], + ["function", "scriptedPanel"], + ["function", "scriptedPanelType"], + ["function", "scrollField"], + ["function", "scrollLayout"], + ["function", "sculpt"], + ["function", "searchPathArray"], + ["function", "seed"], + ["function", "selLoadSettings"], + ["function", "select"], + ["function", "selectContext"], + ["function", "selectCurveCV"], + ["function", "selectKey"], + ["function", "selectKeyCtx"], + ["function", "selectKeyframeRegionCtx"], + ["function", "selectMode"], + ["function", "selectPref"], + ["function", "selectPriority"], + ["function", "selectType"], + ["function", "selectedNodes"], + ["function", "selectionConnection"], + ["function", "separator"], + ["function", "setAttr"], + ["function", "setAttrEnumResource"], + ["function", "setAttrMapping"], + ["function", "setAttrNiceNameResource"], + ["function", "setConstraintRestPosition"], + ["function", "setDefaultShadingGroup"], + ["function", "setDrivenKeyframe"], + ["function", "setDynamic"], + ["function", "setEditCtx"], + ["function", "setEditor"], + ["function", "setFluidAttr"], + ["function", "setFocus"], + ["function", "setInfinity"], + ["function", "setInputDeviceMapping"], + ["function", "setKeyCtx"], + ["function", "setKeyPath"], + ["function", "setKeyframe"], + ["function", "setKeyframeBlendshapeTargetWts"], + ["function", "setMenuMode"], + ["function", "setNodeNiceNameResource"], + ["function", "setNodeTypeFlag"], + ["function", "setParent"], + ["function", "setParticleAttr"], + ["function", "setPfxToPolyCamera"], + ["function", "setPluginResource"], + ["function", "setProject"], + ["function", "setStampDensity"], + ["function", "setStartupMessage"], + ["function", "setState"], + ["function", "setToolTo"], + ["function", "setUITemplate"], + ["function", "setXformManip"], + ["function", "sets"], + ["function", "shadingConnection"], + ["function", "shadingGeometryRelCtx"], + ["function", "shadingLightRelCtx"], + ["function", "shadingNetworkCompare"], + ["function", "shadingNode"], + ["function", "shapeCompare"], + ["function", "shelfButton"], + ["function", "shelfLayout"], + ["function", "shelfTabLayout"], + ["function", "shellField"], + ["function", "shortNameOf"], + ["function", "showHelp"], + ["function", "showHidden"], + ["function", "showManipCtx"], + ["function", "showSelectionInTitle"], + ["function", "showShadingGroupAttrEditor"], + ["function", "showWindow"], + ["function", "sign"], + ["function", "simplify"], + ["function", "sin"], + ["function", "singleProfileBirailSurface"], + ["function", "size"], + ["function", "sizeBytes"], + ["function", "skinCluster"], + ["function", "skinPercent"], + ["function", "smoothCurve"], + ["function", "smoothTangentSurface"], + ["function", "smoothstep"], + ["function", "snap2to2"], + ["function", "snapKey"], + ["function", "snapMode"], + ["function", "snapTogetherCtx"], + ["function", "snapshot"], + ["function", "soft"], + ["function", "softMod"], + ["function", "softModCtx"], + ["function", "sort"], + ["function", "sound"], + ["function", "soundControl"], + ["function", "source"], + ["function", "spaceLocator"], + ["function", "sphere"], + ["function", "sphrand"], + ["function", "spotLight"], + ["function", "spotLightPreviewPort"], + ["function", "spreadSheetEditor"], + ["function", "spring"], + ["function", "sqrt"], + ["function", "squareSurface"], + ["function", "srtContext"], + ["function", "stackTrace"], + ["function", "startString"], + ["function", "startsWith"], + ["function", "stitchAndExplodeShell"], + ["function", "stitchSurface"], + ["function", "stitchSurfacePoints"], + ["function", "strcmp"], + ["function", "stringArrayCatenate"], + ["function", "stringArrayContains"], + ["function", "stringArrayCount"], + ["function", "stringArrayInsertAtIndex"], + ["function", "stringArrayIntersector"], + ["function", "stringArrayRemove"], + ["function", "stringArrayRemoveAtIndex"], + ["function", "stringArrayRemoveDuplicates"], + ["function", "stringArrayRemoveExact"], + ["function", "stringArrayToString"], + ["function", "stringToStringArray"], + ["function", "strip"], + ["function", "stripPrefixFromName"], + ["function", "stroke"], + ["function", "subdAutoProjection"], + ["function", "subdCleanTopology"], + ["function", "subdCollapse"], + ["function", "subdDuplicateAndConnect"], + ["function", "subdEditUV"], + ["function", "subdListComponentConversion"], + ["function", "subdMapCut"], + ["function", "subdMapSewMove"], + ["function", "subdMatchTopology"], + ["function", "subdMirror"], + ["function", "subdToBlind"], + ["function", "subdToPoly"], + ["function", "subdTransferUVsToCache"], + ["function", "subdiv"], + ["function", "subdivCrease"], + ["function", "subdivDisplaySmoothness"], + ["function", "substitute"], + ["function", "substituteAllString"], + ["function", "substituteGeometry"], + ["function", "substring"], + ["function", "surface"], + ["function", "surfaceSampler"], + ["function", "surfaceShaderList"], + ["function", "swatchDisplayPort"], + ["function", "switchTable"], + ["function", "symbolButton"], + ["function", "symbolCheckBox"], + ["function", "sysFile"], + ["function", "system"], + ["function", "tabLayout"], + ["function", "tan"], + ["function", "tangentConstraint"], + ["function", "texLatticeDeformContext"], + ["function", "texManipContext"], + ["function", "texMoveContext"], + ["function", "texMoveUVShellContext"], + ["function", "texRotateContext"], + ["function", "texScaleContext"], + ["function", "texSelectContext"], + ["function", "texSelectShortestPathCtx"], + ["function", "texSmudgeUVContext"], + ["function", "texWinToolCtx"], + ["function", "text"], + ["function", "textCurves"], + ["function", "textField"], + ["function", "textFieldButtonGrp"], + ["function", "textFieldGrp"], + ["function", "textManip"], + ["function", "textScrollList"], + ["function", "textToShelf"], + ["function", "textureDisplacePlane"], + ["function", "textureHairColor"], + ["function", "texturePlacementContext"], + ["function", "textureWindow"], + ["function", "threadCount"], + ["function", "threePointArcCtx"], + ["function", "timeControl"], + ["function", "timePort"], + ["function", "timerX"], + ["function", "toNativePath"], + ["function", "toggle"], + ["function", "toggleAxis"], + ["function", "toggleWindowVisibility"], + ["function", "tokenize"], + ["function", "tokenizeList"], + ["function", "tolerance"], + ["function", "tolower"], + ["function", "toolButton"], + ["function", "toolCollection"], + ["function", "toolDropped"], + ["function", "toolHasOptions"], + ["function", "toolPropertyWindow"], + ["function", "torus"], + ["function", "toupper"], + ["function", "trace"], + ["function", "track"], + ["function", "trackCtx"], + ["function", "transferAttributes"], + ["function", "transformCompare"], + ["function", "transformLimits"], + ["function", "translator"], + ["function", "trim"], + ["function", "trunc"], + ["function", "truncateFluidCache"], + ["function", "truncateHairCache"], + ["function", "tumble"], + ["function", "tumbleCtx"], + ["function", "turbulence"], + ["function", "twoPointArcCtx"], + ["function", "uiRes"], + ["function", "uiTemplate"], + ["function", "unassignInputDevice"], + ["function", "undo"], + ["function", "undoInfo"], + ["function", "ungroup"], + ["function", "uniform"], + ["function", "unit"], + ["function", "unloadPlugin"], + ["function", "untangleUV"], + ["function", "untitledFileName"], + ["function", "untrim"], + ["function", "upAxis"], + ["function", "updateAE"], + ["function", "userCtx"], + ["function", "uvLink"], + ["function", "uvSnapshot"], + ["function", "validateShelfName"], + ["function", "vectorize"], + ["function", "view2dToolCtx"], + ["function", "viewCamera"], + ["function", "viewClipPlane"], + ["function", "viewFit"], + ["function", "viewHeadOn"], + ["function", "viewLookAt"], + ["function", "viewManip"], + ["function", "viewPlace"], + ["function", "viewSet"], + ["function", "visor"], + ["function", "volumeAxis"], + ["function", "vortex"], + ["function", "waitCursor"], + ["function", "warning"], + ["function", "webBrowser"], + ["function", "webBrowserPrefs"], + ["function", "whatIs"], + ["function", "window"], + ["function", "windowPref"], + ["function", "wire"], + ["function", "wireContext"], + ["function", "workspace"], + ["function", "wrinkle"], + ["function", "wrinkleContext"], + ["function", "writeTake"], + ["function", "xbmLangPathList"], + ["function", "xform"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/keyword_feature.test new file mode 100644 index 0000000000..b2da9d983d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/keyword_feature.test @@ -0,0 +1,47 @@ +break +case +continue +default +do +else +float +for +global +if +in +int +matrix +proc +return +string +switch +vector +while + +---------------------------------------------------- + +[ + ["keyword", "break"], + ["keyword", "case"], + ["keyword", "continue"], + ["keyword", "default"], + ["keyword", "do"], + ["keyword", "else"], + ["keyword", "float"], + ["keyword", "for"], + ["keyword", "global"], + ["keyword", "if"], + ["keyword", "in"], + ["keyword", "int"], + ["keyword", "matrix"], + ["keyword", "proc"], + ["keyword", "return"], + ["keyword", "string"], + ["keyword", "switch"], + ["keyword", "vector"], + ["keyword", "while"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/number_feature.test new file mode 100644 index 0000000000..70b47e0b1b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/number_feature.test @@ -0,0 +1,15 @@ +0xBadFace +42 +3.14159 + +---------------------------------------------------- + +[ + ["number", "0xBadFace"], + ["number", "42"], + ["number", "3.14159"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/operator_feature.test new file mode 100644 index 0000000000..942da826a5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/operator_feature.test @@ -0,0 +1,33 @@ ++ ++ += +- -- -= +* *= +/ /= +! != += == +&& +|| +< <= +> >= +% +^ + +---------------------------------------------------- + +[ + ["operator", "+"], ["operator", "++"], ["operator", "+="], + ["operator", "-"], ["operator", "--"], ["operator", "-="], + ["operator", "*"], ["operator", "*="], + ["operator", "/"], ["operator", "/="], + ["operator", "!"], ["operator", "!="], + ["operator", "="], ["operator", "=="], + ["operator", "&&"], + ["operator", "||"], + ["operator", "<"], ["operator", "<="], + ["operator", ">"], ["operator", ">="], + ["operator", "%"], + ["operator", "^"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/string_feature.test new file mode 100644 index 0000000000..b3c6ec9549 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/string_feature.test @@ -0,0 +1,13 @@ +"" +"fo\"obar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mel/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mel/variable_feature.test new file mode 100644 index 0000000000..50d3c223f5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mel/variable_feature.test @@ -0,0 +1,15 @@ +$x +$foo42 +$Foo_Bar_42 + +---------------------------------------------------- + +[ + ["variable", "$x"], + ["variable", "$foo42"], + ["variable", "$Foo_Bar_42"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mizar/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mizar/comment_feature.test new file mode 100644 index 0000000000..7a465c1e79 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mizar/comment_feature.test @@ -0,0 +1,11 @@ +:: Foobar + +---------------------------------------------------- + +[ + ["comment", ":: Foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mizar/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mizar/keyword_feature.test new file mode 100644 index 0000000000..01656f1ee4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mizar/keyword_feature.test @@ -0,0 +1,245 @@ +@proof +according +aggregate +all +and +antonym +are +as +associativity +assume +asymmetry +attr +be +begin +being +by +canceled +case +cases +cluster +clusters +coherence +commutativity +compatibility +connectedness +consider +consistency +constructors +contradiction +correctness +def +deffunc +define +definition +definitions +defpred +do +does +equals +end +environ +ex +exactly +existence +for +from +func +given +hence +hereby +holds +idempotence +identity +if +iff +implies +involutiveness +irreflexivity +is +it +let +means +mode +non +not +notation +notations +now +of +or +otherwise +over +per +pred +prefix +projectivity +proof +provided +qua +reconsider +redefine +reduce +reducibility +reflexivity +registration +registrations +requirements +reserve +sch +scheme +schemes +section +selector +set +sethood +st +struct +such +suppose +symmetry +synonym +take +that +the +then +theorem +theorems +thesis +thus +to +transitivity +uniqueness +vocabulary +vocabularies +when +where +with +wrt + +---------------------------------------------------- + +[ + ["keyword", "@proof"], + ["keyword", "according"], + ["keyword", "aggregate"], + ["keyword", "all"], + ["keyword", "and"], + ["keyword", "antonym"], + ["keyword", "are"], + ["keyword", "as"], + ["keyword", "associativity"], + ["keyword", "assume"], + ["keyword", "asymmetry"], + ["keyword", "attr"], + ["keyword", "be"], + ["keyword", "begin"], + ["keyword", "being"], + ["keyword", "by"], + ["keyword", "canceled"], + ["keyword", "case"], + ["keyword", "cases"], + ["keyword", "cluster"], + ["keyword", "clusters"], + ["keyword", "coherence"], + ["keyword", "commutativity"], + ["keyword", "compatibility"], + ["keyword", "connectedness"], + ["keyword", "consider"], + ["keyword", "consistency"], + ["keyword", "constructors"], + ["keyword", "contradiction"], + ["keyword", "correctness"], + ["keyword", "def"], + ["keyword", "deffunc"], + ["keyword", "define"], + ["keyword", "definition"], + ["keyword", "definitions"], + ["keyword", "defpred"], + ["keyword", "do"], + ["keyword", "does"], + ["keyword", "equals"], + ["keyword", "end"], + ["keyword", "environ"], + ["keyword", "ex"], + ["keyword", "exactly"], + ["keyword", "existence"], + ["keyword", "for"], + ["keyword", "from"], + ["keyword", "func"], + ["keyword", "given"], + ["keyword", "hence"], + ["keyword", "hereby"], + ["keyword", "holds"], + ["keyword", "idempotence"], + ["keyword", "identity"], + ["keyword", "if"], + ["keyword", "iff"], + ["keyword", "implies"], + ["keyword", "involutiveness"], + ["keyword", "irreflexivity"], + ["keyword", "is"], + ["keyword", "it"], + ["keyword", "let"], + ["keyword", "means"], + ["keyword", "mode"], + ["keyword", "non"], + ["keyword", "not"], + ["keyword", "notation"], + ["keyword", "notations"], + ["keyword", "now"], + ["keyword", "of"], + ["keyword", "or"], + ["keyword", "otherwise"], + ["keyword", "over"], + ["keyword", "per"], + ["keyword", "pred"], + ["keyword", "prefix"], + ["keyword", "projectivity"], + ["keyword", "proof"], + ["keyword", "provided"], + ["keyword", "qua"], + ["keyword", "reconsider"], + ["keyword", "redefine"], + ["keyword", "reduce"], + ["keyword", "reducibility"], + ["keyword", "reflexivity"], + ["keyword", "registration"], + ["keyword", "registrations"], + ["keyword", "requirements"], + ["keyword", "reserve"], + ["keyword", "sch"], + ["keyword", "scheme"], + ["keyword", "schemes"], + ["keyword", "section"], + ["keyword", "selector"], + ["keyword", "set"], + ["keyword", "sethood"], + ["keyword", "st"], + ["keyword", "struct"], + ["keyword", "such"], + ["keyword", "suppose"], + ["keyword", "symmetry"], + ["keyword", "synonym"], + ["keyword", "take"], + ["keyword", "that"], + ["keyword", "the"], + ["keyword", "then"], + ["keyword", "theorem"], + ["keyword", "theorems"], + ["keyword", "thesis"], + ["keyword", "thus"], + ["keyword", "to"], + ["keyword", "transitivity"], + ["keyword", "uniqueness"], + ["keyword", "vocabulary"], + ["keyword", "vocabularies"], + ["keyword", "when"], + ["keyword", "where"], + ["keyword", "with"], + ["keyword", "wrt"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mizar/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mizar/number_feature.test new file mode 100644 index 0000000000..5c5c8bb7a5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mizar/number_feature.test @@ -0,0 +1,15 @@ +0 +-2 +42 + +---------------------------------------------------- + +[ + ["number", "0"], + ["number", "-2"], + ["number", "42"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mizar/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mizar/operator_feature.test new file mode 100644 index 0000000000..814428d225 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mizar/operator_feature.test @@ -0,0 +1,17 @@ +... +-> +& += .= + +---------------------------------------------------- + +[ + ["operator", "..."], + ["operator", "->"], + ["operator", "&"], + ["operator", "="], ["operator", ".="] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mizar/parameter_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mizar/parameter_feature.test new file mode 100644 index 0000000000..844f09d5e7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mizar/parameter_feature.test @@ -0,0 +1,17 @@ +$1 $2 $3 +$4 $5 $6 +$6 $7 $9 +$10 + +---------------------------------------------------- + +[ + ["parameter", "$1"], ["parameter", "$2"], ["parameter", "$3"], + ["parameter", "$4"], ["parameter", "$5"], ["parameter", "$6"], + ["parameter", "$6"], ["parameter", "$7"], ["parameter", "$9"], + ["parameter", "$10"] +] + +---------------------------------------------------- + +Checks for parameters. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/mizar/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/mizar/variable_feature.test new file mode 100644 index 0000000000..238d1af1c1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/mizar/variable_feature.test @@ -0,0 +1,17 @@ +P: +CQC_THE1: +PRE_FF: +NAT_1: + +---------------------------------------------------- + +[ + ["variable", "P"], ["punctuation", ":"], + ["variable", "CQC_THE1"], ["punctuation", ":"], + ["variable", "PRE_FF"], ["punctuation", ":"], + ["variable", "NAT_1"], ["punctuation", ":"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/comment_feature.test new file mode 100644 index 0000000000..56bbfea7a3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/comment_feature.test @@ -0,0 +1,15 @@ +' Foobar +#Rem Foo +Bar 'Baz +#End + +---------------------------------------------------- + +[ + ["comment", "' Foobar"], + ["comment", "#Rem Foo\r\nBar 'Baz\r\n#End"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/function_feature.test new file mode 100644 index 0000000000..8d138142fe --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/function_feature.test @@ -0,0 +1,13 @@ +foobar() +Foo_Bar_42() + +---------------------------------------------------- + +[ + ["function", "foobar"], ["punctuation", "("], ["punctuation", ")"], + ["function", "Foo_Bar_42"], ["punctuation", "("], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/keyword_feature.test new file mode 100644 index 0000000000..73baffcdc3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/keyword_feature.test @@ -0,0 +1,125 @@ +Void +Strict +Public +Private +Property +Bool +Int +Float +String +Array +Object +Continue +Exit +Import +Extern +New +Self +Super +Try +Catch +Eachin +True +False +Extends +Abstract +Final +Select +Case +Default +Const +Local +Global +Field +Method +Function +Class +End +If +Then +Else +ElseIf +EndIf +While +Wend +Repeat +Until +Forever +For +To +Step +Next +Return +Module +Interface +Implements +Inline +Throw +Null + +---------------------------------------------------- + +[ + ["keyword", "Void"], + ["keyword", "Strict"], + ["keyword", "Public"], + ["keyword", "Private"], + ["keyword", "Property"], + ["keyword", "Bool"], + ["keyword", "Int"], + ["keyword", "Float"], + ["keyword", "String"], + ["keyword", "Array"], + ["keyword", "Object"], + ["keyword", "Continue"], + ["keyword", "Exit"], + ["keyword", "Import"], + ["keyword", "Extern"], + ["keyword", "New"], + ["keyword", "Self"], + ["keyword", "Super"], + ["keyword", "Try"], + ["keyword", "Catch"], + ["keyword", "Eachin"], + ["keyword", "True"], + ["keyword", "False"], + ["keyword", "Extends"], + ["keyword", "Abstract"], + ["keyword", "Final"], + ["keyword", "Select"], + ["keyword", "Case"], + ["keyword", "Default"], + ["keyword", "Const"], + ["keyword", "Local"], + ["keyword", "Global"], + ["keyword", "Field"], + ["keyword", "Method"], + ["keyword", "Function"], + ["keyword", "Class"], + ["keyword", "End"], + ["keyword", "If"], + ["keyword", "Then"], + ["keyword", "Else"], + ["keyword", "ElseIf"], + ["keyword", "EndIf"], + ["keyword", "While"], + ["keyword", "Wend"], + ["keyword", "Repeat"], + ["keyword", "Until"], + ["keyword", "Forever"], + ["keyword", "For"], + ["keyword", "To"], + ["keyword", "Step"], + ["keyword", "Next"], + ["keyword", "Return"], + ["keyword", "Module"], + ["keyword", "Interface"], + ["keyword", "Implements"], + ["keyword", "Inline"], + ["keyword", "Throw"], + ["keyword", "Null"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/number_feature.test new file mode 100644 index 0000000000..46064fbc93 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/number_feature.test @@ -0,0 +1,19 @@ +0 +42 +3.14159 +.5 +$BadFace + +---------------------------------------------------- + +[ + ["number", "0"], + ["number", "42"], + ["number", "3.14159"], + ["number", ".5"], + ["number", "$BadFace"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/operator_feature.test new file mode 100644 index 0000000000..54dc3dc0f2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/operator_feature.test @@ -0,0 +1,41 @@ +.. +< <> <= +> >= += +:= ++ += +- -= +* *= +/ /= +& &= +~ ~= +| |= +Mod Mod= +Shl Shl= +Shr Shr= +And Not Or + +---------------------------------------------------- + +[ + ["operator", ".."], + ["operator", "<"], ["operator", "<>"], ["operator", "<="], + ["operator", ">"], ["operator", ">="], + ["operator", "="], + ["operator", ":="], + ["operator", "+"], ["operator", "+="], + ["operator", "-"], ["operator", "-="], + ["operator", "*"], ["operator", "*="], + ["operator", "/"], ["operator", "/="], + ["operator", "&"], ["operator", "&="], + ["operator", "~"], ["operator", "~="], + ["operator", "|"], ["operator", "|="], + ["operator", "Mod"], ["operator", "Mod="], + ["operator", "Shl"], ["operator", "Shl="], + ["operator", "Shr"], ["operator", "Shr="], + ["operator", "And"], ["operator", "Not"], ["operator", "Or"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/preprocessor_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/preprocessor_feature.test new file mode 100644 index 0000000000..28746649fe --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/preprocessor_feature.test @@ -0,0 +1,15 @@ +#If HOST +#ElseIf +#Else + +---------------------------------------------------- + +[ + ["preprocessor", "#If HOST"], + ["preprocessor", "#ElseIf"], + ["preprocessor", "#Else"] +] + +---------------------------------------------------- + +Checks for preprocessor directives. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/string_feature.test new file mode 100644 index 0000000000..4c00970ef7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/string_feature.test @@ -0,0 +1,13 @@ +"" +"Foo ~qBar~q" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"Foo ~qBar~q\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/monkey/type-char_feature.test b/dashboard-ui/bower_components/prism/tests/languages/monkey/type-char_feature.test new file mode 100644 index 0000000000..e00df6ab27 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/monkey/type-char_feature.test @@ -0,0 +1,17 @@ +foo? +bar% +baz# +foobar$ + +---------------------------------------------------- + +[ + "foo", ["type-char", "?"], + "\r\nbar", ["type-char", "%"], + "\r\nbaz", ["type-char", "#"], + "\r\nfoobar", ["type-char", "$"] +] + +---------------------------------------------------- + +Checks for type chars. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nasm/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nasm/comment_feature.test new file mode 100644 index 0000000000..fc26590997 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nasm/comment_feature.test @@ -0,0 +1,13 @@ +; +; foo + +---------------------------------------------------- + +[ + ["comment", ";"], + ["comment", "; foo"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nasm/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nasm/keyword_feature.test new file mode 100644 index 0000000000..4b4a1ca083 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nasm/keyword_feature.test @@ -0,0 +1,30 @@ +BITS 16 BITS 32 BITS 64 +[BITS 16] [BITS 32] [BITS 64] + +section Foo.bar +section foobar: + +extern _printf +global _main + +CPU 8086 +FLOAT DAZ +DEFAULT REL + +---------------------------------------------------- + +[ + ["keyword", "BITS 16"], ["keyword", "BITS 32"], ["keyword", "BITS 64"], + ["keyword", "[BITS 16]"], ["keyword", "[BITS 32]"], ["keyword", "[BITS 64]"], + ["keyword", "section Foo.bar"], + ["keyword", "section foobar:"], + ["keyword", "extern _printf"], + ["keyword", "global _main"], + ["keyword", "CPU 8086"], + ["keyword", "FLOAT DAZ"], + ["keyword", "DEFAULT REL"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nasm/label_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nasm/label_feature.test new file mode 100644 index 0000000000..a5d49f825a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nasm/label_feature.test @@ -0,0 +1,15 @@ +foo42: +.foo: +..@foo: + +---------------------------------------------------- + +[ + ["label", "foo42:"], + ["label", ".foo:"], + ["label", "..@foo:"] +] + +---------------------------------------------------- + +Checks for labels. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nasm/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nasm/number_feature.test new file mode 100644 index 0000000000..cf8334a41f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nasm/number_feature.test @@ -0,0 +1,97 @@ +0xBadFace +0x4f.ab +0x4p2 +0x2.ap-8 +0x1p+1 + +0hBadFace +0h4f.ab +0h4p2 +0h2.ap-8 +0h1p+1 +42fh +4ab2x + +$4 +$2a4f + +0o75 +0q75 +75o +75q + +0b0101 +0y0101 +0101b +0101y + +0d42 +0t42 +42 +3.14159 +4.2e4 +2e-1 +3.1e+2 +42d +3.14159d +4.2e4d +2e-1d +3.1e+2d +42t +3.14159t +4.2e4t +2e-1t +3.1e+2t + +---------------------------------------------------- + +[ + ["number", "0xBadFace"], + ["number", "0x4f.ab"], + ["number", "0x4p2"], + ["number", "0x2.ap-8"], + ["number", "0x1p+1"], + + ["number", "0hBadFace"], + ["number", "0h4f.ab"], + ["number", "0h4p2"], + ["number", "0h2.ap-8"], + ["number", "0h1p+1"], + ["number", "42fh"], + ["number", "4ab2x"], + + ["number", "$4"], + ["number", "$2a4f"], + + ["number", "0o75"], + ["number", "0q75"], + ["number", "75o"], + ["number", "75q"], + + ["number", "0b0101"], + ["number", "0y0101"], + ["number", "0101b"], + ["number", "0101y"], + + ["number", "0d42"], + ["number", "0t42"], + ["number", "42"], + ["number", "3.14159"], + ["number", "4.2e4"], + ["number", "2e-1"], + ["number", "3.1e+2"], + ["number", "42d"], + ["number", "3.14159d"], + ["number", "4.2e4d"], + ["number", "2e-1d"], + ["number", "3.1e+2d"], + ["number", "42t"], + ["number", "3.14159t"], + ["number", "4.2e4t"], + ["number", "2e-1t"], + ["number", "3.1e+2t"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nasm/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nasm/operator_feature.test new file mode 100644 index 0000000000..9c503326bd --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nasm/operator_feature.test @@ -0,0 +1,17 @@ +[ ] +* + - / +% < > = +& | $ ! + +---------------------------------------------------- + +[ + ["operator", "["], ["operator", "]"], + ["operator", "*"], ["operator", "+"], ["operator", "-"], ["operator", "/"], + ["operator", "%"], ["operator", "<"], ["operator", ">"], ["operator", "="], + ["operator", "&"], ["operator", "|"], ["operator", "$"], ["operator", "!"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nasm/register_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nasm/register_feature.test new file mode 100644 index 0000000000..babc0f8856 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nasm/register_feature.test @@ -0,0 +1,43 @@ +st0 st1 +xmm1 xmm2 +ymm1 ymm2 +zmm1 zmm2 +cr1 dr1 tr1 +r1 r42 +r1b r1w r1d +ax bx cx dx +eax ebx ecx edx +rax rbx rcx rdx +ah bh ch dh +al bl cl dl +bp sp si di +ebp esp esi edi +rbp rsp rsi rdi +cs ds es +fs gs ss + +---------------------------------------------------- + +[ + ["register", "st0"], ["register", "st1"], + ["register", "xmm1"], ["register", "xmm2"], + ["register", "ymm1"], ["register", "ymm2"], + ["register", "zmm1"], ["register", "zmm2"], + ["register", "cr1"], ["register", "dr1"], ["register", "tr1"], + ["register", "r1"], ["register", "r42"], + ["register", "r1b"], ["register", "r1w"], ["register", "r1d"], + ["register", "ax"], ["register", "bx"], ["register", "cx"], ["register", "dx"], + ["register", "eax"], ["register", "ebx"], ["register", "ecx"], ["register", "edx"], + ["register", "rax"], ["register", "rbx"], ["register", "rcx"], ["register", "rdx"], + ["register", "ah"], ["register", "bh"], ["register", "ch"], ["register", "dh"], + ["register", "al"], ["register", "bl"], ["register", "cl"], ["register", "dl"], + ["register", "bp"], ["register", "sp"], ["register", "si"], ["register", "di"], + ["register", "ebp"], ["register", "esp"], ["register", "esi"], ["register", "edi"], + ["register", "rbp"], ["register", "rsp"], ["register", "rsi"], ["register", "rdi"], + ["register", "cs"], ["register", "ds"], ["register", "es"], + ["register", "fs"], ["register", "gs"], ["register", "ss"] +] + +---------------------------------------------------- + +Checks for registers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nasm/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nasm/string_feature.test new file mode 100644 index 0000000000..f60998cda1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nasm/string_feature.test @@ -0,0 +1,21 @@ +"" +"fo\"o" +'' +'fo\'o' +`` +`fo\`o` + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"o\""], + ["string", "''"], + ["string", "'fo\\'o'"], + ["string", "``"], + ["string", "`fo\\`o`"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nginx/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nginx/comment_feature.test new file mode 100644 index 0000000000..37dc9f91ca --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nginx/comment_feature.test @@ -0,0 +1,13 @@ +# +# Foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# Foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nginx/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nginx/keyword_feature.test new file mode 100644 index 0000000000..8263d0b9b2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nginx/keyword_feature.test @@ -0,0 +1,705 @@ +CONTENT_ +DOCUMENT_ +GATEWAY_ +HTTP_ +HTTPS +if_not_empty +PATH_ +QUERY_ +REDIRECT_ +REMOTE_ +REQUEST_ +SCGI +SCRIPT_ +SERVER_ +http +server +events +location +include +accept_mutex +accept_mutex_delay +access_log +add_after_body +add_before_body +add_header +addition_types +aio +alias +allow +ancient_browser +ancient_browser_value +auth +auth_basic +auth_basic_user_file +auth_http +auth_http_header +auth_http_timeout +autoindex +autoindex_exact_size +autoindex_localtime +break +charset +charset_map +charset_types +chunked_transfer_encoding +client_body_buffer_size +client_body_in_file_only +client_body_in_single_buffer +client_body_temp_path +client_body_timeout +client_header_buffer_size +client_header_timeout +client_max_body_size +connection_pool_size +create_full_put_path +daemon +dav_access +dav_methods +debug_connection +debug_points +default_type +deny +devpoll_changes +devpoll_events +directio +directio_alignment +disable_symlinks +empty_gif +env +epoll_events +error_log +error_page +expires +fastcgi_buffer_size +fastcgi_buffers +fastcgi_busy_buffers_size +fastcgi_cache +fastcgi_cache_bypass +fastcgi_cache_key +fastcgi_cache_lock +fastcgi_cache_lock_timeout +fastcgi_cache_methods +fastcgi_cache_min_uses +fastcgi_cache_path +fastcgi_cache_purge +fastcgi_cache_use_stale +fastcgi_cache_valid +fastcgi_connect_timeout +fastcgi_hide_header +fastcgi_ignore_client_abort +fastcgi_ignore_headers +fastcgi_index +fastcgi_intercept_errors +fastcgi_keep_conn +fastcgi_max_temp_file_size +fastcgi_next_upstream +fastcgi_no_cache +fastcgi_param +fastcgi_pass +fastcgi_pass_header +fastcgi_read_timeout +fastcgi_redirect_errors +fastcgi_send_timeout +fastcgi_split_path_info +fastcgi_store +fastcgi_store_access +fastcgi_temp_file_write_size +fastcgi_temp_path +flv +geo +geoip_city +geoip_country +google_perftools_profiles +gzip +gzip_buffers +gzip_comp_level +gzip_disable +gzip_http_version +gzip_min_length +gzip_proxied +gzip_static +gzip_types +gzip_vary +if +if_modified_since +ignore_invalid_headers +image_filter +image_filter_buffer +image_filter_jpeg_quality +image_filter_sharpen +image_filter_transparency +imap_capabilities +imap_client_buffer +include +index +internal +ip_hash +keepalive +keepalive_disable +keepalive_requests +keepalive_timeout +kqueue_changes +kqueue_events +large_client_header_buffers +limit_conn +limit_conn_log_level +limit_conn_zone +limit_except +limit_rate +limit_rate_after +limit_req +limit_req_log_level +limit_req_zone +limit_zone +lingering_close +lingering_time +lingering_timeout +listen +location +lock_file +log_format +log_format_combined +log_not_found +log_subrequest +map +map_hash_bucket_size +map_hash_max_size +master_process +max_ranges +memcached_buffer_size +memcached_connect_timeout +memcached_next_upstream +memcached_pass +memcached_read_timeout +memcached_send_timeout +merge_slashes +min_delete_depth +modern_browser +modern_browser_value +mp4 +mp4_buffer_size +mp4_max_buffer_size +msie_padding +msie_refresh +multi_accept +open_file_cache +open_file_cache_errors +open_file_cache_min_uses +open_file_cache_valid +open_log_file_cache +optimize_server_names +override_charset +pcre_jit +perl +perl_modules +perl_require +perl_set +pid +pop3_auth +pop3_capabilities +port_in_redirect +post_action +postpone_output +protocol +proxy +proxy_buffer +proxy_buffer_size +proxy_buffering +proxy_buffers +proxy_busy_buffers_size +proxy_cache +proxy_cache_bypass +proxy_cache_key +proxy_cache_lock +proxy_cache_lock_timeout +proxy_cache_methods +proxy_cache_min_uses +proxy_cache_path +proxy_cache_use_stale +proxy_cache_valid +proxy_connect_timeout +proxy_cookie_domain +proxy_cookie_path +proxy_headers_hash_bucket_size +proxy_headers_hash_max_size +proxy_hide_header +proxy_http_version +proxy_ignore_client_abort +proxy_ignore_headers +proxy_intercept_errors +proxy_max_temp_file_size +proxy_method +proxy_next_upstream +proxy_no_cache +proxy_pass +proxy_pass_error_message +proxy_pass_header +proxy_pass_request_body +proxy_pass_request_headers +proxy_read_timeout +proxy_redirect +proxy_redirect_errors +proxy_send_lowat +proxy_send_timeout +proxy_set_body +proxy_set_header +proxy_ssl_session_reuse +proxy_store +proxy_store_access +proxy_temp_file_write_size +proxy_temp_path +proxy_timeout +proxy_upstream_fail_timeout +proxy_upstream_max_fails +random_index +read_ahead +real_ip_header +recursive_error_pages +request_pool_size +reset_timedout_connection +resolver +resolver_timeout +return +rewrite +root +rtsig_overflow_events +rtsig_overflow_test +rtsig_overflow_threshold +rtsig_signo +satisfy +satisfy_any +secure_link_secret +send_lowat +send_timeout +sendfile +sendfile_max_chunk +server +server_name +server_name_in_redirect +server_names_hash_bucket_size +server_names_hash_max_size +server_tokens +set +set_real_ip_from +smtp_auth +smtp_capabilities +so_keepalive +source_charset +split_clients +ssi +ssi_silent_errors +ssi_types +ssi_value_length +ssl +ssl_certificate +ssl_certificate_key +ssl_ciphers +ssl_client_certificate +ssl_crl +ssl_dhparam +ssl_engine +ssl_prefer_server_ciphers +ssl_protocols +ssl_session_cache +ssl_session_timeout +ssl_verify_client +ssl_verify_depth +starttls +stub_status +sub_filter +sub_filter_once +sub_filter_types +tcp_nodelay +tcp_nopush +timeout +timer_resolution +try_files +types +types_hash_bucket_size +types_hash_max_size +underscores_in_headers +uninitialized_variable_warn +upstream +use +user +userid +userid_domain +userid_expires +userid_name +userid_p3p +userid_path +userid_service +valid_referers +variables_hash_bucket_size +variables_hash_max_size +worker_connections +worker_cpu_affinity +worker_priority +worker_processes +worker_rlimit_core +worker_rlimit_nofile +worker_rlimit_sigpending +working_directory +xclient +xml_entities +xslt_entities +xslt_stylesheet +xslt_types + +---------------------------------------------------- + +[ + ["keyword", "CONTENT_"], + ["keyword", "DOCUMENT_"], + ["keyword", "GATEWAY_"], + ["keyword", "HTTP_"], + ["keyword", "HTTPS"], + ["keyword", "if_not_empty"], + ["keyword", "PATH_"], + ["keyword", "QUERY_"], + ["keyword", "REDIRECT_"], + ["keyword", "REMOTE_"], + ["keyword", "REQUEST_"], + ["keyword", "SCGI"], + ["keyword", "SCRIPT_"], + ["keyword", "SERVER_"], + ["keyword", "http"], + ["keyword", "server"], + ["keyword", "events"], + ["keyword", "location"], + ["keyword", "include"], + ["keyword", "accept_mutex"], + ["keyword", "accept_mutex_delay"], + ["keyword", "access_log"], + ["keyword", "add_after_body"], + ["keyword", "add_before_body"], + ["keyword", "add_header"], + ["keyword", "addition_types"], + ["keyword", "aio"], + ["keyword", "alias"], + ["keyword", "allow"], + ["keyword", "ancient_browser"], + ["keyword", "ancient_browser_value"], + ["keyword", "auth"], + ["keyword", "auth_basic"], + ["keyword", "auth_basic_user_file"], + ["keyword", "auth_http"], + ["keyword", "auth_http_header"], + ["keyword", "auth_http_timeout"], + ["keyword", "autoindex"], + ["keyword", "autoindex_exact_size"], + ["keyword", "autoindex_localtime"], + ["keyword", "break"], + ["keyword", "charset"], + ["keyword", "charset_map"], + ["keyword", "charset_types"], + ["keyword", "chunked_transfer_encoding"], + ["keyword", "client_body_buffer_size"], + ["keyword", "client_body_in_file_only"], + ["keyword", "client_body_in_single_buffer"], + ["keyword", "client_body_temp_path"], + ["keyword", "client_body_timeout"], + ["keyword", "client_header_buffer_size"], + ["keyword", "client_header_timeout"], + ["keyword", "client_max_body_size"], + ["keyword", "connection_pool_size"], + ["keyword", "create_full_put_path"], + ["keyword", "daemon"], + ["keyword", "dav_access"], + ["keyword", "dav_methods"], + ["keyword", "debug_connection"], + ["keyword", "debug_points"], + ["keyword", "default_type"], + ["keyword", "deny"], + ["keyword", "devpoll_changes"], + ["keyword", "devpoll_events"], + ["keyword", "directio"], + ["keyword", "directio_alignment"], + ["keyword", "disable_symlinks"], + ["keyword", "empty_gif"], + ["keyword", "env"], + ["keyword", "epoll_events"], + ["keyword", "error_log"], + ["keyword", "error_page"], + ["keyword", "expires"], + ["keyword", "fastcgi_buffer_size"], + ["keyword", "fastcgi_buffers"], + ["keyword", "fastcgi_busy_buffers_size"], + ["keyword", "fastcgi_cache"], + ["keyword", "fastcgi_cache_bypass"], + ["keyword", "fastcgi_cache_key"], + ["keyword", "fastcgi_cache_lock"], + ["keyword", "fastcgi_cache_lock_timeout"], + ["keyword", "fastcgi_cache_methods"], + ["keyword", "fastcgi_cache_min_uses"], + ["keyword", "fastcgi_cache_path"], + ["keyword", "fastcgi_cache_purge"], + ["keyword", "fastcgi_cache_use_stale"], + ["keyword", "fastcgi_cache_valid"], + ["keyword", "fastcgi_connect_timeout"], + ["keyword", "fastcgi_hide_header"], + ["keyword", "fastcgi_ignore_client_abort"], + ["keyword", "fastcgi_ignore_headers"], + ["keyword", "fastcgi_index"], + ["keyword", "fastcgi_intercept_errors"], + ["keyword", "fastcgi_keep_conn"], + ["keyword", "fastcgi_max_temp_file_size"], + ["keyword", "fastcgi_next_upstream"], + ["keyword", "fastcgi_no_cache"], + ["keyword", "fastcgi_param"], + ["keyword", "fastcgi_pass"], + ["keyword", "fastcgi_pass_header"], + ["keyword", "fastcgi_read_timeout"], + ["keyword", "fastcgi_redirect_errors"], + ["keyword", "fastcgi_send_timeout"], + ["keyword", "fastcgi_split_path_info"], + ["keyword", "fastcgi_store"], + ["keyword", "fastcgi_store_access"], + ["keyword", "fastcgi_temp_file_write_size"], + ["keyword", "fastcgi_temp_path"], + ["keyword", "flv"], + ["keyword", "geo"], + ["keyword", "geoip_city"], + ["keyword", "geoip_country"], + ["keyword", "google_perftools_profiles"], + ["keyword", "gzip"], + ["keyword", "gzip_buffers"], + ["keyword", "gzip_comp_level"], + ["keyword", "gzip_disable"], + ["keyword", "gzip_http_version"], + ["keyword", "gzip_min_length"], + ["keyword", "gzip_proxied"], + ["keyword", "gzip_static"], + ["keyword", "gzip_types"], + ["keyword", "gzip_vary"], + ["keyword", "if"], + ["keyword", "if_modified_since"], + ["keyword", "ignore_invalid_headers"], + ["keyword", "image_filter"], + ["keyword", "image_filter_buffer"], + ["keyword", "image_filter_jpeg_quality"], + ["keyword", "image_filter_sharpen"], + ["keyword", "image_filter_transparency"], + ["keyword", "imap_capabilities"], + ["keyword", "imap_client_buffer"], + ["keyword", "include"], + ["keyword", "index"], + ["keyword", "internal"], + ["keyword", "ip_hash"], + ["keyword", "keepalive"], + ["keyword", "keepalive_disable"], + ["keyword", "keepalive_requests"], + ["keyword", "keepalive_timeout"], + ["keyword", "kqueue_changes"], + ["keyword", "kqueue_events"], + ["keyword", "large_client_header_buffers"], + ["keyword", "limit_conn"], + ["keyword", "limit_conn_log_level"], + ["keyword", "limit_conn_zone"], + ["keyword", "limit_except"], + ["keyword", "limit_rate"], + ["keyword", "limit_rate_after"], + ["keyword", "limit_req"], + ["keyword", "limit_req_log_level"], + ["keyword", "limit_req_zone"], + ["keyword", "limit_zone"], + ["keyword", "lingering_close"], + ["keyword", "lingering_time"], + ["keyword", "lingering_timeout"], + ["keyword", "listen"], + ["keyword", "location"], + ["keyword", "lock_file"], + ["keyword", "log_format"], + ["keyword", "log_format_combined"], + ["keyword", "log_not_found"], + ["keyword", "log_subrequest"], + ["keyword", "map"], + ["keyword", "map_hash_bucket_size"], + ["keyword", "map_hash_max_size"], + ["keyword", "master_process"], + ["keyword", "max_ranges"], + ["keyword", "memcached_buffer_size"], + ["keyword", "memcached_connect_timeout"], + ["keyword", "memcached_next_upstream"], + ["keyword", "memcached_pass"], + ["keyword", "memcached_read_timeout"], + ["keyword", "memcached_send_timeout"], + ["keyword", "merge_slashes"], + ["keyword", "min_delete_depth"], + ["keyword", "modern_browser"], + ["keyword", "modern_browser_value"], + ["keyword", "mp4"], + ["keyword", "mp4_buffer_size"], + ["keyword", "mp4_max_buffer_size"], + ["keyword", "msie_padding"], + ["keyword", "msie_refresh"], + ["keyword", "multi_accept"], + ["keyword", "open_file_cache"], + ["keyword", "open_file_cache_errors"], + ["keyword", "open_file_cache_min_uses"], + ["keyword", "open_file_cache_valid"], + ["keyword", "open_log_file_cache"], + ["keyword", "optimize_server_names"], + ["keyword", "override_charset"], + ["keyword", "pcre_jit"], + ["keyword", "perl"], + ["keyword", "perl_modules"], + ["keyword", "perl_require"], + ["keyword", "perl_set"], + ["keyword", "pid"], + ["keyword", "pop3_auth"], + ["keyword", "pop3_capabilities"], + ["keyword", "port_in_redirect"], + ["keyword", "post_action"], + ["keyword", "postpone_output"], + ["keyword", "protocol"], + ["keyword", "proxy"], + ["keyword", "proxy_buffer"], + ["keyword", "proxy_buffer_size"], + ["keyword", "proxy_buffering"], + ["keyword", "proxy_buffers"], + ["keyword", "proxy_busy_buffers_size"], + ["keyword", "proxy_cache"], + ["keyword", "proxy_cache_bypass"], + ["keyword", "proxy_cache_key"], + ["keyword", "proxy_cache_lock"], + ["keyword", "proxy_cache_lock_timeout"], + ["keyword", "proxy_cache_methods"], + ["keyword", "proxy_cache_min_uses"], + ["keyword", "proxy_cache_path"], + ["keyword", "proxy_cache_use_stale"], + ["keyword", "proxy_cache_valid"], + ["keyword", "proxy_connect_timeout"], + ["keyword", "proxy_cookie_domain"], + ["keyword", "proxy_cookie_path"], + ["keyword", "proxy_headers_hash_bucket_size"], + ["keyword", "proxy_headers_hash_max_size"], + ["keyword", "proxy_hide_header"], + ["keyword", "proxy_http_version"], + ["keyword", "proxy_ignore_client_abort"], + ["keyword", "proxy_ignore_headers"], + ["keyword", "proxy_intercept_errors"], + ["keyword", "proxy_max_temp_file_size"], + ["keyword", "proxy_method"], + ["keyword", "proxy_next_upstream"], + ["keyword", "proxy_no_cache"], + ["keyword", "proxy_pass"], + ["keyword", "proxy_pass_error_message"], + ["keyword", "proxy_pass_header"], + ["keyword", "proxy_pass_request_body"], + ["keyword", "proxy_pass_request_headers"], + ["keyword", "proxy_read_timeout"], + ["keyword", "proxy_redirect"], + ["keyword", "proxy_redirect_errors"], + ["keyword", "proxy_send_lowat"], + ["keyword", "proxy_send_timeout"], + ["keyword", "proxy_set_body"], + ["keyword", "proxy_set_header"], + ["keyword", "proxy_ssl_session_reuse"], + ["keyword", "proxy_store"], + ["keyword", "proxy_store_access"], + ["keyword", "proxy_temp_file_write_size"], + ["keyword", "proxy_temp_path"], + ["keyword", "proxy_timeout"], + ["keyword", "proxy_upstream_fail_timeout"], + ["keyword", "proxy_upstream_max_fails"], + ["keyword", "random_index"], + ["keyword", "read_ahead"], + ["keyword", "real_ip_header"], + ["keyword", "recursive_error_pages"], + ["keyword", "request_pool_size"], + ["keyword", "reset_timedout_connection"], + ["keyword", "resolver"], + ["keyword", "resolver_timeout"], + ["keyword", "return"], + ["keyword", "rewrite"], + ["keyword", "root"], + ["keyword", "rtsig_overflow_events"], + ["keyword", "rtsig_overflow_test"], + ["keyword", "rtsig_overflow_threshold"], + ["keyword", "rtsig_signo"], + ["keyword", "satisfy"], + ["keyword", "satisfy_any"], + ["keyword", "secure_link_secret"], + ["keyword", "send_lowat"], + ["keyword", "send_timeout"], + ["keyword", "sendfile"], + ["keyword", "sendfile_max_chunk"], + ["keyword", "server"], + ["keyword", "server_name"], + ["keyword", "server_name_in_redirect"], + ["keyword", "server_names_hash_bucket_size"], + ["keyword", "server_names_hash_max_size"], + ["keyword", "server_tokens"], + ["keyword", "set"], + ["keyword", "set_real_ip_from"], + ["keyword", "smtp_auth"], + ["keyword", "smtp_capabilities"], + ["keyword", "so_keepalive"], + ["keyword", "source_charset"], + ["keyword", "split_clients"], + ["keyword", "ssi"], + ["keyword", "ssi_silent_errors"], + ["keyword", "ssi_types"], + ["keyword", "ssi_value_length"], + ["keyword", "ssl"], + ["keyword", "ssl_certificate"], + ["keyword", "ssl_certificate_key"], + ["keyword", "ssl_ciphers"], + ["keyword", "ssl_client_certificate"], + ["keyword", "ssl_crl"], + ["keyword", "ssl_dhparam"], + ["keyword", "ssl_engine"], + ["keyword", "ssl_prefer_server_ciphers"], + ["keyword", "ssl_protocols"], + ["keyword", "ssl_session_cache"], + ["keyword", "ssl_session_timeout"], + ["keyword", "ssl_verify_client"], + ["keyword", "ssl_verify_depth"], + ["keyword", "starttls"], + ["keyword", "stub_status"], + ["keyword", "sub_filter"], + ["keyword", "sub_filter_once"], + ["keyword", "sub_filter_types"], + ["keyword", "tcp_nodelay"], + ["keyword", "tcp_nopush"], + ["keyword", "timeout"], + ["keyword", "timer_resolution"], + ["keyword", "try_files"], + ["keyword", "types"], + ["keyword", "types_hash_bucket_size"], + ["keyword", "types_hash_max_size"], + ["keyword", "underscores_in_headers"], + ["keyword", "uninitialized_variable_warn"], + ["keyword", "upstream"], + ["keyword", "use"], + ["keyword", "user"], + ["keyword", "userid"], + ["keyword", "userid_domain"], + ["keyword", "userid_expires"], + ["keyword", "userid_name"], + ["keyword", "userid_p3p"], + ["keyword", "userid_path"], + ["keyword", "userid_service"], + ["keyword", "valid_referers"], + ["keyword", "variables_hash_bucket_size"], + ["keyword", "variables_hash_max_size"], + ["keyword", "worker_connections"], + ["keyword", "worker_cpu_affinity"], + ["keyword", "worker_priority"], + ["keyword", "worker_processes"], + ["keyword", "worker_rlimit_core"], + ["keyword", "worker_rlimit_nofile"], + ["keyword", "worker_rlimit_sigpending"], + ["keyword", "working_directory"], + ["keyword", "xclient"], + ["keyword", "xml_entities"], + ["keyword", "xslt_entities"], + ["keyword", "xslt_stylesheet"], + ["keyword", "xslt_types"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nginx/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nginx/variable_feature.test new file mode 100644 index 0000000000..0402e0a8b2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nginx/variable_feature.test @@ -0,0 +1,13 @@ +$foobar +$foo_bar + +---------------------------------------------------- + +[ + ["variable", "$foobar"], + ["variable", "$foo_bar"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nim/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nim/comment_feature.test new file mode 100644 index 0000000000..37dc9f91ca --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nim/comment_feature.test @@ -0,0 +1,13 @@ +# +# Foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# Foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nim/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nim/function_feature.test new file mode 100644 index 0000000000..520404e93e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nim/function_feature.test @@ -0,0 +1,17 @@ +fo\x9ao( +class*( +takeV[T]( +`$`( + +---------------------------------------------------- + +[ + ["function", ["fo\\x9ao"]], ["punctuation", "("], + ["function", ["class", ["operator", "*"]]], ["punctuation", "("], + ["function", ["takeV[T]"]], ["punctuation", "("], + ["function", ["`$`"]], ["punctuation", "("] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nim/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nim/keyword_feature.test new file mode 100644 index 0000000000..22923edfc7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nim/keyword_feature.test @@ -0,0 +1,123 @@ +addr +as +asm +atomic +bind +block +break +case +cast +concept +const +continue +converter +defer +discard +distinct +do +elif +else +end +enum +except +export +finally +for +from +func +generic +if +import +include +interface +iterator +let +macro +method +mixin +nil +object +out +proc +ptr +raise +ref +return +static +template +try +tuple +type +using +var +when +while +with +without +yield + +---------------------------------------------------- + +[ + ["keyword", "addr"], + ["keyword", "as"], + ["keyword", "asm"], + ["keyword", "atomic"], + ["keyword", "bind"], + ["keyword", "block"], + ["keyword", "break"], + ["keyword", "case"], + ["keyword", "cast"], + ["keyword", "concept"], + ["keyword", "const"], + ["keyword", "continue"], + ["keyword", "converter"], + ["keyword", "defer"], + ["keyword", "discard"], + ["keyword", "distinct"], + ["keyword", "do"], + ["keyword", "elif"], + ["keyword", "else"], + ["keyword", "end"], + ["keyword", "enum"], + ["keyword", "except"], + ["keyword", "export"], + ["keyword", "finally"], + ["keyword", "for"], + ["keyword", "from"], + ["keyword", "func"], + ["keyword", "generic"], + ["keyword", "if"], + ["keyword", "import"], + ["keyword", "include"], + ["keyword", "interface"], + ["keyword", "iterator"], + ["keyword", "let"], + ["keyword", "macro"], + ["keyword", "method"], + ["keyword", "mixin"], + ["keyword", "nil"], + ["keyword", "object"], + ["keyword", "out"], + ["keyword", "proc"], + ["keyword", "ptr"], + ["keyword", "raise"], + ["keyword", "ref"], + ["keyword", "return"], + ["keyword", "static"], + ["keyword", "template"], + ["keyword", "try"], + ["keyword", "tuple"], + ["keyword", "type"], + ["keyword", "using"], + ["keyword", "var"], + ["keyword", "when"], + ["keyword", "while"], + ["keyword", "with"], + ["keyword", "without"], + ["keyword", "yield"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nim/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nim/number_feature.test new file mode 100644 index 0000000000..e8d62384b2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nim/number_feature.test @@ -0,0 +1,31 @@ +0xBad_Face +0o754_173 +0B1111_0000 +42_000 +3.14_15_9 +3E7 +0.5e-84_741 +9.8e+54 +9000'u +2'i16 +2i16 +0xfe'f32 + +---------------------------------------------------- + +[ + ["number", "0xBad_Face"], + ["number", "0o754_173"], + ["number", "0B1111_0000"], + ["number", "42_000"], + ["number", "3.14_15_9"], + ["number", "3E7"], + ["number", "0.5e-84_741"], + ["number", "9.8e+54"], + ["number", "9000'u"], + ["number", "2'i16"], + ["number", "2i16"], + ["number", "0xfe'f32"] +] + +---------------------------------------------------- diff --git a/dashboard-ui/bower_components/prism/tests/languages/nim/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nim/operator_feature.test new file mode 100644 index 0000000000..ed246b7bed --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nim/operator_feature.test @@ -0,0 +1,39 @@ += + - +* / +< > +@ $ ~ +& % | +! ? ^ +: \ +.. . + ++*<> + +and div of or +in is isnot mod +not notin +shl shr xor + +---------------------------------------------------- + +[ + ["operator", "="], ["operator", "+"], ["operator", "-"], + ["operator", "*"], ["operator", "/"], + ["operator", "<"], ["operator", ">"], + ["operator", "@"], ["operator", "$"], ["operator", "~"], + ["operator", "&"], ["operator", "%"], ["operator", "|"], + ["operator", "!"], ["operator", "?"], ["operator", "^"], + ["operator", ":"], ["operator", "\\"], + ["operator", ".."], ["operator", "."], + + ["operator", "+*<>"], + + ["operator", "and"], ["operator", "div"], ["operator", "of"], ["operator", "or"], + ["operator", "in"], ["operator", "is"], ["operator", "isnot"], ["operator", "mod"], + ["operator", "not"], ["operator", "notin"], + ["operator", "shl"], ["operator", "shr"], ["operator", "xor"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nim/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nim/string_feature.test new file mode 100644 index 0000000000..97b2ad0217 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nim/string_feature.test @@ -0,0 +1,38 @@ +"" +"Fo\"obar" + +"""""" +"""Fo"o +bar""" + +R"Raw ""string" + +r"Raw +""string" + +fo\x8Fo"Foobar" + +bar"""Foo +bar""" + +'\'' +'\xFC' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"Fo\\\"obar\""], + ["string", "\"\"\"\"\"\""], + ["string", "\"\"\"Fo\"o\r\nbar\"\"\""], + ["string", "R\"Raw \"\"string\""], + ["string", "r\"Raw\r\n\"\"string\""], + ["string", "fo\\x8Fo\"Foobar\""], + ["string", "bar\"\"\"Foo\r\nbar\"\"\""], + ["string", "'\\''"], + ["string", "'\\xFC'"] +] + +---------------------------------------------------- + +Checks for strings and character literals. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/antiquotation_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/antiquotation_feature.test new file mode 100644 index 0000000000..21464c163d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/antiquotation_feature.test @@ -0,0 +1,14 @@ +${42} + +---------------------------------------------------- + +[ + ["antiquotation", "$"], + ["punctuation", "{"], + ["number", "42"], + ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for antiquotations outside of strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/boolean_feature.test new file mode 100644 index 0000000000..a40f8d95d2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/boolean_feature.test @@ -0,0 +1,13 @@ +true +false + +---------------------------------------------------- + +[ + ["boolean", "true"], + ["boolean", "false"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/comment_feature.test new file mode 100644 index 0000000000..78cc70ff5b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/comment_feature.test @@ -0,0 +1,18 @@ +# +# foobar +/**/ +/* foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# foobar"], + ["comment", "/**/"], + ["comment", "/* foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/function_feature.test new file mode 100644 index 0000000000..fcb29452bd --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/function_feature.test @@ -0,0 +1,133 @@ +abort +add +all +any +attrNames +attrValues +baseNameOf +compareVersions +concatLists +currentSystem +deepSeq +derivation +dirOf +div +elem +elemAt +fetchurl +fetchTarball +filter +filterSource +fromJSON +genList +getAttr +getEnv +hasAttr +hashString +head +import +intersectAttrs +isAttrs +isBool +isFunction +isInt +isList +isNull +isString +length +lessThan +listToAttrs +map +mul +parseDrvName +pathExists +readDir +readFile +removeAttrs +replaceStrings +seq +sort +stringLength +sub +substring +tail +throw +toFile +toJSON +toPath +toString +toXML +trace +typeOf +foldl' + +---------------------------------------------------- + +[ + ["function", "abort"], + ["function", "add"], + ["function", "all"], + ["function", "any"], + ["function", "attrNames"], + ["function", "attrValues"], + ["function", "baseNameOf"], + ["function", "compareVersions"], + ["function", "concatLists"], + ["function", "currentSystem"], + ["function", "deepSeq"], + ["function", "derivation"], + ["function", "dirOf"], + ["function", "div"], + ["function", "elem"], + ["function", "elemAt"], + ["function", "fetchurl"], + ["function", "fetchTarball"], + ["function", "filter"], + ["function", "filterSource"], + ["function", "fromJSON"], + ["function", "genList"], + ["function", "getAttr"], + ["function", "getEnv"], + ["function", "hasAttr"], + ["function", "hashString"], + ["function", "head"], + ["function", "import"], + ["function", "intersectAttrs"], + ["function", "isAttrs"], + ["function", "isBool"], + ["function", "isFunction"], + ["function", "isInt"], + ["function", "isList"], + ["function", "isNull"], + ["function", "isString"], + ["function", "length"], + ["function", "lessThan"], + ["function", "listToAttrs"], + ["function", "map"], + ["function", "mul"], + ["function", "parseDrvName"], + ["function", "pathExists"], + ["function", "readDir"], + ["function", "readFile"], + ["function", "removeAttrs"], + ["function", "replaceStrings"], + ["function", "seq"], + ["function", "sort"], + ["function", "stringLength"], + ["function", "sub"], + ["function", "substring"], + ["function", "tail"], + ["function", "throw"], + ["function", "toFile"], + ["function", "toJSON"], + ["function", "toPath"], + ["function", "toString"], + ["function", "toXML"], + ["function", "trace"], + ["function", "typeOf"], + ["function", "foldl'"] +] + +---------------------------------------------------- + +Checks for built-in functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/keyword_feature.test new file mode 100644 index 0000000000..5de3d282a8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/keyword_feature.test @@ -0,0 +1,15 @@ +assert builtins else if +in inherit let null +or then with + +---------------------------------------------------- + +[ + ["keyword", "assert"], ["keyword", "builtins"], ["keyword", "else"], ["keyword", "if"], + ["keyword", "in"], ["keyword", "inherit"], ["keyword", "let"], ["keyword", "null"], + ["keyword", "or"], ["keyword", "then"], ["keyword", "with"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/number_feature.test new file mode 100644 index 0000000000..a21ea2532f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/number_feature.test @@ -0,0 +1,15 @@ +0 +42 +120457 + +---------------------------------------------------- + +[ + ["number", "0"], + ["number", "42"], + ["number", "120457"] +] + +---------------------------------------------------- + +Checks for integers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/operator_feature.test new file mode 100644 index 0000000000..0b9d24c881 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/operator_feature.test @@ -0,0 +1,25 @@ += == +! != +< <= +> >= ++ ++ +- -> +|| && // +? @ + +---------------------------------------------------- + +[ + ["operator", "="], ["operator", "=="], + ["operator", "!"], ["operator", "!="], + ["operator", "<"], ["operator", "<="], + ["operator", ">"], ["operator", ">="], + ["operator", "+"], ["operator", "++"], + ["operator", "-"], ["operator", "->"], + ["operator", "||"], ["operator", "&&"], ["operator", "//"], + ["operator", "?"], ["operator", "@"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/string_feature.test new file mode 100644 index 0000000000..fa0c3f793b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/string_feature.test @@ -0,0 +1,56 @@ +"" +"foo\"b\\ar" +"f''o'o'\"bar" +"foo +bar" +"foo ${ 42 } baz" +"foo \${ 42 } baz" + +'''' +'' +foo +bar +'' +'' +f'oo'''ba'r +foo ${ 42 } baz +foo ''${ 42 } baz +'' + +---------------------------------------------------- + +[ + ["string", ["\"\""]], + ["string", ["\"foo\\\"b\\\\ar\""]], + ["string", ["\"f''o'o'\\\"bar\""]], + ["string", ["\"foo\r\nbar\""]], + ["string", [ + "\"foo ", + ["interpolation", [ + ["antiquotation", "$"], + ["punctuation", "{"], + ["number", "42"], + ["punctuation", "}"] + ]], + " baz\"" + ]], + ["string", ["\"foo \\${ 42 } baz\""]], + + ["string", ["''''"]], + ["string", ["''\r\nfoo\r\nbar\r\n''"]], + ["string", [ + "''\r\nf'oo'''ba'r\r\nfoo ", + ["interpolation", [ + ["antiquotation", "$"], + ["punctuation", "{"], + ["number", "42"], + ["punctuation", "}"] + ]], + " baz\r\nfoo ''${ 42 } baz\r\n''" + ]] +] + +---------------------------------------------------- + +Checks for strings and string interpolation. +Also checks that escaped interpolations are not interpreted. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nix/url_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nix/url_feature.test new file mode 100644 index 0000000000..4ce3c640df --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nix/url_feature.test @@ -0,0 +1,21 @@ +http://example.org/foo.tar.bz2 +ftp://ftp.nluug.nl/pub/gnu/hello/hello-2.1.1.tar.gz + +/bin/sh +./builder.sh +~/foo.bar + +---------------------------------------------------- + +[ + ["url", "http://example.org/foo.tar.bz2"], + ["url", "ftp://ftp.nluug.nl/pub/gnu/hello/hello-2.1.1.tar.gz"], + + ["url", "/bin/sh"], + ["url", "./builder.sh"], + ["url", "~/foo.bar"] +] + +---------------------------------------------------- + +Checks for URLs and paths. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/comment_feature.test new file mode 100644 index 0000000000..82c5996f6f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/comment_feature.test @@ -0,0 +1,18 @@ +/* foo */ +/* foo +bar */ +# foo +; bar + +---------------------------------------------------- + +[ + ["comment", "/* foo */"], + ["comment", "/* foo\r\nbar */"], + ["comment", "# foo"], + ["comment", "; bar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/important_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/important_feature.test new file mode 100644 index 0000000000..9947eb47da --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/important_feature.test @@ -0,0 +1,69 @@ +!addincludedir +!addplugindir +!appendfile +!cd +!define +!delfile +!echo +!else +!endif +!error +!execute +!finalize +!getdllversionsystem +!ifdef +!ifmacrodef +!ifmacrondef +!ifndef +!if +!include +!insertmacro +!macroend +!macro +!makensis +!packhdr +!searchparse +!searchreplace +!tempfile +!undef +!verbose +!warning + +---------------------------------------------------- + +[ + ["important", "!addincludedir"], + ["important", "!addplugindir"], + ["important", "!appendfile"], + ["important", "!cd"], + ["important", "!define"], + ["important", "!delfile"], + ["important", "!echo"], + ["important", "!else"], + ["important", "!endif"], + ["important", "!error"], + ["important", "!execute"], + ["important", "!finalize"], + ["important", "!getdllversionsystem"], + ["important", "!ifdef"], + ["important", "!ifmacrodef"], + ["important", "!ifmacrondef"], + ["important", "!ifndef"], + ["important", "!if"], + ["important", "!include"], + ["important", "!insertmacro"], + ["important", "!macroend"], + ["important", "!macro"], + ["important", "!makensis"], + ["important", "!packhdr"], + ["important", "!searchparse"], + ["important", "!searchreplace"], + ["important", "!tempfile"], + ["important", "!undef"], + ["important", "!verbose"], + ["important", "!warning"] +] + +---------------------------------------------------- + +Checks for compiler instructions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/keyword_feature.test new file mode 100644 index 0000000000..1b9cfc8bf1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/keyword_feature.test @@ -0,0 +1,433 @@ +Abort +AddBrandingImage +AddSize +AdvSplash +AllowRootDirInstall +AllowSkipFiles +AutoCloseWindow +Banner +BGFont +BGGradient +BGImage +BrandingText +BringToFront +Call +CallInstDLL +Caption +ChangeUI +CheckBitmap +ClearErrors +CompletedText +ComponentText +CopyFiles +CRCCheck +CreateDirectory +CreateFont +CreateShortCut +Delete +DeleteINISec +DeleteINIStr +DeleteRegKey +DeleteRegValue +DetailPrint +DetailsButtonText +Dialer +DirText +DirVar +DirVerify +EnableWindow +EnumRegKey +EnumRegValue +Exch +Exec +ExecShell +ExecWait +ExpandEnvStrings +File +FileBufSize +FileClose +FileErrorText +FileOpen +FileRead +FileReadByte +FileReadUTF16LE +FileReadWord +FileWriteUTF16LE +FileSeek +FileWrite +FileWriteByte +FileWriteWord +FindClose +FindFirst +FindNext +FindWindow +FlushINI +GetCurInstType +GetCurrentAddress +GetDlgItem +GetDLLVersion +GetDLLVersionLocal +GetErrorLevel +GetFileTime +GetFileTimeLocal +GetFullPathName +GetFunction +GetFunctionAddress +GetFunctionEnd +GetInstDirError +GetLabelAddress +GetTempFileName +Goto +HideWindow +Icon +IfAbort +IfErrors +IfFileExists +IfRebootFlag +IfSilent +InitPluginsDir +InstallButtonText +InstallColors +InstallDir +InstallDirRegKey +InstProgressFlags +InstType +InstTypeGetText +InstTypeSetText +IntCmp +IntCmpU +IntFmt +IntOp +IsWindow +LangDLL +LangString +LicenseBkColor +LicenseData +LicenseForceSelection +LicenseLangString +LicenseText +LoadLanguageFile +LockWindow +LogSet +LogText +ManifestDPIAware +ManifestSupportedOS +Math +MessageBox +MiscButtonText +Name +Nop +nsDialogs +nsExec +NSISdl +OutFile +Page +PageCallbacks +Pop +Push +Quit +ReadEnvStr +ReadINIStr +ReadRegDWORD +ReadRegStr +Reboot +RegDLL +Rename +RequestExecutionLevel +ReserveFile +Return +RMDir +SearchPath +Section +SectionEnd +SectionGetFlags +SectionGetInstTypes +SectionGetSize +SectionGetText +SectionGroup +SectionIn +SectionSetFlags +SectionSetInstTypes +SectionSetSize +SectionSetText +SendMessage +SetAutoClose +SetBrandingImage +SetCompress +SetCompressor +SetCompressorDictSize +SetCtlColors +SetCurInstType +SetDatablockOptimize +SetDateSave +SetDetailsPrint +SetDetailsView +SetErrorLevel +SetErrors +SetFileAttributes +SetFont +SetOutPath +SetOverwrite +SetPluginUnload +SetRebootFlag +SetRegView +SetShellVarContext +SetSilent +ShowInstDetails +ShowUninstDetails +ShowWindow +SilentInstall +SilentUnInstall +Sleep +SpaceTexts +Splash +StartMenu +StrCmp +StrCmpS +StrCpy +StrLen +SubCaption +System +Unicode +UninstallButtonText +UninstallCaption +UninstallIcon +UninstallSubCaption +UninstallText +UninstPage +UnRegDLL +UserInfo +Var +VIAddVersionKey +VIFileVersion +VIProductVersion +VPatch +WindowIcon +WriteINIStr +WriteRegBin +WriteRegDWORD +WriteRegExpandStr +WriteRegStr +WriteUninstaller +XPStyle + +---------------------------------------------------- + +[ + ["keyword", "Abort"], + ["keyword", "AddBrandingImage"], + ["keyword", "AddSize"], + ["keyword", "AdvSplash"], + ["keyword", "AllowRootDirInstall"], + ["keyword", "AllowSkipFiles"], + ["keyword", "AutoCloseWindow"], + ["keyword", "Banner"], + ["keyword", "BGFont"], + ["keyword", "BGGradient"], + ["keyword", "BGImage"], + ["keyword", "BrandingText"], + ["keyword", "BringToFront"], + ["keyword", "Call"], + ["keyword", "CallInstDLL"], + ["keyword", "Caption"], + ["keyword", "ChangeUI"], + ["keyword", "CheckBitmap"], + ["keyword", "ClearErrors"], + ["keyword", "CompletedText"], + ["keyword", "ComponentText"], + ["keyword", "CopyFiles"], + ["keyword", "CRCCheck"], + ["keyword", "CreateDirectory"], + ["keyword", "CreateFont"], + ["keyword", "CreateShortCut"], + ["keyword", "Delete"], + ["keyword", "DeleteINISec"], + ["keyword", "DeleteINIStr"], + ["keyword", "DeleteRegKey"], + ["keyword", "DeleteRegValue"], + ["keyword", "DetailPrint"], + ["keyword", "DetailsButtonText"], + ["keyword", "Dialer"], + ["keyword", "DirText"], + ["keyword", "DirVar"], + ["keyword", "DirVerify"], + ["keyword", "EnableWindow"], + ["keyword", "EnumRegKey"], + ["keyword", "EnumRegValue"], + ["keyword", "Exch"], + ["keyword", "Exec"], + ["keyword", "ExecShell"], + ["keyword", "ExecWait"], + ["keyword", "ExpandEnvStrings"], + ["keyword", "File"], + ["keyword", "FileBufSize"], + ["keyword", "FileClose"], + ["keyword", "FileErrorText"], + ["keyword", "FileOpen"], + ["keyword", "FileRead"], + ["keyword", "FileReadByte"], + ["keyword", "FileReadUTF16LE"], + ["keyword", "FileReadWord"], + ["keyword", "FileWriteUTF16LE"], + ["keyword", "FileSeek"], + ["keyword", "FileWrite"], + ["keyword", "FileWriteByte"], + ["keyword", "FileWriteWord"], + ["keyword", "FindClose"], + ["keyword", "FindFirst"], + ["keyword", "FindNext"], + ["keyword", "FindWindow"], + ["keyword", "FlushINI"], + ["keyword", "GetCurInstType"], + ["keyword", "GetCurrentAddress"], + ["keyword", "GetDlgItem"], + ["keyword", "GetDLLVersion"], + ["keyword", "GetDLLVersionLocal"], + ["keyword", "GetErrorLevel"], + ["keyword", "GetFileTime"], + ["keyword", "GetFileTimeLocal"], + ["keyword", "GetFullPathName"], + ["keyword", "GetFunction"], + ["keyword", "GetFunctionAddress"], + ["keyword", "GetFunctionEnd"], + ["keyword", "GetInstDirError"], + ["keyword", "GetLabelAddress"], + ["keyword", "GetTempFileName"], + ["keyword", "Goto"], + ["keyword", "HideWindow"], + ["keyword", "Icon"], + ["keyword", "IfAbort"], + ["keyword", "IfErrors"], + ["keyword", "IfFileExists"], + ["keyword", "IfRebootFlag"], + ["keyword", "IfSilent"], + ["keyword", "InitPluginsDir"], + ["keyword", "InstallButtonText"], + ["keyword", "InstallColors"], + ["keyword", "InstallDir"], + ["keyword", "InstallDirRegKey"], + ["keyword", "InstProgressFlags"], + ["keyword", "InstType"], + ["keyword", "InstTypeGetText"], + ["keyword", "InstTypeSetText"], + ["keyword", "IntCmp"], + ["keyword", "IntCmpU"], + ["keyword", "IntFmt"], + ["keyword", "IntOp"], + ["keyword", "IsWindow"], + ["keyword", "LangDLL"], + ["keyword", "LangString"], + ["keyword", "LicenseBkColor"], + ["keyword", "LicenseData"], + ["keyword", "LicenseForceSelection"], + ["keyword", "LicenseLangString"], + ["keyword", "LicenseText"], + ["keyword", "LoadLanguageFile"], + ["keyword", "LockWindow"], + ["keyword", "LogSet"], + ["keyword", "LogText"], + ["keyword", "ManifestDPIAware"], + ["keyword", "ManifestSupportedOS"], + ["keyword", "Math"], + ["keyword", "MessageBox"], + ["keyword", "MiscButtonText"], + ["keyword", "Name"], + ["keyword", "Nop"], + ["keyword", "nsDialogs"], + ["keyword", "nsExec"], + ["keyword", "NSISdl"], + ["keyword", "OutFile"], + ["keyword", "Page"], + ["keyword", "PageCallbacks"], + ["keyword", "Pop"], + ["keyword", "Push"], + ["keyword", "Quit"], + ["keyword", "ReadEnvStr"], + ["keyword", "ReadINIStr"], + ["keyword", "ReadRegDWORD"], + ["keyword", "ReadRegStr"], + ["keyword", "Reboot"], + ["keyword", "RegDLL"], + ["keyword", "Rename"], + ["keyword", "RequestExecutionLevel"], + ["keyword", "ReserveFile"], + ["keyword", "Return"], + ["keyword", "RMDir"], + ["keyword", "SearchPath"], + ["keyword", "Section"], + ["keyword", "SectionEnd"], + ["keyword", "SectionGetFlags"], + ["keyword", "SectionGetInstTypes"], + ["keyword", "SectionGetSize"], + ["keyword", "SectionGetText"], + ["keyword", "SectionGroup"], + ["keyword", "SectionIn"], + ["keyword", "SectionSetFlags"], + ["keyword", "SectionSetInstTypes"], + ["keyword", "SectionSetSize"], + ["keyword", "SectionSetText"], + ["keyword", "SendMessage"], + ["keyword", "SetAutoClose"], + ["keyword", "SetBrandingImage"], + ["keyword", "SetCompress"], + ["keyword", "SetCompressor"], + ["keyword", "SetCompressorDictSize"], + ["keyword", "SetCtlColors"], + ["keyword", "SetCurInstType"], + ["keyword", "SetDatablockOptimize"], + ["keyword", "SetDateSave"], + ["keyword", "SetDetailsPrint"], + ["keyword", "SetDetailsView"], + ["keyword", "SetErrorLevel"], + ["keyword", "SetErrors"], + ["keyword", "SetFileAttributes"], + ["keyword", "SetFont"], + ["keyword", "SetOutPath"], + ["keyword", "SetOverwrite"], + ["keyword", "SetPluginUnload"], + ["keyword", "SetRebootFlag"], + ["keyword", "SetRegView"], + ["keyword", "SetShellVarContext"], + ["keyword", "SetSilent"], + ["keyword", "ShowInstDetails"], + ["keyword", "ShowUninstDetails"], + ["keyword", "ShowWindow"], + ["keyword", "SilentInstall"], + ["keyword", "SilentUnInstall"], + ["keyword", "Sleep"], + ["keyword", "SpaceTexts"], + ["keyword", "Splash"], + ["keyword", "StartMenu"], + ["keyword", "StrCmp"], + ["keyword", "StrCmpS"], + ["keyword", "StrCpy"], + ["keyword", "StrLen"], + ["keyword", "SubCaption"], + ["keyword", "System"], + ["keyword", "Unicode"], + ["keyword", "UninstallButtonText"], + ["keyword", "UninstallCaption"], + ["keyword", "UninstallIcon"], + ["keyword", "UninstallSubCaption"], + ["keyword", "UninstallText"], + ["keyword", "UninstPage"], + ["keyword", "UnRegDLL"], + ["keyword", "UserInfo"], + ["keyword", "Var"], + ["keyword", "VIAddVersionKey"], + ["keyword", "VIFileVersion"], + ["keyword", "VIProductVersion"], + ["keyword", "VPatch"], + ["keyword", "WindowIcon"], + ["keyword", "WriteINIStr"], + ["keyword", "WriteRegBin"], + ["keyword", "WriteRegDWORD"], + ["keyword", "WriteRegExpandStr"], + ["keyword", "WriteRegStr"], + ["keyword", "WriteUninstaller"], + ["keyword", "XPStyle"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/number_feature.test new file mode 100644 index 0000000000..2ef1dcedc0 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/number_feature.test @@ -0,0 +1,19 @@ +0xBadFace +42 +3.14159 +3.2e4 +1.0e-5 + +---------------------------------------------------- + +[ + ["number", "0xBadFace"], + ["number", "42"], + ["number", "3.14159"], + ["number", "3.2e4"], + ["number", "1.0e-5"] +] + +---------------------------------------------------- + +Checks for hexadecimal and decimal numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/operator_feature.test new file mode 100644 index 0000000000..3764808465 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/operator_feature.test @@ -0,0 +1,21 @@ ++ - ++ -- +< <= > >= += == === +& && | || +? * / ~ +^ % + +---------------------------------------------------- + +[ + ["operator", "+"], ["operator", "-"], ["operator", "++"], ["operator", "--"], + ["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="], + ["operator", "="], ["operator", "=="], ["operator", "==="], + ["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"], + ["operator", "?"], ["operator", "*"], ["operator", "/"], ["operator", "~"], + ["operator", "^"], ["operator", "%"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/property_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/property_feature.test new file mode 100644 index 0000000000..621eae88be --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/property_feature.test @@ -0,0 +1,111 @@ +admin all auto both +colored false force +hide highest lastused +leave listonly none +normal notset off +on open print show +silent silentlog +smooth textonly +true user + +ARCHIVE +FILE_ATTRIBUTE_ARCHIVE +FILE_ATTRIBUTE_NORMAL +FILE_ATTRIBUTE_OFFLINE +FILE_ATTRIBUTE_READONLY +FILE_ATTRIBUTE_SYSTEM +FILE_ATTRIBUTE_TEMPORARY +HKCR HKCU HKDD HKLM +HKPD HKU +HKEY_CLASSES_ROOT +HKEY_CURRENT_CONFIG +HKEY_CURRENT_USER +HKEY_DYN_DATA +HKEY_LOCAL_MACHINE +HKEY_PERFORMANCE_DATA +HKEY_USERS +IDABORT IDCANCEL +IDIGNORE IDNO +IDOK IDRETRY IDYES +MB_ABORTRETRYIGNORE +MB_DEFBUTTON1 +MB_DEFBUTTON2 +MB_DEFBUTTON3 +MB_DEFBUTTON4 +MB_ICONEXCLAMATION +MB_ICONINFORMATION +MB_ICONQUESTION +MB_ICONSTOP +MB_OK +MB_OKCANCEL +MB_RETRYCANCEL +MB_RIGHT +MB_RTLREADING +MB_SETFOREGROUND +MB_TOPMOST +MB_USERICON +MB_YESNO +NORMAL OFFLINE +READONLY SHCTX +SHELL_CONTEXT +SYSTEM TEMPORARY + +---------------------------------------------------- + +[ + ["property", "admin"], ["property", "all"], ["property", "auto"], ["property", "both"], + ["property", "colored"], ["property", "false"], ["property", "force"], + ["property", "hide"], ["property", "highest"], ["property", "lastused"], + ["property", "leave"], ["property", "listonly"], ["property", "none"], + ["property", "normal"], ["property", "notset"], ["property", "off"], + ["property", "on"], ["property", "open"], ["property", "print"], ["property", "show"], + ["property", "silent"], ["property", "silentlog"], + ["property", "smooth"], ["property", "textonly"], + ["property", "true"], ["property", "user"], + + ["property", "ARCHIVE"], + ["property", "FILE_ATTRIBUTE_ARCHIVE"], + ["property", "FILE_ATTRIBUTE_NORMAL"], + ["property", "FILE_ATTRIBUTE_OFFLINE"], + ["property", "FILE_ATTRIBUTE_READONLY"], + ["property", "FILE_ATTRIBUTE_SYSTEM"], + ["property", "FILE_ATTRIBUTE_TEMPORARY"], + ["property", "HKCR"], ["property", "HKCU"], ["property", "HKDD"], ["property", "HKLM"], + ["property", "HKPD"], ["property", "HKU"], + ["property", "HKEY_CLASSES_ROOT"], + ["property", "HKEY_CURRENT_CONFIG"], + ["property", "HKEY_CURRENT_USER"], + ["property", "HKEY_DYN_DATA"], + ["property", "HKEY_LOCAL_MACHINE"], + ["property", "HKEY_PERFORMANCE_DATA"], + ["property", "HKEY_USERS"], + ["property", "IDABORT"], ["property", "IDCANCEL"], + ["property", "IDIGNORE"], ["property", "IDNO"], + ["property", "IDOK"], ["property", "IDRETRY"], ["property", "IDYES"], + ["property", "MB_ABORTRETRYIGNORE"], + ["property", "MB_DEFBUTTON1"], + ["property", "MB_DEFBUTTON2"], + ["property", "MB_DEFBUTTON3"], + ["property", "MB_DEFBUTTON4"], + ["property", "MB_ICONEXCLAMATION"], + ["property", "MB_ICONINFORMATION"], + ["property", "MB_ICONQUESTION"], + ["property", "MB_ICONSTOP"], + ["property", "MB_OK"], + ["property", "MB_OKCANCEL"], + ["property", "MB_RETRYCANCEL"], + ["property", "MB_RIGHT"], + ["property", "MB_RTLREADING"], + ["property", "MB_SETFOREGROUND"], + ["property", "MB_TOPMOST"], + ["property", "MB_USERICON"], + ["property", "MB_YESNO"], + ["property", "NORMAL"], ["property", "OFFLINE"], + ["property", "READONLY"], ["property", "SHCTX"], + ["property", "SHELL_CONTEXT"], + ["property", "SYSTEM"], ["property", "TEMPORARY"] +] + +---------------------------------------------------- + +Checks for all properties. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/string_feature.test new file mode 100644 index 0000000000..f8f5c8b07f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/string_feature.test @@ -0,0 +1,17 @@ +"" +"fo\"o" +'' +'fo\'o' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"o\""], + ["string", "''"], + ["string", "'fo\\'o'"] +] + +---------------------------------------------------- + +Checks for single-quoted and double-quoted strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/nsis/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/nsis/variable_feature.test new file mode 100644 index 0000000000..b61d3d3701 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/nsis/variable_feature.test @@ -0,0 +1,15 @@ +$LANGUAGE +$(myLicenseData) +${LANG_ENGLISH} + +---------------------------------------------------- + +[ + ["variable", "$LANGUAGE"], + ["variable", "$(myLicenseData)"], + ["variable", "${LANG_ENGLISH}"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/objectivec/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/objectivec/keyword_feature.test new file mode 100644 index 0000000000..99d3c4bc7b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/objectivec/keyword_feature.test @@ -0,0 +1,59 @@ +asm typeof inline +auto break case +char const continue +default do double +else enum extern +float for goto +if int long +register return +short signed +sizeof static +struct switch +typedef union +unsigned void +volatile while +in self super + +@interface @end +@implementation +@protocol @class +@public @protected +@private @property +@try @catch +@finally @throw +@synthesize +@dynamic @selector + +---------------------------------------------------- + +[ + ["keyword", "asm"], ["keyword", "typeof"], ["keyword", "inline"], + ["keyword", "auto"], ["keyword", "break"], ["keyword", "case"], + ["keyword", "char"], ["keyword", "const"], ["keyword", "continue"], + ["keyword", "default"], ["keyword", "do"], ["keyword", "double"], + ["keyword", "else"], ["keyword", "enum"], ["keyword", "extern"], + ["keyword", "float"], ["keyword", "for"], ["keyword", "goto"], + ["keyword", "if"], ["keyword", "int"], ["keyword", "long"], + ["keyword", "register"], ["keyword", "return"], + ["keyword", "short"], ["keyword", "signed"], + ["keyword", "sizeof"], ["keyword", "static"], + ["keyword", "struct"], ["keyword", "switch"], + ["keyword", "typedef"], ["keyword", "union"], + ["keyword", "unsigned"], ["keyword", "void"], + ["keyword", "volatile"], ["keyword", "while"], + ["keyword", "in"], ["keyword", "self"], ["keyword", "super"], + + ["keyword", "@interface"], ["keyword", "@end"], + ["keyword", "@implementation"], + ["keyword", "@protocol"], ["keyword", "@class"], + ["keyword", "@public"], ["keyword", "@protected"], + ["keyword", "@private"], ["keyword", "@property"], + ["keyword", "@try"], ["keyword", "@catch"], + ["keyword", "@finally"], ["keyword", "@throw"], + ["keyword", "@synthesize"], + ["keyword", "@dynamic"], ["keyword", "@selector"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/objectivec/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/objectivec/operator_feature.test new file mode 100644 index 0000000000..87620474f8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/objectivec/operator_feature.test @@ -0,0 +1,25 @@ ++ - ++ -- +! != +< << <= <<= +> >> >= >>= +-> = == +^ ~ % +& && | || +? * / @ + +---------------------------------------------------- + +[ + ["operator", "+"], ["operator", "-"], ["operator", "++"], ["operator", "--"], + ["operator", "!"], ["operator", "!="], + ["operator", "<"], ["operator", "<<"], ["operator", "<="], ["operator", "<<="], + ["operator", ">"], ["operator", ">>"], ["operator", ">="], ["operator", ">>="], + ["operator", "->"], ["operator", "="], ["operator", "=="], + ["operator", "^"], ["operator", "~"], ["operator", "%"], + ["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"], + ["operator", "?"], ["operator", "*"], ["operator", "/"], ["operator", "@"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/objectivec/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/objectivec/string_feature.test new file mode 100644 index 0000000000..2151f370b2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/objectivec/string_feature.test @@ -0,0 +1,34 @@ +"" +"fo\"o" +"foo\ +bar" + +'' +'fo\'o' +'foo\ +bar' + +@"" +@"fo\"o" +@"foo\ +bar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"o\""], + ["string", "\"foo\\\r\nbar\""], + + ["string", "''"], + ["string", "'fo\\'o'"], + ["string", "'foo\\\r\nbar'"], + + ["string", "@\"\""], + ["string", "@\"fo\\\"o\""], + ["string", "@\"foo\\\r\nbar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/boolean_feature.test new file mode 100644 index 0000000000..ca400627a7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/boolean_feature.test @@ -0,0 +1,13 @@ +false +true + +---------------------------------------------------- + +[ + ["boolean", "false"], + ["boolean", "true"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/comment_feature.test new file mode 100644 index 0000000000..6f8e0e1c67 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/comment_feature.test @@ -0,0 +1,14 @@ +(**) +(* foo +bar *) + +---------------------------------------------------- + +[ + ["comment", "(**)"], + ["comment", "(* foo\r\nbar *)"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/directive_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/directive_feature.test new file mode 100644 index 0000000000..d0bd590b2b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/directive_feature.test @@ -0,0 +1,15 @@ +#quit +#load +#load_rec + +---------------------------------------------------- + +[ + ["directive", "#quit"], + ["directive", "#load"], + ["directive", "#load_rec"] +] + +---------------------------------------------------- + +Checks for directives. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/keyword_feature.test new file mode 100644 index 0000000000..d98880587b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/keyword_feature.test @@ -0,0 +1,101 @@ +as +assert +begin +class +constraint +do +done +downto +else +end +exception +external +for +fun +function +functor +if +in +include +inherit +initializer +lazy +let +match +method +module +mutable +new +object +of +open +prefix +private +rec +then +sig +struct +to +try +type +val +value +virtual +where +while +with + +---------------------------------------------------- + +[ + ["keyword", "as"], + ["keyword", "assert"], + ["keyword", "begin"], + ["keyword", "class"], + ["keyword", "constraint"], + ["keyword", "do"], + ["keyword", "done"], + ["keyword", "downto"], + ["keyword", "else"], + ["keyword", "end"], + ["keyword", "exception"], + ["keyword", "external"], + ["keyword", "for"], + ["keyword", "fun"], + ["keyword", "function"], + ["keyword", "functor"], + ["keyword", "if"], + ["keyword", "in"], + ["keyword", "include"], + ["keyword", "inherit"], + ["keyword", "initializer"], + ["keyword", "lazy"], + ["keyword", "let"], + ["keyword", "match"], + ["keyword", "method"], + ["keyword", "module"], + ["keyword", "mutable"], + ["keyword", "new"], + ["keyword", "object"], + ["keyword", "of"], + ["keyword", "open"], + ["keyword", "prefix"], + ["keyword", "private"], + ["keyword", "rec"], + ["keyword", "then"], + ["keyword", "sig"], + ["keyword", "struct"], + ["keyword", "to"], + ["keyword", "try"], + ["keyword", "type"], + ["keyword", "val"], + ["keyword", "value"], + ["keyword", "virtual"], + ["keyword", "where"], + ["keyword", "while"], + ["keyword", "with"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/number_feature.test new file mode 100644 index 0000000000..58500414a0 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/number_feature.test @@ -0,0 +1,25 @@ +0xBad_Face +0o754_672 +0b1010_1111 +42_000 +3.14_15_9 +3.2e8 +6.1E-7 +0.4e+12_415 + +---------------------------------------------------- + +[ + ["number", "0xBad_Face"], + ["number", "0o754_672"], + ["number", "0b1010_1111"], + ["number", "42_000"], + ["number", "3.14_15_9"], + ["number", "3.2e8"], + ["number", "6.1E-7"], + ["number", "0.4e+12_415"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/operator_feature.test new file mode 100644 index 0000000000..b27bbc5c9c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/operator_feature.test @@ -0,0 +1,31 @@ +and asr land +lor lxor lsl lsr +mod nor or + +:= += < > @ +^ | & ~ ++ - * / +$ % ! ? + +~=~ + +---------------------------------------------------- + +[ + ["operator", "and"], ["operator", "asr"], ["operator", "land"], + ["operator", "lor"], ["operator", "lxor"], ["operator", "lsl"], ["operator", "lsr"], + ["operator", "mod"], ["operator", "nor"], ["operator", "or"], + + ["operator", ":="], + ["operator", "="], ["operator", "<"], ["operator", ">"], ["operator", "@"], + ["operator", "^"], ["operator", "|"], ["operator", "&"], ["operator", "~"], + ["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "/"], + ["operator", "$"], ["operator", "%"], ["operator", "!"], ["operator", "?"], + + ["operator", "~=~"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/string_feature.test new file mode 100644 index 0000000000..6fb9ae8faa --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/string_feature.test @@ -0,0 +1,25 @@ +"" +"Fo\"obar" +'\'' +'\123' +'\xf4' +`\`` +`\123` +`\xf4` + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"Fo\\\"obar\""], + ["string", "'\\''"], + ["string", "'\\123'"], + ["string", "'\\xf4'"], + ["string", "`\\``"], + ["string", "`\\123`"], + ["string", "`\\xf4`"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ocaml/type_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ocaml/type_feature.test new file mode 100644 index 0000000000..abeb15df03 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ocaml/type_feature.test @@ -0,0 +1,17 @@ +'Foo +'bar_42 +`Foo +`bar_42 + +---------------------------------------------------- + +[ + ["type", "'Foo"], + ["type", "'bar_42"], + ["type", "`Foo"], + ["type", "`bar_42"] +] + +---------------------------------------------------- + +Checks for types. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/atom_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/atom_feature.test new file mode 100644 index 0000000000..579c50c758 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/atom_feature.test @@ -0,0 +1,16 @@ +'' +'fo\'obar' +'foo +bar' + +---------------------------------------------------- + +[ + ["atom", "''"], + ["atom", "'fo\\'obar'"], + ["atom", "'foo\r\nbar'"] +] + +---------------------------------------------------- + +Checks for atoms. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/attr-name_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/attr-name_feature.test new file mode 100644 index 0000000000..9584d50b14 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/attr-name_feature.test @@ -0,0 +1,14 @@ +menubutton(text:'Test' underline:0) + +---------------------------------------------------- + +[ + ["function", "menubutton"], ["punctuation", "("], + ["attr-name", "text"], ["punctuation", ":"], ["atom", "'Test'"], + ["attr-name", "underline"], ["punctuation", ":"], ["number", "0"], + ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for parameter names. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/comment_feature.test new file mode 100644 index 0000000000..56ecdb3184 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/comment_feature.test @@ -0,0 +1,18 @@ +% +% Foobar +/**/ +/* Foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "%"], + ["comment", "% Foobar"], + ["comment", "/**/"], + ["comment", "/* Foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/function_feature.test new file mode 100644 index 0000000000..9abc12830e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/function_feature.test @@ -0,0 +1,13 @@ +foobar() +{Foobar} + +---------------------------------------------------- + +[ + ["function", "foobar"], ["punctuation", "("], ["punctuation", ")"], + ["punctuation", "{"], ["function", "Foobar"], ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for functions and procedures. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/keyword_feature.test new file mode 100644 index 0000000000..63848e770f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/keyword_feature.test @@ -0,0 +1,103 @@ +$ +_ +[] +at +attr +case +catch +choice +class +cond +declare +define +dis +else +elsecase +elseif +end +export +fail +false +feat +finally +from +fun +functor +if +import +in +local +lock +meth +nil +not +of +or +prepare +proc +prop +raise +require +self +skip +then +thread +true +try +unit + +---------------------------------------------------- + +[ + ["keyword", "$"], + ["keyword", "_"], + ["keyword", "[]"], + ["keyword", "at"], + ["keyword", "attr"], + ["keyword", "case"], + ["keyword", "catch"], + ["keyword", "choice"], + ["keyword", "class"], + ["keyword", "cond"], + ["keyword", "declare"], + ["keyword", "define"], + ["keyword", "dis"], + ["keyword", "else"], + ["keyword", "elsecase"], + ["keyword", "elseif"], + ["keyword", "end"], + ["keyword", "export"], + ["keyword", "fail"], + ["keyword", "false"], + ["keyword", "feat"], + ["keyword", "finally"], + ["keyword", "from"], + ["keyword", "fun"], + ["keyword", "functor"], + ["keyword", "if"], + ["keyword", "import"], + ["keyword", "in"], + ["keyword", "local"], + ["keyword", "lock"], + ["keyword", "meth"], + ["keyword", "nil"], + ["keyword", "not"], + ["keyword", "of"], + ["keyword", "or"], + ["keyword", "prepare"], + ["keyword", "proc"], + ["keyword", "prop"], + ["keyword", "raise"], + ["keyword", "require"], + ["keyword", "self"], + ["keyword", "skip"], + ["keyword", "then"], + ["keyword", "thread"], + ["keyword", "true"], + ["keyword", "try"], + ["keyword", "unit"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/number_feature.test new file mode 100644 index 0000000000..a8d3254fa2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/number_feature.test @@ -0,0 +1,35 @@ +0 +42 +0154 +0xBadFace +0B0101 +3.14159 +2e8 +3.E~7 +4.8E12 +&0 +&a +&\n +&\124 + +---------------------------------------------------- + +[ + ["number", "0"], + ["number", "42"], + ["number", "0154"], + ["number", "0xBadFace"], + ["number", "0B0101"], + ["number", "3.14159"], + ["number", "2e8"], + ["number", "3.E~7"], + ["number", "4.8E12"], + ["number", "&0"], + ["number", "&a"], + ["number", "&\\n"], + ["number", "&\\124"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/operator_feature.test new file mode 100644 index 0000000000..bf82655282 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/operator_feature.test @@ -0,0 +1,35 @@ +:= :: ::: +< <- <: <= += == =: =< =<: +> >= >: >=: +\= \=: +! !! +| # + - +* / , ~ +^ @ +andthen +div +mod +orelse + +---------------------------------------------------- + +[ + ["operator", ":="], ["operator", "::"], ["operator", ":::"], + ["operator", "<"], ["operator", "<-"], ["operator", "<:"], ["operator", "<="], + ["operator", "="], ["operator", "=="], ["operator", "=:"], ["operator", "=<"], ["operator", "=<:"], + ["operator", ">"], ["operator", ">="], ["operator", ">:"], ["operator", ">=:"], + ["operator", "\\="], ["operator", "\\=:"], + ["operator", "!"], ["operator", "!!"], + ["operator", "|"], ["operator", "#"], ["operator", "+"], ["operator", "-"], + ["operator", "*"], ["operator", "/"], ["operator", ","], ["operator", "~"], + ["operator", "^"], ["operator", "@"], + ["operator", "andthen"], + ["operator", "div"], + ["operator", "mod"], + ["operator", "orelse"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/string_feature.test new file mode 100644 index 0000000000..489fa1c977 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/string_feature.test @@ -0,0 +1,16 @@ +"" +"Fo\"obar" +"Foo +bar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"Fo\\\"obar\""], + ["string", "\"Foo\r\nbar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/oz/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/oz/variable_feature.test new file mode 100644 index 0000000000..c66e3a9698 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/oz/variable_feature.test @@ -0,0 +1,15 @@ +A +Foobar +Foo42 + +---------------------------------------------------- + +[ + ["variable", "A"], + ["variable", "Foobar"], + ["variable", "Foo42"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parigp/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parigp/comment_feature.test new file mode 100644 index 0000000000..0240f5ee13 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parigp/comment_feature.test @@ -0,0 +1,18 @@ +/**/ +/* foo +bar */ +\\ +\\ foobar + +---------------------------------------------------- + +[ + ["comment", "/**/"], + ["comment", "/* foo\r\nbar */"], + ["comment", "\\\\"], + ["comment", "\\\\ foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parigp/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parigp/function_feature.test new file mode 100644 index 0000000000..368ad73592 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parigp/function_feature.test @@ -0,0 +1,13 @@ +foo() +f o o b a r ( ) + +---------------------------------------------------- + +[ + ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], + ["function", "f o o b a r"], ["punctuation", "("], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for functions. Also checks that whitespaces are ignored. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parigp/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parigp/keyword_feature.test new file mode 100644 index 0000000000..45d68fa0b2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parigp/keyword_feature.test @@ -0,0 +1,103 @@ +break +breakpoint +dbg_down +dbg_err +dbg_up +dbg_x +for +forcomposite +fordiv +forell +forpart +forprime +forstep +forsubgroup +forvec +if +iferr +local +my +next +return +until +while + +br e ak +break point +d b g_down +dbg_e r r +dbg _ up +db g _x +f o r +for composite +for div +for ell +for part +for prime +for step +for subgroup +for vec +i f +if err +l o c a l +m y +ne xt +re tu rn +u nti l +whi le + +---------------------------------------------------- + +[ + ["keyword", "break"], + ["keyword", "breakpoint"], + ["keyword", "dbg_down"], + ["keyword", "dbg_err"], + ["keyword", "dbg_up"], + ["keyword", "dbg_x"], + ["keyword", "for"], + ["keyword", "forcomposite"], + ["keyword", "fordiv"], + ["keyword", "forell"], + ["keyword", "forpart"], + ["keyword", "forprime"], + ["keyword", "forstep"], + ["keyword", "forsubgroup"], + ["keyword", "forvec"], + ["keyword", "if"], + ["keyword", "iferr"], + ["keyword", "local"], + ["keyword", "my"], + ["keyword", "next"], + ["keyword", "return"], + ["keyword", "until"], + ["keyword", "while"], + + ["keyword", "br e ak"], + ["keyword", "break point"], + ["keyword", "d b g_down"], + ["keyword", "dbg_e r r"], + ["keyword", "dbg _ up"], + ["keyword", "db g _x"], + ["keyword", "f o r"], + ["keyword", "for composite"], + ["keyword", "for div"], + ["keyword", "for ell"], + ["keyword", "for part"], + ["keyword", "for prime"], + ["keyword", "for step"], + ["keyword", "for subgroup"], + ["keyword", "for vec"], + ["keyword", "i f"], + ["keyword", "if err"], + ["keyword", "l o c a l"], + ["keyword", "m y"], + ["keyword", "ne xt"], + ["keyword", "re tu rn"], + ["keyword", "u nti l"], + ["keyword", "whi le"] +] + +---------------------------------------------------- + +Checks for all keywords. Also checks that whitespaces are ignored. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parigp/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parigp/number_feature.test new file mode 100644 index 0000000000..b242b82884 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parigp/number_feature.test @@ -0,0 +1,39 @@ +0 +42 +1 2 3 4 5 +4. +4 . +.5 +. 5 +3.14159 +3 . 14 15 9 +3E8 +3 E 8 +2.0e-7 +2 . 0 e - 7 +.28e+12 +. 2 8 e + 1 2 + +---------------------------------------------------- + +[ + ["number", "0"], + ["number", "42"], + ["number", "1 2 3 4 5"], + ["number", "4."], + ["number", "4 ."], + ["number", ".5"], + ["number", ". 5"], + ["number", "3.14159"], + ["number", "3 . 14 15 9"], + ["number", "3E8"], + ["number", "3 E 8"], + ["number", "2.0e-7"], + ["number", "2 . 0 e - 7"], + ["number", ".28e+12"], + ["number", ". 2 8 e + 1 2"] +] + +---------------------------------------------------- + +Checks for numbers. Also checks that whitespaces are ignored. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parigp/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parigp/operator_feature.test new file mode 100644 index 0000000000..2f8865ec0c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parigp/operator_feature.test @@ -0,0 +1,155 @@ +.. +. . +* +*= +* = +/ +/= +/ = +! +!= +! = +% +%= +% = +%# +% # +%' +% ' +%#' +% # ' +%''''' +% ''''' +%#''''' +% # ''''' ++ +++ ++ + ++= ++ = +- +-- +- - +-= +- = +-> +- > +< +<< +< < +<= +< = +<<= +< < = +<> +< > +> +>> +> > +>= +> = +>>= +> > = += +== += = +=== += = = +\ +\/ +\ / +\= +\ = +\/= +\ / = +& +&& +& & +|| +| | +' +# +~ +^ + +---------------------------------------------------- + +[ + ["operator", ".."], + ["operator", ". ."], + ["operator", "*"], + ["operator", "*="], + ["operator", "* ="], + ["operator", "/"], + ["operator", "/="], + ["operator", "/ ="], + ["operator", "!"], + ["operator", "!="], + ["operator", "! ="], + ["operator", "%"], + ["operator", "%="], + ["operator", "% ="], + ["operator", "%#"], + ["operator", "% #"], + ["operator", "%'"], + ["operator", "% '"], + ["operator", "%#'"], + ["operator", "% # '"], + ["operator", "%'''''"], + ["operator", "% '''''"], + ["operator", "%#'''''"], + ["operator", "% # '''''"], + ["operator", "+"], + ["operator", "++"], + ["operator", "+ +"], + ["operator", "+="], + ["operator", "+ ="], + ["operator", "-"], + ["operator", "--"], + ["operator", "- -"], + ["operator", "-="], + ["operator", "- ="], + ["operator", "->"], + ["operator", "- >"], + ["operator", "<"], + ["operator", "<<"], + ["operator", "< <"], + ["operator", "<="], + ["operator", "< ="], + ["operator", "<<="], + ["operator", "< < ="], + ["operator", "<>"], + ["operator", "< >"], + ["operator", ">"], + ["operator", ">>"], + ["operator", "> >"], + ["operator", ">="], + ["operator", "> ="], + ["operator", ">>="], + ["operator", "> > ="], + ["operator", "="], + ["operator", "=="], + ["operator", "= ="], + ["operator", "==="], + ["operator", "= = ="], + ["operator", "\\"], + ["operator", "\\/"], + ["operator", "\\ /"], + ["operator", "\\="], + ["operator", "\\ ="], + ["operator", "\\/="], + ["operator", "\\ / ="], + ["operator", "&"], + ["operator", "&&"], + ["operator", "& &"], + ["operator", "||"], + ["operator", "| |"], + ["operator", "'"], + ["operator", "#"], + ["operator", "~"], + ["operator", "^"] +] + +---------------------------------------------------- + +Checks for operators. Also checks that whitespaces are ignored. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parigp/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parigp/string_feature.test new file mode 100644 index 0000000000..b3c6ec9549 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parigp/string_feature.test @@ -0,0 +1,13 @@ +"" +"fo\"obar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/boolean_feature.test new file mode 100644 index 0000000000..507e9b2c8a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/boolean_feature.test @@ -0,0 +1,21 @@ +(true) +(false) + +---------------------------------------------------- + +[ + ["expression", [ + ["punctuation", "("], + ["boolean", "true"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["boolean", "false"], + ["punctuation", ")"] + ]] +] + +---------------------------------------------------- + +Checks for booleans inside expressions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/escape_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/escape_feature.test new file mode 100644 index 0000000000..feeedf88f3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/escape_feature.test @@ -0,0 +1,68 @@ +^$ +^^ +^; +^@ +^( +^) +^[ +^] +^{ +^} +^" +^' +^: +^# +^#20 +^#af +^#AF + +^^date::now +^$foobar + +
+ +---------------------------------------------------- + +[ + ["escape", "^$"], + ["escape", "^^"], + ["escape", "^;"], + ["escape", "^@"], + ["escape", "^("], + ["escape", "^)"], + ["escape", "^["], + ["escape", "^]"], + ["escape", "^{"], + ["escape", "^}"], + ["escape", "^\""], + ["escape", "^'"], + ["escape", "^:"], + ["escape", "^#"], + ["escape", "^#20"], + ["escape", "^#af"], + ["escape", "^#AF"], + + ["escape", "^^"], "date::now\r\n", + ["escape", "^$"], "foobar\r\n\r\n", + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", ["class"]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "foo", + ["escape", "^^"], + "bar", + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]] +] + +---------------------------------------------------- + +Checks for escapes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/expression_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/expression_feature.test new file mode 100644 index 0000000000..0197a271db --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/expression_feature.test @@ -0,0 +1,58 @@ +((3-(9-2))*4) +^eval(4+2) + +
+ +---------------------------------------------------- + +[ + ["expression", [ + ["punctuation", "("], + ["punctuation", "("], + ["number", "3"], + ["operator", "-"], + ["punctuation", "("], + ["number", "9"], + ["operator", "-"], + ["number", "2"], + ["punctuation", ")"], + ["punctuation", ")"], + ["operator", "*"], + ["number", "4"], + ["punctuation", ")"] + ]], + ["keyword", "^eval"], + + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "+"], + ["number", "2"], + ["punctuation", ")"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", ["class"]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "foo-", + ["keyword", "^eval"], + ["expression", [ + ["punctuation", "("], + ["number", "4"], ["operator", "+"], ["number", "2"], + ["punctuation", ")"] + ]], + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]] +] + +---------------------------------------------------- + +Checks for expressions, up to 3 levels of depth. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/function_feature.test new file mode 100644 index 0000000000..32231e33f3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/function_feature.test @@ -0,0 +1,48 @@ +@foo[] +@GET_foo[] +@SET_foo[] +^foo[] +^Foo::create[] +^date::now[] +^foo_bar.menu{} + +(^foo[]) + +
+ +---------------------------------------------------- + +[ + ["function", ["@foo"]], ["punctuation", "["], ["punctuation", "]"], + ["function", ["@", ["keyword", "GET_"], "foo"]], ["punctuation", "["], ["punctuation", "]"], + ["function", ["@", ["keyword", "SET_"], "foo"]], ["punctuation", "["], ["punctuation", "]"], + ["function", ["^foo"]], ["punctuation", "["], ["punctuation", "]"], + ["function", ["^Foo", ["punctuation", "::"], "create"]], ["punctuation", "["], ["punctuation", "]"], + ["function", ["^date", ["punctuation", "::"], "now"]], ["punctuation", "["], ["punctuation", "]"], + ["function", ["^foo_bar", ["punctuation", "."], "menu"]], ["punctuation", "{"], ["punctuation", "}"], + + ["expression", [ + ["punctuation", "("], + ["function", ["^foo"]], ["punctuation", "["], ["punctuation", "]"], + ["punctuation", ")"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", ["class"]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + ["function", ["^foo"]], ["parser-punctuation", "["], ["parser-punctuation", "]"], + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]] +] + +---------------------------------------------------- + +Checks for functions and methods. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/keyword_feature.test new file mode 100644 index 0000000000..b4372c65fe --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/keyword_feature.test @@ -0,0 +1,70 @@ +^case +^eval +^for +^if +^switch +^throw + +@BASE +@CLASS +@GET +@GET_DEFAULT +@OPTIONS +@SET_DEFAULT +@USE + +(^eval(2+2)) + +
+ +---------------------------------------------------- + +[ + ["keyword", "^case"], + ["keyword", "^eval"], + ["keyword", "^for"], + ["keyword", "^if"], + ["keyword", "^switch"], + ["keyword", "^throw"], + + ["keyword", "@BASE"], + ["keyword", "@CLASS"], + ["keyword", "@GET"], + ["keyword", "@GET_DEFAULT"], + ["keyword", "@OPTIONS"], + ["keyword", "@SET_DEFAULT"], + ["keyword", "@USE"], + + ["expression", [ + ["punctuation", "("], + ["keyword", "^eval"], + ["punctuation", "("], + ["number", "2"], ["operator", "+"], ["number", "2"], + ["punctuation", ")"], + ["punctuation", ")"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", ["class"]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + ["keyword", "^if"], + ["expression", [ + ["punctuation", "("], ["variable", ["$foo"]], ["punctuation", ")"] + ]], + ["parser-punctuation", "{"], "bar", ["parser-punctuation", "}"], + ["parser-punctuation", "{"], "baz", ["parser-punctuation", "}"], + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/number_feature.test new file mode 100644 index 0000000000..89dc163c14 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/number_feature.test @@ -0,0 +1,51 @@ +(42) +(3.14159) +(3e5) +(0.8E-12) +(3.9e+2) +(0xbadface) +(0XBADFACE) + +---------------------------------------------------- + +[ + ["expression", [ + ["punctuation", "("], + ["number", "42"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "3.14159"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "3e5"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "0.8E-12"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "3.9e+2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "0xbadface"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "0XBADFACE"], + ["punctuation", ")"] + ]] +] + +---------------------------------------------------- + +Checks for numbers inside expressions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/operator_feature.test new file mode 100644 index 0000000000..4b86a57629 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/operator_feature.test @@ -0,0 +1,257 @@ +(~42) +(+42) +(-42) +(4/2) +(9\2) +(9%2) +(!true) +(4!|2) +(true!||false) +(4!=2) +(4&2) +(true&&false) +(4|2) +(true||false) +(4==2) +(4<2) +(4<=2) +(4<<2) +(4>2) +(4>=2) +(4>>2) +(-f "foo") +(-d "foo") +(def $foo) +(4 eq 2) +(4 ge 2) +(4 gt 2) +(in "foo") +($foo is string) +(4 le 2) +(4 lt 2) +(4 ne 2) + +---------------------------------------------------- + +[ + ["expression", [ + ["punctuation", "("], + ["operator", "~"], + ["number", "42"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["operator", "+"], + ["number", "42"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["operator", "-"], + ["number", "42"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "/"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "9"], + ["operator", "\\"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "9"], + ["operator", "%"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["operator", "!"], + ["boolean", "true"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "!|"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["boolean", "true"], + ["operator", "!||"], + ["boolean", "false"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "!="], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "&"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["boolean", "true"], + ["operator", "&&"], + ["boolean", "false"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "|"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["boolean", "true"], + ["operator", "||"], + ["boolean", "false"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "=="], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "<"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "<="], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "<<"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", ">"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", ">="], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", ">>"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["operator", "-f"], + ["string", "\"foo\""], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["operator", "-d"], + ["string", "\"foo\""], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["operator", "def"], + ["variable", ["$foo"]], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "eq"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "ge"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "gt"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["operator", "in"], + ["string", "\"foo\""], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["variable", ["$foo"]], + ["operator", "is"], + " string", + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "le"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "lt"], + ["number", "2"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["number", "4"], + ["operator", "ne"], + ["number", "2"], + ["punctuation", ")"] + ]] +] + +---------------------------------------------------- + +Checks for operators inside expressions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/parser-comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/parser-comment_feature.test new file mode 100644 index 0000000000..0edeeb87d1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/parser-comment_feature.test @@ -0,0 +1,17 @@ +Foo +# +# Foobar + +---------------------------------------------------- + +[ + "Foo\r\n", + ["parser-comment", "#"], + ["parser-comment", "# Foobar"] +] + +---------------------------------------------------- + +Checks for comments. +The first line of this test is needed, since we require a whitespace before the hash +and tests are trimmed. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/string_feature.test new file mode 100644 index 0000000000..d621045bad --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/string_feature.test @@ -0,0 +1,47 @@ +("") +("foo^"bar") +("foo +bar") +('') +('foo^'bar') +('foo +bar') + +---------------------------------------------------- + +[ + ["expression", [ + ["punctuation", "("], + ["string", "\"\""], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["string", "\"foo^\"bar\""], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["string", "\"foo\r\nbar\""], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["string", "''"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["string", "'foo^'bar'"], + ["punctuation", ")"] + ]], + ["expression", [ + ["punctuation", "("], + ["string", "'foo\r\nbar'"], + ["punctuation", ")"] + ]] +] + +---------------------------------------------------- + +Checks for strings inside expressions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/parser/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/parser/variable_feature.test new file mode 100644 index 0000000000..e2a588e55f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/parser/variable_feature.test @@ -0,0 +1,55 @@ +$foo +$foo[bar] +$foo_bar[ + $.baz[foo] + $.1[bar] +] +$foo.$bar +$foo.[$bar.baz] +$math:PI + +($foo) + +
+ +---------------------------------------------------- + +[ + ["variable", ["$foo"]], + ["variable", ["$foo"]], ["punctuation", "["], "bar", ["punctuation", "]"], + ["variable", ["$foo_bar"]], ["punctuation", "["], + ["variable", ["$", ["punctuation", "."], "baz"]], + ["punctuation", "["], "foo", ["punctuation", "]"], + ["variable", ["$", ["punctuation", "."], "1"]], + ["punctuation", "["], "bar", ["punctuation", "]"], + ["punctuation", "]"], + ["variable", ["$foo", ["punctuation", "."]]], ["variable", ["$bar"]], + ["variable", ["$foo", ["punctuation", "."]]], ["punctuation", "["], + ["variable", ["$bar", ["punctuation", "."], "baz"]], ["punctuation", "]"], + ["variable", ["$math", ["punctuation", ":"], "PI"]], + + ["expression", [ + ["punctuation", "("], + ["variable", ["$foo"]], + ["punctuation", ")"] + ]], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "div" + ]], + ["attr-name", ["class"]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + ["variable", ["$foo"]], + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pascal/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pascal/comment_feature.test new file mode 100644 index 0000000000..40d8b30c8b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pascal/comment_feature.test @@ -0,0 +1,23 @@ +(* foo *) +(* foo +bar *) +{ foo } +{ foo +bar } +// +// foobar + +---------------------------------------------------- + +[ + ["comment", "(* foo *)"], + ["comment", "(* foo\r\nbar *)"], + ["comment", "{ foo }"], + ["comment", "{ foo\r\nbar }"], + ["comment", "//"], + ["comment", "// foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pascal/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pascal/keyword_feature.test new file mode 100644 index 0000000000..a4e4af66cb --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pascal/keyword_feature.test @@ -0,0 +1,143 @@ +absolute array asm +begin case const +constructor +destructor +do downto else +end file for +function goto +if implementation +inherited inline +interface label +nil object of +operator packed +procedure program +record reintroduce +repeat self +set string then +to type unit +until uses var +while with + +dispose exit false +new true + +class dispinterface +except exports +finalization +finally +initialization +inline library +on out packed +property raise +resourcestring +threadvar try + +absolute abstract +alias assembler +bitpacked break +cdecl continue +cppdecl cvar +default deprecated +dynamic enumerator +experimental +export external +far far16 +forward generic +helper implements +index interrupt +iochecks local +message name near +nodefault noreturn +nostackframe +oldfpccall +otherwise +overload override +pascal platform +private protected +public published +read register +reintroduce result +safecall saveregisters +softfloat specialize +static stdcall +stored strict +unaligned +unimplemented +varargs virtual +write + +---------------------------------------------------- + +[ + ["keyword", "absolute"], ["keyword", "array"], ["keyword", "asm"], + ["keyword", "begin"], ["keyword", "case"], ["keyword", "const"], + ["keyword", "constructor"], + ["keyword", "destructor"], + ["keyword", "do"], ["keyword", "downto"], ["keyword", "else"], + ["keyword", "end"], ["keyword", "file"], ["keyword", "for"], + ["keyword", "function"], ["keyword", "goto"], + ["keyword", "if"], ["keyword", "implementation"], + ["keyword", "inherited"], ["keyword", "inline"], + ["keyword", "interface"], ["keyword", "label"], + ["keyword", "nil"], ["keyword", "object"], ["keyword", "of"], + ["keyword", "operator"], ["keyword", "packed"], + ["keyword", "procedure"], ["keyword", "program"], + ["keyword", "record"], ["keyword", "reintroduce"], + ["keyword", "repeat"], ["keyword", "self"], + ["keyword", "set"], ["keyword", "string"], ["keyword", "then"], + ["keyword", "to"], ["keyword", "type"], ["keyword", "unit"], + ["keyword", "until"], ["keyword", "uses"], ["keyword", "var"], + ["keyword", "while"], ["keyword", "with"], + + ["keyword", "dispose"], ["keyword", "exit"], ["keyword", "false"], + ["keyword", "new"], ["keyword", "true"], + + ["keyword", "class"], ["keyword", "dispinterface"], + ["keyword", "except"], ["keyword", "exports"], + ["keyword", "finalization"], + ["keyword", "finally"], + ["keyword", "initialization"], + ["keyword", "inline"], ["keyword", "library"], + ["keyword", "on"], ["keyword", "out"], ["keyword", "packed"], + ["keyword", "property"], ["keyword", "raise"], + ["keyword", "resourcestring"], + ["keyword", "threadvar"], ["keyword", "try"], + + ["keyword", "absolute"], ["keyword", "abstract"], + ["keyword", "alias"], ["keyword", "assembler"], + ["keyword", "bitpacked"], ["keyword", "break"], + ["keyword", "cdecl"], ["keyword", "continue"], + ["keyword", "cppdecl"], ["keyword", "cvar"], + ["keyword", "default"], ["keyword", "deprecated"], + ["keyword", "dynamic"], ["keyword", "enumerator"], + ["keyword", "experimental"], + ["keyword", "export"], ["keyword", "external"], + ["keyword", "far"], ["keyword", "far16"], + ["keyword", "forward"], ["keyword", "generic"], + ["keyword", "helper"], ["keyword", "implements"], + ["keyword", "index"], ["keyword", "interrupt"], + ["keyword", "iochecks"], ["keyword", "local"], + ["keyword", "message"], ["keyword", "name"], ["keyword", "near"], + ["keyword", "nodefault"], ["keyword", "noreturn"], + ["keyword", "nostackframe"], + ["keyword", "oldfpccall"], + ["keyword", "otherwise"], + ["keyword", "overload"], ["keyword", "override"], + ["keyword", "pascal"], ["keyword", "platform"], + ["keyword", "private"], ["keyword", "protected"], + ["keyword", "public"], ["keyword", "published"], + ["keyword", "read"], ["keyword", "register"], + ["keyword", "reintroduce"], ["keyword", "result"], + ["keyword", "safecall"], ["keyword", "saveregisters"], + ["keyword", "softfloat"], ["keyword", "specialize"], + ["keyword", "static"], ["keyword", "stdcall"], + ["keyword", "stored"], ["keyword", "strict"], + ["keyword", "unaligned"], + ["keyword", "unimplemented"], + ["keyword", "varargs"], ["keyword", "virtual"], + ["keyword", "write"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pascal/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pascal/number_feature.test new file mode 100644 index 0000000000..e9e41b6608 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pascal/number_feature.test @@ -0,0 +1,25 @@ +42 +3.14159 +2.1e4 +1.0e-1 +3.8e+24 +$7aff +&17 +%11110101 + +---------------------------------------------------- + +[ + ["number", "42"], + ["number", "3.14159"], + ["number", "2.1e4"], + ["number", "1.0e-1"], + ["number", "3.8e+24"], + ["number", "$7aff"], + ["number", "&17"], + ["number", "%11110101"] +] + +---------------------------------------------------- + +Checks for decimal, hexadecimal, octal and binary numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pascal/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pascal/operator_feature.test new file mode 100644 index 0000000000..01cbc81831 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pascal/operator_feature.test @@ -0,0 +1,31 @@ +.. ** := +< << <= > >> >= ++ - * / ++= -= *= /= +@ ^ = + +and as div +exclude in +include is +mod not or +shl shr xor + +---------------------------------------------------- + +[ + ["operator", ".."], ["operator", "**"], ["operator", ":="], + ["operator", "<"], ["operator", "<<"], ["operator", "<="], ["operator", ">"], ["operator", ">>"], ["operator", ">="], + ["operator", "+"], ["operator", "-"], ["operator", "*"], ["operator", "/"], + ["operator", "+="], ["operator", "-="], ["operator", "*="], ["operator", "/="], + ["operator", "@"], ["operator", "^"], ["operator", "="], + + ["operator", "and"], ["operator", "as"], ["operator", "div"], + ["operator", "exclude"], ["operator", "in"], + ["operator", "include"], ["operator", "is"], + ["operator", "mod"], ["operator", "not"], ["operator", "or"], + ["operator", "shl"], ["operator", "shr"], ["operator", "xor"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pascal/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pascal/string_feature.test new file mode 100644 index 0000000000..c2b02c26d4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pascal/string_feature.test @@ -0,0 +1,21 @@ +'' +'fo''o' +^G +#7 +#$f4 +'foo'#9'bar' + +---------------------------------------------------- + +[ + ["string", "''"], + ["string", "'fo''o'"], + ["string", "^G"], + ["string", "#7"], + ["string", "#$f4"], + ["string", "'foo'#9'bar'"] +] + +---------------------------------------------------- + +Checks for strings and chars. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/comment_feature.test new file mode 100644 index 0000000000..3b407bebd7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/comment_feature.test @@ -0,0 +1,17 @@ +=label foo +bar +=cut +# +# foobar + +---------------------------------------------------- + +[ + ["comment", "=label foo\r\nbar\r\n=cut"], + ["comment", "#"], + ["comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/filehandle_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/filehandle_feature.test new file mode 100644 index 0000000000..67834c6546 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/filehandle_feature.test @@ -0,0 +1,17 @@ +_ +<> + + + +---------------------------------------------------- + +[ + ["filehandle", "_"], + ["filehandle", "<>"], + ["filehandle", ""], + ["filehandle", ""] +] + +---------------------------------------------------- + +Checks for file handles. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/function_feature.test new file mode 100644 index 0000000000..e2a480d5db --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/function_feature.test @@ -0,0 +1,13 @@ +sub foo +sub Foo_Bar42 + +---------------------------------------------------- + +[ + ["function", [["keyword", "sub"], " foo"]], + ["function", [["keyword", "sub"], " Foo_Bar42"]] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/keyword_feature.test new file mode 100644 index 0000000000..ae3b573bcc --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/keyword_feature.test @@ -0,0 +1,29 @@ +any break continue +default delete die +do else elsif eval +for foreach given +goto if last local +my next our package +print redo require +say state sub +switch undef unless +until use when while + +---------------------------------------------------- + +[ + ["keyword", "any"], ["keyword", "break"], ["keyword", "continue"], + ["keyword", "default"], ["keyword", "delete"], ["keyword", "die"], + ["keyword", "do"], ["keyword", "else"], ["keyword", "elsif"], ["keyword", "eval"], + ["keyword", "for"], ["keyword", "foreach"], ["keyword", "given"], + ["keyword", "goto"], ["keyword", "if"], ["keyword", "last"], ["keyword", "local"], + ["keyword", "my"], ["keyword", "next"], ["keyword", "our"], ["keyword", "package"], + ["keyword", "print"], ["keyword", "redo"], ["keyword", "require"], + ["keyword", "say"], ["keyword", "state"], ["keyword", "sub"], + ["keyword", "switch"], ["keyword", "undef"], ["keyword", "unless"], + ["keyword", "until"], ["keyword", "use"], ["keyword", "when"], ["keyword", "while"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/number_feature.test new file mode 100644 index 0000000000..ddc5343e4f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/number_feature.test @@ -0,0 +1,33 @@ +0xFF +0xBad_Face + +0b1100 +0b1111_0000 + +42 +42_000 +3.14_15_9 +1.2e4 +1_423.6E-2 +0.8E+12 + +---------------------------------------------------- + +[ + ["number", "0xFF"], + ["number", "0xBad_Face"], + + ["number", "0b1100"], + ["number", "0b1111_0000"], + + ["number", "42"], + ["number", "42_000"], + ["number", "3.14_15_9"], + ["number", "1.2e4"], + ["number", "1_423.6E-2"], + ["number", "0.8E+12"] +] + +---------------------------------------------------- + +Checks for hexadecimal, binary and decimal numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/operator_feature.test new file mode 100644 index 0000000000..c3c9f82afa --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/operator_feature.test @@ -0,0 +1,71 @@ +-r -w -x -o -R +-W -X -O -e -z +-s -f -d -l -p +-S -b -c -t -u +-g -k -T -B -M +-A -C + ++ ++ += +- -- -= -> +* ** *= **= +1 / 2 +1 // 2 +$a /= 2 +$a //= 2 += == =~ => +~ ~~ ~= +| || |= ||= +& && &= &&= +< <= << <<= <=> +> >= >> >>= +! !~ != +% %= +^ ^= +. .= .. ... +\ ? + +lt gt le ge +eq ne cmp not +and or xor +x x= + +---------------------------------------------------- + +[ + + ["operator", "-r"], ["operator", "-w"], ["operator", "-x"], ["operator", "-o"], ["operator", "-R"], + ["operator", "-W"], ["operator", "-X"], ["operator", "-O"], ["operator", "-e"], ["operator", "-z"], + ["operator", "-s"], ["operator", "-f"], ["operator", "-d"], ["operator", "-l"], ["operator", "-p"], + ["operator", "-S"], ["operator", "-b"], ["operator", "-c"], ["operator", "-t"], ["operator", "-u"], + ["operator", "-g"], ["operator", "-k"], ["operator", "-T"], ["operator", "-B"], ["operator", "-M"], + ["operator", "-A"], ["operator", "-C"], + + ["operator", "+"], ["operator", "++"], ["operator", "+="], + ["operator", "-"], ["operator", "--"], ["operator", "-="], ["operator", "->"], + ["operator", "*"], ["operator", "**"], ["operator", "*="], ["operator", "**="], + ["number", "1"], ["operator", "/"], ["number", "2"], + ["number", "1"], ["operator", "//"], ["number", "2"], + ["variable", "$a"], ["operator", "/="], ["number", "2"], + ["variable", "$a"], ["operator", "//="], ["number", "2"], + ["operator", "="], ["operator", "=="], ["operator", "=~"], ["operator", "=>"], + ["operator", "~"], ["operator", "~~"], ["operator", "~="], + ["operator", "|"], ["operator", "||"], ["operator", "|="], ["operator", "||="], + ["operator", "&"], ["operator", "&&"], ["operator", "&="], ["operator", "&&="], + ["operator", "<"], ["operator", "<="], ["operator", "<<"], ["operator", "<<="], ["operator", "<=>"], + ["operator", ">"], ["operator", ">="], ["operator", ">>"], ["operator", ">>="], + ["operator", "!"], ["operator", "!~"], ["operator", "!="], + ["operator", "%"], ["operator", "%="], + ["operator", "^"], ["operator", "^="], + ["operator", "."], ["operator", ".="], ["operator", ".."], ["operator", "..."], + ["operator", "\\"], ["operator", "?"], + + ["operator", "lt"], ["operator", "gt"], ["operator", "le"], ["operator", "ge"], + ["operator", "eq"], ["operator", "ne"], ["operator", "cmp"], ["operator", "not"], + ["operator", "and"], ["operator", "or"], ["operator", "xor"], + ["operator", "x"], ["operator", "x="] + +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/regex_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/regex_feature.test new file mode 100644 index 0000000000..bdf38bac6c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/regex_feature.test @@ -0,0 +1,129 @@ +m// +qr!foo\!bar!msix +m,foo +bar,aa + +qr aa +m afoob\araaa +qr pfoo +barpxpn + +m()c +qr(foo\(\)bar)u +m(foo +bar)l + +qr{}d +m{foo\{\}bar} +qr{foo +bar} + +m[] +qr[foo\[\]bar] +m[foo +bar] + +qr<>s +mbar>i +qrx + +s/// +tr%foo\%bar%baz%c +y!foo +bar!foo +baz!d + +s kkkmsix +tr afoob\arab\azas +y pfoo +barpfoo +bazpr + +s()() +tr(foo\(bar)(ba\)z) +y(foo +bar)(foo +baz)csr + +s{}{} +tr{foo\{bar}{ba\}z} +y{foo +bar}{foo +baz} + +y[][] +s[foo\[bar][ba\]z]u +y[foo +bar][foo +baz] + +tr<><>c +ya> +s + +// +/foo/gsx +/foo\/bar/n + +---------------------------------------------------- + +[ + ["regex", "m//"], + ["regex", "qr!foo\\!bar!msix"], + ["regex", "m,foo\r\nbar,aa"], + + ["regex", "qr aa"], + ["regex", "m afoob\\araaa"], + ["regex", "qr pfoo\r\nbarpxpn"], + + ["regex", "m()c"], + ["regex", "qr(foo\\(\\)bar)u"], + ["regex", "m(foo\r\nbar)l"], + + ["regex", "qr{}d"], + ["regex", "m{foo\\{\\}bar}"], + ["regex", "qr{foo\r\nbar}"], + + ["regex", "m[]"], + ["regex", "qr[foo\\[\\]bar]"], + ["regex", "m[foo\r\nbar]"], + + ["regex", "qr<>s"], + ["regex", "mbar>i"], + ["regex", "qrx"], + + ["regex", "s///"], + ["regex", "tr%foo\\%bar%baz%c"], + ["regex", "y!foo\r\nbar!foo\r\nbaz!d"], + + ["regex", "s kkkmsix"], + ["regex", "tr afoob\\arab\\azas"], + ["regex", "y pfoo\r\nbarpfoo\r\nbazpr"], + + ["regex", "s()()"], + ["regex", "tr(foo\\(bar)(ba\\)z)"], + ["regex", "y(foo\r\nbar)(foo\r\nbaz)csr"], + + ["regex", "s{}{}"], + ["regex", "tr{foo\\{bar}{ba\\}z}"], + ["regex", "y{foo\r\nbar}{foo\r\nbaz}"], + + ["regex", "y[][]"], + ["regex", "s[foo\\[bar][ba\\]z]u"], + ["regex", "y[foo\r\nbar][foo\r\nbaz]"], + + ["regex", "tr<><>c"], + ["regex", "ya>"], + ["regex", "s"], + + ["regex", "//"], + ["regex", "/foo/gsx"], + ["regex", "/foo\\/bar/n"] +] + +---------------------------------------------------- + +Checks for regex and regex quote-like operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/string_feature.test new file mode 100644 index 0000000000..4cb5fa6ced --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/string_feature.test @@ -0,0 +1,130 @@ +q// +q/foobar/ +q/foo\/bar/ +q/foo +bar/ + +qq!! +qq!foobar! +qq!foo\!bar! +qq!foo +bar! + +qw__ +qx_foobar_ +qx_foo\_bar_ +qw_foo +bar_ + +qw?? +qw?foobar? +qw?foo\?bar? +qw?foo +bar? + +q aa +q afoob\ara +q 4foobar4 +q pfoo +barp + +qq() +qq(foobar) +qq(foo\(\)bar) +qq(foo +bar) + +qx{} +qx{foobar} +qx{foo\{\}bar} +qx{foo +bar} + +qw[] +qw[foobar] +qw[foo\[\]bar] +qw[foo +bar] + +q<> +q +qbar> +q + +"" +"foo\"bar" +"foo +bar" + +'' +'foo\'bar' + +`` +`foo\`bar` +`foo +bar` + +---------------------------------------------------- + +[ + ["string", "q//"], + ["string", "q/foobar/"], + ["string", "q/foo\\/bar/"], + ["string", "q/foo\r\nbar/"], + + ["string", "qq!!"], + ["string", "qq!foobar!"], + ["string", "qq!foo\\!bar!"], + ["string", "qq!foo\r\nbar!"], + + ["string", "qw__"], + ["string", "qx_foobar_"], + ["string", "qx_foo\\_bar_"], + ["string", "qw_foo\r\nbar_"], + + ["string", "qw??"], + ["string", "qw?foobar?"], + ["string", "qw?foo\\?bar?"], + ["string", "qw?foo\r\nbar?"], + + ["string", "q aa"], + ["string", "q afoob\\ara"], + ["string", "q 4foobar4"], + ["string", "q pfoo\r\nbarp"], + + ["string", "qq()"], + ["string", "qq(foobar)"], + ["string", "qq(foo\\(\\)bar)"], + ["string", "qq(foo\r\nbar)"], + + ["string", "qx{}"], + ["string", "qx{foobar}"], + ["string", "qx{foo\\{\\}bar}"], + ["string", "qx{foo\r\nbar}"], + + ["string", "qw[]"], + ["string", "qw[foobar]"], + ["string", "qw[foo\\[\\]bar]"], + ["string", "qw[foo\r\nbar]"], + + ["string", "q<>"], + ["string", "q"], + ["string", "qbar>"], + ["string", "q"], + + ["string", "\"\""], + ["string", "\"foo\\\"bar\""], + ["string", "\"foo\r\nbar\""], + + ["string", "''"], + ["string", "'foo\\'bar'"], + + ["string", "``"], + ["string", "`foo\\`bar`"], + ["string", "`foo\r\nbar`"] +] + +---------------------------------------------------- + +Checks for strings and quote operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/variable_feature.test new file mode 100644 index 0000000000..ab5ae2ef89 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/variable_feature.test @@ -0,0 +1,47 @@ +$foo +$#foo + +${^POSTMATCH} + +$^V + +@1 +$42 + +$$ +$_ +%! + +%'foo +$foo'bar + +$::::'foo +$foo::'bar + +---------------------------------------------------- + +[ + ["variable", "$foo"], + ["variable", "$#foo"], + + ["variable", "${^POSTMATCH}"], + + ["variable", "$^V"], + + ["variable", "@1"], + ["variable", "$42"], + + ["variable", "$$"], + ["variable", "$_"], + ["variable", "%!"], + + ["variable", "%'foo"], + ["variable", "$foo'bar"], + + ["variable", "$::::'foo"], + ["variable", "$foo::'bar"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/perl/vstring_feature.test b/dashboard-ui/bower_components/prism/tests/languages/perl/vstring_feature.test new file mode 100644 index 0000000000..7b230eb7ab --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/perl/vstring_feature.test @@ -0,0 +1,13 @@ +v1.2 +1.2.3 + +---------------------------------------------------- + +[ + ["vstring", "v1.2"], + ["vstring", "1.2.3"] +] + +---------------------------------------------------- + +Checks for vstrings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/global_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/global_feature.test new file mode 100644 index 0000000000..7c79c4975a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/global_feature.test @@ -0,0 +1,37 @@ +$GLOBALS +$_SERVER +$_GET +$_POST +$_FILES +$_REQUEST +$_SESSION +$_ENV +$_COOKIE +$php_errormsg +$HTTP_RAW_POST_DATA +$http_response_header +$argc +$argv + +---------------------------------------------------- + +[ + ["global", "$GLOBALS"], + ["global", "$_SERVER"], + ["global", "$_GET"], + ["global", "$_POST"], + ["global", "$_FILES"], + ["global", "$_REQUEST"], + ["global", "$_SESSION"], + ["global", "$_ENV"], + ["global", "$_COOKIE"], + ["global", "$php_errormsg"], + ["global", "$HTTP_RAW_POST_DATA"], + ["global", "$http_response_header"], + ["global", "$argc"], + ["global", "$argv"] +] + +---------------------------------------------------- + +Checks for superglobals. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/scope_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/scope_feature.test new file mode 100644 index 0000000000..4aa61b4693 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/scope_feature.test @@ -0,0 +1,27 @@ +static::foo() +self::bar() +parent::baz() + +---------------------------------------------------- + +[ + ["scope", [ + ["keyword", "static"], + ["punctuation", "::"] + ]], + ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], + ["scope", [ + ["keyword", "self"], + ["punctuation", "::"] + ]], + ["function", "bar"], ["punctuation", "("], ["punctuation", ")"], + ["scope", [ + ["keyword", "parent"], + ["punctuation", "::"] + ]], + ["function", "baz"], ["punctuation", "("], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for scopes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/this_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/this_feature.test new file mode 100644 index 0000000000..f63c3ca40c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php!+php-extras/this_feature.test @@ -0,0 +1,11 @@ +$this + +---------------------------------------------------- + +[ + ["this", "$this"] +] + +---------------------------------------------------- + +Checks for $this. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/comment_feature.test new file mode 100644 index 0000000000..3f9e728687 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/comment_feature.test @@ -0,0 +1,18 @@ +// +// foobar +/**/ +/* foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "//"], + ["comment", "// foobar"], + ["comment", "/**/"], + ["comment", "/* foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for single-line and multi-line comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/constant_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/constant_feature.test new file mode 100644 index 0000000000..478b711669 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/constant_feature.test @@ -0,0 +1,15 @@ +AZ +PRISM +FOOBAR_42 + +---------------------------------------------------- + +[ + ["constant", "AZ"], + ["constant", "PRISM"], + ["constant", "FOOBAR_42"] +] + +---------------------------------------------------- + +Checks for constants. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/delimiter_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/delimiter_feature.test new file mode 100644 index 0000000000..264e94b915 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/delimiter_feature.test @@ -0,0 +1,15 @@ + + + +---------------------------------------------------- + +[ + ["delimiter", ""], + ["delimiter", ""] +] + +---------------------------------------------------- + +Checks for delimiters. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/keyword_feature.test new file mode 100644 index 0000000000..300e14a9c4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/keyword_feature.test @@ -0,0 +1,76 @@ +and or xor array +as break case +cfunction +class; +const continue +declare default +die do else +elseif enddeclare +endfor endforeach +endif endswitch +endwhile +extends; +for foreach function +include include_once +global if +new; +return +static switch +use; +require require_once +var while abstract +interface; +public +implements; +private +protected parent +throw null echo +print trait; +namespace; +final yield goto +instanceof; +finally +try catch + +---------------------------------------------------- + +[ + ["keyword", "and"], ["keyword", "or"], ["keyword", "xor"], ["keyword", "array"], + ["keyword", "as"], ["keyword", "break"], ["keyword", "case"], + ["keyword", "cfunction"], + ["keyword", "class"], ["punctuation", ";"], + ["keyword", "const"], ["keyword", "continue"], + ["keyword", "declare"], ["keyword", "default"], + ["keyword", "die"], ["keyword", "do"], ["keyword", "else"], + ["keyword", "elseif"], ["keyword", "enddeclare"], + ["keyword", "endfor"], ["keyword", "endforeach"], + ["keyword", "endif"], ["keyword", "endswitch"], + ["keyword", "endwhile"], + ["keyword", "extends"], ["punctuation", ";"], + ["keyword", "for"], ["keyword", "foreach"], ["keyword", "function"], + ["keyword", "include"], ["keyword", "include_once"], + ["keyword", "global"], ["keyword", "if"], + ["keyword", "new"], ["punctuation", ";"], + ["keyword", "return"], + ["keyword", "static"], ["keyword", "switch"], + ["keyword", "use"], ["punctuation", ";"], + ["keyword", "require"], ["keyword", "require_once"], + ["keyword", "var"], ["keyword", "while"], ["keyword", "abstract"], + ["keyword", "interface"], ["punctuation", ";"], + ["keyword", "public"], + ["keyword", "implements"], ["punctuation", ";"], + ["keyword", "private"], + ["keyword", "protected"], ["keyword", "parent"], + ["keyword", "throw"], ["keyword", "null"], ["keyword", "echo"], + ["keyword", "print"], + ["keyword", "trait"], ["punctuation", ";"], + ["keyword", "namespace"], ["punctuation", ";"], + ["keyword", "final"], ["keyword", "yield"], ["keyword", "goto"], + ["keyword", "instanceof"], ["punctuation", ";"], + ["keyword", "finally"], + ["keyword", "try"], ["keyword", "catch"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/package_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/package_feature.test new file mode 100644 index 0000000000..5df9ad62e9 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/package_feature.test @@ -0,0 +1,29 @@ +namespace \foo +namespace \foo\bar\baz +use \foo +use \foo\bar\baz + +---------------------------------------------------- + +[ + ["keyword", "namespace"], + ["package", [["punctuation", "\\"], "foo"]], + ["keyword", "namespace"], + ["package", [ + ["punctuation", "\\"], "foo", + ["punctuation", "\\"], "bar", + ["punctuation", "\\"], "baz" + ]], + ["keyword", "use"], + ["package", [["punctuation", "\\"], "foo"]], + ["keyword", "use"], + ["package", [ + ["punctuation", "\\"], "foo", + ["punctuation", "\\"], "bar", + ["punctuation", "\\"], "baz" + ]] +] + +---------------------------------------------------- + +Checks for packages. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/property_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/property_feature.test new file mode 100644 index 0000000000..4036558417 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/property_feature.test @@ -0,0 +1,19 @@ +$variable->property +$foo->bar->baz + +---------------------------------------------------- + +[ + ["variable", "$variable"], + ["operator", "-"], ["operator", ">"], + ["property", "property"], + ["variable", "$foo"], + ["operator", "-"], ["operator", ">"], + ["property", "bar"], + ["operator", "-"], ["operator", ">"], + ["property", "baz"] +] + +---------------------------------------------------- + +Checks for properties. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/shell-comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/shell-comment_feature.test new file mode 100644 index 0000000000..e390210a86 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/shell-comment_feature.test @@ -0,0 +1,13 @@ +# +# foobar + +---------------------------------------------------- + +[ + ["shell-comment", "#"], + ["shell-comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for shell-like comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/php/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/php/variable_feature.test new file mode 100644 index 0000000000..811cd7cee6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/php/variable_feature.test @@ -0,0 +1,15 @@ +$f +$foo +$foobar_42 + +---------------------------------------------------- + +[ + ["variable", "$f"], + ["variable", "$foo"], + ["variable", "$foobar_42"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/boolean_feature.test new file mode 100644 index 0000000000..098bd6211a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/boolean_feature.test @@ -0,0 +1,18 @@ +$true $True $TRUE +$false $False $FALSE + +---------------------------------------------------- + +[ + ["boolean", "$true"], + ["boolean", "$True"], + ["boolean", "$TRUE"], + + ["boolean", "$false"], + ["boolean", "$False"], + ["boolean", "$FALSE"] + +] +---------------------------------------------------- + +Testing Booleans \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/comment_feature.test new file mode 100644 index 0000000000..cc8bfcb3e2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/comment_feature.test @@ -0,0 +1,21 @@ +# single comment +# comment with $variable +<# multi + line + comment +#> +not a `# comment # is a comment + +---------------------------------------------------- + +[ + ["comment", "# single comment"], + ["comment", "# comment with $variable"], + ["comment", "<# multi\r\n\tline\r\n\tcomment\r\n#>"], + "\r\nnot a `# comment ", + ["comment", "# is a comment"] +] + +---------------------------------------------------- + +Testing comments \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/function_feature.test new file mode 100644 index 0000000000..a817795692 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/function_feature.test @@ -0,0 +1,398 @@ +ac cat chdir clc cli clp clv compare copy cp cpi cpp cvpa dbp del diff dir ebp +echo epal epcsv epsn erase fc fl ft fw gal gbp gc gci gcs gdr gi gl gm gp gps +group gsv gu gv gwmi iex ii ipal ipcsv ipsn irm iwmi iwr kill lp ls measure mi +mount move mp mv nal ndr ni nv ogv popd ps pushd pwd rbp rd rdr ren ri rm rmdir +rni rnp rp rv rvpa rwmi sal saps sasv sbp sc select set shcm si sl sleep sls +sort sp spps spsv start sv swmi tee trcm type write + +Add-Computer Add-Content Add-History Add-Member Add-PSSnapin Add-Type +Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Item +Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction +Connect-PSSession ConvertFrom-Csv ConvertFrom-Json ConvertFrom-StringData +Convert-Path ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-Xml +Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore +Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration +Disconnect-PSSession Enable-ComputerRestore Enable-PSBreakpoint +Enable-PSRemoting Enable-PSSessionConfiguration Enter-PSSession Exit-PSSession +Export-Alias Export-Clixml Export-Console Export-Csv Export-FormatData +Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List +Format-Table Format-Wide Get-Alias Get-ChildItem Get-Command +Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Culture Get-Date +Get-Event Get-EventLog Get-EventSubscriber Get-FormatData Get-Help Get-History +Get-Host Get-HotFix Get-Item Get-ItemProperty Get-Job Get-Location Get-Member +Get-Module Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive +Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random +Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture +Get-Unique Get-Variable Get-WmiObject Group-Object Import-Alias Import-Clixml +Import-Csv Import-LocalizedData Import-Module Import-PSSession Invoke-Command +Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest +Invoke-WmiMethod Join-Path Limit-EventLog Measure-Command Measure-Object +Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-Item +New-ItemProperty New-Module New-ModuleManifest New-Object New-PSDrive +New-PSSession New-PSSessionConfigurationFile New-PSSessionOption +New-PSTransportOption New-Service New-TimeSpan New-Variable New-WebServiceProxy +Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String +Pop-Location Push-Location Read-Host Receive-Job Receive-PSSession +Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration +Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item +Remove-ItemProperty Remove-Job Remove-Module Remove-PSBreakpoint Remove-PSDrive +Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable +Remove-WmiObject Rename-Computer Rename-Item Rename-ItemProperty +Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service +Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String +Select-Xml Send-MailMessage Set-Alias Set-Content Set-Date Set-Item +Set-ItemProperty Set-Location Set-PSBreakpoint Set-PSDebug +Set-PSSessionConfiguration Set-Service Set-StrictMode Set-TraceSource +Set-Variable Set-WmiInstance Show-Command Show-ControlPanelItem Show-EventLog +Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep +Start-Transaction Stop-Computer Stop-Job Stop-Process Stop-Service Suspend-Job +Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection +Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command +Unblock-File Undo-Transaction Unregister-Event +Unregister-PSSessionConfiguration Update-FormatData Update-Help Update-List +Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object +Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress +Write-Verbose Write-Warning + +---------------------------------------------------- + +[ + ["function", "ac"], + ["function", "cat"], + ["function", "chdir"], + ["function", "clc"], + ["function", "cli"], + ["function", "clp"], + ["function", "clv"], + ["function", "compare"], + ["function", "copy"], + ["function", "cp"], + ["function", "cpi"], + ["function", "cpp"], + ["function", "cvpa"], + ["function", "dbp"], + ["function", "del"], + ["function", "diff"], + ["function", "dir"], + ["function", "ebp"], + ["function", "echo"], + ["function", "epal"], + ["function", "epcsv"], + ["function", "epsn"], + ["function", "erase"], + ["function", "fc"], + ["function", "fl"], + ["function", "ft"], + ["function", "fw"], + ["function", "gal"], + ["function", "gbp"], + ["function", "gc"], + ["function", "gci"], + ["function", "gcs"], + ["function", "gdr"], + ["function", "gi"], + ["function", "gl"], + ["function", "gm"], + ["function", "gp"], + ["function", "gps"], + ["function", "group"], + ["function", "gsv"], + ["function", "gu"], + ["function", "gv"], + ["function", "gwmi"], + ["function", "iex"], + ["function", "ii"], + ["function", "ipal"], + ["function", "ipcsv"], + ["function", "ipsn"], + ["function", "irm"], + ["function", "iwmi"], + ["function", "iwr"], + ["function", "kill"], + ["function", "lp"], + ["function", "ls"], + ["function", "measure"], + ["function", "mi"], + ["function", "mount"], + ["function", "move"], + ["function", "mp"], + ["function", "mv"], + ["function", "nal"], + ["function", "ndr"], + ["function", "ni"], + ["function", "nv"], + ["function", "ogv"], + ["function", "popd"], + ["function", "ps"], + ["function", "pushd"], + ["function", "pwd"], + ["function", "rbp"], + ["function", "rd"], + ["function", "rdr"], + ["function", "ren"], + ["function", "ri"], + ["function", "rm"], + ["function", "rmdir"], + ["function", "rni"], + ["function", "rnp"], + ["function", "rp"], + ["function", "rv"], + ["function", "rvpa"], + ["function", "rwmi"], + ["function", "sal"], + ["function", "saps"], + ["function", "sasv"], + ["function", "sbp"], + ["function", "sc"], + ["function", "select"], + ["function", "set"], + ["function", "shcm"], + ["function", "si"], + ["function", "sl"], + ["function", "sleep"], + ["function", "sls"], + ["function", "sort"], + ["function", "sp"], + ["function", "spps"], + ["function", "spsv"], + ["function", "start"], + ["function", "sv"], + ["function", "swmi"], + ["function", "tee"], + ["function", "trcm"], + ["function", "type"], + ["function", "write"], + + ["function", "Add-Computer"], + ["function", "Add-Content"], + ["function", "Add-History"], + ["function", "Add-Member"], + ["function", "Add-PSSnapin"], + ["function", "Add-Type"], + ["function", "Checkpoint-Computer"], + ["function", "Clear-Content"], + ["function", "Clear-EventLog"], + ["function", "Clear-History"], + ["function", "Clear-Item"], + ["function", "Clear-ItemProperty"], + ["function", "Clear-Variable"], + ["function", "Compare-Object"], + ["function", "Complete-Transaction"], + ["function", "Connect-PSSession"], + ["function", "ConvertFrom-Csv"], + ["function", "ConvertFrom-Json"], + ["function", "ConvertFrom-StringData"], + ["function", "Convert-Path"], + ["function", "ConvertTo-Csv"], + ["function", "ConvertTo-Html"], + ["function", "ConvertTo-Json"], + ["function", "ConvertTo-Xml"], + ["function", "Copy-Item"], + ["function", "Copy-ItemProperty"], + ["function", "Debug-Process"], + ["function", "Disable-ComputerRestore"], + ["function", "Disable-PSBreakpoint"], + ["function", "Disable-PSRemoting"], + ["function", "Disable-PSSessionConfiguration"], + ["function", "Disconnect-PSSession"], + ["function", "Enable-ComputerRestore"], + ["function", "Enable-PSBreakpoint"], + ["function", "Enable-PSRemoting"], + ["function", "Enable-PSSessionConfiguration"], + ["function", "Enter-PSSession"], + ["function", "Exit-PSSession"], + ["function", "Export-Alias"], + ["function", "Export-Clixml"], + ["function", "Export-Console"], + ["function", "Export-Csv"], + ["function", "Export-FormatData"], + ["function", "Export-ModuleMember"], + ["function", "Export-PSSession"], + ["function", "ForEach-Object"], + ["function", "Format-Custom"], + ["function", "Format-List"], + ["function", "Format-Table"], + ["function", "Format-Wide"], + ["function", "Get-Alias"], + ["function", "Get-ChildItem"], + ["function", "Get-Command"], + ["function", "Get-ComputerRestorePoint"], + ["function", "Get-Content"], + ["function", "Get-ControlPanelItem"], + ["function", "Get-Culture"], + ["function", "Get-Date"], + ["function", "Get-Event"], + ["function", "Get-EventLog"], + ["function", "Get-EventSubscriber"], + ["function", "Get-FormatData"], + ["function", "Get-Help"], + ["function", "Get-History"], + ["function", "Get-Host"], + ["function", "Get-HotFix"], + ["function", "Get-Item"], + ["function", "Get-ItemProperty"], + ["function", "Get-Job"], + ["function", "Get-Location"], + ["function", "Get-Member"], + ["function", "Get-Module"], + ["function", "Get-Process"], + ["function", "Get-PSBreakpoint"], + ["function", "Get-PSCallStack"], + ["function", "Get-PSDrive"], + ["function", "Get-PSProvider"], + ["function", "Get-PSSession"], + ["function", "Get-PSSessionConfiguration"], + ["function", "Get-PSSnapin"], + ["function", "Get-Random"], + ["function", "Get-Service"], + ["function", "Get-TraceSource"], + ["function", "Get-Transaction"], + ["function", "Get-TypeData"], + ["function", "Get-UICulture"], + ["function", "Get-Unique"], + ["function", "Get-Variable"], + ["function", "Get-WmiObject"], + ["function", "Group-Object"], + ["function", "Import-Alias"], + ["function", "Import-Clixml"], + ["function", "Import-Csv"], + ["function", "Import-LocalizedData"], + ["function", "Import-Module"], + ["function", "Import-PSSession"], + ["function", "Invoke-Command"], + ["function", "Invoke-Expression"], + ["function", "Invoke-History"], + ["function", "Invoke-Item"], + ["function", "Invoke-RestMethod"], + ["function", "Invoke-WebRequest"], + ["function", "Invoke-WmiMethod"], + ["function", "Join-Path"], + ["function", "Limit-EventLog"], + ["function", "Measure-Command"], + ["function", "Measure-Object"], + ["function", "Move-Item"], + ["function", "Move-ItemProperty"], + ["function", "New-Alias"], + ["function", "New-Event"], + ["function", "New-EventLog"], + ["function", "New-Item"], + ["function", "New-ItemProperty"], + ["function", "New-Module"], + ["function", "New-ModuleManifest"], + ["function", "New-Object"], + ["function", "New-PSDrive"], + ["function", "New-PSSession"], + ["function", "New-PSSessionConfigurationFile"], + ["function", "New-PSSessionOption"], + ["function", "New-PSTransportOption"], + ["function", "New-Service"], + ["function", "New-TimeSpan"], + ["function", "New-Variable"], + ["function", "New-WebServiceProxy"], + ["function", "Out-Default"], + ["function", "Out-File"], + ["function", "Out-GridView"], + ["function", "Out-Host"], + ["function", "Out-Null"], + ["function", "Out-Printer"], + ["function", "Out-String"], + ["function", "Pop-Location"], + ["function", "Push-Location"], + ["function", "Read-Host"], + ["function", "Receive-Job"], + ["function", "Receive-PSSession"], + ["function", "Register-EngineEvent"], + ["function", "Register-ObjectEvent"], + ["function", "Register-PSSessionConfiguration"], + ["function", "Register-WmiEvent"], + ["function", "Remove-Computer"], + ["function", "Remove-Event"], + ["function", "Remove-EventLog"], + ["function", "Remove-Item"], + ["function", "Remove-ItemProperty"], + ["function", "Remove-Job"], + ["function", "Remove-Module"], + ["function", "Remove-PSBreakpoint"], + ["function", "Remove-PSDrive"], + ["function", "Remove-PSSession"], + ["function", "Remove-PSSnapin"], + ["function", "Remove-TypeData"], + ["function", "Remove-Variable"], + ["function", "Remove-WmiObject"], + ["function", "Rename-Computer"], + ["function", "Rename-Item"], + ["function", "Rename-ItemProperty"], + ["function", "Reset-ComputerMachinePassword"], + ["function", "Resolve-Path"], + ["function", "Restart-Computer"], + ["function", "Restart-Service"], + ["function", "Restore-Computer"], + ["function", "Resume-Job"], + ["function", "Resume-Service"], + ["function", "Save-Help"], + ["function", "Select-Object"], + ["function", "Select-String"], + ["function", "Select-Xml"], + ["function", "Send-MailMessage"], + ["function", "Set-Alias"], + ["function", "Set-Content"], + ["function", "Set-Date"], + ["function", "Set-Item"], + ["function", "Set-ItemProperty"], + ["function", "Set-Location"], + ["function", "Set-PSBreakpoint"], + ["function", "Set-PSDebug"], + ["function", "Set-PSSessionConfiguration"], + ["function", "Set-Service"], + ["function", "Set-StrictMode"], + ["function", "Set-TraceSource"], + ["function", "Set-Variable"], + ["function", "Set-WmiInstance"], + ["function", "Show-Command"], + ["function", "Show-ControlPanelItem"], + ["function", "Show-EventLog"], + ["function", "Sort-Object"], + ["function", "Split-Path"], + ["function", "Start-Job"], + ["function", "Start-Process"], + ["function", "Start-Service"], + ["function", "Start-Sleep"], + ["function", "Start-Transaction"], + ["function", "Stop-Computer"], + ["function", "Stop-Job"], + ["function", "Stop-Process"], + ["function", "Stop-Service"], + ["function", "Suspend-Job"], + ["function", "Suspend-Service"], + ["function", "Tee-Object"], + ["function", "Test-ComputerSecureChannel"], + ["function", "Test-Connection"], + ["function", "Test-ModuleManifest"], + ["function", "Test-Path"], + ["function", "Test-PSSessionConfigurationFile"], + ["function", "Trace-Command"], + ["function", "Unblock-File"], + ["function", "Undo-Transaction"], + ["function", "Unregister-Event"], + ["function", "Unregister-PSSessionConfiguration"], + ["function", "Update-FormatData"], + ["function", "Update-Help"], + ["function", "Update-List"], + ["function", "Update-TypeData"], + ["function", "Use-Transaction"], + ["function", "Wait-Event"], + ["function", "Wait-Job"], + ["function", "Wait-Process"], + ["function", "Where-Object"], + ["function", "Write-Debug"], + ["function", "Write-Error"], + ["function", "Write-EventLog"], + ["function", "Write-Host"], + ["function", "Write-Output"], + ["function", "Write-Progress"], + ["function", "Write-Verbose"], + ["function", "Write-Warning"] +] +---------------------------------------------------- + +Testing functions and aliases \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/keyword_feature.test new file mode 100644 index 0000000000..4ffd92e691 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/keyword_feature.test @@ -0,0 +1,46 @@ +Begin Break Catch Class Continue Data Define Do DynamicParam Else ElseIf End +Exit Filter Finally For ForEach From Function If InlineScript Parallel Param +Process Return Sequence Switch Throw Trap Try Until Using Var While Workflow + +---------------------------------------------------- + +[ + ["keyword", "Begin"], + ["keyword", "Break"], + ["keyword", "Catch"], + ["keyword", "Class"], + ["keyword", "Continue"], + ["keyword", "Data"], + ["keyword", "Define"], + ["keyword", "Do"], + ["keyword", "DynamicParam"], + ["keyword", "Else"], + ["keyword", "ElseIf"], + ["keyword", "End"], + ["keyword", "Exit"], + ["keyword", "Filter"], + ["keyword", "Finally"], + ["keyword", "For"], + ["keyword", "ForEach"], + ["keyword", "From"], + ["keyword", "Function"], + ["keyword", "If"], + ["keyword", "InlineScript"], + ["keyword", "Parallel"], + ["keyword", "Param"], + ["keyword", "Process"], + ["keyword", "Return"], + ["keyword", "Sequence"], + ["keyword", "Switch"], + ["keyword", "Throw"], + ["keyword", "Trap"], + ["keyword", "Try"], + ["keyword", "Until"], + ["keyword", "Using"], + ["keyword", "Var"], + ["keyword", "While"], + ["keyword", "Workflow"] +] +---------------------------------------------------- + +Testing keywords \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/namespace_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/namespace_feature.test new file mode 100644 index 0000000000..d3fcb6e4d8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/namespace_feature.test @@ -0,0 +1,14 @@ +[System.String]::Empty; +[Foo.Bar+Baz]::Abc; +[int] 42; + +---------------------------------------------------- + +[ + ["namespace", "[System.String]"],"::Empty",["punctuation", ";"], + ["namespace", "[Foo.Bar+Baz]"],"::Abc",["punctuation", ";"], + ["namespace", "[int]"]," 42",["punctuation", ";"] +] +---------------------------------------------------- + +Testing namespaces \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/operator_feature.test new file mode 100644 index 0000000000..a746f1d692 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/operator_feature.test @@ -0,0 +1,55 @@ +! -eq -ne -gt -ge -lt -le -shl -shr -not -band -and -bxor -bor -or +-Like -Match -Contains -In -NotLike -NotMatch -NotContains -NotIn -Replace -Join +-is -isNot -as +-= += *= /= %= - + * / % -- ++ + +---------------------------------------------------- + +[ + ["operator", "!"], + ["operator", "-eq"], + ["operator", "-ne"], + ["operator", "-gt"], + ["operator", "-ge"], + ["operator", "-lt"], + ["operator", "-le"], + ["operator", "-shl"], + ["operator", "-shr"], + ["operator", "-not"], + ["operator", "-band"], + ["operator", "-and"], + ["operator", "-bxor"], + ["operator", "-bor"], + ["operator", "-or"], + + ["operator", "-Like"], + ["operator", "-Match"], + ["operator", "-Contains"], + ["operator", "-In"], + ["operator", "-NotLike"], + ["operator", "-NotMatch"], + ["operator", "-NotContains"], + ["operator", "-NotIn"], + ["operator", "-Replace"], + ["operator", "-Join"], + ["operator", "-is"], + ["operator", "-isNot"], + ["operator", "-as"], + + ["operator", "-="], + ["operator", "+="], + ["operator", "*="], + ["operator", "/="], + ["operator", "%="], + ["operator", "-"], + ["operator", "+"], + ["operator", "*"], + ["operator", "/"], + ["operator", "%"], + ["operator", "--"], + ["operator", "++"] + +] +---------------------------------------------------- + +Testing operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/string_feature.test new file mode 100644 index 0000000000..96cd4f06e9 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/string_feature.test @@ -0,0 +1,43 @@ +"a simple string" +"has $interpolated variables" +"has $($nesting -and 'interpolation')" +"string `"with`" escaping" +'non-interpolated $string' +'also ''with'' escaping' +'''twas also escaped' +an empty '' string +'can''t' + +---------------------------------------------------- + +[ + ["string", ["\"a simple string\""]], + ["string", [ + "\"has ",["variable", "$interpolated"]," variables\""] + ], + ["string", [ + "\"has", + [ + "function", + [ + " $", + ["punctuation", "("], + ["variable", "$nesting"], + ["operator", "-and"], + ["string", "'interpolation'"], + ["punctuation", ")"] + ] + ], + "\""] + ], + ["string", ["\"string `\"with`\" escaping\""]], + ["string", "'non-interpolated $string'"], + ["string", "'also ''with'' escaping'"], + ["string", "'''twas also escaped'"], + "\r\nan empty ",["string", "''"], " string\r\n", + ["string", "'can''t'"] +] + +---------------------------------------------------- + +Testing strings diff --git a/dashboard-ui/bower_components/prism/tests/languages/powershell/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/powershell/variable_feature.test new file mode 100644 index 0000000000..ede420107c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/powershell/variable_feature.test @@ -0,0 +1,15 @@ +$foo $bar_baz $var4u $1 $true_as $falsey + +---------------------------------------------------- + +[ + ["variable", "$foo"], + ["variable", "$bar_baz"], + ["variable", "$var4u"], + ["variable", "$1"], + ["variable", "$true_as"], + ["variable", "$falsey"] +] +---------------------------------------------------- + +Testing variables \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/processing/constant_feature.test b/dashboard-ui/bower_components/prism/tests/languages/processing/constant_feature.test new file mode 100644 index 0000000000..8761eb517f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/processing/constant_feature.test @@ -0,0 +1,13 @@ +FOOBAR +FOO_BAR_42 + +---------------------------------------------------- + +[ + ["constant", "FOOBAR"], + ["constant", "FOO_BAR_42"] +] + +---------------------------------------------------- + +Checks for constants. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/processing/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/processing/function_feature.test new file mode 100644 index 0000000000..929e25904b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/processing/function_feature.test @@ -0,0 +1,13 @@ +foo( +foo_bar_42 ( + +---------------------------------------------------- + +[ + ["function", "foo"], ["punctuation", "("], + ["function", "foo_bar_42"], ["punctuation", "("] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/processing/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/processing/keyword_feature.test new file mode 100644 index 0000000000..268b60dc47 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/processing/keyword_feature.test @@ -0,0 +1,59 @@ +break +catch +case +class; +continue +default +else +extends; +final +for +if +implements; +import +new; +null +private +public +return +static +super +switch +this +try +void +while + +---------------------------------------------------- + +[ + ["keyword", "break"], + ["keyword", "catch"], + ["keyword", "case"], + ["keyword", "class"], ["punctuation", ";"], + ["keyword", "continue"], + ["keyword", "default"], + ["keyword", "else"], + ["keyword", "extends"], ["punctuation", ";"], + ["keyword", "final"], + ["keyword", "for"], + ["keyword", "if"], + ["keyword", "implements"], ["punctuation", ";"], + ["keyword", "import"], + ["keyword", "new"], ["punctuation", ";"], + ["keyword", "null"], + ["keyword", "private"], + ["keyword", "public"], + ["keyword", "return"], + ["keyword", "static"], + ["keyword", "super"], + ["keyword", "switch"], + ["keyword", "this"], + ["keyword", "try"], + ["keyword", "void"], + ["keyword", "while"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/processing/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/processing/operator_feature.test new file mode 100644 index 0000000000..6e692fa78a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/processing/operator_feature.test @@ -0,0 +1,31 @@ +< << <= +> >> >= +& && +| || +% ? +! != += == ++ += +- -= +* *= +/ /= + +---------------------------------------------------- + +[ + ["operator", "<"], ["operator", "<<"], ["operator", "<="], + ["operator", ">"], ["operator", ">>"], ["operator", ">="], + ["operator", "&"], ["operator", "&&"], + ["operator", "|"], ["operator", "||"], + ["operator", "%"], ["operator", "?"], + ["operator", "!"], ["operator", "!="], + ["operator", "="], ["operator", "=="], + ["operator", "+"], ["operator", "+="], + ["operator", "-"], ["operator", "-="], + ["operator", "*"], ["operator", "*="], + ["operator", "/"], ["operator", "/="] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/processing/type_feature.test b/dashboard-ui/bower_components/prism/tests/languages/processing/type_feature.test new file mode 100644 index 0000000000..0aeb507147 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/processing/type_feature.test @@ -0,0 +1,31 @@ +boolean +byte +char +color +double +float +int +XML + +Foobar +Foo_bar_42 + +---------------------------------------------------- + +[ + ["type", "boolean"], + ["type", "byte"], + ["type", "char"], + ["type", "color"], + ["type", "double"], + ["type", "float"], + ["type", "int"], + ["type", "XML"], + + ["type", "Foobar"], + ["type", "Foo_bar_42"] +] + +---------------------------------------------------- + +Checks for types. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/prolog/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/prolog/builtin_feature.test new file mode 100644 index 0000000000..10e8947c81 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/prolog/builtin_feature.test @@ -0,0 +1,17 @@ +fx +fy +xf xfx xfy +yf yfx + +---------------------------------------------------- + +[ + ["builtin", "fx"], + ["builtin", "fy"], + ["builtin", "xf"], ["builtin", "xfx"], ["builtin", "xfy"], + ["builtin", "yf"], ["builtin", "yfx"] +] + +---------------------------------------------------- + +Checks for builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/prolog/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/prolog/comment_feature.test new file mode 100644 index 0000000000..dccf414ef2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/prolog/comment_feature.test @@ -0,0 +1,16 @@ +% Foobar +/**/ +/* Foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "% Foobar"], + ["comment", "/**/"], + ["comment", "/* Foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/prolog/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/prolog/function_feature.test new file mode 100644 index 0000000000..56afaa3baf --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/prolog/function_feature.test @@ -0,0 +1,17 @@ +foobar( +foo_bar_42( +abs/1 +atan/2 + +---------------------------------------------------- + +[ + ["function", "foobar"], ["punctuation", "("], + ["function", "foo_bar_42"], ["punctuation", "("], + ["function", "abs/1"], + ["function", "atan/2"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/prolog/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/prolog/number_feature.test new file mode 100644 index 0000000000..c969be199d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/prolog/number_feature.test @@ -0,0 +1,15 @@ +42 +3.14159 +0 + +---------------------------------------------------- + +[ + ["number", "42"], + ["number", "3.14159"], + ["number", "0"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/prolog/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/prolog/operator_feature.test new file mode 100644 index 0000000000..a282051b23 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/prolog/operator_feature.test @@ -0,0 +1,29 @@ +is mod not xor + +: \ = +> < - +? * @ +/ ; + +^ | ! +$ . + +=@= + +---------------------------------------------------- + +[ + ["operator", "is"], ["operator", "mod"], ["operator", "not"], ["operator", "xor"], + + ["operator", ":"], ["operator", "\\"], ["operator", "="], + ["operator", ">"], ["operator", "<"], ["operator", "-"], + ["operator", "?"], ["operator", "*"], ["operator", "@"], + ["operator", "/"], ["operator", ";"], ["operator", "+"], + ["operator", "^"], ["operator", "|"], ["operator", "!"], + ["operator", "$"], ["operator", "."], + + ["operator", "=@="] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/prolog/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/prolog/string_feature.test new file mode 100644 index 0000000000..071944c891 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/prolog/string_feature.test @@ -0,0 +1,27 @@ +"" +"fo\"obar" +"fo""obar" +"foo\ +bar" +'' +'fo\'obar' +'fo''obar' +'foo\ +bar' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "\"fo\"\"obar\""], + ["string", "\"foo\\\r\nbar\""], + ["string", "''"], + ["string", "'fo\\'obar'"], + ["string", "'fo''obar'"], + ["string", "'foo\\\r\nbar'"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/prolog/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/prolog/variable_feature.test new file mode 100644 index 0000000000..3c9f5cb0b5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/prolog/variable_feature.test @@ -0,0 +1,15 @@ +Foobar +Foo_bar_42 +_foo + +---------------------------------------------------- + +[ + ["variable", "Foobar"], + ["variable", "Foo_bar_42"], + ["variable", "_foo"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/attr-name_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/attr-name_feature.test new file mode 100644 index 0000000000..566a6f5cb2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/attr-name_feature.test @@ -0,0 +1,19 @@ +foo { + bar => bar, + * => {} +} + +---------------------------------------------------- + +[ + "foo ", ["punctuation", "{"], + ["attr-name", "bar"], ["operator", "=>"], + " bar", ["punctuation", ","], + ["attr-name", "*"], ["operator", "=>"], + ["punctuation", "{"], ["punctuation", "}"], + ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for attributes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/boolean_feature.test new file mode 100644 index 0000000000..a40f8d95d2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/boolean_feature.test @@ -0,0 +1,13 @@ +true +false + +---------------------------------------------------- + +[ + ["boolean", "true"], + ["boolean", "false"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/comment_feature.test new file mode 100644 index 0000000000..db51bd6e59 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/comment_feature.test @@ -0,0 +1,16 @@ +# +# Foobar +/* Foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# Foobar"], + ["multiline-comment", "/* Foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/datatype_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/datatype_feature.test new file mode 100644 index 0000000000..ca50499192 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/datatype_feature.test @@ -0,0 +1,63 @@ +Any +Array +Boolean +Callable +Catalogentry +Class +Collection +Data +Default +Enum +Float +Hash +Integer +NotUndef +Numeric +Optional +Pattern +Regexp +Resource +Runtime +Scalar +String +Struct +Tuple +Type +Undef +Variant + +---------------------------------------------------- + +[ + ["datatype", "Any"], + ["datatype", "Array"], + ["datatype", "Boolean"], + ["datatype", "Callable"], + ["datatype", "Catalogentry"], + ["datatype", "Class"], + ["datatype", "Collection"], + ["datatype", "Data"], + ["datatype", "Default"], + ["datatype", "Enum"], + ["datatype", "Float"], + ["datatype", "Hash"], + ["datatype", "Integer"], + ["datatype", "NotUndef"], + ["datatype", "Numeric"], + ["datatype", "Optional"], + ["datatype", "Pattern"], + ["datatype", "Regexp"], + ["datatype", "Resource"], + ["datatype", "Runtime"], + ["datatype", "Scalar"], + ["datatype", "String"], + ["datatype", "Struct"], + ["datatype", "Tuple"], + ["datatype", "Type"], + ["datatype", "Undef"], + ["datatype", "Variant"] +] + +---------------------------------------------------- + +Checks for data types. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/function_feature.test new file mode 100644 index 0000000000..561e2c50ba --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/function_feature.test @@ -0,0 +1,37 @@ +$foo.foobar +foo_bar_42() + +contain +debug +err +fail +include +info +notice +realize +require +tag +warning + +---------------------------------------------------- + +[ + ["variable", ["$foo"]], ["punctuation", "."], ["function", "foobar"], + ["function", "foo_bar_42"], ["punctuation", "("], ["punctuation", ")"], + + ["function", "contain"], + ["function", "debug"], + ["function", "err"], + ["function", "fail"], + ["function", "include"], + ["function", "info"], + ["function", "notice"], + ["function", "realize"], + ["function", "require"], + ["function", "tag"], + ["function", "warning"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/heredoc_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/heredoc_feature.test new file mode 100644 index 0000000000..403332c712 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/heredoc_feature.test @@ -0,0 +1,51 @@ +@("FOO") + bar + $baz +FOO + +@(FOO BAR/) + bar + $baz + | FOO BAR + +@(foo!) +bar +|-foo! + +@("some text..."/nrts$uL) +some text +some text.. +some text... + +$foo = @(FOOBAR) == $bar + Foobar + -FOOBAR + +---------------------------------------------------- + +[ + ["heredoc", ["@(", ["punctuation", "\"FOO\""], ")"]], + ["heredoc", [ + "\tbar\r\n\t", + ["interpolation", ["$baz"]], + ["punctuation", "FOO"] + ]], + ["heredoc", ["@(", ["punctuation", "FOO BAR/"], ")"]], + ["heredoc", [ + "\tbar\r\n\t$baz\r\n\t", + ["punctuation", "| FOO BAR"] + ]], + ["heredoc", ["@(", ["punctuation", "foo!"], ")"]], + ["heredoc", ["bar\r\n", ["punctuation", "|-foo!"]]], + ["heredoc", ["@(", ["punctuation", "\"some text...\"/nrts$uL"], ")"]], + ["heredoc", ["some text\r\nsome text..\r\n", ["punctuation", "some text..."]]], + ["variable", ["$foo"]], ["operator", "="], + ["heredoc", ["@(", ["punctuation", "FOOBAR"], ")"]], + ["operator", "=="], ["variable", ["$bar"]], + ["heredoc", ["\tFoobar\r\n\t", ["punctuation", "-FOOBAR"]]] +] + +---------------------------------------------------- + +Checks for heredoc strings. +Also checks that string interpolation applies only inside quoted heredoc strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/interpolation_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/interpolation_feature.test new file mode 100644 index 0000000000..e078ec57a1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/interpolation_feature.test @@ -0,0 +1,54 @@ +"$foo ${::foo} ${foo::bar.foobar} +${foobar(42)} ${::interfaces.split(",")[3]} +${[1,20,3].filter |$value| { $value < 10 }}" + +---------------------------------------------------- + +[ + ["string", [["double-quoted", [ + "\"", + ["interpolation", ["$foo"]], + ["interpolation", [ + ["delimiter", "$"], ["punctuation", "{"], + ["short-variable", [["punctuation", "::"], "foo"]], + ["punctuation", "}"] + ]], + ["interpolation", [ + ["delimiter", "$"], ["punctuation", "{"], + ["short-variable", ["foo", ["punctuation", "::"], "bar"]], + ["punctuation", "."], ["function", "foobar"], + ["punctuation", "}"] + ]], + ["interpolation", [ + ["delimiter", "$"], ["punctuation", "{"], + ["function", "foobar"], ["punctuation", "("], + ["number", "42"], ["punctuation", ")"], + ["punctuation", "}"] + ]], + ["interpolation", [ + ["delimiter", "$"], ["punctuation", "{"], + ["short-variable", [["punctuation", "::"], "interfaces"]], + ["punctuation", "."], ["function", "split"], + ["punctuation", "("], ["string", [["double-quoted", ["\",\""]]]], + ["punctuation", ")"], ["punctuation", "["], + ["number", "3"], ["punctuation", "]"], + ["punctuation", "}"] + ]], + ["interpolation", [ + ["delimiter", "$"], ["punctuation", "{"], + ["punctuation", "["], ["number", "1"], + ["punctuation", ","], ["number", "20"], + ["punctuation", ","], ["number", "3"], ["punctuation", "]"], + ["punctuation", "."], ["function", "filter"], + ["operator", "|"], ["variable", ["$value"]], ["operator", "|"], + ["punctuation", "{"], ["variable", ["$value"]], + ["operator", "<"], ["number", "10"], ["punctuation", "}"], + ["punctuation", "}"] + ]], + "\"" + ]]]] +] + +---------------------------------------------------- + +Checks for interpolation. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/keyword_feature.test new file mode 100644 index 0000000000..3bff46c76c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/keyword_feature.test @@ -0,0 +1,47 @@ +application +attr +case +class +consumes +default +define +else +elsif +function +if +import +inherits +node +private +produces +type +undef +unless + +---------------------------------------------------- + +[ + ["keyword", "application"], + ["keyword", "attr"], + ["keyword", "case"], + ["keyword", "class"], + ["keyword", "consumes"], + ["keyword", "default"], + ["keyword", "define"], + ["keyword", "else"], + ["keyword", "elsif"], + ["keyword", "function"], + ["keyword", "if"], + ["keyword", "import"], + ["keyword", "inherits"], + ["keyword", "node"], + ["keyword", "private"], + ["keyword", "produces"], + ["keyword", "type"], + ["keyword", "undef"], + ["keyword", "unless"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/number_feature.test new file mode 100644 index 0000000000..173733d579 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/number_feature.test @@ -0,0 +1,25 @@ +0 +42 +3.14159 +3e8 +3.2E-7 +0777 +0xBadFace +0XBADFACE + +---------------------------------------------------- + +[ + ["number", "0"], + ["number", "42"], + ["number", "3.14159"], + ["number", "3e8"], + ["number", "3.2E-7"], + ["number", "0777"], + ["number", "0xBadFace"], + ["number", "0XBADFACE"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/operator_feature.test new file mode 100644 index 0000000000..c3b9d394ff --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/operator_feature.test @@ -0,0 +1,29 @@ += == =~ => +! != !~ +< << <<| +<= <~ <| <- +> >> >= +- -> +~> +| |> |>> +* / % + ? +and in or + +---------------------------------------------------- + +[ + ["operator", "="], ["operator", "=="], ["operator", "=~"], ["operator", "=>"], + ["operator", "!"], ["operator", "!="], ["operator", "!~"], + ["operator", "<"], ["operator", "<<"], ["operator", "<<|"], + ["operator", "<="], ["operator", "<~"], ["operator", "<|"], ["operator", "<-"], + ["operator", ">"], ["operator", ">>"], ["operator", ">="], + ["operator", "-"], ["operator", "->"], + ["operator", "~>"], + ["operator", "|"], ["operator", "|>"], ["operator", "|>>"], + ["operator", "*"], ["operator", "/"], ["operator", "%"], ["operator", "+"], ["operator", "?"], + ["operator", "and"], ["operator", "in"], ["operator", "or"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/regex_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/regex_feature.test new file mode 100644 index 0000000000..46599b1327 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/regex_feature.test @@ -0,0 +1,29 @@ +node /f(o)"o"[b]?a\/r/ +$foo = /foo +bar # baz +/m +$foo = /foo +bar # baz +/ixm + +---------------------------------------------------- + +[ + ["keyword", "node"], + ["regex", ["/f(o)\"o\"[b]?a\\/r/"]], + ["variable", ["$foo"]], ["operator", "="], + ["regex", ["/foo\r\nbar # baz\r\n/m"]], + ["variable", ["$foo"]], ["operator", "="], + ["regex", [ + ["extended-regex", [ + "/foo\r\nbar ", + ["comment", "# baz"], + "\r\n/ixm" + ]] + ]] +] + +---------------------------------------------------- + +Checks for regular expressions. +Also checks that extended-regex accept inline comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/string_feature.test new file mode 100644 index 0000000000..3cc6c5cf1b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/string_feature.test @@ -0,0 +1,30 @@ +'' +'fo\'obar' +'foo +$bar +baz' +"" +"fo\"obar" +"foo +$bar +baz" + +---------------------------------------------------- + +[ + ["string", ["''"]], + ["string", ["'fo\\'obar'"]], + ["string", ["'foo\r\n$bar\r\nbaz'"]], + ["string", [["double-quoted", ["\"\""]]]], + ["string", [["double-quoted", ["\"fo\\\"obar\""]]]], + ["string", [["double-quoted", [ + "\"foo\r\n", + ["interpolation", ["$bar"]], + "\r\nbaz\"" + ]]]] +] + +---------------------------------------------------- + +Checks for strings. +Also checks that string interpolation only applies to double-quoted strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/puppet/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/puppet/variable_feature.test new file mode 100644 index 0000000000..142e207082 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/puppet/variable_feature.test @@ -0,0 +1,15 @@ +$foo +$::foobar_42 +$Foo::Bar_42::baz + +---------------------------------------------------- + +[ + ["variable", ["$foo"]], + ["variable", ["$", ["punctuation", "::"], "foobar_42"]], + ["variable", ["$Foo", ["punctuation", "::"], "Bar_42", ["punctuation", "::"], "baz"]] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pure/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pure/comment_feature.test new file mode 100644 index 0000000000..724f4e604f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pure/comment_feature.test @@ -0,0 +1,20 @@ +// +// Foobar +/**/ +/* Foo +bar */ +#! --nochecks + +---------------------------------------------------- + +[ + ["comment", "//"], + ["comment", "// Foobar"], + ["comment", "/**/"], + ["comment", "/* Foo\r\nbar */"], + ["comment", "#! --nochecks"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pure/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pure/function_feature.test new file mode 100644 index 0000000000..d89c547900 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pure/function_feature.test @@ -0,0 +1,619 @@ +abs +add_fundef +add_fundef_at +add_interface +add_interface_at +add_macdef +add_macdef_at +add_typedef +add_typedef_at +add_addr +add_constdef +add_vardef +all +any +appl +applp +arity +bigint +bigintp +blob +blob_crc +blob_size +blobp +bool +boolp +byte_matrix +byte_pointer +byte_string +byte_cstring +byte_string_pointer +byte_cstring_pointer +calloc +cat +catmap +ceil +char +charp +chars +check_ptrtag +chr +clear_sentry +clearsym +closure +closurep +cmatrix +cmatrixp +col +cols +colcat +colcatmap +colmap +colrev +colvector +colvectorp +colvectorseq +complex +complex_float_matrix +complex_float_pointer +complex_matrix +complex_matrix_view +complex_pointer +complexp +conj +cooked +cookedp +cst +cstring +cstring_dup +cstring_list +cstring_vector +curry +curry3 +cycle +cyclen +del_constdef +del_fundef +del_interface +del_macdef +del_typedef +del_vardef +delete +diag +diagmat +dim +dmatrix +dmatrixp +do +double +double_matrix +double_matrix_view +double_pointer +doublep +dowith +dowith3 +drop +dropwhile +eval +evalcmd +exactp +filter +fix +fixity +flip +float_matrix +float_pointer +floor +foldl +foldl1 +foldr +foldr1 +frac +free +fun +funp +function +functionp +gcd +get +get_byte +get_constdef +get_double +get_float +get_fundef +get_int +get_int64 +get_interface +get_interface_typedef +get_long +get_macdef +get_pointer +get_ptrtag +get_short +get_sentry +get_string +get_typedef +get_vardef +globsym +hash +head +id +im +imatrix +imatrixp +index +inexactp +infp +init +insert +int +int_matrix +int_matrix_view +int_pointer +intp +int64_matrix +int64_pointer +integer +integerp +iterate +iteraten +iterwhile +join +key +keys +lambda +lambdap +last +lasterr +lasterrpos +lcd +list +list2 +listp +listmap +make_ptrtag +malloc +map +matcat +matrix +matrixp +max +member +min +nanp +nargs +nmatrix +nmatrixp +null +number +numberp +ord +pack +packed +pointer +pointer_cast +pointer_tag +pointer_type +pointerp +pow +pred +ptrtag +put +put_byte +put_double +put_float +put_int +put_int64 +put_long +put_pointer +put_short +put_string +rational +rationalp +re +real +realp +realloc +record +recordp +redim +reduce +reduce_with +ref +refp +repeat +repeatn +reverse +rlist +rlistp +round +row +rows +rowcat +rowcatmap +rowmap +rowrev +rowvector +rowvectorp +rowvectorseq +same +scanl +scanl1 +scanr +scanr1 +sentry +sgn +short_matrix +short_pointer +slice +smatrix +smatrixp +sort +split +str +strcat +stream +stride +string +string_dup +string_list +string_vector +stringp +subdiag +subdiagmat +submat +subseq +subseq2 +substr +succ +supdiag +supdiagmat +symbol +symbolp +tail +take +takewhile +thunk +thunkp +transpose +trunc +tuple +tuplep +typep +ubyte +uint +uint64 +ulong +uncurry +uncurry3 +unref +unzip +unzip3 +update +ushort +val +vals +var +varp +vector +vectorp +vectorseq +void +zip +zip3 +zipwith +zipwith3 + +---------------------------------------------------- + +[ + ["function", "abs"], + ["function", "add_fundef"], + ["function", "add_fundef_at"], + ["function", "add_interface"], + ["function", "add_interface_at"], + ["function", "add_macdef"], + ["function", "add_macdef_at"], + ["function", "add_typedef"], + ["function", "add_typedef_at"], + ["function", "add_addr"], + ["function", "add_constdef"], + ["function", "add_vardef"], + ["function", "all"], + ["function", "any"], + ["function", "appl"], + ["function", "applp"], + ["function", "arity"], + ["function", "bigint"], + ["function", "bigintp"], + ["function", "blob"], + ["function", "blob_crc"], + ["function", "blob_size"], + ["function", "blobp"], + ["function", "bool"], + ["function", "boolp"], + ["function", "byte_matrix"], + ["function", "byte_pointer"], + ["function", "byte_string"], + ["function", "byte_cstring"], + ["function", "byte_string_pointer"], + ["function", "byte_cstring_pointer"], + ["function", "calloc"], + ["function", "cat"], + ["function", "catmap"], + ["function", "ceil"], + ["function", "char"], + ["function", "charp"], + ["function", "chars"], + ["function", "check_ptrtag"], + ["function", "chr"], + ["function", "clear_sentry"], + ["function", "clearsym"], + ["function", "closure"], + ["function", "closurep"], + ["function", "cmatrix"], + ["function", "cmatrixp"], + ["function", "col"], + ["function", "cols"], + ["function", "colcat"], + ["function", "colcatmap"], + ["function", "colmap"], + ["function", "colrev"], + ["function", "colvector"], + ["function", "colvectorp"], + ["function", "colvectorseq"], + ["function", "complex"], + ["function", "complex_float_matrix"], + ["function", "complex_float_pointer"], + ["function", "complex_matrix"], + ["function", "complex_matrix_view"], + ["function", "complex_pointer"], + ["function", "complexp"], + ["function", "conj"], + ["function", "cooked"], + ["function", "cookedp"], + ["function", "cst"], + ["function", "cstring"], + ["function", "cstring_dup"], + ["function", "cstring_list"], + ["function", "cstring_vector"], + ["function", "curry"], + ["function", "curry3"], + ["function", "cycle"], + ["function", "cyclen"], + ["function", "del_constdef"], + ["function", "del_fundef"], + ["function", "del_interface"], + ["function", "del_macdef"], + ["function", "del_typedef"], + ["function", "del_vardef"], + ["function", "delete"], + ["function", "diag"], + ["function", "diagmat"], + ["function", "dim"], + ["function", "dmatrix"], + ["function", "dmatrixp"], + ["function", "do"], + ["function", "double"], + ["function", "double_matrix"], + ["function", "double_matrix_view"], + ["function", "double_pointer"], + ["function", "doublep"], + ["function", "dowith"], + ["function", "dowith3"], + ["function", "drop"], + ["function", "dropwhile"], + ["function", "eval"], + ["function", "evalcmd"], + ["function", "exactp"], + ["function", "filter"], + ["function", "fix"], + ["function", "fixity"], + ["function", "flip"], + ["function", "float_matrix"], + ["function", "float_pointer"], + ["function", "floor"], + ["function", "foldl"], + ["function", "foldl1"], + ["function", "foldr"], + ["function", "foldr1"], + ["function", "frac"], + ["function", "free"], + ["function", "fun"], + ["function", "funp"], + ["function", "function"], + ["function", "functionp"], + ["function", "gcd"], + ["function", "get"], + ["function", "get_byte"], + ["function", "get_constdef"], + ["function", "get_double"], + ["function", "get_float"], + ["function", "get_fundef"], + ["function", "get_int"], + ["function", "get_int64"], + ["function", "get_interface"], + ["function", "get_interface_typedef"], + ["function", "get_long"], + ["function", "get_macdef"], + ["function", "get_pointer"], + ["function", "get_ptrtag"], + ["function", "get_short"], + ["function", "get_sentry"], + ["function", "get_string"], + ["function", "get_typedef"], + ["function", "get_vardef"], + ["function", "globsym"], + ["function", "hash"], + ["function", "head"], + ["function", "id"], + ["function", "im"], + ["function", "imatrix"], + ["function", "imatrixp"], + ["function", "index"], + ["function", "inexactp"], + ["function", "infp"], + ["function", "init"], + ["function", "insert"], + ["function", "int"], + ["function", "int_matrix"], + ["function", "int_matrix_view"], + ["function", "int_pointer"], + ["function", "intp"], + ["function", "int64_matrix"], + ["function", "int64_pointer"], + ["function", "integer"], + ["function", "integerp"], + ["function", "iterate"], + ["function", "iteraten"], + ["function", "iterwhile"], + ["function", "join"], + ["function", "key"], + ["function", "keys"], + ["function", "lambda"], + ["function", "lambdap"], + ["function", "last"], + ["function", "lasterr"], + ["function", "lasterrpos"], + ["function", "lcd"], + ["function", "list"], + ["function", "list2"], + ["function", "listp"], + ["function", "listmap"], + ["function", "make_ptrtag"], + ["function", "malloc"], + ["function", "map"], + ["function", "matcat"], + ["function", "matrix"], + ["function", "matrixp"], + ["function", "max"], + ["function", "member"], + ["function", "min"], + ["function", "nanp"], + ["function", "nargs"], + ["function", "nmatrix"], + ["function", "nmatrixp"], + ["function", "null"], + ["function", "number"], + ["function", "numberp"], + ["function", "ord"], + ["function", "pack"], + ["function", "packed"], + ["function", "pointer"], + ["function", "pointer_cast"], + ["function", "pointer_tag"], + ["function", "pointer_type"], + ["function", "pointerp"], + ["function", "pow"], + ["function", "pred"], + ["function", "ptrtag"], + ["function", "put"], + ["function", "put_byte"], + ["function", "put_double"], + ["function", "put_float"], + ["function", "put_int"], + ["function", "put_int64"], + ["function", "put_long"], + ["function", "put_pointer"], + ["function", "put_short"], + ["function", "put_string"], + ["function", "rational"], + ["function", "rationalp"], + ["function", "re"], + ["function", "real"], + ["function", "realp"], + ["function", "realloc"], + ["function", "record"], + ["function", "recordp"], + ["function", "redim"], + ["function", "reduce"], + ["function", "reduce_with"], + ["function", "ref"], + ["function", "refp"], + ["function", "repeat"], + ["function", "repeatn"], + ["function", "reverse"], + ["function", "rlist"], + ["function", "rlistp"], + ["function", "round"], + ["function", "row"], + ["function", "rows"], + ["function", "rowcat"], + ["function", "rowcatmap"], + ["function", "rowmap"], + ["function", "rowrev"], + ["function", "rowvector"], + ["function", "rowvectorp"], + ["function", "rowvectorseq"], + ["function", "same"], + ["function", "scanl"], + ["function", "scanl1"], + ["function", "scanr"], + ["function", "scanr1"], + ["function", "sentry"], + ["function", "sgn"], + ["function", "short_matrix"], + ["function", "short_pointer"], + ["function", "slice"], + ["function", "smatrix"], + ["function", "smatrixp"], + ["function", "sort"], + ["function", "split"], + ["function", "str"], + ["function", "strcat"], + ["function", "stream"], + ["function", "stride"], + ["function", "string"], + ["function", "string_dup"], + ["function", "string_list"], + ["function", "string_vector"], + ["function", "stringp"], + ["function", "subdiag"], + ["function", "subdiagmat"], + ["function", "submat"], + ["function", "subseq"], + ["function", "subseq2"], + ["function", "substr"], + ["function", "succ"], + ["function", "supdiag"], + ["function", "supdiagmat"], + ["function", "symbol"], + ["function", "symbolp"], + ["function", "tail"], + ["function", "take"], + ["function", "takewhile"], + ["function", "thunk"], + ["function", "thunkp"], + ["function", "transpose"], + ["function", "trunc"], + ["function", "tuple"], + ["function", "tuplep"], + ["function", "typep"], + ["function", "ubyte"], + ["function", "uint"], + ["function", "uint64"], + ["function", "ulong"], + ["function", "uncurry"], + ["function", "uncurry3"], + ["function", "unref"], + ["function", "unzip"], + ["function", "unzip3"], + ["function", "update"], + ["function", "ushort"], + ["function", "val"], + ["function", "vals"], + ["function", "var"], + ["function", "varp"], + ["function", "vector"], + ["function", "vectorp"], + ["function", "vectorseq"], + ["function", "void"], + ["function", "zip"], + ["function", "zip3"], + ["function", "zipwith"], + ["function", "zipwith3"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pure/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pure/keyword_feature.test new file mode 100644 index 0000000000..be0a4dec97 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pure/keyword_feature.test @@ -0,0 +1,113 @@ +ans +break +bt +case +catch +cd +clear +const +def +del +dump +else +end +exit +extern +false +force +help +if +infix +infixl +infixr +interface +let +ls +mem +namespace +nonfix +NULL +of +otherwise +outfix +override +postfix +prefix +private +public +pwd +quit +run +save +show +stats +then +throw +trace +true +type +underride +using +when +with + +---------------------------------------------------- + +[ + ["keyword", "ans"], + ["keyword", "break"], + ["keyword", "bt"], + ["keyword", "case"], + ["keyword", "catch"], + ["keyword", "cd"], + ["keyword", "clear"], + ["keyword", "const"], + ["keyword", "def"], + ["keyword", "del"], + ["keyword", "dump"], + ["keyword", "else"], + ["keyword", "end"], + ["keyword", "exit"], + ["keyword", "extern"], + ["keyword", "false"], + ["keyword", "force"], + ["keyword", "help"], + ["keyword", "if"], + ["keyword", "infix"], + ["keyword", "infixl"], + ["keyword", "infixr"], + ["keyword", "interface"], + ["keyword", "let"], + ["keyword", "ls"], + ["keyword", "mem"], + ["keyword", "namespace"], + ["keyword", "nonfix"], + ["keyword", "NULL"], + ["keyword", "of"], + ["keyword", "otherwise"], + ["keyword", "outfix"], + ["keyword", "override"], + ["keyword", "postfix"], + ["keyword", "prefix"], + ["keyword", "private"], + ["keyword", "public"], + ["keyword", "pwd"], + ["keyword", "quit"], + ["keyword", "run"], + ["keyword", "save"], + ["keyword", "show"], + ["keyword", "stats"], + ["keyword", "then"], + ["keyword", "throw"], + ["keyword", "trace"], + ["keyword", "true"], + ["keyword", "type"], + ["keyword", "underride"], + ["keyword", "using"], + ["keyword", "when"], + ["keyword", "with"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pure/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pure/number_feature.test new file mode 100644 index 0000000000..e3a030a44d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pure/number_feature.test @@ -0,0 +1,31 @@ +inf +nan + +0xBadFace +0b01010 +42 +4711L +3.14159 +3e8 +4.2E-7 +0.9e+12 + +---------------------------------------------------- + +[ + ["number", "inf"], + ["number", "nan"], + + ["number", "0xBadFace"], + ["number", "0b01010"], + ["number", "42"], + ["number", "4711L"], + ["number", "3.14159"], + ["number", "3e8"], + ["number", "4.2E-7"], + ["number", "0.9e+12"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pure/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pure/operator_feature.test new file mode 100644 index 0000000000..c48a355776 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pure/operator_feature.test @@ -0,0 +1,29 @@ +and div mod not or + +! " # $ % & +' * + - . / +: < = > ? @ +\ ^ _ ` ~ + +¡ ¢ × ÷ + +<,| + +---------------------------------------------------- + +[ + ["operator", "and"], ["operator", "div"], ["operator", "mod"], ["operator", "not"], ["operator", "or"], + + ["operator", "!"], ["operator", "\""], ["operator", "#"], ["operator", "$"], ["operator", "%"], ["operator", "&"], + ["operator", "'"], ["operator", "*"], ["operator", "+"], ["operator", "-"], ["operator", "."], ["operator", "/"], + ["operator", ":"], ["operator", "<"], ["operator", "="], ["operator", ">"], ["operator", "?"], ["operator", "@"], + ["operator", "\\"], ["operator", "^"], ["operator", "_"], ["operator", "`"], ["operator", "~"], + + ["operator", "¡"], ["operator", "¢"], ["operator", "×"], ["operator", "÷"], + + ["operator", "<,|"] +] + +---------------------------------------------------- + +Checks for some operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pure/special_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pure/special_feature.test new file mode 100644 index 0000000000..83f4559507 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pure/special_feature.test @@ -0,0 +1,15 @@ +__show__ +__cmd__ +__with__ + +---------------------------------------------------- + +[ + ["special", "__show__"], + ["special", "__cmd__"], + ["special", "__with__"] +] + +---------------------------------------------------- + +Checks for special functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/pure/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/pure/string_feature.test new file mode 100644 index 0000000000..b3c6ec9549 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/pure/string_feature.test @@ -0,0 +1,13 @@ +"" +"fo\"obar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/boolean_feature.test new file mode 100644 index 0000000000..f11c34c58e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/boolean_feature.test @@ -0,0 +1,13 @@ +True +False + +---------------------------------------------------- + +[ + ["boolean", "True"], + ["boolean", "False"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/class-name_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/class-name_feature.test new file mode 100644 index 0000000000..5e6dd06806 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/class-name_feature.test @@ -0,0 +1,15 @@ +class Foo +class foobar_42 +class _ + +---------------------------------------------------- + +[ + ["keyword", "class"], ["class-name", "Foo"], + ["keyword", "class"], ["class-name", "foobar_42"], + ["keyword", "class"], ["class-name", "_"] +] + +---------------------------------------------------- + +Checks for class names. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/comment_feature.test new file mode 100644 index 0000000000..710014b88d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/comment_feature.test @@ -0,0 +1,13 @@ +# +# foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/function_feature.test new file mode 100644 index 0000000000..56353a38af --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/function_feature.test @@ -0,0 +1,15 @@ +def Foo( +def foo_bar_42( +def _( + +---------------------------------------------------- + +[ + ["keyword", "def"], ["function", "Foo"], ["punctuation", "("], + ["keyword", "def"], ["function", "foo_bar_42"], ["punctuation", "("], + ["keyword", "def"], ["function", "_"], ["punctuation", "("] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/keyword_feature.test new file mode 100644 index 0000000000..1c25ff2dab --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/keyword_feature.test @@ -0,0 +1,27 @@ +as assert async await +break class; +continue def; +del elif else +except exec finally +for from global if +import in is lambda +pass print raise return +try while with yield + +---------------------------------------------------- + +[ + ["keyword", "as"], ["keyword", "assert"], ["keyword", "async"], ["keyword", "await"], + ["keyword", "break"], ["keyword", "class"], ["punctuation", ";"], + ["keyword", "continue"], ["keyword", "def"], ["punctuation", ";"], + ["keyword", "del"], ["keyword", "elif"], ["keyword", "else"], + ["keyword", "except"], ["keyword", "exec"], ["keyword", "finally"], + ["keyword", "for"], ["keyword", "from"], ["keyword", "global"], ["keyword", "if"], + ["keyword", "import"], ["keyword", "in"], ["keyword", "is"], ["keyword", "lambda"], + ["keyword", "pass"], ["keyword", "print"], ["keyword", "raise"], ["keyword", "return"], + ["keyword", "try"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/number_feature.test new file mode 100644 index 0000000000..680774f641 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/number_feature.test @@ -0,0 +1,27 @@ +0b0001 +0o754 +0xBadFace +42 +3.14159 +2.1E10 +0.3e-7 +4.8e+1 +42j + +---------------------------------------------------- + +[ + ["number", "0b0001"], + ["number", "0o754"], + ["number", "0xBadFace"], + ["number", "42"], + ["number", "3.14159"], + ["number", "2.1E10"], + ["number", "0.3e-7"], + ["number", "4.8e+1"], + ["number", "42j"] +] + +---------------------------------------------------- + +Checks for hexadecimal, octal, binary and decimal numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/operator_feature.test new file mode 100644 index 0000000000..b4bc3f6c71 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/operator_feature.test @@ -0,0 +1,31 @@ ++ += +- -= +* ** *= **= +/ /= // //= +% %= +< <= <> << +> >= >> += == +!= +& | ^ ~ +or and not + +---------------------------------------------------- + +[ + ["operator", "+"], ["operator", "+="], + ["operator", "-"], ["operator", "-="], + ["operator", "*"], ["operator", "**"], ["operator", "*="], ["operator", "**="], + ["operator", "/"], ["operator", "/="], ["operator", "//"], ["operator", "//="], + ["operator", "%"], ["operator", "%="], + ["operator", "<"], ["operator", "<="], ["operator", "<>"], ["operator", "<<"], + ["operator", ">"], ["operator", ">="], ["operator", ">>"], + ["operator", "="], ["operator", "=="], + ["operator", "!="], + ["operator", "&"], ["operator", "|"], ["operator", "^"], ["operator", "~"], + ["operator", "or"], ["operator", "and"], ["operator", "not"] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/string_feature.test new file mode 100644 index 0000000000..89fb846763 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/string_feature.test @@ -0,0 +1,17 @@ +"" +"fo\"obar" +'' +'fo\'obar' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "''"], + ["string", "'fo\\'obar'"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/python/triple-quoted-string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/python/triple-quoted-string_feature.test new file mode 100644 index 0000000000..a69e01640b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/python/triple-quoted-string_feature.test @@ -0,0 +1,21 @@ +"""foobar""" +"""fo"o +#bar +baz""" +'''foobar''' +'''fo'o +#bar +baz''' + +---------------------------------------------------- + +[ + ["triple-quoted-string", "\"\"\"foobar\"\"\""], + ["triple-quoted-string", "\"\"\"fo\"o\r\n#bar\r\nbaz\"\"\""], + ["triple-quoted-string", "'''foobar'''"], + ["triple-quoted-string", "'''fo'o\r\n#bar\r\nbaz'''"] +] + +---------------------------------------------------- + +Checks for triple-quoted strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/adverb_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/adverb_feature.test new file mode 100644 index 0000000000..9cb2ba70a0 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/adverb_feature.test @@ -0,0 +1,17 @@ +' ': ++/ +/: +\ \: +each + +---------------------------------------------------- + +[ + ["adverb", "'"], ["adverb", "':"], + ["verb", "+"], ["adverb", "/"], ["verb", "+"], ["adverb", "/:"], + ["adverb", "\\"], ["adverb", "\\:"], + ["adverb", "each"] +] + +---------------------------------------------------- + +Checks for adverbs. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/comment_feature.test new file mode 100644 index 0000000000..1d630e5da2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/comment_feature.test @@ -0,0 +1,24 @@ +#!/usr/bin/env q +/ Foobar + +/ +Foo +bar +\ + +\ +Foo +Bar + +---------------------------------------------------- + +[ + ["comment", "#!/usr/bin/env q"], + ["comment", "/ Foobar"], + ["comment", "/\r\nFoo\r\nbar\r\n\\"], + ["comment", "\\\r\nFoo\r\nBar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/datetime_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/datetime_feature.test new file mode 100644 index 0000000000..5fc209a5f6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/datetime_feature.test @@ -0,0 +1,39 @@ +0Nm 0Nd 0Nz 0Nu 0Nv 0Nt +0Wd 0Wt 0Wz + +2015.09m +2015.09.08 +2015.09.08d +2015.09.08z +2015.09.08T08:25:32 +2015.09.08T08:25:32.000 +08:25 +08:25u +08:25v +08:25t +08:25:32 +08:25:32:000 + +---------------------------------------------------- + +[ + ["datetime", "0Nm"], ["datetime", "0Nd"], ["datetime", "0Nz"], ["datetime", "0Nu"], ["datetime", "0Nv"], ["datetime", "0Nt"], + ["datetime", "0Wd"], ["datetime", "0Wt"], ["datetime", "0Wz"], + + ["datetime", "2015.09m"], + ["datetime", "2015.09.08"], + ["datetime", "2015.09.08d"], + ["datetime", "2015.09.08z"], + ["datetime", "2015.09.08T08:25:32"], + ["datetime", "2015.09.08T08:25:32.000"], + ["datetime", "08:25"], + ["datetime", "08:25u"], + ["datetime", "08:25v"], + ["datetime", "08:25t"], + ["datetime", "08:25:32"], + ["datetime", "08:25:32:000"] +] + +---------------------------------------------------- + +Checks for dates, times and datetimes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/keyword_feature.test new file mode 100644 index 0000000000..3d0fa5991a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/keyword_feature.test @@ -0,0 +1,371 @@ +\foo +\foo_bar_42 + +abs +acos +aj +aj0 +all +and +any +asc +asin +asof +atan +attr +avg +avgs +bin +binr +by +ceiling +cols +cor +cos +count +cov +cross +csv +cut +delete +deltas +desc +dev +differ +distinct +div +do +dsave +ej +enlist +eval +except +exec +exit +exp +fby +fills +first +fkeys +flip +floor +from +get +getenv +group +gtime +hclose +hcount +hdel +hopen +hsym +iasc +identity +idesc +if +ij +in +insert +inter +inv +key +keys +last +like +list +lj +ljf +load +log +lower +lsq +ltime +ltrim +mavg +max +maxs +mcount +md5 +mdev +med +meta +min +mins +mmax +mmin +mmu +mod +msum +neg +next +not +null +or +over +parse +peach +pj +plist +prd +prds +prev +prior +rand +rank +ratios +raze +read0 +read1 +reciprocal +reval +reverse +rload +rotate +rsave +rtrim +save +scan +scov +sdev +select +set +setenv +show +signum +sin +sqrt +ss +ssr +string +sublist +sum +sums +sv +svar +system +tables +tan +til +trim +txf +type +uj +ungroup +union +update +upper +upsert +value +var +view +views +vs +wavg +where +while +within +wj +wj1 +wsum +ww +xasc +xbar +xcol +xcols +xdesc +xexp +xgroup +xkey +xlog +xprev +xrank + +---------------------------------------------------- + +[ + ["keyword", "\\foo"], + ["keyword", "\\foo_bar_42"], + + ["keyword", "abs"], + ["keyword", "acos"], + ["keyword", "aj"], + ["keyword", "aj0"], + ["keyword", "all"], + ["keyword", "and"], + ["keyword", "any"], + ["keyword", "asc"], + ["keyword", "asin"], + ["keyword", "asof"], + ["keyword", "atan"], + ["keyword", "attr"], + ["keyword", "avg"], + ["keyword", "avgs"], + ["keyword", "bin"], + ["keyword", "binr"], + ["keyword", "by"], + ["keyword", "ceiling"], + ["keyword", "cols"], + ["keyword", "cor"], + ["keyword", "cos"], + ["keyword", "count"], + ["keyword", "cov"], + ["keyword", "cross"], + ["keyword", "csv"], + ["keyword", "cut"], + ["keyword", "delete"], + ["keyword", "deltas"], + ["keyword", "desc"], + ["keyword", "dev"], + ["keyword", "differ"], + ["keyword", "distinct"], + ["keyword", "div"], + ["keyword", "do"], + ["keyword", "dsave"], + ["keyword", "ej"], + ["keyword", "enlist"], + ["keyword", "eval"], + ["keyword", "except"], + ["keyword", "exec"], + ["keyword", "exit"], + ["keyword", "exp"], + ["keyword", "fby"], + ["keyword", "fills"], + ["keyword", "first"], + ["keyword", "fkeys"], + ["keyword", "flip"], + ["keyword", "floor"], + ["keyword", "from"], + ["keyword", "get"], + ["keyword", "getenv"], + ["keyword", "group"], + ["keyword", "gtime"], + ["keyword", "hclose"], + ["keyword", "hcount"], + ["keyword", "hdel"], + ["keyword", "hopen"], + ["keyword", "hsym"], + ["keyword", "iasc"], + ["keyword", "identity"], + ["keyword", "idesc"], + ["keyword", "if"], + ["keyword", "ij"], + ["keyword", "in"], + ["keyword", "insert"], + ["keyword", "inter"], + ["keyword", "inv"], + ["keyword", "key"], + ["keyword", "keys"], + ["keyword", "last"], + ["keyword", "like"], + ["keyword", "list"], + ["keyword", "lj"], + ["keyword", "ljf"], + ["keyword", "load"], + ["keyword", "log"], + ["keyword", "lower"], + ["keyword", "lsq"], + ["keyword", "ltime"], + ["keyword", "ltrim"], + ["keyword", "mavg"], + ["keyword", "max"], + ["keyword", "maxs"], + ["keyword", "mcount"], + ["keyword", "md5"], + ["keyword", "mdev"], + ["keyword", "med"], + ["keyword", "meta"], + ["keyword", "min"], + ["keyword", "mins"], + ["keyword", "mmax"], + ["keyword", "mmin"], + ["keyword", "mmu"], + ["keyword", "mod"], + ["keyword", "msum"], + ["keyword", "neg"], + ["keyword", "next"], + ["keyword", "not"], + ["keyword", "null"], + ["keyword", "or"], + ["keyword", "over"], + ["keyword", "parse"], + ["keyword", "peach"], + ["keyword", "pj"], + ["keyword", "plist"], + ["keyword", "prd"], + ["keyword", "prds"], + ["keyword", "prev"], + ["keyword", "prior"], + ["keyword", "rand"], + ["keyword", "rank"], + ["keyword", "ratios"], + ["keyword", "raze"], + ["keyword", "read0"], + ["keyword", "read1"], + ["keyword", "reciprocal"], + ["keyword", "reval"], + ["keyword", "reverse"], + ["keyword", "rload"], + ["keyword", "rotate"], + ["keyword", "rsave"], + ["keyword", "rtrim"], + ["keyword", "save"], + ["keyword", "scan"], + ["keyword", "scov"], + ["keyword", "sdev"], + ["keyword", "select"], + ["keyword", "set"], + ["keyword", "setenv"], + ["keyword", "show"], + ["keyword", "signum"], + ["keyword", "sin"], + ["keyword", "sqrt"], + ["keyword", "ss"], + ["keyword", "ssr"], + ["keyword", "string"], + ["keyword", "sublist"], + ["keyword", "sum"], + ["keyword", "sums"], + ["keyword", "sv"], + ["keyword", "svar"], + ["keyword", "system"], + ["keyword", "tables"], + ["keyword", "tan"], + ["keyword", "til"], + ["keyword", "trim"], + ["keyword", "txf"], + ["keyword", "type"], + ["keyword", "uj"], + ["keyword", "ungroup"], + ["keyword", "union"], + ["keyword", "update"], + ["keyword", "upper"], + ["keyword", "upsert"], + ["keyword", "value"], + ["keyword", "var"], + ["keyword", "view"], + ["keyword", "views"], + ["keyword", "vs"], + ["keyword", "wavg"], + ["keyword", "where"], + ["keyword", "while"], + ["keyword", "within"], + ["keyword", "wj"], + ["keyword", "wj1"], + ["keyword", "wsum"], + ["keyword", "ww"], + ["keyword", "xasc"], + ["keyword", "xbar"], + ["keyword", "xcol"], + ["keyword", "xcols"], + ["keyword", "xdesc"], + ["keyword", "xexp"], + ["keyword", "xgroup"], + ["keyword", "xkey"], + ["keyword", "xlog"], + ["keyword", "xprev"], + ["keyword", "xrank"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/number_feature.test new file mode 100644 index 0000000000..3c12bd53b5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/number_feature.test @@ -0,0 +1,33 @@ +0w 0n +0W 0Wh 0Wj +0N 0Nh 0Nj 0Ne + +0xBadFace +42 +3.14159 +3e8 +0.4e-7 +3.12e+42 +42h 42j 42f +4.00e 1b + +---------------------------------------------------- + +[ + ["number", "0w"], ["number", "0n"], + ["number", "0W"], ["number", "0Wh"], ["number", "0Wj"], + ["number", "0N"], ["number", "0Nh"], ["number", "0Nj"], ["number", "0Ne"], + + ["number", "0xBadFace"], + ["number", "42"], + ["number", "3.14159"], + ["number", "3e8"], + ["number", "0.4e-7"], + ["number", "3.12e+42"], + ["number", "42h"], ["number", "42j"], ["number", "42f"], + ["number", "4.00e"], ["number", "1b"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/string_feature.test new file mode 100644 index 0000000000..13a966cf7e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/string_feature.test @@ -0,0 +1,13 @@ +"" +"Fo\"obar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"Fo\\\"obar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/symbol_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/symbol_feature.test new file mode 100644 index 0000000000..5caba4a34e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/symbol_feature.test @@ -0,0 +1,17 @@ +` +`foobar +`:www.example.com:8888 +`.foo + +---------------------------------------------------- + +[ + ["symbol", "`"], + ["symbol", "`foobar"], + ["symbol", "`:www.example.com:8888"], + ["symbol", "`.foo"] +] + +---------------------------------------------------- + +Checks for symbols. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/q/verb_feature.test b/dashboard-ui/bower_components/prism/tests/languages/q/verb_feature.test new file mode 100644 index 0000000000..9402ed08b8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/q/verb_feature.test @@ -0,0 +1,35 @@ +. .: +0: 1: +< <: <> <>: <= <=: +> >: >= >=: +: :: ++ +: - -: +* *: % %: +, ,: ! !: +? ?: _ _: +~ ~: = =: +| |: $ $: +& &: # #: +@ @: ^ ^: + +---------------------------------------------------- + +[ + ["verb", "."], ["verb", ".:"], + ["verb", "0:"], ["verb", "1:"], + ["verb", "<"], ["verb", "<:"], ["verb", "<>"], ["verb", "<>:"], ["verb", "<="], ["verb", "<=:"], + ["verb", ">"], ["verb", ">:"], ["verb", ">="], ["verb", ">=:"], + ["verb", ":"], ["verb", "::"], + ["verb", "+"], ["verb", "+:"], ["verb", "-"], ["verb", "-:"], + ["verb", "*"], ["verb", "*:"], ["verb", "%"], ["verb", "%:"], + ["verb", ","], ["verb", ",:"], ["verb", "!"], ["verb", "!:"], + ["verb", "?"], ["verb", "?:"], ["verb", "_"], ["verb", "_:"], + ["verb", "~"], ["verb", "~:"], ["verb", "="], ["verb", "=:"], + ["verb", "|"], ["verb", "|:"], ["verb", "$"], ["verb", "$:"], + ["verb", "&"], ["verb", "&:"], ["verb", "#"], ["verb", "#:"], + ["verb", "@"], ["verb", "@:"], ["verb", "^"], ["verb", "^:"] +] + +---------------------------------------------------- + +Checks for verbs. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/boolean_feature.test new file mode 100644 index 0000000000..a40f8d95d2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/boolean_feature.test @@ -0,0 +1,13 @@ +true +false + +---------------------------------------------------- + +[ + ["boolean", "true"], + ["boolean", "false"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/comment_feature.test new file mode 100644 index 0000000000..f8e6a47bbf --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/comment_feature.test @@ -0,0 +1,22 @@ +/* foo */ +/* foo +bar */ +// +// foobar +# +# foobar + +---------------------------------------------------- + +[ + ["comment", "/* foo */"], + ["comment", "/* foo\r\nbar */"], + ["comment", "//"], + ["comment", "// foobar"], + ["comment", "#"], + ["comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/function_feature.test new file mode 100644 index 0000000000..5335ab0a7c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/function_feature.test @@ -0,0 +1,15 @@ +foo() +foo_bar() +Foo_bar_42() + +---------------------------------------------------- + +[ + ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], + ["function", "foo_bar"], ["punctuation", "("], ["punctuation", ")"], + ["function", "Foo_bar_42"], ["punctuation", "("], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/keyword_feature.test new file mode 100644 index 0000000000..f04594e771 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/keyword_feature.test @@ -0,0 +1,63 @@ +abstract any assert binary +bool boolean break byte +case catch char +class; +code const continue data +default do double else +enum +extends; +final finally float for +goto hash if +implements; +import inherits +instanceof; +int +interface; +long my native +new; +nothing null object our +own private reference +rethrow return short +softint softfloat softnumber +softbool softstring softdate +softlist static strictfp +string sub super switch +synchronized this throw +throws transient try +void volatile while + +---------------------------------------------------- + +[ + ["keyword", "abstract"], ["keyword", "any"], ["keyword", "assert"], ["keyword", "binary"], + ["keyword", "bool"], ["keyword", "boolean"], ["keyword", "break"], ["keyword", "byte"], + ["keyword", "case"], ["keyword", "catch"], ["keyword", "char"], + ["keyword", "class"], ["punctuation", ";"], + ["keyword", "code"], ["keyword", "const"], ["keyword", "continue"], ["keyword", "data"], + ["keyword", "default"], ["keyword", "do"], ["keyword", "double"], ["keyword", "else"], + ["keyword", "enum"], + ["keyword", "extends"], ["punctuation", ";"], + ["keyword", "final"], ["keyword", "finally"], ["keyword", "float"], ["keyword", "for"], + ["keyword", "goto"], ["keyword", "hash"], ["keyword", "if"], + ["keyword", "implements"], ["punctuation", ";"], + ["keyword", "import"], ["keyword", "inherits"], + ["keyword", "instanceof"], ["punctuation", ";"], + ["keyword", "int"], + ["keyword", "interface"], ["punctuation", ";"], + ["keyword", "long"], ["keyword", "my"], ["keyword", "native"], + ["keyword", "new"], ["punctuation", ";"], + ["keyword", "nothing"], ["keyword", "null"], ["keyword", "object"], ["keyword", "our"], + ["keyword", "own"], ["keyword", "private"], ["keyword", "reference"], + ["keyword", "rethrow"], ["keyword", "return"], ["keyword", "short"], + ["keyword", "softint"], ["keyword", "softfloat"], ["keyword", "softnumber"], + ["keyword", "softbool"], ["keyword", "softstring"], ["keyword", "softdate"], + ["keyword", "softlist"], ["keyword", "static"], ["keyword", "strictfp"], + ["keyword", "string"], ["keyword", "sub"], ["keyword", "super"], ["keyword", "switch"], + ["keyword", "synchronized"], ["keyword", "this"], ["keyword", "throw"], + ["keyword", "throws"], ["keyword", "transient"], ["keyword", "try"], + ["keyword", "void"], ["keyword", "volatile"], ["keyword", "while"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/number_feature.test new file mode 100644 index 0000000000..7a48d3efda --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/number_feature.test @@ -0,0 +1,21 @@ +0b11110000 +0xBadFace +0xabp-3 +42 +3.14159 +3.2e8f + +---------------------------------------------------- + +[ + ["number", "0b11110000"], + ["number", "0xBadFace"], + ["number", "0xabp-3"], + ["number", "42"], + ["number", "3.14159"], + ["number", "3.2e8f"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/operator_feature.test new file mode 100644 index 0000000000..9e62209f5c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/operator_feature.test @@ -0,0 +1,37 @@ ++ ++ += +- -- -= +! != !== !~ +~ +* *= +/ /= +% %= +^ ^= +? += == === =~ +> >= >> >>= +< <= <=> << <<= +& && &= +| || |= + +---------------------------------------------------- + +[ + ["operator", "+"], ["operator", "++"], ["operator", "+="], + ["operator", "-"], ["operator", "--"], ["operator", "-="], + ["operator", "!"], ["operator", "!="], ["operator", "!=="], ["operator", "!~"], + ["operator", "~"], + ["operator", "*"], ["operator", "*="], + ["operator", "/"], ["operator", "/="], + ["operator", "%"], ["operator", "%="], + ["operator", "^"], ["operator", "^="], + ["operator", "?"], + ["operator", "="], ["operator", "=="], ["operator", "==="], ["operator", "=~"], + ["operator", ">"], ["operator", ">="], ["operator", ">>"], ["operator", ">>="], + ["operator", "<"], ["operator", "<="], ["operator", "<=>"], ["operator", "<<"], ["operator", "<<="], + ["operator", "&"], ["operator", "&&"], ["operator", "&="], + ["operator", "|"], ["operator", "||"], ["operator", "|="] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/string_feature.test new file mode 100644 index 0000000000..ad754f2fc6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/string_feature.test @@ -0,0 +1,19 @@ +"" +"fo\"o +bar" +'' +'fo\'o +bar' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"o\r\nbar\""], + ["string", "''"], + ["string", "'fo\\'o\r\nbar'"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/qore/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/qore/variable_feature.test new file mode 100644 index 0000000000..4411840e33 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/qore/variable_feature.test @@ -0,0 +1,15 @@ +$foobar +$foo_bar_42 +$Foobar + +---------------------------------------------------- + +[ + ["variable", "$foobar"], + ["variable", "$foo_bar_42"], + ["variable", "$Foobar"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/boolean_feature.test new file mode 100644 index 0000000000..ef7bc6fcc8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/boolean_feature.test @@ -0,0 +1,13 @@ +TRUE +FALSE + +---------------------------------------------------- + +[ + ["boolean", "TRUE"], + ["boolean", "FALSE"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/comment_feature.test new file mode 100644 index 0000000000..710014b88d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/comment_feature.test @@ -0,0 +1,13 @@ +# +# foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/ellipsis_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/ellipsis_feature.test new file mode 100644 index 0000000000..40e8d305a5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/ellipsis_feature.test @@ -0,0 +1,15 @@ +... +..1 +..42 + +---------------------------------------------------- + +[ + ["ellipsis", "..."], + ["ellipsis", "..1"], + ["ellipsis", "..42"] +] + +---------------------------------------------------- + +Checks for ellipsis and special identifiers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/keyword_feature.test new file mode 100644 index 0000000000..dd401b2f04 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/keyword_feature.test @@ -0,0 +1,25 @@ +if else repeat +while function +for in next +break NULL NA +NA_integer_ +NA_real_ +NA_complex_ +NA_character_ + +---------------------------------------------------- + +[ + ["keyword", "if"], ["keyword", "else"], ["keyword", "repeat"], + ["keyword", "while"], ["keyword", "function"], + ["keyword", "for"], ["keyword", "in"], ["keyword", "next"], + ["keyword", "break"], ["keyword", "NULL"], ["keyword", "NA"], + ["keyword", "NA_integer_"], + ["keyword", "NA_real_"], + ["keyword", "NA_complex_"], + ["keyword", "NA_character_"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/number_feature.test new file mode 100644 index 0000000000..d2f982392e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/number_feature.test @@ -0,0 +1,39 @@ +NaN Inf +0xBadFace +0xf4.42 +0x21.2p2 +0xffP+4 +0xeap-1 +42 +42L +3.14159 +3.2E4 +4e+8 +0.1e-12 +2i +4.1i +1e-2i + +---------------------------------------------------- + +[ + ["number", "NaN"], ["number", "Inf"], + ["number", "0xBadFace"], + ["number", "0xf4.42"], + ["number", "0x21.2p2"], + ["number", "0xffP+4"], + ["number", "0xeap-1"], + ["number", "42"], + ["number", "42L"], + ["number", "3.14159"], + ["number", "3.2E4"], + ["number", "4e+8"], + ["number", "0.1e-12"], + ["number", "2i"], + ["number", "4.1i"], + ["number", "1e-2i"] +] + +---------------------------------------------------- + +Checks for hexadecimal, decimal and complex numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/operator_feature.test new file mode 100644 index 0000000000..760a8c42a1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/operator_feature.test @@ -0,0 +1,29 @@ ++ * / ^ +~ $ @ +- -> ->> +> >= +< <= <- <<- += == +! != +& && +| || +: :: + +---------------------------------------------------- + +[ + ["operator", "+"], ["operator", "*"], ["operator", "/"], ["operator", "^"], + ["operator", "~"], ["operator", "$"], ["operator", "@"], + ["operator", "-"], ["operator", "->"], ["operator", "->>"], + ["operator", ">"], ["operator", ">="], + ["operator", "<"], ["operator", "<="], ["operator", "<-"], ["operator", "<<-"], + ["operator", "="], ["operator", "=="], + ["operator", "!"], ["operator", "!="], + ["operator", "&"], ["operator", "&&"], + ["operator", "|"], ["operator", "||"], + ["operator", ":"], ["operator", "::"] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/percent-operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/percent-operator_feature.test new file mode 100644 index 0000000000..26ab230466 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/percent-operator_feature.test @@ -0,0 +1,15 @@ +%% %*% %/% +%in% %o% %x% +%foobar% + +---------------------------------------------------- + +[ + ["percent-operator", "%%"], ["percent-operator", "%*%"], ["percent-operator", "%/%"], + ["percent-operator", "%in%"], ["percent-operator", "%o%"], ["percent-operator", "%x%"], + ["percent-operator", "%foobar%"] +] + +---------------------------------------------------- + +Checks for user-defined operators and operators starting with %. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/r/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/r/string_feature.test new file mode 100644 index 0000000000..3d6595fe87 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/r/string_feature.test @@ -0,0 +1,17 @@ +"" +"fo\"obar" +'' +'fo\'obar' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "''"], + ["string", "'fo\\'obar'"] +] + +---------------------------------------------------- + +Checks for single-quoted and double-quoted strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/command-line-option_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/command-line-option_feature.test new file mode 100644 index 0000000000..48902d7e33 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/command-line-option_feature.test @@ -0,0 +1,37 @@ +-a Simple option +-b + Simple option on next line +--very-long-option Long option ++f Option using + +-f FILE Option with value 1 +--file=FILE Option with value 2 +-2, --two Two options in a row. +-f FILE, --file=FILE Two options with values in a row. +/V A VMS/DOS-style option. + +---------------------------------------------------- + +[ + ["command-line-option", "-a"], + " Simple option\r\n", + ["command-line-option", "-b"], + "\r\n Simple option on next line\r\n", + ["command-line-option", "--very-long-option"], + " Long option\r\n", + ["command-line-option", "+f"], + " Option using +\r\n", + ["command-line-option", "-f FILE"], + " Option with value 1\r\n", + ["command-line-option", "--file=FILE"], + " Option with value 2\r\n", + ["command-line-option", "-2, --two"], + " Two options in a row.\r\n", + ["command-line-option", "-f FILE, --file=FILE"], + " Two options with values in a row.\r\n", + ["command-line-option", "/V"], + " A VMS/DOS-style option." +] + +---------------------------------------------------- + +Checks for command line options. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/comment_feature.test new file mode 100644 index 0000000000..423810d3b6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/comment_feature.test @@ -0,0 +1,24 @@ +.. foo + +.. foo +bar + +.. + _foo: + [bar] + |baz| + +---------------------------------------------------- + +[ + ["punctuation", ".."], + ["comment", " foo"], + ["punctuation", ".."], + ["comment", " foo\r\nbar"], + ["punctuation", ".."], + ["comment", "\r\n\t_foo:\r\n\t[bar]\r\n\t|baz|"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/directive_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/directive_feature.test new file mode 100644 index 0000000000..47020e288e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/directive_feature.test @@ -0,0 +1,33 @@ +.. image:: mylogo.jpeg +.. figure:: foo.png + +.. note:: This is a paragraph. + +---------------------------------------------------- + +[ + ["punctuation", ".."], + ["directive", [ + "image", + ["punctuation", "::"] + ]], + " mylogo.jpeg\r\n", + + ["punctuation", ".."], + ["directive", [ + "figure", + ["punctuation", "::"] + ]], + " foo.png\r\n\r\n", + + ["punctuation", ".."], + ["directive", [ + "note", + ["punctuation", "::"] + ]], + " This is a paragraph." +] + +---------------------------------------------------- + +Checks for directives. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/doctest-block_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/doctest-block_feature.test new file mode 100644 index 0000000000..bd3fc53638 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/doctest-block_feature.test @@ -0,0 +1,22 @@ +>>> Foo + +>>> foo +bar +baz + +---------------------------------------------------- + +[ + ["doctest-block", [ + ["punctuation", ">>>"], + " Foo" + ]], + ["doctest-block", [ + ["punctuation", ">>>"], + " foo\r\nbar\r\nbaz" + ]] +] + +---------------------------------------------------- + +Checks for doctest blocks. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/field_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/field_feature.test new file mode 100644 index 0000000000..dd4c8515b3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/field_feature.test @@ -0,0 +1,19 @@ +:scale: 50 % + :alt: map to buried treasure + +:width: 11 +:height: 11 + +---------------------------------------------------- + +[ + ["field", ":scale:"], " 50 %\r\n\t", + ["field", ":alt:"], " map to buried treasure\r\n\r\n", + + ["field", ":width:"], " 11\r\n", + ["field", ":height:"], " 11" +] + +---------------------------------------------------- + +Checks for fields. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/hr_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/hr_feature.test new file mode 100644 index 0000000000..ba47e627bc --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/hr_feature.test @@ -0,0 +1,112 @@ +Foo + +!!!! + +"""" + +#### + +$$$$ + +%%%% + +&&&& + +'''' + +(((( + +)))) + +**** + +++++ + +,,,, + +---- + +.... + +//// + +:::: + +;;;; + +<<<< + +==== + +>>>> + +???? + +@@@@ + +[[[[ + +\\\\ + +]]]] + +^^^^ + +____ + +```` + +{{{{ + +|||| + +}}}} + +~~~~ + +Foo + +---------------------------------------------------- + +[ + "Foo\r\n\r\n", + ["hr", "!!!!"], + ["hr", "\"\"\"\""], + ["hr", "####"], + ["hr", "$$$$"], + ["hr", "%%%%"], + ["hr", "&&&&"], + ["hr", "''''"], + ["hr", "(((("], + ["hr", "))))"], + ["hr", "****"], + ["hr", "++++"], + ["hr", ",,,,"], + ["hr", "----"], + ["hr", "...."], + ["hr", "////"], + ["hr", "::::"], + ["hr", ";;;;"], + ["hr", "<<<<"], + ["hr", "===="], + ["hr", ">>>>"], + ["hr", "????"], + ["hr", "@@@@"], + ["hr", "[[[["], + ["hr", "\\\\\\\\"], + ["hr", "]]]]"], + ["hr", "^^^^"], + ["hr", "____"], + ["hr", "````"], + ["hr", "{{{{"], + ["hr", "||||"], + ["hr", "}}}}"], + ["hr", "~~~~"], + "\r\n\r\nFoo" +] + +---------------------------------------------------- + +Checks for horizontal lines, with every possible characters. +The "Foo"s are required since tests are trimmed and horizontal lines +require line feeds before and after. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/inline_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/inline_feature.test new file mode 100644 index 0000000000..c96093f126 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/inline_feature.test @@ -0,0 +1,55 @@ +Foo *emphasis*. +**Strong** bar. +This is `interpreted text`. +:role:`interpreted text` +`interpreted text`:role: +``inline literals`` +This is a regexp: ``[+-]?(\d+(\.\d*)?|\.\d+)`` +Usage of |substitution|. + +---------------------------------------------------- + +[ + "Foo ", + ["inline", [ + ["punctuation", "*"], ["italic", "emphasis"], ["punctuation", "*"] + ]], + ".\r\n", + ["inline", [ + ["punctuation", "**"], ["bold", "Strong"], ["punctuation", "**"] + ]], + " bar.\r\nThis is ", + ["inline", [ + ["punctuation", "`"], ["interpreted-text", "interpreted text"], ["punctuation", "`"] + ]], + ".\r\n", + ["inline", [ + ["role", [ + ["punctuation", ":"], "role", ["punctuation", ":"] + ]], + ["punctuation", "`"], ["interpreted-text", "interpreted text"], ["punctuation", "`"] + ]], + ["inline", [ + ["punctuation", "`"], ["interpreted-text", "interpreted text"], ["punctuation", "`"], + ["role", [ + ["punctuation", ":"], "role", ["punctuation", ":"] + ]] + ]], + ["inline", [ + ["punctuation", "``"], ["inline-literal", "inline literals"], ["punctuation", "``"] + ]], + "\r\nThis is a regexp: ", + ["inline", [ + ["punctuation", "``"], ["inline-literal", "[+-]?(\\d+(\\.\\d*)?|\\.\\d+)"], ["punctuation", "``"] + ]], + "\r\nUsage of ", + ["inline", [ + ["punctuation", "|"], ["substitution", "substitution"], ["punctuation", "|"] + ]], + "." +] + +---------------------------------------------------- + +Checks for most inline markup: emphasis, bold, interpreted text, +roles, inline literals and substitutions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/link-target_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/link-target_feature.test new file mode 100644 index 0000000000..841d1ea8c2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/link-target_feature.test @@ -0,0 +1,90 @@ +.. [1] Foo +.. [2] Bar +.. [#] Baz +.. [#foobar] Foobar +.. [CIT2002] Foobar + +.. _foobar: Foobar +.. _foo\:bar: Foobar +.. _`foo:bar`: Foobar +.. __: Anonymous + +---------------------------------------------------- + +[ + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "["], + "1", + ["punctuation", "]"] + ]], + " Foo\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "["], + "2", + ["punctuation", "]"] + ]], + " Bar\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "["], + "#", + ["punctuation", "]"] + ]], + " Baz\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "["], + "#foobar", + ["punctuation", "]"] + ]], + " Foobar\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "["], + "CIT2002", + ["punctuation", "]"] + ]], + " Foobar\r\n\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "_"], + "foobar", + ["punctuation", ":"] + ]], + " Foobar\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "_"], + "foo\\:bar", + ["punctuation", ":"] + ]], + " Foobar\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "_"], + "`foo:bar`", + ["punctuation", ":"] + ]], + " Foobar\r\n", + + ["punctuation", ".."], + ["link-target", [ + ["punctuation", "_"], + ["punctuation", "_"], + ["punctuation", ":"] + ]], + " Anonymous" +] + +---------------------------------------------------- + +Checks for link targets. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/link_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/link_feature.test new file mode 100644 index 0000000000..f7d3f07b75 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/link_feature.test @@ -0,0 +1,33 @@ +[1]_ +[2]_ +[#]_ +[#foobar]_ +[CIT2002]_ + +foobar_ +foo__ +foo:bar_ +`foo:bar`_ +`foo bar baz`__ +_`inline internal target` + +---------------------------------------------------- + +[ + ["link", [["punctuation", "["], "1", ["punctuation", "]_"]]], + ["link", [["punctuation", "["], "2", ["punctuation", "]_"]]], + ["link", [["punctuation", "["], "#", ["punctuation", "]_"]]], + ["link", [["punctuation", "["], "#foobar", ["punctuation", "]_"]]], + ["link", [["punctuation", "["], "CIT2002", ["punctuation", "]_"]]], + + ["link", ["foobar", ["punctuation", "_"]]], + ["link", ["foo", ["punctuation", "__"]]], + ["link", ["foo:bar", ["punctuation", "_"]]], + ["link", [["punctuation", "`"], "foo:bar", ["punctuation", "`_"]]], + ["link", [["punctuation", "`"], "foo bar baz", ["punctuation", "`__"]]], + ["link", [["punctuation", "_`"], "inline internal target", ["punctuation", "`"]]] +] + +---------------------------------------------------- + +Checks for links. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/list-bullet_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/list-bullet_feature.test new file mode 100644 index 0000000000..321b87402f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/list-bullet_feature.test @@ -0,0 +1,45 @@ +* foo ++ bar +- baz +• foo +‣ bar +⁃ baz + +(42) foo +(a) bar +(xvii) baz + +4) foo +h) bar +MLCDXVI) 1666 + +1. foo +z. bar +mlcdxvi. baz + +---------------------------------------------------- + +[ + ["list-bullet", "*"], " foo\r\n", + ["list-bullet", "+"], " bar\r\n", + ["list-bullet", "-"], " baz\r\n", + ["list-bullet", "•"], " foo\r\n", + ["list-bullet", "‣"], " bar\r\n", + ["list-bullet", "⁃"], " baz\r\n\r\n", + + ["list-bullet", "(42)"], " foo\r\n", + ["list-bullet", "(a)"], " bar\r\n", + ["list-bullet", "(xvii)"], " baz\r\n\r\n", + + ["list-bullet", "4)"], " foo\r\n", + ["list-bullet", "h)"], " bar\r\n", + ["list-bullet", "MLCDXVI)"], " 1666\r\n\r\n", + + ["list-bullet", "1."], " foo\r\n", + ["list-bullet", "z."], " bar\r\n", + ["list-bullet", "mlcdxvi."], " baz" +] + +---------------------------------------------------- + +Checks for list bullets. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/literal-block_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/literal-block_feature.test new file mode 100644 index 0000000000..d52dcf926a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/literal-block_feature.test @@ -0,0 +1,27 @@ +:: + Foo + Bar + Baz + +Foobar:: + Foo + Bar + Baz + +---------------------------------------------------- + +[ + ["literal-block", [ + ["literal-block-punctuation", "::"], + "\r\n\tFoo\r\n\tBar\r\n\tBaz" + ]], + "\r\n\r\nFoobar", + ["literal-block", [ + ["literal-block-punctuation", "::"], + "\r\n Foo\r\n Bar\r\n Baz" + ]] +] + +---------------------------------------------------- + +Checks for literal blocks. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/quoted-literal-block_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/quoted-literal-block_feature.test new file mode 100644 index 0000000000..cc6de0fda8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/quoted-literal-block_feature.test @@ -0,0 +1,333 @@ +:: +! Foo +!! Bar +! Baz + +Foobar :: +" Foo +" Bar +"" Baz + +:: +# Foo +# Bar + +:: +$ Foo +$ Bar + +:: +% Foo +% Bar + +:: +& Foo +& Bar + +:: +' Foo +' Bar + +:: +( Foo +( Bar + +:: +) Foo +) Bar + +:: +* Foo +* Bar + +:: ++ Foo ++ Bar + +:: +, Foo +, Bar + +:: +- Foo +- Bar + +:: +. Foo +. Bar + +:: +/ Foo +/ Bar + +:: +: Foo +: Bar + +:: +; Foo +; Bar + +:: +< Foo +< Bar + +:: += Foo += Bar + +:: +> Foo +> Bar + +:: +? Foo +? Bar + +:: +@ Foo +@ Bar + +:: +[ Foo +[ Bar + +:: +\ Foo +\ Bar + +:: +] Foo +] Bar + +:: +^ Foo +^ Bar + +:: +_ Foo +_ Bar + +:: +` Foo +` Bar + +:: +{ Foo +{ Bar + +:: +| Foo +| Bar + +:: +} Foo +} Bar + +:: +~ Foo +~ Bar + + +---------------------------------------------------- + +[ + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "!"], " Foo\r\n", + ["literal-block-punctuation", "!!"], " Bar\r\n", + ["literal-block-punctuation", "!"], " Baz" + ]], + + "\r\n\r\nFoobar ", + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "\""], " Foo\r\n", + ["literal-block-punctuation", "\""], " Bar\r\n", + ["literal-block-punctuation", "\"\""], " Baz" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "#"], " Foo\r\n", + ["literal-block-punctuation", "#"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "$"], " Foo\r\n", + ["literal-block-punctuation", "$"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "%"], " Foo\r\n", + ["literal-block-punctuation", "%"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "&"], " Foo\r\n", + ["literal-block-punctuation", "&"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "'"], " Foo\r\n", + ["literal-block-punctuation", "'"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "("], " Foo\r\n", + ["literal-block-punctuation", "("], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", ")"], " Foo\r\n", + ["literal-block-punctuation", ")"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "*"], " Foo\r\n", + ["literal-block-punctuation", "*"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "+"], " Foo\r\n", + ["literal-block-punctuation", "+"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", ","], " Foo\r\n", + ["literal-block-punctuation", ","], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "-"], " Foo\r\n", + ["literal-block-punctuation", "-"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "."], " Foo\r\n", + ["literal-block-punctuation", "."], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "/"], " Foo\r\n", + ["literal-block-punctuation", "/"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", ":"], " Foo\r\n", + ["literal-block-punctuation", ":"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", ";"], " Foo\r\n", + ["literal-block-punctuation", ";"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "<"], " Foo\r\n", + ["literal-block-punctuation", "<"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "="], " Foo\r\n", + ["literal-block-punctuation", "="], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", ">"], " Foo\r\n", + ["literal-block-punctuation", ">"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "?"], " Foo\r\n", + ["literal-block-punctuation", "?"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "@"], " Foo\r\n", + ["literal-block-punctuation", "@"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "["], " Foo\r\n", + ["literal-block-punctuation", "["], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "\\"], " Foo\r\n", + ["literal-block-punctuation", "\\"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "]"], " Foo\r\n", + ["literal-block-punctuation", "]"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "^"], " Foo\r\n", + ["literal-block-punctuation", "^"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "_"], " Foo\r\n", + ["literal-block-punctuation", "_"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "`"], " Foo\r\n", + ["literal-block-punctuation", "`"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "{"], " Foo\r\n", + ["literal-block-punctuation", "{"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "|"], " Foo\r\n", + ["literal-block-punctuation", "|"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "}"], " Foo\r\n", + ["literal-block-punctuation", "}"], " Bar" + ]], + + ["quoted-literal-block", [ + ["literal-block-punctuation", "::"], + ["literal-block-punctuation", "~"], " Foo\r\n", + ["literal-block-punctuation", "~"], " Bar" + ]] +] + +---------------------------------------------------- + +Checks for quoted literal blocks, with every possible character. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/substitution-def_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/substitution-def_feature.test new file mode 100644 index 0000000000..38a93b77bb --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/substitution-def_feature.test @@ -0,0 +1,69 @@ +.. |biohazard| image:: biohazard.png +.. |Red light| image:: red_light.png + +.. |Michael| user:: mjones +.. |Jon| user:: jhl + +---------------------------------------------------- + +[ + ["punctuation", ".."], + ["substitution-def", [ + ["substitution", [ + ["punctuation", "|"], + "biohazard", + ["punctuation", "|"] + ]], + ["directive", [ + "image", + ["punctuation", "::"] + ]] + ]], + " biohazard.png\r\n", + + ["punctuation", ".."], + ["substitution-def", [ + ["substitution", [ + ["punctuation", "|"], + "Red light", + ["punctuation", "|"] + ]], + ["directive", [ + "image", + ["punctuation", "::"] + ]] + ]], + " red_light.png\r\n\r\n", + + ["punctuation", ".."], + ["substitution-def", [ + ["substitution", [ + ["punctuation", "|"], + "Michael", + ["punctuation", "|"] + ]], + ["directive", [ + "user", + ["punctuation", "::"] + ]] + ]], + " mjones\r\n", + + ["punctuation", ".."], + ["substitution-def", [ + ["substitution", [ + ["punctuation", "|"], + "Jon", + ["punctuation", "|"] + ]], + ["directive", [ + "user", + ["punctuation", "::"] + ]] + ]], + " jhl" +] + +---------------------------------------------------- + +Checks for substitution definitions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/table_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/table_feature.test new file mode 100644 index 0000000000..d6675c3942 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/table_feature.test @@ -0,0 +1,64 @@ ++-----+---------+ +| foo | bar | ++=====+=========+ +| foo | bar | ++-----+---------+ + + +---+ + | 1 | + +---+ + +=== === + a b +=== === + 1 2 +=== === + + ==== ==== ===== + foo bar + --------- ----- + ab cd e + ==== ==== ===== + 1 2 3 + 4 5 6 + ==== ==== ===== + +---------------------------------------------------- + +[ + ["table", [ + ["punctuation", "+-----+---------+"], + ["punctuation", "|"], " foo ", ["punctuation", "|"], " bar ", ["punctuation", "|"], + ["punctuation", "+=====+=========+"], + ["punctuation", "|"], " foo ", ["punctuation", "|"], " bar ", ["punctuation", "|"], + ["punctuation", "+-----+---------+"] + ]], + + ["table", [ + ["punctuation", "+---+"], + ["punctuation", "|"], " 1 ", ["punctuation", "|"], + ["punctuation", "+---+"] + ]], + + ["table", [ + ["punctuation", "==="], ["punctuation", "==="], + "\r\n a b\r\n", + ["punctuation", "==="], ["punctuation", "==="], + "\r\n 1 2\r\n", + ["punctuation", "==="], ["punctuation", "==="] + ]], + + ["table", [ + ["punctuation", "===="], ["punctuation", "===="], ["punctuation", "====="], + "\r\n\t foo bar\r\n\t", + ["punctuation", "---------"], ["punctuation", "-----"], + "\r\n\t ab cd e\r\n\t", + ["punctuation", "===="], ["punctuation", "===="], ["punctuation", "====="], + "\r\n\t 1 2 3\r\n\t 4 5 6\r\n\t", + ["punctuation", "===="], ["punctuation", "===="], ["punctuation", "====="] + ]] +] + +---------------------------------------------------- + +Checks for grid tables and simple tables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rest/title_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rest/title_feature.test new file mode 100644 index 0000000000..b3aef56ed1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rest/title_feature.test @@ -0,0 +1,585 @@ +!!!! +Foo +!!!! + +"""" +Foo +"""" + +#### +Foo +#### + +$$$$ +Foo +$$$$ + +%%%% +Foo +%%%% + +&&&& +Foo +&&&& + +'''' +Foo +'''' + +(((( +Foo +(((( + +)))) +Foo +)))) + +**** +Foo +**** + +++++ +Foo +++++ + +,,,, +Foo +,,,, + +--- +Foo +--- + +.... +Foo +.... + +//// +Foo +//// + +:::: +Foo +:::: + +;;;; +Foo +;;;; + +<<<< +Foo +<<<< + +==== +Foo +==== + +>>>> +Foo +>>>> + +???? +Foo +???? + +@@@@ +Foo +@@@@ + +[[[[ +Foo +[[[[ + +\\\\ +Foo +\\\\ + +]]]] +Foo +]]]] + +^^^^ +Foo +^^^^ + +____ +Foo +____ + +```` +Foo +```` + +{{{{ +Foo +{{{{ + +|||| +Foo +|||| + +}}}} +Foo +}}}} + +~~~~ +Foo +~~~~ + + +Bar +!!!! + +Bar +"""" + +Bar +#### + +Bar +$$$$ + +Bar +%%%% + +Bar +&&&& + +Bar +'''' + +Bar +(((( + +Bar +)))) + +Bar +**** + +Bar +++++ + +Bar +,,,, + +Bar +--- + +Bar +.... + +Bar +//// + +Bar +:::: + +Bar +;;;; + +Bar +<<<< + +Bar +==== + +Bar +>>>> + +Bar +???? + +Bar +@@@@ + +Bar +[[[[ + +Bar +\\\\ + +Bar +]]]] + +Bar +^^^^ + +Bar +____ + +Bar +```` + +Bar +{{{{ + +Bar +|||| + +Bar +}}}} + +Bar +~~~~ + +---------------------------------------------------- + +[ + ["title", [ + ["punctuation", "!!!!"], + ["important", "Foo"], + ["punctuation", "!!!!"] + ]], + + ["title", [ + ["punctuation", "\"\"\"\""], + ["important", "Foo"], + ["punctuation", "\"\"\"\""] + ]], + + ["title", [ + ["punctuation", "####"], + ["important", "Foo"], + ["punctuation", "####"] + ]], + + ["title", [ + ["punctuation", "$$$$"], + ["important", "Foo"], + ["punctuation", "$$$$"] + ]], + + ["title", [ + ["punctuation", "%%%%"], + ["important", "Foo"], + ["punctuation", "%%%%"] + ]], + + ["title", [ + ["punctuation", "&&&&"], + ["important", "Foo"], + ["punctuation", "&&&&"] + ]], + + ["title", [ + ["punctuation", "''''"], + ["important", "Foo"], + ["punctuation", "''''"] + ]], + + ["title", [ + ["punctuation", "(((("], + ["important", "Foo"], + ["punctuation", "(((("] + ]], + + ["title", [ + ["punctuation", "))))"], + ["important", "Foo"], + ["punctuation", "))))"] + ]], + + ["title", [ + ["punctuation", "****"], + ["important", "Foo"], + ["punctuation", "****"] + ]], + + ["title", [ + ["punctuation", "++++"], + ["important", "Foo"], + ["punctuation", "++++"] + ]], + + ["title", [ + ["punctuation", ",,,,"], + ["important", "Foo"], + ["punctuation", ",,,,"] + ]], + + ["title", [ + ["punctuation", "---"], + ["important", "Foo"], + ["punctuation", "---"] + ]], + + ["title", [ + ["punctuation", "...."], + ["important", "Foo"], + ["punctuation", "...."] + ]], + + ["title", [ + ["punctuation", "////"], + ["important", "Foo"], + ["punctuation", "////"] + ]], + + ["title", [ + ["punctuation", "::::"], + ["important", "Foo"], + ["punctuation", "::::"] + ]], + + ["title", [ + ["punctuation", ";;;;"], + ["important", "Foo"], + ["punctuation", ";;;;"] + ]], + + ["title", [ + ["punctuation", "<<<<"], + ["important", "Foo"], + ["punctuation", "<<<<"] + ]], + + ["title", [ + ["punctuation", "===="], + ["important", "Foo"], + ["punctuation", "===="] + ]], + + ["title", [ + ["punctuation", ">>>>"], + ["important", "Foo"], + ["punctuation", ">>>>"] + ]], + + ["title", [ + ["punctuation", "????"], + ["important", "Foo"], + ["punctuation", "????"] + ]], + + ["title", [ + ["punctuation", "@@@@"], + ["important", "Foo"], + ["punctuation", "@@@@"] + ]], + + ["title", [ + ["punctuation", "[[[["], + ["important", "Foo"], + ["punctuation", "[[[["] + ]], + + ["title", [ + ["punctuation", "\\\\\\\\"], + ["important", "Foo"], + ["punctuation", "\\\\\\\\"] + ]], + + ["title", [ + ["punctuation", "]]]]"], + ["important", "Foo"], + ["punctuation", "]]]]"] + ]], + + ["title", [ + ["punctuation", "^^^^"], + ["important", "Foo"], + ["punctuation", "^^^^"] + ]], + + ["title", [ + ["punctuation", "____"], + ["important", "Foo"], + ["punctuation", "____"] + ]], + + ["title", [ + ["punctuation", "````"], + ["important", "Foo"], + ["punctuation", "````"] + ]], + + ["title", [ + ["punctuation", "{{{{"], + ["important", "Foo"], + ["punctuation", "{{{{"] + ]], + + ["title", [ + ["punctuation", "||||"], + ["important", "Foo"], + ["punctuation", "||||"] + ]], + + ["title", [ + ["punctuation", "}}}}"], + ["important", "Foo"], + ["punctuation", "}}}}"] + ]], + + ["title", [ + ["punctuation", "~~~~"], + ["important", "Foo"], + ["punctuation", "~~~~"] + ]], + + + ["title", [ + ["important", "Bar"], + ["punctuation", "!!!!"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "\"\"\"\""] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "####"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "$$$$"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "%%%%"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "&&&&"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "''''"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "(((("] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "))))"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "****"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "++++"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", ",,,,"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "---"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "...."] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "////"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "::::"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", ";;;;"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "<<<<"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "===="] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", ">>>>"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "????"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "@@@@"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "[[[["] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "\\\\\\\\"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "]]]]"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "^^^^"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "____"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "````"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "{{{{"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "||||"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "}}}}"] + ]], + + ["title", [ + ["important", "Bar"], + ["punctuation", "~~~~"] + ]] +] + +---------------------------------------------------- + +Checks for titles, overlined and underlined or underlined only, with every possible adornments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/boolean_feature.test new file mode 100644 index 0000000000..a40f8d95d2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/boolean_feature.test @@ -0,0 +1,13 @@ +true +false + +---------------------------------------------------- + +[ + ["boolean", "true"], + ["boolean", "false"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/builtin_feature.test new file mode 100644 index 0000000000..ba4ac74126 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/builtin_feature.test @@ -0,0 +1,13 @@ +@ +System + +---------------------------------------------------- + +[ + ["builtin", "@"], + ["builtin", "System"] +] + +---------------------------------------------------- + +Checks for builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/character_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/character_feature.test new file mode 100644 index 0000000000..e98e2ab753 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/character_feature.test @@ -0,0 +1,14 @@ +`a +`b +`Z +---------------------------------------------------- + +[ + ["character", "`a"], + ["character", "`b"], + ["character", "`Z"] +] + +---------------------------------------------------- + +Checks for characters. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/comment_feature.test new file mode 100644 index 0000000000..710014b88d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/comment_feature.test @@ -0,0 +1,13 @@ +# +# foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/date_time_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/date_time_feature.test new file mode 100644 index 0000000000..43acc2d03b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/date_time_feature.test @@ -0,0 +1,23 @@ +2015-08-30 +1970-01-01 + +17:43:21 +00:00:00 + +2015-08-30T17:43:21 +1970-01-01T00:00:00 + +---------------------------------------------------- + +[ + ["date", "2015-08-30"], + ["date", "1970-01-01"], + ["time", "17:43:21"], + ["time", "00:00:00"], + ["datetime", "2015-08-30T17:43:21"], + ["datetime", "1970-01-01T00:00:00"] +] + +---------------------------------------------------- + +Checks for dates, times and datetimes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/keyword_feature.test new file mode 100644 index 0000000000..a95a44a5a6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/keyword_feature.test @@ -0,0 +1,21 @@ +=> -> +class if else +switch case +return exit +try catch +finally raise + +---------------------------------------------------- + +[ + ["keyword", "=>"], ["keyword", "->"], + ["keyword", "class"], ["keyword", "if"], ["keyword", "else"], + ["keyword", "switch"], ["keyword", "case"], + ["keyword", "return"], ["keyword", "exit"], + ["keyword", "try"], ["keyword", "catch"], + ["keyword", "finally"], ["keyword", "raise"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/number_feature.test new file mode 100644 index 0000000000..a5a0014355 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/number_feature.test @@ -0,0 +1,21 @@ +42 +3.14159 ++18 ++0.14 +-242 +-85.21 + +---------------------------------------------------- + +[ + ["number", "42"], + ["number", "3.14159"], + ["number", "+18"], + ["number", "+0.14"], + ["number", "-242"], + ["number", "-85.21"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/reference_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/reference_feature.test new file mode 100644 index 0000000000..bfa7458417 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/reference_feature.test @@ -0,0 +1,13 @@ +foo +foo_bar + +---------------------------------------------------- + +[ + ["reference", "foo"], + ["reference", "foo_bar"] +] + +---------------------------------------------------- + +Checks for reference. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/regex_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/regex_feature.test new file mode 100644 index 0000000000..72132f58c3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/regex_feature.test @@ -0,0 +1,17 @@ +/foobar/ +/fo[o](?=bar)/ +/\/\\\[\]/ +/(fo|o?)+b*ar?/ + +---------------------------------------------------- + +[ + ["regex", "/foobar/"], + ["regex", "/fo[o](?=bar)/"], + ["regex", "/\\/\\\\\\[\\]/"], + ["regex", "/(fo|o?)+b*ar?/"] +] + +---------------------------------------------------- + +Checks for regexes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/string_feature.test new file mode 100644 index 0000000000..3d6595fe87 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/string_feature.test @@ -0,0 +1,17 @@ +"" +"fo\"obar" +'' +'fo\'obar' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "''"], + ["string", "'fo\\'obar'"] +] + +---------------------------------------------------- + +Checks for single-quoted and double-quoted strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rip/symbol_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rip/symbol_feature.test new file mode 100644 index 0000000000..237b6f583f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rip/symbol_feature.test @@ -0,0 +1,15 @@ +:foo +:foobar42 +:foo_bar + +---------------------------------------------------- + +[ + ["symbol", ":foo"], + ["symbol", ":foobar42"], + ["symbol", ":foo_bar"] +] + +---------------------------------------------------- + +Checks for symbols. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/roboconf/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/roboconf/comment_feature.test new file mode 100644 index 0000000000..37dc9f91ca --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/roboconf/comment_feature.test @@ -0,0 +1,13 @@ +# +# Foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# Foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/roboconf/component_feature.test b/dashboard-ui/bower_components/prism/tests/languages/roboconf/component_feature.test new file mode 100644 index 0000000000..aeceff4a21 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/roboconf/component_feature.test @@ -0,0 +1,13 @@ +ApacheServer {} +lb--apache-mod-jk--puppet {} + +---------------------------------------------------- + +[ + ["component", "ApacheServer"], ["punctuation", "{"], ["punctuation", "}"], + ["component", "lb--apache-mod-jk--puppet"], ["punctuation", "{"], ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for component names. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/roboconf/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/roboconf/keyword_feature.test new file mode 100644 index 0000000000..dbeda7504d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/roboconf/keyword_feature.test @@ -0,0 +1,19 @@ +facet Foo {} +instance of Bar {} +external +import + +---------------------------------------------------- + +[ + ["keyword", "facet"], + ["component", "Foo"], ["punctuation", "{"], ["punctuation", "}"], + ["keyword", "instance of"], + ["component", "Bar"], ["punctuation", "{"], ["punctuation", "}"], + ["keyword", "external"], + ["keyword", "import"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/roboconf/optional_feature.test b/dashboard-ui/bower_components/prism/tests/languages/roboconf/optional_feature.test new file mode 100644 index 0000000000..23d6f0bd9c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/roboconf/optional_feature.test @@ -0,0 +1,11 @@ +(optional) + +---------------------------------------------------- + +[ + ["optional", "(optional)"] +] + +---------------------------------------------------- + +Checks for optional flag. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/roboconf/property_feature.test b/dashboard-ui/bower_components/prism/tests/languages/roboconf/property_feature.test new file mode 100644 index 0000000000..2296bcf154 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/roboconf/property_feature.test @@ -0,0 +1,17 @@ +extends : +imports: +installer: +data.ec2.elastic.ip: + +---------------------------------------------------- + +[ + ["property", "extends"], ["punctuation", ":"], + ["property", "imports"], ["punctuation", ":"], + ["property", "installer"], ["punctuation", ":"], + ["property", "data.ec2.elastic.ip"], ["punctuation", ":"] +] + +---------------------------------------------------- + +Checks for properties. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/roboconf/value_feature.test b/dashboard-ui/bower_components/prism/tests/languages/roboconf/value_feature.test new file mode 100644 index 0000000000..4a20bb52c5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/roboconf/value_feature.test @@ -0,0 +1,20 @@ +port = 8080; +MySQL.port = 3307, My-Client-Database.port = 3308; +my-own-variable = something; + +---------------------------------------------------- + +[ + "port ", ["punctuation", "="], + ["value", "8080"], ["punctuation", ";"], + "\r\nMySQL", ["punctuation", "."], "port ", ["punctuation", "="], + ["value", "3307"], ["punctuation", ","], + " My-Client-Database", ["punctuation", "."], "port ", ["punctuation", "="], + ["value", "3308"], ["punctuation", ";"], + "\r\nmy-own-variable ", ["punctuation", "="], + ["value", "something"], ["punctuation", ";"] +] + +---------------------------------------------------- + +Checks for default values. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/roboconf/wildcard_feature.test b/dashboard-ui/bower_components/prism/tests/languages/roboconf/wildcard_feature.test new file mode 100644 index 0000000000..ecd8affe6a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/roboconf/wildcard_feature.test @@ -0,0 +1,12 @@ +load-balance-able.* + +---------------------------------------------------- + +[ + "load-balance-able", ["punctuation", "."], + ["wildcard", "*"] +] + +---------------------------------------------------- + +Checks for wildcards. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/builtin_feature.test new file mode 100644 index 0000000000..1928127c6a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/builtin_feature.test @@ -0,0 +1,29 @@ +Array Bignum Binding +Class; +Continuation Dir Exception +FalseClass File Stat File +Fixnum Fload Hash Integer +IO MatchData Method Module +NilClass Numeric Object +Proc Range Regexp String +Struct TMS Symbol ThreadGroup +Thread Time TrueClass + +---------------------------------------------------- + +[ + ["builtin", "Array"], ["builtin", "Bignum"], ["builtin", "Binding"], + ["builtin", "Class"], ["punctuation", ";"], + ["builtin", "Continuation"], ["builtin", "Dir"], ["builtin", "Exception"], + ["builtin", "FalseClass"], ["builtin", "File"], ["builtin", "Stat"], ["builtin", "File"], + ["builtin", "Fixnum"], ["builtin", "Fload"], ["builtin", "Hash"], ["builtin", "Integer"], + ["builtin", "IO"], ["builtin", "MatchData"], ["builtin", "Method"], ["builtin", "Module"], + ["builtin", "NilClass"], ["builtin", "Numeric"], ["builtin", "Object"], + ["builtin", "Proc"], ["builtin", "Range"], ["builtin", "Regexp"], ["builtin", "String"], + ["builtin", "Struct"], ["builtin", "TMS"], ["builtin", "Symbol"], ["builtin", "ThreadGroup"], + ["builtin", "Thread"], ["builtin", "Time"], ["builtin", "TrueClass"] +] + +---------------------------------------------------- + +Checks for all builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/comment_feature.test new file mode 100644 index 0000000000..710014b88d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/comment_feature.test @@ -0,0 +1,13 @@ +# +# foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/constant_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/constant_feature.test new file mode 100644 index 0000000000..a363079d5a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/constant_feature.test @@ -0,0 +1,21 @@ +Foobar +FOO_BAR_42 +F +FOO +BAR? +BAZ! + +---------------------------------------------------- + +[ + ["constant", "Foobar"], + ["constant", "FOO_BAR_42"], + ["constant", "F"], + ["constant", "FOO"], + ["constant", "BAR?"], + ["constant", "BAZ!"] +] + +---------------------------------------------------- + +Checks for constants. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/keyword_feature.test new file mode 100644 index 0000000000..e957222f2b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/keyword_feature.test @@ -0,0 +1,39 @@ +alias and BEGIN begin +break case +class; +def +define_method defined +do each else elsif +END end ensure false +for if in module +new; +next nil not +or raise redo require +rescue retry return +self super then throw +true undef unless until +when while yield + +---------------------------------------------------- + +[ + ["keyword", "alias"], ["keyword", "and"], ["keyword", "BEGIN"], ["keyword", "begin"], + ["keyword", "break"], ["keyword", "case"], + ["keyword", "class"], ["punctuation", ";"], + ["keyword", "def"], + ["keyword", "define_method"], ["keyword", "defined"], + ["keyword", "do"], ["keyword", "each"], ["keyword", "else"], ["keyword", "elsif"], + ["keyword", "END"], ["keyword", "end"], ["keyword", "ensure"], ["keyword", "false"], + ["keyword", "for"], ["keyword", "if"], ["keyword", "in"], ["keyword", "module"], + ["keyword", "new"], ["punctuation", ";"], + ["keyword", "next"], ["keyword", "nil"], ["keyword", "not"], + ["keyword", "or"], ["keyword", "raise"], ["keyword", "redo"], ["keyword", "require"], + ["keyword", "rescue"], ["keyword", "retry"], ["keyword", "return"], + ["keyword", "self"], ["keyword", "super"], ["keyword", "then"], ["keyword", "throw"], + ["keyword", "true"], ["keyword", "undef"], ["keyword", "unless"], ["keyword", "until"], + ["keyword", "when"], ["keyword", "while"], ["keyword", "yield"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/regex_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/regex_feature.test new file mode 100644 index 0000000000..77014704a4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/regex_feature.test @@ -0,0 +1,45 @@ +/[foo]\/bar/gim +/[bar]/, +/./i; +%r!foo?bar#{39+3}! +%r(foo?bar#{39+3}) +%r{foo?bar#{39+3}} +%r[foo?bar#{39+3}] +%r + +---------------------------------------------------- + +[ + ["regex", "/[foo]\\/bar/gim"], + ["regex", "/[bar]/"], ["punctuation", ","], + ["regex", "/./i"], ["punctuation", ";"], + ["regex", ["%r!foo?bar", ["interpolation", [ + ["delimiter", "#{"], + ["number", "39"], ["operator", "+"], ["number", "3"], + ["delimiter", "}"] + ]], "!"]], + ["regex", ["%r(foo?bar", ["interpolation", [ + ["delimiter", "#{"], + ["number", "39"], ["operator", "+"], ["number", "3"], + ["delimiter", "}"] + ]], ")"]], + ["regex", ["%r{foo?bar", ["interpolation", [ + ["delimiter", "#{"], + ["number", "39"], ["operator", "+"], ["number", "3"], + ["delimiter", "}"] + ]], "}"]], + ["regex", ["%r[foo?bar", ["interpolation", [ + ["delimiter", "#{"], + ["number", "39"], ["operator", "+"], ["number", "3"], + ["delimiter", "}"] + ]], "]"]], + ["regex", ["%r"]] +] + +---------------------------------------------------- + +Checks for regex. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/string_feature.test new file mode 100644 index 0000000000..cc28611fbd --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/string_feature.test @@ -0,0 +1,285 @@ +'' +"" +'foo' +"foo" +'foo\ +bar' +"foo\ +bar" + +"foo #{ 42 } bar" + +%!foo #{ 42 }! +%(foo #{ 42 }) +%{foo #{ 42 }} +%[foo #{ 42 }] +% +%Q!foo #{ 42 }! +%Q(foo #{ 42 }) +%Q{foo #{ 42 }} +%Q[foo #{ 42 }] +%Q +%I!foo #{ 42 }! +%I(foo #{ 42 }) +%I{foo #{ 42 }} +%I[foo #{ 42 }] +%I +%W!foo #{ 42 }! +%W(foo #{ 42 }) +%W{foo #{ 42 }} +%W[foo #{ 42 }] +%W +%x!foo #{ 42 }! +%x(foo #{ 42 }) +%x{foo #{ 42 }} +%x[foo #{ 42 }] +%x + +---------------------------------------------------- + +[ + ["string", ["''"]], + ["string", ["\"\""]], + ["string", ["'foo'"]], + ["string", ["\"foo\""]], + ["string", ["'foo\\\r\nbar'"]], + ["string", ["\"foo\\\r\nbar\""]], + ["string", [ + "\"foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + " bar\"" + ]], + ["string", [ + "%!foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "!" + ]], + ["string", [ + "%(foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + ")" + ]], + ["string", [ + "%{foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "}" + ]], + ["string", [ + "%[foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "]" + ]], + ["string", [ + "%" + ]], + ["string", [ + "%Q!foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "!" + ]], + ["string", [ + "%Q(foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + ")" + ]], + ["string", [ + "%Q{foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "}" + ]], + ["string", [ + "%Q[foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "]" + ]], + ["string", [ + "%Q" + ]], + ["string", [ + "%I!foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "!" + ]], + ["string", [ + "%I(foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + ")" + ]], + ["string", [ + "%I{foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "}" + ]], + ["string", [ + "%I[foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "]" + ]], + ["string", [ + "%I" + ]], + ["string", [ + "%W!foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "!" + ]], + ["string", [ + "%W(foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + ")" + ]], + ["string", [ + "%W{foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "}" + ]], + ["string", [ + "%W[foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "]" + ]], + ["string", [ + "%W" + ]], + ["string", [ + "%x!foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "!" + ]], + ["string", [ + "%x(foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + ")" + ]], + ["string", [ + "%x{foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "}" + ]], + ["string", [ + "%x[foo ", + ["interpolation", [ + ["delimiter", "#{"], + ["number", "42"], + ["delimiter", "}"] + ]], + "]" + ]], + ["string", [ + "%x" + ]] +] + +---------------------------------------------------- + +Checks for strings and string interpolation. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/symbol_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/symbol_feature.test new file mode 100644 index 0000000000..3bd775627f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/symbol_feature.test @@ -0,0 +1,17 @@ +:_ +:foo +:BAR? +:Baz_42! + +---------------------------------------------------- + +[ + ["symbol", ":_"], + ["symbol", ":foo"], + ["symbol", ":BAR?"], + ["symbol", ":Baz_42!"] +] + +---------------------------------------------------- + +Checks for symbols. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/ruby/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/ruby/variable_feature.test new file mode 100644 index 0000000000..6065ccefec --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/ruby/variable_feature.test @@ -0,0 +1,27 @@ +$_ +$foo +$BAR? +$Baz_42! + +@_ +@foo +@BAR? +@Baz_42! + +---------------------------------------------------- + +[ + ["variable", "$_"], + ["variable", "$foo"], + ["variable", "$BAR?"], + ["variable", "$Baz_42!"], + + ["variable", "@_"], + ["variable", "@foo"], + ["variable", "@BAR?"], + ["variable", "@Baz_42!"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/attribute_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/attribute_feature.test new file mode 100644 index 0000000000..2cdbe432e3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/attribute_feature.test @@ -0,0 +1,13 @@ +#[test] +#![warn(unstable)] + +---------------------------------------------------- + +[ + ["attribute", "#[test]"], + ["attribute", "#![warn(unstable)]"] +] + +---------------------------------------------------- + +Checks for attributes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/closure-params_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/closure-params_feature.test new file mode 100644 index 0000000000..17c5582021 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/closure-params_feature.test @@ -0,0 +1,30 @@ +|x: int, y: int| -> int {} +|| {} + +---------------------------------------------------- + +[ + ["closure-params", [ + ["punctuation", "|"], + "x", + ["punctuation", ":"], + " int", + ["punctuation", ","], + " y", + ["punctuation", ":"], + " int", + ["punctuation", "|"] + ]], + ["punctuation", "->"], + " int ", ["punctuation", "{"], ["punctuation", "}"], + + ["closure-params", [ + ["punctuation", "|"], + ["punctuation", "|"] + ]], + ["punctuation", "{"], ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for closure params. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/comment_feature.test new file mode 100644 index 0000000000..c7a067272c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/comment_feature.test @@ -0,0 +1,18 @@ +// +// foobar +/**/ +/* foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "//"], + ["comment", "// foobar"], + ["comment", "/**/"], + ["comment", "/* foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/function_feature.test new file mode 100644 index 0000000000..155245c366 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/function_feature.test @@ -0,0 +1,23 @@ +foo ( +foobar( +foo_bar_42( + +foo! ( +foobar![ +foo_bar_42!( + +---------------------------------------------------- + +[ + ["function", "foo"], ["punctuation", "("], + ["function", "foobar"], ["punctuation", "("], + ["function", "foo_bar_42"], ["punctuation", "("], + + ["function", "foo!"], ["punctuation", "("], + ["function", "foobar!"], ["punctuation", "["], + ["function", "foo_bar_42!"], ["punctuation", "("] +] + +---------------------------------------------------- + +Checks for functions and macros. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/keyword_feature.test new file mode 100644 index 0000000000..5a3b3dba11 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/keyword_feature.test @@ -0,0 +1,39 @@ +abstract alignof as +be box break const +continue crate do +else enum extern +false final fn for +if impl in let loop +match mod move mut +offsetof once override +priv pub pure ref +return sizeof static +self struct super +true trait type typeof +unsafe unsized use +virtual where while +yield + +---------------------------------------------------- + +[ + ["keyword", "abstract"], ["keyword", "alignof"], ["keyword", "as"], + ["keyword", "be"], ["keyword", "box"], ["keyword", "break"], ["keyword", "const"], + ["keyword", "continue"], ["keyword", "crate"], ["keyword", "do"], + ["keyword", "else"], ["keyword", "enum"], ["keyword", "extern"], + ["keyword", "false"], ["keyword", "final"], ["keyword", "fn"], ["keyword", "for"], + ["keyword", "if"], ["keyword", "impl"], ["keyword", "in"], ["keyword", "let"], ["keyword", "loop"], + ["keyword", "match"], ["keyword", "mod"], ["keyword", "move"], ["keyword", "mut"], + ["keyword", "offsetof"], ["keyword", "once"], ["keyword", "override"], + ["keyword", "priv"], ["keyword", "pub"], ["keyword", "pure"], ["keyword", "ref"], + ["keyword", "return"], ["keyword", "sizeof"], ["keyword", "static"], + ["keyword", "self"], ["keyword", "struct"], ["keyword", "super"], + ["keyword", "true"], ["keyword", "trait"], ["keyword", "type"], ["keyword", "typeof"], + ["keyword", "unsafe"], ["keyword", "unsized"], ["keyword", "use"], + ["keyword", "virtual"], ["keyword", "where"], ["keyword", "while"], + ["keyword", "yield"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/macro-rules_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/macro-rules_feature.test new file mode 100644 index 0000000000..08180ad6a8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/macro-rules_feature.test @@ -0,0 +1,15 @@ +foo! +foo_bar! +foo_bar_42! + +---------------------------------------------------- + +[ + ["macro-rules", "foo!"], + ["macro-rules", "foo_bar!"], + ["macro-rules", "foo_bar_42!"] +] + +---------------------------------------------------- + +Checks for macro rules. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/number_feature.test new file mode 100644 index 0000000000..9d70f402ea --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/number_feature.test @@ -0,0 +1,47 @@ +0xBad_Face +0o741_123 +0b0000_1111 +42_000 +3.14_15_9 +3e4 +3.5E-8 +4.6e+41 + +0xBad_Faceu8 +0o741_123i8 +0b0000_1111u16 +42_000i16 +3.14_15_9u32 +3e4i32 +3.5E-8u64 +4.6e+41i64 +4.2f32 +4.2f64 + +---------------------------------------------------- + +[ + ["number", "0xBad_Face"], + ["number", "0o741_123"], + ["number", "0b0000_1111"], + ["number", "42_000"], + ["number", "3.14_15_9"], + ["number", "3e4"], + ["number", "3.5E-8"], + ["number", "4.6e+41"], + + ["number", "0xBad_Faceu8"], + ["number", "0o741_123i8"], + ["number", "0b0000_1111u16"], + ["number", "42_000i16"], + ["number", "3.14_15_9u32"], + ["number", "3e4i32"], + ["number", "3.5E-8u64"], + ["number", "4.6e+41i64"], + ["number", "4.2f32"], + ["number", "4.2f64"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/operator_feature.test new file mode 100644 index 0000000000..64f6bb30d4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/operator_feature.test @@ -0,0 +1,35 @@ ++ += +- -= +* *= +/ /= +% %= +! != +^ ^= += == +& && &= +| || |= +< << <= <<= +> >> >= >>= +@ + +---------------------------------------------------- + +[ + ["operator", "+"], ["operator", "+="], + ["operator", "-"], ["operator", "-="], + ["operator", "*"], ["operator", "*="], + ["operator", "/"], ["operator", "/="], + ["operator", "%"], ["operator", "%="], + ["operator", "!"], ["operator", "!="], + ["operator", "^"], ["operator", "^="], + ["operator", "="], ["operator", "=="], + ["operator", "&"], ["operator", "&&"], ["operator", "&="], + ["operator", "|"], ["operator", "||"], ["operator", "|="], + ["operator", "<"], ["operator", "<<"], ["operator", "<="], ["operator", "<<="], + ["operator", ">"], ["operator", ">>"], ["operator", ">="], ["operator", ">>="], + ["operator", "@"] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/rust/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/rust/string_feature.test new file mode 100644 index 0000000000..c39a9a6f22 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/rust/string_feature.test @@ -0,0 +1,43 @@ +"" +"fo\"obar" +'' +'fo\'obar' + +b"" +b"fo\"obar" +b'' +b'fo\'obar' + +r#""# +r#"fo"obar"# +r###"foo#bar"### + +br#""# +br#"fo"obar"# +br###"foo#bar"### + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "''"], + ["string", "'fo\\'obar'"], + + ["string", "b\"\""], + ["string", "b\"fo\\\"obar\""], + ["string", "b''"], + ["string", "b'fo\\'obar'"], + + ["string", "r#\"\"#"], + ["string", "r#\"fo\"obar\"#"], + ["string", "r###\"foo#bar\"###"], + + ["string", "br#\"\"#"], + ["string", "br#\"fo\"obar\"#"], + ["string", "br###\"foo#bar\"###"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sas/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sas/comment_feature.test new file mode 100644 index 0000000000..1d28dba0c5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sas/comment_feature.test @@ -0,0 +1,17 @@ +* foobar; +foo; * foobar; +/* foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "* foobar;"], + "\r\nfoo", ["punctuation", ";"], + ["comment", "* foobar;"], + ["comment", "/* foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sas/datalines_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sas/datalines_feature.test new file mode 100644 index 0000000000..dc62ef46af --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sas/datalines_feature.test @@ -0,0 +1,38 @@ +datalines; +1993 2,819 1,120 422 391 63 98 +1994 2,477 1,160 500 172 47 70 +; + +lines; +foo bar baz +; + +cards; +foo +bar +baz +; + +---------------------------------------------------- + +[ + ["datalines", [ + ["keyword", "datalines"], ["punctuation", ";"], + "\r\n1993 2,819 1,120 422 391 63 98\r\n1994 2,477 1,160 500 172 47 70\r\n", + ["punctuation", ";"] + ]], + ["datalines", [ + ["keyword", "lines"], ["punctuation", ";"], + "\r\nfoo bar baz\r\n", + ["punctuation", ";"] + ]], + ["datalines", [ + ["keyword", "cards"], ["punctuation", ";"], + "\r\nfoo\r\nbar\r\nbaz\r\n", + ["punctuation", ";"] + ]] +] + +---------------------------------------------------- + +Checks for datalines. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sas/datetime_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sas/datetime_feature.test new file mode 100644 index 0000000000..9d04082a16 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sas/datetime_feature.test @@ -0,0 +1,15 @@ +'1jan2013'd +'9:25:19pm't +'18jan2003:9:27:05am'dt + +---------------------------------------------------- + +[ + ["datetime", "'1jan2013'd"], + ["datetime", "'9:25:19pm't"], + ["datetime", "'18jan2003:9:27:05am'dt"] +] + +---------------------------------------------------- + +Checks for date, times and datetimes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sas/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sas/keyword_feature.test new file mode 100644 index 0000000000..cfc358df01 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sas/keyword_feature.test @@ -0,0 +1,13 @@ +data else format if +input proc run then + +---------------------------------------------------- + +[ + ["keyword", "data"], ["keyword", "else"], ["keyword", "format"], ["keyword", "if"], + ["keyword", "input"], ["keyword", "proc"], ["keyword", "run"], ["keyword", "then"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sas/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sas/number_feature.test new file mode 100644 index 0000000000..bda6a5d389 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sas/number_feature.test @@ -0,0 +1,21 @@ +42 +3.14159 +3.2e10 +0.4e-8 +1.4E+2 +BadFacex + +---------------------------------------------------- + +[ + ["number", "42"], + ["number", "3.14159"], + ["number", "3.2e10"], + ["number", "0.4e-8"], + ["number", "1.4E+2"], + ["number", "BadFacex"] +] + +---------------------------------------------------- + +Checks for decimal and hexadecimal numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sas/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sas/operator_feature.test new file mode 100644 index 0000000000..f79641e0bd --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sas/operator_feature.test @@ -0,0 +1,37 @@ +* ** +| || +! !! +¦ ¦¦ +< <> <= +> >< >= +~ ~= +¬ ¬= +^ ^= += / + +- & + +eq ne gt lt +ge le in not + +---------------------------------------------------- + +[ + ["operator", "*"], ["operator", "**"], + ["operator", "|"], ["operator", "||"], + ["operator", "!"], ["operator", "!!"], + ["operator", "¦"], ["operator", "¦¦"], + ["operator", "<"], ["operator", "<>"], ["operator", "<="], + ["operator", ">"], ["operator", "><"], ["operator", ">="], + ["operator", "~"], ["operator", "~="], + ["operator", "¬"], ["operator", "¬="], + ["operator", "^"], ["operator", "^="], + ["operator", "="], ["operator", "/"], ["operator", "+"], + ["operator", "-"], ["operator", "&"], + + ["operator", "eq"], ["operator", "ne"], ["operator", "gt"], ["operator", "lt"], + ["operator", "ge"], ["operator", "le"], ["operator", "in"], ["operator", "not"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sas/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sas/string_feature.test new file mode 100644 index 0000000000..2cac70ac4d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sas/string_feature.test @@ -0,0 +1,23 @@ +"" +"fo""o" +"foo +bar" +'' +'fo''o' +'foo +bar' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\"\"o\""], + ["string", "\"foo\r\nbar\""], + ["string", "''"], + ["string", "'fo''o'"], + ["string", "'foo\r\nbar'"] +] + +---------------------------------------------------- + +Checks for single-quoted and double-quoted strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sass/atrule-line_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sass/atrule-line_feature.test new file mode 100644 index 0000000000..005015f051 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sass/atrule-line_feature.test @@ -0,0 +1,35 @@ +@mixin foobar +@media (min-width: 600px) + @include foobar + +=foobar ++foobar + +---------------------------------------------------- + +[ + ["atrule-line", [ + ["atrule", "@mixin"], + " foobar" + ]], + ["atrule-line", [ + ["atrule", "@media"], + " (min-width: 600px)" + ]], + ["atrule-line", [ + ["atrule", "@include"], + " foobar" + ]], + ["atrule-line", [ + ["atrule", "="], + "foobar" + ]], + ["atrule-line", [ + ["atrule", "+"], + "foobar" + ]] +] + +---------------------------------------------------- + +Checks for at-rules. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sass/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sass/comment_feature.test new file mode 100644 index 0000000000..fb2d8102d7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sass/comment_feature.test @@ -0,0 +1,23 @@ +// +// foobar +/* +/* foo + bar + + /* foo + bar + baz + +---------------------------------------------------- + +[ + ["comment", "//"], + ["comment", "// foobar"], + ["comment", "/*"], + ["comment", "/* foo\r\n\tbar"], + ["comment", "/* foo\r\n\t bar\r\n\t baz"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sass/property-line_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sass/property-line_feature.test new file mode 100644 index 0000000000..2f41facc90 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sass/property-line_feature.test @@ -0,0 +1,47 @@ +foo: bar + color: $color !important +-moz-border-radius: 10px +transition-timing-function: ease-in-out + + :color #{$color} +:font-size 0.5em + 3em + +---------------------------------------------------- + +[ + ["property-line", [ + ["property", "foo"], + ["punctuation", ":"], + " bar" + ]], + ["property-line", [ + ["property", "color"], + ["punctuation", ":"], + ["variable", "$color"], + ["important", "!important"] + ]], + ["property-line", [ + ["property", "-moz-border-radius"], + ["punctuation", ":"], + " 10px" + ]], + ["property-line", [ + ["property", "transition-timing-function"], + ["punctuation", ":"], + " ease-in-out" + ]], + ["property-line", [ + ["punctuation", ":"], + ["property", "color"], + ["variable", "#{$color}"] + ]], + ["property-line", [ + ["punctuation", ":"], + ["property", "font-size"], + " 0.5em ", ["operator", "+"], " 3em" + ]] +] + +---------------------------------------------------- + +Checks for properties. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sass/selector_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sass/selector_feature.test new file mode 100644 index 0000000000..16993b129d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sass/selector_feature.test @@ -0,0 +1,24 @@ +div, span +.foo .bar + div +#foobar .baz:first-child + +div, + .bar + + #foo, + .bar, + .baz + +---------------------------------------------------- + +[ + ["selector", "div, span"], + ["selector", ".foo .bar + div"], + ["selector", "#foobar .baz:first-child"], + ["selector", "div,\r\n .bar"], + ["selector", "#foo,\r\n\t\t.bar,\r\n\t\t.baz"] +] + +---------------------------------------------------- + +Checks for selectors. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/sass/variable-line_feature.test b/dashboard-ui/bower_components/prism/tests/languages/sass/variable-line_feature.test new file mode 100644 index 0000000000..6a5550bf0b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/sass/variable-line_feature.test @@ -0,0 +1,29 @@ +$width: 5em +$foo: $bar + $baz +$bar: #{$baz} + +---------------------------------------------------- + +[ + ["variable-line", [ + ["variable", "$width"], + ["punctuation", ":"], + " 5em" + ]], + ["variable-line", [ + ["variable", "$foo"], + ["punctuation", ":"], + ["variable", "$bar"], + ["operator", "+"], + ["variable", "$baz"] + ]], + ["variable-line", [ + ["variable", "$bar"], + ["punctuation", ":"], + ["variable", "#{$baz}"] + ]] +] + +---------------------------------------------------- + +Checks for variable declarations. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scala/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scala/builtin_feature.test new file mode 100644 index 0000000000..52ab3f2b6f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scala/builtin_feature.test @@ -0,0 +1,17 @@ +String Int Long Short +Byte Boolean Double +Float Char Any AnyRef +AnyVal Unit Nothing + +---------------------------------------------------- + +[ + ["builtin", "String"], ["builtin", "Int"], ["builtin", "Long"], ["builtin", "Short"], + ["builtin", "Byte"], ["builtin", "Boolean"], ["builtin", "Double"], + ["builtin", "Float"], ["builtin", "Char"], ["builtin", "Any"], ["builtin", "AnyRef"], + ["builtin", "AnyVal"], ["builtin", "Unit"], ["builtin", "Nothing"] +] + +---------------------------------------------------- + +Checks for builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scala/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scala/keyword_feature.test new file mode 100644 index 0000000000..36d3ed7102 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scala/keyword_feature.test @@ -0,0 +1,35 @@ +<- => + +abstract case catch +class def do else +extends final finally +for forSome if +implicit import lazy +match new null object +override package private +protected return sealed +self super this throw +trait try type val +var while with yield + +---------------------------------------------------- + +[ + ["keyword", "<-"], ["keyword", "=>"], + + ["keyword", "abstract"], ["keyword", "case"], ["keyword", "catch"], + ["keyword", "class"], ["keyword", "def"], ["keyword", "do"], ["keyword", "else"], + ["keyword", "extends"], ["keyword", "final"], ["keyword", "finally"], + ["keyword", "for"], ["keyword", "forSome"], ["keyword", "if"], + ["keyword", "implicit"], ["keyword", "import"], ["keyword", "lazy"], + ["keyword", "match"], ["keyword", "new"], ["keyword", "null"], ["keyword", "object"], + ["keyword", "override"], ["keyword", "package"], ["keyword", "private"], + ["keyword", "protected"], ["keyword", "return"], ["keyword", "sealed"], + ["keyword", "self"], ["keyword", "super"], ["keyword", "this"], ["keyword", "throw"], + ["keyword", "trait"], ["keyword", "try"], ["keyword", "type"], ["keyword", "val"], + ["keyword", "var"], ["keyword", "while"], ["keyword", "with"], ["keyword", "yield"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scala/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scala/number_feature.test new file mode 100644 index 0000000000..f610ffc40a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scala/number_feature.test @@ -0,0 +1,27 @@ +0xBadFace +0xf7.fb +42 +3.14159 +3e4 +0.1E8 +42d +0777L +1e30f + +---------------------------------------------------- + +[ + ["number", "0xBadFace"], + ["number", "0xf7.fb"], + ["number", "42"], + ["number", "3.14159"], + ["number", "3e4"], + ["number", "0.1E8"], + ["number", "42d"], + ["number", "0777L"], + ["number", "1e30f"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scala/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scala/string_feature.test new file mode 100644 index 0000000000..f83f59b772 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scala/string_feature.test @@ -0,0 +1,26 @@ +'a' +'\u0041' +'\n' +'\t' + +"" +"fo\"obar" + +"""fo"o +bar""" + +---------------------------------------------------- + +[ + ["string", "'a'"], + ["string", "'\\u0041'"], + ["string", "'\\n'"], + ["string", "'\\t'"], + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "\"\"\"fo\"o\r\nbar\"\"\""] +] + +---------------------------------------------------- + +Checks for characters and strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scala/symbol_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scala/symbol_feature.test new file mode 100644 index 0000000000..d1a4babac7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scala/symbol_feature.test @@ -0,0 +1,15 @@ +'foo +'foo_42 +'foo_bar + +---------------------------------------------------- + +[ + ["symbol", "'foo"], + ["symbol", "'foo_42"], + ["symbol", "'foo_bar"] +] + +---------------------------------------------------- + +Checks for symbols. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/boolean_feature.test new file mode 100644 index 0000000000..c66430c866 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/boolean_feature.test @@ -0,0 +1,13 @@ +#t +#f + +---------------------------------------------------- + +[ + ["boolean", "#t"], + ["boolean", "#f"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/builtin_feature.test new file mode 100644 index 0000000000..f259925119 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/builtin_feature.test @@ -0,0 +1,53 @@ +(cons +(car +(cdr +(null? +(pair? +(boolean? +(eof-object? +(char? +(procedure? +(number? +(port? +(string? +(vector? +(symbol? +(bytevector? +(list +(call-with-current-continuation +(call/cc +(append +(abs +(apply +(eval + +---------------------------------------------------- + +[ + ["punctuation", "("], ["builtin", "cons"], + ["punctuation", "("], ["builtin", "car"], + ["punctuation", "("], ["builtin", "cdr"], + ["punctuation", "("], ["builtin", "null?"], + ["punctuation", "("], ["builtin", "pair?"], + ["punctuation", "("], ["builtin", "boolean?"], + ["punctuation", "("], ["builtin", "eof-object?"], + ["punctuation", "("], ["builtin", "char?"], + ["punctuation", "("], ["builtin", "procedure?"], + ["punctuation", "("], ["builtin", "number?"], + ["punctuation", "("], ["builtin", "port?"], + ["punctuation", "("], ["builtin", "string?"], + ["punctuation", "("], ["builtin", "vector?"], + ["punctuation", "("], ["builtin", "symbol?"], + ["punctuation", "("], ["builtin", "bytevector?"], + ["punctuation", "("], ["builtin", "list"], + ["punctuation", "("], ["builtin", "call-with-current-continuation"], + ["punctuation", "("], ["builtin", "call/cc"], + ["punctuation", "("], ["builtin", "append"], + ["punctuation", "("], ["builtin", "abs"], + ["punctuation", "("], ["builtin", "apply"], + ["punctuation", "("], ["builtin", "eval"] +] + +---------------------------------------------------- + +Checks for builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/comment_feature.test new file mode 100644 index 0000000000..5fd2825212 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/comment_feature.test @@ -0,0 +1,13 @@ +; +; foobar + +---------------------------------------------------- + +[ + ["comment", ";"], + ["comment", "; foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/function_feature.test new file mode 100644 index 0000000000..06e8461130 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/function_feature.test @@ -0,0 +1,17 @@ +(fl= 1 2) +(flmin 2 3) +(exact? 2) +(inexact->exact 3) + +---------------------------------------------------- + +[ + ["punctuation", "("], ["function", "fl="], ["number", "1"], ["number", "2"], ["punctuation", ")"], + ["punctuation", "("], ["function", "flmin"], ["number", "2"], ["number", "3"], ["punctuation", ")"], + ["punctuation", "("], ["function", "exact?"], ["number", "2"], ["punctuation", ")"], + ["punctuation", "("], ["function", "inexact->exact"], ["number", "3"], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/keyword_feature.test new file mode 100644 index 0000000000..bd27b92b38 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/keyword_feature.test @@ -0,0 +1,57 @@ +(define +(define-syntax +(define-library +(define-values +(case-lambda +(lambda +(let +(let* +(letrec +(let-values +(let*-values +(letrec-values +(else +(if +(cond +(begin +(delay +(delay-force +(parameterize +(guard +(set! +(quasi-quote +(quote +(syntax-rules + +---------------------------------------------------- + +[ + ["punctuation", "("], ["keyword", "define"], + ["punctuation", "("], ["keyword", "define-syntax"], + ["punctuation", "("], ["keyword", "define-library"], + ["punctuation", "("], ["keyword", "define-values"], + ["punctuation", "("], ["keyword", "case-lambda"], + ["punctuation", "("], ["keyword", "lambda"], + ["punctuation", "("], ["keyword", "let"], + ["punctuation", "("], ["keyword", "let*"], + ["punctuation", "("], ["keyword", "letrec"], + ["punctuation", "("], ["keyword", "let-values"], + ["punctuation", "("], ["keyword", "let*-values"], + ["punctuation", "("], ["keyword", "letrec-values"], + ["punctuation", "("], ["keyword", "else"], + ["punctuation", "("], ["keyword", "if"], + ["punctuation", "("], ["keyword", "cond"], + ["punctuation", "("], ["keyword", "begin"], + ["punctuation", "("], ["keyword", "delay"], + ["punctuation", "("], ["keyword", "delay-force"], + ["punctuation", "("], ["keyword", "parameterize"], + ["punctuation", "("], ["keyword", "guard"], + ["punctuation", "("], ["keyword", "set!"], + ["punctuation", "("], ["keyword", "quasi-quote"], + ["punctuation", "("], ["keyword", "quote"], + ["punctuation", "("], ["keyword", "syntax-rules"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/number_feature.test new file mode 100644 index 0000000000..4df7bef48b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/number_feature.test @@ -0,0 +1,19 @@ +(foo 42) +(foo 3.14159) +(foo 3+4i) +(foo 2.5+0.0i) +(foo 3+0i) + +---------------------------------------------------- + +[ + ["punctuation", "("], ["function", "foo"], ["number", "42"], ["punctuation", ")"], + ["punctuation", "("], ["function", "foo"], ["number", "3.14159"], ["punctuation", ")"], + ["punctuation", "("], ["function", "foo"], ["number", "3+4i"], ["punctuation", ")"], + ["punctuation", "("], ["function", "foo"], ["number", "2.5+0.0i"], ["punctuation", ")"], + ["punctuation", "("], ["function", "foo"], ["number", "3+0i"], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for numbers and complex numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/operator_feature.test new file mode 100644 index 0000000000..9f17bd91b4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/operator_feature.test @@ -0,0 +1,31 @@ +(+ +(- +(* +(/ +(% +(< +(<= +(> +(>= +(= +(=> + +---------------------------------------------------- + +[ + ["punctuation", "("], ["operator", "+"], + ["punctuation", "("], ["operator", "-"], + ["punctuation", "("], ["operator", "*"], + ["punctuation", "("], ["operator", "/"], + ["punctuation", "("], ["operator", "%"], + ["punctuation", "("], ["operator", "<"], + ["punctuation", "("], ["operator", "<="], + ["punctuation", "("], ["operator", ">"], + ["punctuation", "("], ["operator", ">="], + ["punctuation", "("], ["operator", "="], + ["punctuation", "("], ["operator", "=>"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scheme/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scheme/string_feature.test new file mode 100644 index 0000000000..fd4caa9bd8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scheme/string_feature.test @@ -0,0 +1,15 @@ +"" +"fo\"obar" +'turkey + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "'turkey"] +] + +---------------------------------------------------- + +Checks for strings and symbols. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss+haml/scss_inclusion.test b/dashboard-ui/bower_components/prism/tests/languages/scss+haml/scss_inclusion.test new file mode 100644 index 0000000000..a3a5ff85e4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss+haml/scss_inclusion.test @@ -0,0 +1,40 @@ +:scss + #main { + width: $width; + } + +~ + :scss + #main { + width: $width; + } + +---------------------------------------------------- + +[ + ["filter-scss", [ + ["filter-name", ":scss"], + ["selector", ["#main "]], + ["punctuation", "{"], + ["property", "width"], + ["punctuation", ":"], + ["variable", "$width"], + ["punctuation", ";"], + ["punctuation", "}"] + ]], + ["punctuation", "~"], + ["filter-scss", [ + ["filter-name", ":scss"], + ["selector", ["#main "]], + ["punctuation", "{"], + ["property", "width"], + ["punctuation", ":"], + ["variable", "$width"], + ["punctuation", ";"], + ["punctuation", "}"] + ]] +] + +---------------------------------------------------- + +Checks for CSS filter in Haml. The tilde serves only as a separator. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss+jade/scss_inclusion.test b/dashboard-ui/bower_components/prism/tests/languages/scss+jade/scss_inclusion.test new file mode 100644 index 0000000000..64e4795b2c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss+jade/scss_inclusion.test @@ -0,0 +1,17 @@ +:sass + @extend .foo; + +---------------------------------------------------- + +[ + ["filter-sass", [ + ["filter-name", ":sass"], + ["keyword", "@extend"], + " .foo", + ["punctuation", ";"] + ]] +] + +---------------------------------------------------- + +Checks for sass filter (Scss) in Jade. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/atrule_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/atrule_feature.test new file mode 100644 index 0000000000..a18a106159 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/atrule_feature.test @@ -0,0 +1,20 @@ +@media (min-width: 600px) {} + +---------------------------------------------------- + +[ + ["atrule", [ + ["rule", "@media"], + ["punctuation", "("], + ["property", "min-width"], + ["punctuation", ":"], + " 600px", + ["punctuation", ")"] + ]], + ["punctuation", "{"], + ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for at-rules. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/boolean_feature.test new file mode 100644 index 0000000000..a40f8d95d2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/boolean_feature.test @@ -0,0 +1,13 @@ +true +false + +---------------------------------------------------- + +[ + ["boolean", "true"], + ["boolean", "false"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/comment_feature.test new file mode 100644 index 0000000000..298b45e14a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/comment_feature.test @@ -0,0 +1,19 @@ +// +// foobar +/**/ +/* foo +bar */ + + +---------------------------------------------------- + +[ + ["comment", "//"], + ["comment", "// foobar"], + ["comment", "/**/"], + ["comment", "/* foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/keyword_feature.test new file mode 100644 index 0000000000..e50be062b7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/keyword_feature.test @@ -0,0 +1,28 @@ +@if @else if @else +@for @each @while +@import @extend +@debug @warn @mixin +@include @function +@return @content + +@for $i from 1 through 3 + +---------------------------------------------------- + +[ + ["keyword", "@if"], ["keyword", "@else if"], ["keyword", "@else"], + ["keyword", "@for"], ["keyword", "@each"], ["keyword", "@while"], + ["keyword", "@import"], ["keyword", "@extend"], + ["keyword", "@debug"], ["keyword", "@warn"], ["keyword", "@mixin"], + ["keyword", "@include"], ["keyword", "@function"], + ["keyword", "@return"], ["keyword", "@content"], + + ["keyword", "@for"], + ["variable", "$i"], + ["keyword", "from"], + " 1 ", + ["keyword", "through"], + " 3" +] + +---------------------------------------------------- diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/null_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/null_feature.test new file mode 100644 index 0000000000..0006204984 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/null_feature.test @@ -0,0 +1,11 @@ +null + +---------------------------------------------------- + +[ + ["null", "null"] +] + +---------------------------------------------------- + +Checks for null. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/operator_feature.test new file mode 100644 index 0000000000..43646a7047 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/operator_feature.test @@ -0,0 +1,38 @@ +4 - 2; +4 + 2; +4 * 2; +4 / 2; +4 % 2; +4 == 2; +4 != 2; +4 < 2; +4 <= 2; +4 > 2; +4 >= 2; +true and false +false or true +not true + +---------------------------------------------------- + +[ + "4 ", ["operator", "-"], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "+"], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "*"], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "/"], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "%"], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "=="], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "!="], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "<"], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", "<="], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", ">"], " 2", ["punctuation", ";"], + "\r\n4 ", ["operator", ">="], " 2", ["punctuation", ";"], + + ["boolean", "true"], ["operator", "and"], ["boolean", "false"], + ["boolean", "false"], ["operator", "or"], ["boolean", "true"], + ["operator", "not"], ["boolean", "true"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/placeholder_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/placeholder_feature.test new file mode 100644 index 0000000000..93406023c5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/placeholder_feature.test @@ -0,0 +1,15 @@ +%foobar +%foo-bar +%foo_bar + +---------------------------------------------------- + +[ + ["placeholder", "%foobar"], + ["placeholder", "%foo-bar"], + ["placeholder", "%foo_bar"] +] + +---------------------------------------------------- + +Checks for placeholders. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/selector_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/selector_feature.test new file mode 100644 index 0000000000..8c1840b960 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/selector_feature.test @@ -0,0 +1,23 @@ +a {} +p, div {} +#foobar .foo {} +&:hover {} +&-sidebar {} +#context a%extreme {} +#{$selector}:before {} + +---------------------------------------------------- + +[ + ["selector", ["a "]], ["punctuation", "{"], ["punctuation", "}"], + ["selector", ["p, div "]], ["punctuation", "{"], ["punctuation", "}"], + ["selector", ["#foobar .foo "]], ["punctuation", "{"], ["punctuation", "}"], + ["selector", ["&:hover "]], ["punctuation", "{"], ["punctuation", "}"], + ["selector", ["&-sidebar "]], ["punctuation", "{"], ["punctuation", "}"], + ["selector", ["#context a", ["placeholder", "%extreme"]]], ["punctuation", "{"], ["punctuation", "}"], + ["selector", ["#{$selector}:before "]], ["punctuation", "{"], ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for selectors. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/statement_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/statement_feature.test new file mode 100644 index 0000000000..864f953769 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/statement_feature.test @@ -0,0 +1,21 @@ +$foo: "bar" !default; +@extend .baz !optional; + +---------------------------------------------------- + +[ + ["variable", "$foo"], + ["punctuation", ":"], + ["string", "\"bar\""], + ["statement", "!default"], + ["punctuation", ";"], + + ["keyword", "@extend"], + " .baz ", + ["statement", "!optional"], + ["punctuation", ";"] +] + +---------------------------------------------------- + +Checks for statements. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/url_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/url_feature.test new file mode 100644 index 0000000000..eb1c405846 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/url_feature.test @@ -0,0 +1,19 @@ +url('foo.png') +font-url('foo.ttf') + +---------------------------------------------------- + +[ + ["url", "url"], + ["punctuation", "("], + ["string", "'foo.png'"], + ["punctuation", ")"], + ["url", "font-url"], + ["punctuation", "("], + ["string", "'foo.ttf'"], + ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for URLs. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/scss/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/scss/variable_feature.test new file mode 100644 index 0000000000..b483465774 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/scss/variable_feature.test @@ -0,0 +1,21 @@ +$foo +$foo-bar +$foo_bar +#{$foo} +#{$foo-bar} +#{$foo_bar} + +---------------------------------------------------- + +[ + ["variable", "$foo"], + ["variable", "$foo-bar"], + ["variable", "$foo_bar"], + ["variable", "#{$foo}"], + ["variable", "#{$foo-bar}"], + ["variable", "#{$foo_bar}"] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/block-arguments_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/block-arguments_feature.test new file mode 100644 index 0000000000..2dcf4d751f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/block-arguments_feature.test @@ -0,0 +1,26 @@ +[ :i | +] +[ :a :b | +] + +---------------------------------------------------- + +[ + ["punctuation", "["], + ["block-arguments", [ + ["variable", ":i"], + ["punctuation", "|"] + ]], + ["punctuation", "]"], + ["punctuation", "["], + ["block-arguments", [ + ["variable", ":a"], + ["variable", ":b"], + ["punctuation", "|"] + ]], + ["punctuation", "]"] +] + +---------------------------------------------------- + +Checks for block arguments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/character_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/character_feature.test new file mode 100644 index 0000000000..fa7ca97ffe --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/character_feature.test @@ -0,0 +1,17 @@ +$a +$4 +$. +$^ + +---------------------------------------------------- + +[ + ["character", "$a"], + ["character", "$4"], + ["character", "$."], + ["character", "$^"] +] + +---------------------------------------------------- + +Checks for characters. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/comment_feature.test new file mode 100644 index 0000000000..f7f56e4e20 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/comment_feature.test @@ -0,0 +1,14 @@ +"foobar" +"foo""bar +baz" + +---------------------------------------------------- + +[ + ["comment", "\"foobar\""], + ["comment", "\"foo\"\"bar\r\nbaz\""] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/keyword_feature.test new file mode 100644 index 0000000000..f02c52460b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/keyword_feature.test @@ -0,0 +1,13 @@ +nil true false +self super new + +---------------------------------------------------- + +[ + ["keyword", "nil"], ["keyword", "true"], ["keyword", "false"], + ["keyword", "self"], ["keyword", "super"], ["keyword", "new"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/number_feature.test new file mode 100644 index 0000000000..02dac001e8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/number_feature.test @@ -0,0 +1,23 @@ +42 +3.14159 +3e8 +0.2e-4 +2r10001111 +2r10.1111e4 +16rBADFACE + +---------------------------------------------------- + +[ + ["number", "42"], + ["number", "3.14159"], + ["number", "3e8"], + ["number", "0.2e-4"], + ["number", "2r10001111"], + ["number", "2r10.1111e4"], + ["number", "16rBADFACE"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/operator_feature.test new file mode 100644 index 0000000000..b560d3022f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/operator_feature.test @@ -0,0 +1,29 @@ +:= += == +~= ~~ +< <= +> >> >= +/ // +\\ +! ^ + +- * & +| , @ + +---------------------------------------------------- + +[ + ["operator", ":="], + ["operator", "="], ["operator", "=="], + ["operator", "~="], ["operator", "~~"], + ["operator", "<"], ["operator", "<="], + ["operator", ">"], ["operator", ">>"], ["operator", ">="], + ["operator", "/"], ["operator", "//"], + ["operator", "\\\\"], + ["operator", "!"], ["operator", "^"], ["operator", "+"], + ["operator", "-"], ["operator", "*"], ["operator", "&"], + ["operator", "|"], ["operator", ","], ["operator", "@"] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/string_feature.test new file mode 100644 index 0000000000..067c881cfb --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/string_feature.test @@ -0,0 +1,14 @@ +'foobar' +'foo''bar +baz' + +---------------------------------------------------- + +[ + ["string", "'foobar'"], + ["string", "'foo''bar\r\nbaz'"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/symbol_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/symbol_feature.test new file mode 100644 index 0000000000..9174bf8b9e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/symbol_feature.test @@ -0,0 +1,21 @@ +#foo +#Foo42 +#- +#+ +#** +#( + +---------------------------------------------------- + +[ + ["symbol", "#foo"], + ["symbol", "#Foo42"], + ["symbol", "#-"], + ["symbol", "#+"], + ["symbol", "#**"], + ["symbol", "#"], ["punctuation", "("] +] + +---------------------------------------------------- + +Checks for symbols. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smalltalk/temporary-variables_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/temporary-variables_feature.test new file mode 100644 index 0000000000..977a7b69c2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smalltalk/temporary-variables_feature.test @@ -0,0 +1,25 @@ +| foo | +| x y myVar z cnt | + +---------------------------------------------------- + +[ + ["temporary-variables", [ + ["punctuation", "|"], + ["variable", "foo"], + ["punctuation", "|"] + ]], + ["temporary-variables", [ + ["punctuation", "|"], + ["variable", "x"], + ["variable", "y"], + ["variable", "myVar"], + ["variable", "z"], + ["variable", "cnt"], + ["punctuation", "|"] + ]] +] + +---------------------------------------------------- + +Checks for temporary variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/attr-name_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/attr-name_feature.test new file mode 100644 index 0000000000..618f94581e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/attr-name_feature.test @@ -0,0 +1,36 @@ +{assign var=foo value="bar"} +{foo bar = 40} + +---------------------------------------------------- + +[ + ["smarty", [ + ["delimiter", "{"], + ["function", "assign"], + ["attr-name", [ + "var", + ["operator", "="], + ["variable", "foo"] + ]], + ["attr-name", [ + "value", + ["operator", "="] + ]], + ["string", "\"bar\""], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "foo"], + ["attr-name", [ + "bar ", + ["operator", "="] + ]], + ["number", "40"], + ["delimiter", "}"] + ]] +] + +---------------------------------------------------- + +Checks for attributes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/function_feature.test new file mode 100644 index 0000000000..2777414210 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/function_feature.test @@ -0,0 +1,41 @@ +{if count($foo)} + {$foo|@count} + {$bar|lower} +{/if} + +---------------------------------------------------- + +[ + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["function", "count"], + ["punctuation", "("], + ["variable", "$foo"], + ["punctuation", ")"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "$foo"], + ["operator", "|"], + ["function", "@count"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "$bar"], + ["operator", "|"], + ["function", "lower"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "/if"], + ["delimiter", "}"] + ]] +] + +---------------------------------------------------- + +Checks for tags, filters and functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/keyword_feature.test new file mode 100644 index 0000000000..764470cec7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/keyword_feature.test @@ -0,0 +1,51 @@ +{if false} +{if off} +{if on} +{if no} +{if true} +{if yes} + +---------------------------------------------------- + +[ + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["keyword", "false"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["keyword", "off"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["keyword", "on"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["keyword", "no"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["keyword", "true"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["keyword", "yes"], + ["delimiter", "}"] + ]] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/number_feature.test new file mode 100644 index 0000000000..bdfc254c6f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/number_feature.test @@ -0,0 +1,45 @@ +{0xBadFace} +{42} +{3.14159} +{4e7} +{5.4E-3} +{2.0e+10} + +---------------------------------------------------- + +[ + ["smarty", [ + ["delimiter", "{"], + ["number", "0xBadFace"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["number", "42"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["number", "3.14159"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["number", "4e7"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["number", "5.4E-3"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["number", "2.0e+10"], + ["delimiter", "}"] + ]] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/operator_feature.test new file mode 100644 index 0000000000..240d598c3d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/operator_feature.test @@ -0,0 +1,187 @@ +{if $a + $b - $c == $d} +{if $e * $f / $g % $h === $i} +{if $j < $k and $l > $m eq $n <= $o and $p >= $q} +{if !$r != $s && $t || $u} +{if $v is not even by 3 or $v is even} +{if $w is div by 2 or $w is not div by 3} +{if $x is not odd or $x is odd by 4} +{if $y ne $z or $a neq $b} +{if $c gt $d or $e lt $f} +{if $g gte $h or $i ge $j or $k lte $l or $m le $n} +{if not $o and $p mod 4} +{foo bar=baz} +{$foo|upper} + +---------------------------------------------------- + +[ + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$a"], + ["operator", "+"], + ["variable", "$b"], + ["operator", "-"], + ["variable", "$c"], + ["operator", "=="], + ["variable", "$d"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$e"], + ["operator", "*"], + ["variable", "$f"], + ["operator", "/"], + ["variable", "$g"], + ["operator", "%"], + ["variable", "$h"], + ["operator", "==="], + ["variable", "$i"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$j"], + ["operator", "<"], + ["variable", "$k"], + ["operator", "and"], + ["variable", "$l"], + ["operator", ">"], + ["variable", "$m"], + ["operator", "eq"], + ["variable", "$n"], + ["operator", "<="], + ["variable", "$o"], + ["operator", "and"], + ["variable", "$p"], + ["operator", ">="], + ["variable", "$q"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["operator", "!"], + ["variable", "$r"], + ["operator", "!="], + ["variable", "$s"], + ["operator", "&&"], + ["variable", "$t"], + ["operator", "||"], + ["variable", "$u"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$v"], + ["operator", "is not even by"], + ["number", "3"], + ["operator", "or"], + ["variable", "$v"], + ["operator", "is even"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$w"], + ["operator", "is div by"], + ["number", "2"], + ["operator", "or"], + ["variable", "$w"], + ["operator", "is not div by"], + ["number", "3"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$x"], + ["operator", "is not odd"], + ["operator", "or"], + ["variable", "$x"], + ["operator", "is odd by"], + ["number", "4"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$y"], + ["operator", "ne"], + ["variable", "$z"], + ["operator", "or"], + ["variable", "$a"], + ["operator", "neq"], + ["variable", "$b"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$c"], + ["operator", "gt"], + ["variable", "$d"], + ["operator", "or"], + ["variable", "$e"], + ["operator", "lt"], + ["variable", "$f"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["variable", "$g"], + ["operator", "gte"], + ["variable", "$h"], + ["operator", "or"], + ["variable", "$i"], + ["operator", "ge"], + ["variable", "$j"], + ["operator", "or"], + ["variable", "$k"], + ["operator", "lte"], + ["variable", "$l"], + ["operator", "or"], + ["variable", "$m"], + ["operator", "le"], + ["variable", "$n"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "if"], + ["operator", "not"], + ["variable", "$o"], + ["operator", "and"], + ["variable", "$p"], + ["operator", "mod"], + ["number", "4"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["function", "foo"], + ["attr-name", [ + "bar", + ["operator", "="], + ["variable", "baz"] + ]], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "$foo"], + ["operator", "|"], + ["function", "upper"], + ["delimiter", "}"] + ]] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/smarty-comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/smarty-comment_feature.test new file mode 100644 index 0000000000..828ae9ff64 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/smarty-comment_feature.test @@ -0,0 +1,14 @@ +{**} +{* foo +bar *} + +---------------------------------------------------- + +[ + ["smarty-comment", "{**}"], + ["smarty-comment", "{* foo\r\nbar *}"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/string_feature.test new file mode 100644 index 0000000000..72cc5d85e0 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/string_feature.test @@ -0,0 +1,33 @@ +{""} +{"fo\"obar"} +{''} +{'fo\'obar'} + +---------------------------------------------------- + +[ + ["smarty", [ + ["delimiter", "{"], + ["string", "\"\""], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["string", "\"fo\\\"obar\""], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["string", "''"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["string", "'fo\\'obar'"], + ["delimiter", "}"] + ]] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/smarty/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/smarty/variable_feature.test new file mode 100644 index 0000000000..f3a66c2670 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/smarty/variable_feature.test @@ -0,0 +1,56 @@ +{$foo} +{$foo_bar42} +{#pageTitle#} +{$foo.bar.baz} +{$foo->bar->baz} +{$foo[row]} + +---------------------------------------------------- + +[ + ["smarty", [ + ["delimiter", "{"], + ["variable", "$foo"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "$foo_bar42"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "#pageTitle#"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "$foo"], + ["punctuation", "."], + ["variable", "bar"], + ["punctuation", "."], + ["variable", "baz"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "$foo"], + ["punctuation", "->"], + ["variable", "bar"], + ["punctuation", "->"], + ["variable", "baz"], + ["delimiter", "}"] + ]], + ["smarty", [ + ["delimiter", "{"], + ["variable", "$foo"], + ["punctuation", "["], + ["variable", "row"], + ["punctuation", "]"], + ["delimiter", "}"] + ]] +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus+jade/stylus_inclusion.test b/dashboard-ui/bower_components/prism/tests/languages/stylus+jade/stylus_inclusion.test new file mode 100644 index 0000000000..7bd1c74118 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus+jade/stylus_inclusion.test @@ -0,0 +1,20 @@ +:stylus + font-size = 14px + +---------------------------------------------------- + +[ + ["filter-stylus", [ + ["filter-name", ":stylus"], + ["variable-declaration", [ + ["variable", "font-size"], + ["operator", "="], + ["number", "14"], + "px" + ]] + ]] +] + +---------------------------------------------------- + +Checks for stylus filter in Jade. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/atrule-declaration_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/atrule-declaration_feature.test new file mode 100644 index 0000000000..ab3b39bced --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/atrule-declaration_feature.test @@ -0,0 +1,31 @@ +@media print +@import "reset.css" +@font-face { +@keyframes { +@media (max-{foo}: bar) + +---------------------------------------------------- + +[ + ["atrule-declaration", [["atrule", "@media"], " print"]], + ["atrule-declaration", [["atrule", "@import"], ["string", "\"reset.css\""]]], + ["atrule-declaration", [["atrule", "@font-face"], ["punctuation", "{"]]], + ["atrule-declaration", [["atrule", "@keyframes"], ["punctuation", "{"]]], + ["atrule-declaration", [ + ["atrule", "@media"], + ["punctuation", "("], + "max-", + ["interpolation", [ + ["punctuation", "{"], + "foo", + ["punctuation", "}"] + ]], + ["punctuation", ":"], + " bar", + ["punctuation", ")"] + ]] +] + +---------------------------------------------------- + +Checks for at-rules. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/boolean_feature.test new file mode 100644 index 0000000000..23fc65f04f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/boolean_feature.test @@ -0,0 +1,21 @@ +a = true +b = false + +---------------------------------------------------- + +[ + ["variable-declaration", [ + ["variable", "a"], + ["operator", "="], + ["boolean", "true"] + ]], + ["variable-declaration", [ + ["variable", "b"], + ["operator", "="], + ["boolean", "false"] + ]] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/comment_feature.test new file mode 100644 index 0000000000..a3f98da261 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/comment_feature.test @@ -0,0 +1,18 @@ +/**/ +/* foo +bar */ +// +// foobar + +---------------------------------------------------- + +[ + ["comment", "/**/"], + ["comment", "/* foo\r\nbar */"], + ["comment", "//"], + ["comment", "// foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/func_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/func_feature.test new file mode 100644 index 0000000000..8ab6c2e39f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/func_feature.test @@ -0,0 +1,51 @@ +border-radius(n) + -webkit-border-radius n + -moz-border-radius n + border-radius n + +form input[type=button] + border-radius(5px) + color foo() + +---------------------------------------------------- + +[ + ["func", [ + ["function", "border-radius"], + ["punctuation", "("], + "n", + ["punctuation", ")"] + ]], + ["property-declaration", [ + ["property", ["-webkit-border-radius"]], + " n" + ]], + ["property-declaration", [ + ["property", ["-moz-border-radius"]], + " n" + ]], + ["property-declaration", [ + ["property", ["border-radius"]], + " n" + ]], + ["selector", ["form input[type=button]"]], + ["func", [ + ["function", "border-radius"], + ["punctuation", "("], + ["number", "5"], + "px", + ["punctuation", ")"] + ]], + ["property-declaration", [ + ["property", ["color"]], + ["func", [ + ["function", "foo"], + ["punctuation", "("], + ["punctuation", ")"] + ]] + ]] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/hexcode_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/hexcode_feature.test new file mode 100644 index 0000000000..4d89f7779a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/hexcode_feature.test @@ -0,0 +1,29 @@ +color: #fff +color: #FA3 +color: #f7c111 +color: #9F4ABB + +---------------------------------------------------- + +[ + ["property-declaration", [ + ["property", ["color"]], ["punctuation", ":"], + ["hexcode", "#fff"] + ]], + ["property-declaration", [ + ["property", ["color"]], ["punctuation", ":"], + ["hexcode", "#FA3"] + ]], + ["property-declaration", [ + ["property", ["color"]], ["punctuation", ":"], + ["hexcode", "#f7c111"] + ]], + ["property-declaration", [ + ["property", ["color"]], ["punctuation", ":"], + ["hexcode", "#9F4ABB"] + ]] +] + +---------------------------------------------------- + +Checks for hexadecimal values. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/important_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/important_feature.test new file mode 100644 index 0000000000..e86e46f537 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/important_feature.test @@ -0,0 +1,22 @@ +color: red !important +@extend foo !optional + +---------------------------------------------------- + +[ + ["property-declaration", [ + ["property", ["color"]], + ["punctuation", ":"], + " red ", + ["important", "!important"] + ]], + ["atrule-declaration", [ + ["atrule", "@extend"], + " foo ", + ["important", "!optional"] + ]] +] + +---------------------------------------------------- + +Checks for !important and !optional. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/keyword_feature.test new file mode 100644 index 0000000000..3eaabdfffa --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/keyword_feature.test @@ -0,0 +1,44 @@ +for i in 1..5 +if a == 3 +z-index: 1 unless @z-index; +return pair[1] if pair[0] == key for pair in hash + +---------------------------------------------------- + +[ + ["statement", [ + ["keyword", "for"], + " i ", + ["operator", "in"], + ["number", "1"], + ["operator", ".."], + ["number", "5"] + ]], + ["statement", [ + ["keyword", "if"], + " a ", + ["operator", "=="], + ["number", "3"] + ]], + ["property-declaration", [ + ["property", ["z-index"]], + ["punctuation", ":"], + ["number", "1"], + ["keyword", "unless"], + ["keyword", "@z-index"], + ["punctuation", ";"] + ]], + ["statement", [ + ["keyword", "return"], " pair", + ["punctuation", "["], ["number", "1"], ["punctuation", "]"], + ["keyword", "if"], " pair", + ["punctuation", "["], ["number", "0"], ["punctuation", "]"], + ["operator", "=="], " key ", + ["keyword", "for"], " pair ", + ["operator", "in"], " hash" + ]] +] + +---------------------------------------------------- + +Checks for statements and keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/number_feature.test new file mode 100644 index 0000000000..93a9785ac6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/number_feature.test @@ -0,0 +1,32 @@ +z-index 42 +foo = 3.14159 +width: 23% +bar = 1.5% + +---------------------------------------------------- + +[ + ["property-declaration", [ + ["property", ["z-index"]], + ["number", "42"] + ]], + ["variable-declaration", [ + ["variable", "foo"], + ["operator", "="], + ["number", "3.14159"] + ]], + ["property-declaration", [ + ["property", ["width"]], + ["punctuation", ":"], + ["number", "23%"] + ]], + ["variable-declaration", [ + ["variable", "bar"], + ["operator", "="], + ["number", "1.5%"] + ]] +] + +---------------------------------------------------- + +Checks for numbers and percentages. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/operator_feature.test new file mode 100644 index 0000000000..11ef9c16a0 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/operator_feature.test @@ -0,0 +1,273 @@ +a = !b +b = b != a +c = ~b +d = c + b +d += a +e = d - c +e -= b +f = a * b +g = c ** d +g *= f +h = g / f +h /= e +i = h % g +i %= f +j = 1..5 +k = 1...5 +l = k < j +m = l <= k +n = m > l +o = n >= m +p = o ? n : m +q ?= p +r = q == p +s := r +t = s && r +u = t || s +v = u and t +w = v or u +x = 1 in w +y = true is true +z = true is not false +aa = z isnt y +ab = #fff is a 'rgba' +ac = ab is defined +ad = not ac + +---------------------------------------------------- + +[ + ["variable-declaration", [ + ["variable", "a"], + ["operator", "="], + ["operator", "!"], + "b" + ]], + ["variable-declaration", [ + ["variable", "b"], + ["operator", "="], + " b ", + ["operator", "!="], + " a" + ]], + ["variable-declaration", [ + ["variable", "c"], + ["operator", "="], + ["operator", "~"], + "b" + ]], + ["variable-declaration", [ + ["variable", "d"], + ["operator", "="], + " c ", + ["operator", "+"], + " b" + ]], + ["variable-declaration", [ + ["variable", "d"], + ["operator", "+="], + " a" + ]], + ["variable-declaration", [ + ["variable", "e"], + ["operator", "="], + " d ", + ["operator", "-"], + " c" + ]], + ["variable-declaration", [ + ["variable", "e"], + ["operator", "-="], + " b" + ]], + ["variable-declaration", [ + ["variable", "f"], + ["operator", "="], + " a ", + ["operator", "*"], + " b" + ]], + ["variable-declaration", [ + ["variable", "g"], + ["operator", "="], + " c ", + ["operator", "**"], + " d" + ]], + ["variable-declaration", [ + ["variable", "g"], + ["operator", "*="], + " f" + ]], + ["variable-declaration", [ + ["variable", "h"], + ["operator", "="], + " g ", + ["operator", "/"], + " f" + ]], + ["variable-declaration", [ + ["variable", "h"], + ["operator", "/="], + " e" + ]], + ["variable-declaration", [ + ["variable", "i"], + ["operator", "="], + " h ", + ["operator", "%"], + " g" + ]], + ["variable-declaration", [ + ["variable", "i"], + ["operator", "%="], + " f" + ]], + ["variable-declaration", [ + ["variable", "j"], + ["operator", "="], + ["number", "1"], + ["operator", ".."], + ["number", "5"] + ]], + ["variable-declaration", [ + ["variable", "k"], + ["operator", "="], + ["number", "1"], + ["operator", "..."], + ["number", "5"] + ]], + ["variable-declaration", [ + ["variable", "l"], + ["operator", "="], + " k ", + ["operator", "<"], + " j" + ]], + ["variable-declaration", [ + ["variable", "m"], + ["operator", "="], + " l ", + ["operator", "<="], + " k" + ]], + ["variable-declaration", [ + ["variable", "n"], + ["operator", "="], + " m ", + ["operator", ">"], + " l" + ]], + ["variable-declaration", [ + ["variable", "o"], + ["operator", "="], + " n ", + ["operator", ">="], + " m" + ]], + ["variable-declaration", [ + ["variable", "p"], + ["operator", "="], + " o ", + ["operator", "?"], + " n ", + ["punctuation", ":"], + " m" + ]], + ["variable-declaration", [ + ["variable", "q"], + ["operator", "?="], + " p" + ]], + ["variable-declaration", [ + ["variable", "r"], + ["operator", "="], + " q ", + ["operator", "=="], + " p" + ]], + ["variable-declaration", [ + ["variable", "s"], + ["operator", ":="], + " r" + ]], + ["variable-declaration", [ + ["variable", "t"], + ["operator", "="], + " s ", + ["operator", "&&"], + " r" + ]], + ["variable-declaration", [ + ["variable", "u"], + ["operator", "="], + " t ", + ["operator", "||"], + " s" + ]], + ["variable-declaration", [ + ["variable", "v"], + ["operator", "="], + " u ", + ["operator", "and"], + " t" + ]], + ["variable-declaration", [ + ["variable", "w"], + ["operator", "="], + " v ", + ["operator", "or"], + " u" + ]], + ["variable-declaration", [ + ["variable", "x"], + ["operator", "="], + ["number", "1"], + ["operator", "in"], + " w" + ]], + ["variable-declaration", [ + ["variable", "y"], + ["operator", "="], + ["boolean", "true"], + ["operator", "is"], + ["boolean", "true"] + ]], + ["variable-declaration", [ + ["variable", "z"], + ["operator", "="], + ["boolean", "true"], + ["operator", "is not"], + ["boolean", "false"] + ]], + ["variable-declaration", [ + ["variable", "aa"], + ["operator", "="], + " z ", + ["operator", "isnt"], + " y" + ]], + ["variable-declaration", [ + ["variable", "ab"], + ["operator", "="], + ["hexcode", "#fff"], + ["operator", "is a"], + ["string", "'rgba'"] + ]], + ["variable-declaration", [ + ["variable", "ac"], + ["operator", "="], + " ab ", + ["operator", "is defined"] + ]], + ["variable-declaration", [ + ["variable", "ad"], + ["operator", "="], + ["operator", "not"], + " ac" + ]] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/property-declaration_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/property-declaration_feature.test new file mode 100644 index 0000000000..426ea07132 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/property-declaration_feature.test @@ -0,0 +1,52 @@ +div + width 40px + color: red + background: blue; + +div { +background-{foo}: bar; +} + +div + {foo} bar + +---------------------------------------------------- + +[ + ["selector", ["div"]], + ["property-declaration", [ + ["property", ["width"]], ["number", "40"], "px" + ]], + ["property-declaration", [ + ["property", ["color"]], ["punctuation", ":"], " red" + ]], + ["property-declaration", [ + ["property", ["background"]], ["punctuation", ":"], " blue", ["punctuation", ";"] + ]], + ["selector", ["div ", ["punctuation", "{"]]], + ["property-declaration", [ + ["property", [ + "background-", + ["interpolation", [ + ["punctuation", "{"], "foo", ["punctuation", "}"] + ]] + ]], + ["punctuation", ":"], + " bar", + ["punctuation", ";"] + ]], + ["punctuation", "}"], + ["selector", ["div"]], + ["property-declaration", [ + ["property", [ + ["interpolation", [ + ["punctuation", "{"], "foo", ["punctuation", "}"] + ]] + ]], + " bar" + ]] +] + +---------------------------------------------------- + +Checks for property declarations. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/selector_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/selector_feature.test new file mode 100644 index 0000000000..3f7d0fc204 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/selector_feature.test @@ -0,0 +1,49 @@ +div +span[foo=bar] + color red + +div input, +input:nth-child(2n) + color red + +#foo + .bar::before + color red + +#foo + .bar { +color red +} + +{foo} {bar}:hover + color red + +---------------------------------------------------- + +[ + ["selector", ["div\r\nspan[foo=bar]"]], + ["property-declaration", [["property", ["color"]], " red"]], + ["selector", ["div input", ["punctuation", ","], "\r\ninput:nth-child(2n)"]], + ["property-declaration", [["property", ["color"]], " red"]], + ["selector", ["#foo"]], + ["selector", [".bar::before"]], + ["property-declaration", [["property", ["color"]], " red"]], + ["selector", ["#foo"]], + ["selector", [".bar ", ["punctuation", "{"]]], + ["property-declaration", [["property", ["color"]], " red"]], + ["punctuation", "}"], + ["selector", [ + ["interpolation", [ + ["punctuation", "{"], "foo", ["punctuation", "}"] + ]], + ["interpolation", [ + ["punctuation", "{"], "bar", ["punctuation", "}"] + ]], + ":hover" + ]], + ["property-declaration", [["property", ["color"]], " red"]] +] + +---------------------------------------------------- + +Checks for selectors. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/string_feature.test new file mode 100644 index 0000000000..35860914c4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/string_feature.test @@ -0,0 +1,33 @@ +content: "" +content: "foo" +content: '' +content: 'foo' + +---------------------------------------------------- + +[ + ["property-declaration", [ + ["property", ["content"]], + ["punctuation", ":"], + ["string", "\"\""] + ]], + ["property-declaration", [ + ["property", ["content"]], + ["punctuation", ":"], + ["string", "\"foo\""] + ]], + ["property-declaration", [ + ["property", ["content"]], + ["punctuation", ":"], + ["string", "''"] + ]], + ["property-declaration", [ + ["property", ["content"]], + ["punctuation", ":"], + ["string", "'foo'"] + ]] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/url_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/url_feature.test new file mode 100644 index 0000000000..e770c7d690 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/url_feature.test @@ -0,0 +1,21 @@ +background: url('foo.png') +background: url("foo/bar.jpg") + +---------------------------------------------------- + +[ + ["property-declaration", [ + ["property", ["background"]], + ["punctuation", ":"], + ["url", "url('foo.png')"] + ]], + ["property-declaration", [ + ["property", ["background"]], + ["punctuation", ":"], + ["url", "url(\"foo/bar.jpg\")"] + ]] +] + +---------------------------------------------------- + +Checks for urls. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/stylus/variable-declaration_feature.test b/dashboard-ui/bower_components/prism/tests/languages/stylus/variable-declaration_feature.test new file mode 100644 index 0000000000..9b403ea177 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/stylus/variable-declaration_feature.test @@ -0,0 +1,33 @@ +foo = 'bar' +a = 4 +bar-baz = 5 +a += 8 + +---------------------------------------------------- + +[ + ["variable-declaration", [ + ["variable", "foo"], + ["operator", "="], + ["string", "'bar'"] + ]], + ["variable-declaration", [ + ["variable", "a"], + ["operator", "="], + ["number", "4"] + ]], + ["variable-declaration", [ + ["variable", "bar-baz"], + ["operator", "="], + ["number", "5"] + ]], + ["variable-declaration", [ + ["variable", "a"], + ["operator", "+="], + ["number", "8"] + ]] +] + +---------------------------------------------------- + +Checks for variable declarations. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/swift/atrule_feature.test b/dashboard-ui/bower_components/prism/tests/languages/swift/atrule_feature.test new file mode 100644 index 0000000000..979a6fd632 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/swift/atrule_feature.test @@ -0,0 +1,33 @@ +@IBOutlet +@IBDesignable +@IBAction +@IBInspectable +@class_protocol +@exported +@noreturn +@NSCopying +@NSManaged +@objc +@UIApplicationMain +@auto_closure + +---------------------------------------------------- + +[ + ["atrule", "@IBOutlet"], + ["atrule", "@IBDesignable"], + ["atrule", "@IBAction"], + ["atrule", "@IBInspectable"], + ["atrule", "@class_protocol"], + ["atrule", "@exported"], + ["atrule", "@noreturn"], + ["atrule", "@NSCopying"], + ["atrule", "@NSManaged"], + ["atrule", "@objc"], + ["atrule", "@UIApplicationMain"], + ["atrule", "@auto_closure"] +] + +---------------------------------------------------- + +Checks for at-rules. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/swift/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/swift/builtin_feature.test new file mode 100644 index 0000000000..316d629691 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/swift/builtin_feature.test @@ -0,0 +1,53 @@ +Foo +Bar + +abs advance alignof alignofValue +assert contains count countElements +debugPrint debugPrintln distance +dropFirst dropLast dump enumerate +equal filter find first getVaList +indices isEmpty join last +lexicographicalCompare map max +maxElement min minElement numericCast +overlaps partition print +println reduce reflect reverse +sizeof sizeofValue sort sorted +split startsWith stride strideof +strideofValue suffix swap toDebugString +toString transcode underestimateCount +unsafeBitCast withExtendedLifetime +withUnsafeMutablePointer +withUnsafeMutablePointers +withUnsafePointer withUnsafePointers +withVaList + +---------------------------------------------------- + +[ + ["builtin", "Foo"], + ["builtin", "Bar"], + + ["builtin", "abs"], ["builtin", "advance"], ["builtin", "alignof"], ["builtin", "alignofValue"], + ["builtin", "assert"], ["builtin", "contains"], ["builtin", "count"], ["builtin", "countElements"], + ["builtin", "debugPrint"], ["builtin", "debugPrintln"], ["builtin", "distance"], + ["builtin", "dropFirst"], ["builtin", "dropLast"], ["builtin", "dump"], ["builtin", "enumerate"], + ["builtin", "equal"], ["builtin", "filter"], ["builtin", "find"], ["builtin", "first"], ["builtin", "getVaList"], + ["builtin", "indices"], ["builtin", "isEmpty"], ["builtin", "join"], ["builtin", "last"], + ["builtin", "lexicographicalCompare"], ["builtin", "map"], ["builtin", "max"], + ["builtin", "maxElement"], ["builtin", "min"], ["builtin", "minElement"], ["builtin", "numericCast"], + ["builtin", "overlaps"], ["builtin", "partition"], ["builtin", "print"], + ["builtin", "println"], ["builtin", "reduce"], ["builtin", "reflect"], ["builtin", "reverse"], + ["builtin", "sizeof"], ["builtin", "sizeofValue"], ["builtin", "sort"], ["builtin", "sorted"], + ["builtin", "split"], ["builtin", "startsWith"], ["builtin", "stride"], ["builtin", "strideof"], + ["builtin", "strideofValue"], ["builtin", "suffix"], ["builtin", "swap"], ["builtin", "toDebugString"], + ["builtin", "toString"], ["builtin", "transcode"], ["builtin", "underestimateCount"], + ["builtin", "unsafeBitCast"], ["builtin", "withExtendedLifetime"], + ["builtin", "withUnsafeMutablePointer"], + ["builtin", "withUnsafeMutablePointers"], + ["builtin", "withUnsafePointer"], ["builtin", "withUnsafePointers"], + ["builtin", "withVaList"] +] + +---------------------------------------------------- + +Checks for builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/swift/constant_feature.test b/dashboard-ui/bower_components/prism/tests/languages/swift/constant_feature.test new file mode 100644 index 0000000000..7ba35298cc --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/swift/constant_feature.test @@ -0,0 +1,19 @@ +nil +AB +FOO_BAR +kAb +kFoo_bar + +---------------------------------------------------- + +[ + ["constant", "nil"], + ["constant", "AB"], + ["constant", "FOO_BAR"], + ["constant", "kAb"], + ["constant", "kFoo_bar"] +] + +---------------------------------------------------- + +Checks for constants. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/swift/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/swift/keyword_feature.test new file mode 100644 index 0000000000..4af4aaaa06 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/swift/keyword_feature.test @@ -0,0 +1,165 @@ +as +associativity +break +case +catch +class; +continue +convenience +default +defer +deinit +didSet +do +dynamic +dynamicType +else +enum +extension +fallthrough +final +for +func +get +guard +if +import +in +infix +init +inout +internal +is +lazy +left +let +mutating +new; +none +nonmutating +operator +optional +override +postfix +precedence +prefix +private +Protocol +public +repeat +required +rethrows +return +right +safe +self +Self +set +static +struct +subscript +super +switch +throw +throws +try +Type +typealias +unowned +unsafe +var +weak +where +while +willSet +__COLUMN__ +__FILE__ +__FUNCTION__ +__LINE__ + +---------------------------------------------------- + +[ + ["keyword", "as"], + ["keyword", "associativity"], + ["keyword", "break"], + ["keyword", "case"], + ["keyword", "catch"], + ["keyword", "class"], ["punctuation", ";"], + ["keyword", "continue"], + ["keyword", "convenience"], + ["keyword", "default"], + ["keyword", "defer"], + ["keyword", "deinit"], + ["keyword", "didSet"], + ["keyword", "do"], + ["keyword", "dynamic"], + ["keyword", "dynamicType"], + ["keyword", "else"], + ["keyword", "enum"], + ["keyword", "extension"], + ["keyword", "fallthrough"], + ["keyword", "final"], + ["keyword", "for"], + ["keyword", "func"], + ["keyword", "get"], + ["keyword", "guard"], + ["keyword", "if"], + ["keyword", "import"], + ["keyword", "in"], + ["keyword", "infix"], + ["keyword", "init"], + ["keyword", "inout"], + ["keyword", "internal"], + ["keyword", "is"], + ["keyword", "lazy"], + ["keyword", "left"], + ["keyword", "let"], + ["keyword", "mutating"], + ["keyword", "new"], ["punctuation", ";"], + ["keyword", "none"], + ["keyword", "nonmutating"], + ["keyword", "operator"], + ["keyword", "optional"], + ["keyword", "override"], + ["keyword", "postfix"], + ["keyword", "precedence"], + ["keyword", "prefix"], + ["keyword", "private"], + ["keyword", "Protocol"], + ["keyword", "public"], + ["keyword", "repeat"], + ["keyword", "required"], + ["keyword", "rethrows"], + ["keyword", "return"], + ["keyword", "right"], + ["keyword", "safe"], + ["keyword", "self"], + ["keyword", "Self"], + ["keyword", "set"], + ["keyword", "static"], + ["keyword", "struct"], + ["keyword", "subscript"], + ["keyword", "super"], + ["keyword", "switch"], + ["keyword", "throw"], + ["keyword", "throws"], + ["keyword", "try"], + ["keyword", "Type"], + ["keyword", "typealias"], + ["keyword", "unowned"], + ["keyword", "unsafe"], + ["keyword", "var"], + ["keyword", "weak"], + ["keyword", "where"], + ["keyword", "while"], + ["keyword", "willSet"], + ["keyword", "__COLUMN__"], + ["keyword", "__FILE__"], + ["keyword", "__FUNCTION__"], + ["keyword", "__LINE__"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/swift/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/swift/number_feature.test new file mode 100644 index 0000000000..13fb0308d8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/swift/number_feature.test @@ -0,0 +1,25 @@ +42 +42_000 +3.1415_9 +4.2e14 +0xBaf_Face +0xFF47.AB_61p2 +0b0000_1111 +0o147_654 + +---------------------------------------------------- + +[ + ["number", "42"], + ["number", "42_000"], + ["number", "3.1415_9"], + ["number", "4.2e14"], + ["number", "0xBaf_Face"], + ["number", "0xFF47.AB_61p2"], + ["number", "0b0000_1111"], + ["number", "0o147_654"] +] + +---------------------------------------------------- + +Checks for decimal, hexadecimal, octal and binary numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/swift/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/swift/string_feature.test new file mode 100644 index 0000000000..9490d8c0bf --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/swift/string_feature.test @@ -0,0 +1,39 @@ +"" +"fo\"o" +"foo\ +bar" +"foo \(42)" +"foo \(f("bar"))" + +---------------------------------------------------- + +[ + ["string", ["\"\""]], + ["string", ["\"fo\\\"o\""]], + ["string", ["\"foo\\\r\nbar\""]], + ["string", [ + "\"foo ", + ["interpolation", [ + ["delimiter", "\\("], + ["number", "42"], + ["delimiter", ")"] + ]], + "\"" + ]], + ["string", [ + "\"foo ", + ["interpolation", [ + ["delimiter", "\\("], + ["function", "f"], + ["punctuation", "("], + ["string", ["\"bar\""]], + ["punctuation", ")"], + ["delimiter", ")"] + ]], + "\"" + ]] +] + +---------------------------------------------------- + +Checks for strings and string interpolation. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/builtin_feature.test new file mode 100644 index 0000000000..e212483f1b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/builtin_feature.test @@ -0,0 +1,35 @@ +proc +return +class +error +eval +exit +for +foreach +if elseif else +switch +while +break +continue + +---------------------------------------------------- + +[ + ["builtin", "proc"], + ["builtin", "return"], + ["builtin", "class"], + ["builtin", "error"], + ["builtin", "eval"], + ["builtin", "exit"], + ["builtin", "for"], + ["builtin", "foreach"], + ["builtin", "if"], ["builtin", "elseif"], ["builtin", "else"], + ["builtin", "switch"], + ["builtin", "while"], + ["builtin", "break"], + ["builtin", "continue"] +] + +---------------------------------------------------- + +Checks for builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/comment_feature.test new file mode 100644 index 0000000000..710014b88d --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/comment_feature.test @@ -0,0 +1,13 @@ +# +# foobar + +---------------------------------------------------- + +[ + ["comment", "#"], + ["comment", "# foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/function_feature.test new file mode 100644 index 0000000000..d062385d64 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/function_feature.test @@ -0,0 +1,15 @@ +proc foo +proc Foobar +proc foo_bar_42 + +---------------------------------------------------- + +[ + ["builtin", "proc"], ["function", "foo"], + ["builtin", "proc"], ["function", "Foobar"], + ["builtin", "proc"], ["function", "foo_bar_42"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/keyword_feature.test new file mode 100644 index 0000000000..d8dbb5d09c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/keyword_feature.test @@ -0,0 +1,213 @@ +after +append +apply +array +auto_execok +auto_import +auto_load +auto_mkindex +auto_qualify +auto_reset +automkindex_old +bgerror +binary +catch +cd +chan +clock +close +concat +dde +dict +encoding +eof +exec +expr +fblocked +fconfigure +fcopy +file +fileevent +filename +flush +gets +glob +history +http +incr +info +interp +join +lappend +lassign +lindex +linsert +list +llength +load +lrange +lrepeat +lreplace +lreverse +lsearch +lset +lsort +mathfunc +mathop +memory +msgcat +namespace +open +package +parray +pid +pkg_mkIndex +platform +puts +pwd +re_syntax +read +refchan +regexp +registry +regsub +rename +Safe_Base +scan +seek +set +socket +source +split +string +subst +Tcl +tcl_endOfWord +tcl_findLibrary +tclstartOfNextWord +tclstartOfPreviousWord +tclwordBreakAfter +tclwordBreakBefore +tcltest +tclvars +tell +time +tm +trace +unknown +unload +unset +update +uplevel +vwait + +---------------------------------------------------- + +[ + ["keyword", "after"], + ["keyword", "append"], + ["keyword", "apply"], + ["keyword", "array"], + ["keyword", "auto_execok"], + ["keyword", "auto_import"], + ["keyword", "auto_load"], + ["keyword", "auto_mkindex"], + ["keyword", "auto_qualify"], + ["keyword", "auto_reset"], + ["keyword", "automkindex_old"], + ["keyword", "bgerror"], + ["keyword", "binary"], + ["keyword", "catch"], + ["keyword", "cd"], + ["keyword", "chan"], + ["keyword", "clock"], + ["keyword", "close"], + ["keyword", "concat"], + ["keyword", "dde"], + ["keyword", "dict"], + ["keyword", "encoding"], + ["keyword", "eof"], + ["keyword", "exec"], + ["keyword", "expr"], + ["keyword", "fblocked"], + ["keyword", "fconfigure"], + ["keyword", "fcopy"], + ["keyword", "file"], + ["keyword", "fileevent"], + ["keyword", "filename"], + ["keyword", "flush"], + ["keyword", "gets"], + ["keyword", "glob"], + ["keyword", "history"], + ["keyword", "http"], + ["keyword", "incr"], + ["keyword", "info"], + ["keyword", "interp"], + ["keyword", "join"], + ["keyword", "lappend"], + ["keyword", "lassign"], + ["keyword", "lindex"], + ["keyword", "linsert"], + ["keyword", "list"], + ["keyword", "llength"], + ["keyword", "load"], + ["keyword", "lrange"], + ["keyword", "lrepeat"], + ["keyword", "lreplace"], + ["keyword", "lreverse"], + ["keyword", "lsearch"], + ["keyword", "lset"], + ["keyword", "lsort"], + ["keyword", "mathfunc"], + ["keyword", "mathop"], + ["keyword", "memory"], + ["keyword", "msgcat"], + ["keyword", "namespace"], + ["keyword", "open"], + ["keyword", "package"], + ["keyword", "parray"], + ["keyword", "pid"], + ["keyword", "pkg_mkIndex"], + ["keyword", "platform"], + ["keyword", "puts"], + ["keyword", "pwd"], + ["keyword", "re_syntax"], + ["keyword", "read"], + ["keyword", "refchan"], + ["keyword", "regexp"], + ["keyword", "registry"], + ["keyword", "regsub"], + ["keyword", "rename"], + ["keyword", "Safe_Base"], + ["keyword", "scan"], + ["keyword", "seek"], + ["keyword", "set"], + ["keyword", "socket"], + ["keyword", "source"], + ["keyword", "split"], + ["keyword", "string"], + ["keyword", "subst"], + ["keyword", "Tcl"], + ["keyword", "tcl_endOfWord"], + ["keyword", "tcl_findLibrary"], + ["keyword", "tclstartOfNextWord"], + ["keyword", "tclstartOfPreviousWord"], + ["keyword", "tclwordBreakAfter"], + ["keyword", "tclwordBreakBefore"], + ["keyword", "tcltest"], + ["keyword", "tclvars"], + ["keyword", "tell"], + ["keyword", "time"], + ["keyword", "tm"], + ["keyword", "trace"], + ["keyword", "unknown"], + ["keyword", "unload"], + ["keyword", "unset"], + ["keyword", "update"], + ["keyword", "uplevel"], + ["keyword", "vwait"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/operator_feature.test new file mode 100644 index 0000000000..25426b41c1 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/operator_feature.test @@ -0,0 +1,45 @@ ++ +- +~ +! != +* ** +/ +% +< <= << +> >= >> +== +& && +| || +? +^ +eq +ne +in +ni + +---------------------------------------------------- + +[ + ["operator", "+"], + ["operator", "-"], + ["operator", "~"], + ["operator", "!"], ["operator", "!="], + ["operator", "*"], ["operator", "**"], + ["operator", "/"], + ["operator", "%"], + ["operator", "<"], ["operator", "<="], ["operator", "<<"], + ["operator", ">"], ["operator", ">="], ["operator", ">>"], + ["operator", "=="], + ["operator", "&"], ["operator", "&&"], + ["operator", "|"], ["operator", "||"], + ["operator", "?"], + ["operator", "^"], + ["operator", "eq"], + ["operator", "ne"], + ["operator", "in"], + ["operator", "ni"] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/scope_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/scope_feature.test new file mode 100644 index 0000000000..178e87756b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/scope_feature.test @@ -0,0 +1,15 @@ +global +upvar +variable + +---------------------------------------------------- + +[ + ["scope", "global"], + ["scope", "upvar"], + ["scope", "variable"] +] + +---------------------------------------------------- + +Checks for scopes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/string_feature.test new file mode 100644 index 0000000000..a7c3c948c0 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/string_feature.test @@ -0,0 +1,16 @@ +"" +"fo\"obar" +"fo\"o\ +bar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "\"fo\\\"o\\\r\nbar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/tcl/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/tcl/variable_feature.test new file mode 100644 index 0000000000..8b2ed07ed8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/tcl/variable_feature.test @@ -0,0 +1,31 @@ +$foo +$Foobar_42 +$::foo +$foo::bar42 + +${foobar} + +set foo bar +set Foobar_42 baz +set ::foo bar +set foo::bar42 baz + +---------------------------------------------------- + +[ + "$", ["variable", "foo"], + "\r\n$", ["variable", "Foobar_42"], + "\r\n$", ["variable", "::foo"], + "\r\n$", ["variable", "foo::bar42"], + + "\r\n\r\n$", ["variable", "{foobar}"], + + ["keyword", "set"], ["variable", "foo"], " bar\r\n", + ["keyword", "set"], ["variable", "Foobar_42"], " baz\r\n", + ["keyword", "set"], ["variable", "::foo"], " bar\r\n", + ["keyword", "set"], ["variable", "foo::bar42"], " baz" +] + +---------------------------------------------------- + +Checks for variables. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/acronym_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/acronym_feature.test new file mode 100644 index 0000000000..af50f41eab --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/acronym_feature.test @@ -0,0 +1,15 @@ +CSS(Cascading Style Sheet) +HTML(HyperText Markup Language) + +---------------------------------------------------- + +[ + ["phrase", [ + ["acronym", ["CSS", ["punctuation", "("], ["comment", "Cascading Style Sheet"], ["punctuation", ")"]]], + ["acronym", ["HTML", ["punctuation", "("], ["comment", "HyperText Markup Language"], ["punctuation", ")"]]] + ]] +] + +---------------------------------------------------- + +Checks for acronyms. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/block-tag_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/block-tag_feature.test new file mode 100644 index 0000000000..ce0e22462b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/block-tag_feature.test @@ -0,0 +1,131 @@ +h1. Header 1 + +h2>. Header 2 + +bq. A block quotation + +p<. Foo + +p=. Bar + +p<>. Baz + +p(. Foobar +baz + +p))). Foo + +h1(foo). Foo + +h2[en]. Bar + +h3{color: red}. Baz + +h4[fr]{text-decoration:underline;}(#bar). Foobar + +---------------------------------------------------- + +[ + ["phrase", [ + ["block-tag", [["tag", "h1"], ["punctuation", "."]]], + " Header 1" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "h2"], + ["modifier", [["punctuation", ">"]]], + ["punctuation", "."] + ]], + " Header 2" + ]], + ["phrase", [ + ["block-tag", [["tag", "bq"], ["punctuation", "."]]], + " A block quotation" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "p"], + ["modifier", [["punctuation", "<"]]], + ["punctuation", "."] + ]], + " Foo" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "p"], + ["modifier", [["punctuation", "="]]], + ["punctuation", "."] + ]], + " Bar" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "p"], + ["modifier", [["punctuation", "<"], ["punctuation", ">"]]], + ["punctuation", "."] + ]], + " Baz" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "p"], + ["modifier", [["punctuation", "("]]], + ["punctuation", "."] + ]], + " Foobar\r\nbaz" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "p"], + ["modifier", [["punctuation", ")"], ["punctuation", ")"], ["punctuation", ")"]]], + ["punctuation", "."] + ]], + " Foo" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "h1"], + ["modifier", [ + ["punctuation", "("], ["class-id", "foo"], ["punctuation", ")"] + ]], + ["punctuation", "."] + ]], + " Foo" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "h2"], + ["modifier", [ + ["punctuation", "["], ["lang", "en"], ["punctuation", "]"] + ]], + ["punctuation", "."] + ]], + " Bar" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "h3"], + ["modifier", [ + ["css", ["{color: red}"]] + ]], + ["punctuation", "."] + ]], + " Baz" + ]], + ["phrase", [ + ["block-tag", [ + ["tag", "h4"], + ["modifier", [ + ["punctuation", "["], ["lang", "fr"], ["punctuation", "]"], + ["css", ["{text-decoration:underline;}"]], + ["punctuation", "("], ["class-id", "#bar"], ["punctuation", ")"] + ]], + ["punctuation", "."] + ]], + " Foobar" + ]] +] + +---------------------------------------------------- + +Checks for tags at the beginning of a block and alignment modifiers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/footnote_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/footnote_feature.test new file mode 100644 index 0000000000..61e329d159 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/footnote_feature.test @@ -0,0 +1,15 @@ +Foo[1] +Bar[42] + +---------------------------------------------------- + +[ + ["phrase", [ + "Foo", ["footnote", [["punctuation", "["], "1", ["punctuation", "]"]]], + "\r\nBar", ["footnote", [["punctuation", "["], "42", ["punctuation", "]"]]] + ]] +] + +---------------------------------------------------- + +Checks for footnotes. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/image_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/image_feature.test new file mode 100644 index 0000000000..e43d737f70 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/image_feature.test @@ -0,0 +1,71 @@ +!foo.png! +!bar.jpg(Foo bar)! +!foo.png!:http://prismjs.com +!bar.jpg(Foo bar)!:http://www.example.com + +!bar.jpg! +!(foo)[en]{border:1px solid #ccc}foo.png! + +---------------------------------------------------- + +[ + ["phrase", [ + ["image", [ + ["punctuation", "!"], + ["source", "foo.png"], + ["punctuation", "!"] + ]], + ["image", [ + ["punctuation", "!"], + ["source", "bar.jpg(Foo bar)"], + ["punctuation", "!"] + ]], + ["image", [ + ["punctuation", "!"], + ["source", "foo.png"], + ["punctuation", "!"], + ["punctuation", ":"], + ["url", "http://prismjs.com"] + ]], + ["image", [ + ["punctuation", "!"], + ["source", "bar.jpg(Foo bar)"], + ["punctuation", "!"], + ["punctuation", ":"], + ["url", "http://www.example.com"] + ]] + ]], + + ["phrase", [ + ["image", [ + ["punctuation", "!"], + ["modifier", [ + ["punctuation", "<"] + ]], + ["source", "foo.png"], + ["punctuation", "!"] + ]], + ["image", [ + ["punctuation", "!"], + ["modifier", [ + ["punctuation", ">"] + ]], + ["source", "bar.jpg"], + ["punctuation", "!"] + ]], + ["image", [ + ["punctuation", "!"], + ["modifier", [ + ["punctuation", "("], ["class-id", "foo"], ["punctuation", ")"], + ["punctuation", "["], ["lang", "en"], ["punctuation", "]"], + ["css", ["{border:1px solid #ccc}"]] + ]], + ["source", "foo.png"], + ["punctuation", "!"] + ]] + ]] +] + +---------------------------------------------------- + +Checks for images. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/inline_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/inline_feature.test new file mode 100644 index 0000000000..dc5416c6d8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/inline_feature.test @@ -0,0 +1,166 @@ +*bold* +**bold** +_italic_ +__italic__ +??cite?? +@code@ ++inserted+ +-deleted- +%span% +^superscript^ +~subscript~ + +*{color:red}bold* +__(foo#bar)[fr]italique__ +%{text-decoration:underline}span *[en]bold*% + +*_a_ __b__ ??c?? @d@ +e+ -f- %g% ^h^ ~i~* +**_a_ __b__ ??c?? @d@ +e+ -f- %g% ^h^ ~i~** +_*a* **b** ??c?? @d@ +e+ -f- %g% ^h^ ~i~_ +__*a* **b** ??c?? @d@ +e+ -f- %g% ^h^ ~i~__ ++*a* **b** _c_ __d__ ??e?? @f@ -g- %h% ^i^ ~j~+ +-*a* **b** _c_ __d__ ??e?? @f@ +g+ %h% ^i^ ~j~- +%*a* **b** _c_ __d__ ??e?? @f@ +g+ -h- ^i^ ~j~% + +---------------------------------------------------- + +[ + ["phrase", [ + ["inline", [["punctuation", "*"], ["bold", ["bold"]], ["punctuation", "*"]]], + ["inline", [["punctuation", "**"], ["bold", ["bold"]], ["punctuation", "**"]]], + ["inline", [["punctuation", "_"], ["italic", ["italic"]], ["punctuation", "_"]]], + ["inline", [["punctuation", "__"], ["italic", ["italic"]], ["punctuation", "__"]]], + ["inline", [["punctuation", "??"], ["cite", "cite"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "code"], ["punctuation", "@"]]], + ["inline", [["punctuation", "+"], ["inserted", ["inserted"]], ["punctuation", "+"]]], + ["inline", [["punctuation", "-"], ["deleted", ["deleted"]], ["punctuation", "-"]]], + ["inline", [["punctuation", "%"], ["span", ["span"]], ["punctuation", "%"]]], + ["inline", [["punctuation", "^"], "superscript", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "subscript", ["punctuation", "~"]]] + ]], + + ["phrase", [ + ["inline", [ + ["punctuation", "*"], + ["modifier", [ + ["css", ["{color:red}"]] + ]], + ["bold", ["bold"]], + ["punctuation", "*"] + ]], + ["inline", [ + ["punctuation", "__"], + ["modifier", [ + ["punctuation", "("], ["class-id", "foo#bar"], ["punctuation", ")"], + ["punctuation", "["], ["lang", "fr"], ["punctuation", "]"] + ]], + ["italic", ["italique"]], + ["punctuation", "__"] + ]], + ["inline", [ + ["punctuation", "%"], + ["modifier", [ + ["css", ["{text-decoration:underline}"]] + ]], + ["span", [ + "span ", + ["inline", [ + ["punctuation", "*"], + ["modifier", [ + ["punctuation", "["], ["lang", "en"], ["punctuation", "]"] + ]], + ["bold", "bold"], + ["punctuation", "*"] + ]] + ]], + ["punctuation", "%"] + ]] + ]], + + ["phrase", [ + ["inline", [["punctuation", "*"], ["bold", [ + ["inline", [["punctuation", "_"], ["italic", "a"], ["punctuation", "_"]]], + ["inline", [["punctuation", "__"], ["italic", "b"], ["punctuation", "__"]]], + ["inline", [["punctuation", "??"], ["cite", "c"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "d"], ["punctuation", "@"]]], + ["inline", [["punctuation", "+"], ["inserted", "e"], ["punctuation", "+"]]], + ["inline", [["punctuation", "-"], ["deleted", "f"], ["punctuation", "-"]]], + ["inline", [["punctuation", "%"], ["span", "g"], ["punctuation", "%"]]], + ["inline", [["punctuation", "^"], "h", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "i", ["punctuation", "~"]]] + ]], ["punctuation", "*"]]], + ["inline", [["punctuation", "**"], ["bold", [ + ["inline", [["punctuation", "_"], ["italic", "a"], ["punctuation", "_"]]], + ["inline", [["punctuation", "__"], ["italic", "b"], ["punctuation", "__"]]], + ["inline", [["punctuation", "??"], ["cite", "c"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "d"], ["punctuation", "@"]]], + ["inline", [["punctuation", "+"], ["inserted", "e"], ["punctuation", "+"]]], + ["inline", [["punctuation", "-"], ["deleted", "f"], ["punctuation", "-"]]], + ["inline", [["punctuation", "%"], ["span", "g"], ["punctuation", "%"]]], + ["inline", [["punctuation", "^"], "h", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "i", ["punctuation", "~"]]] + ]], ["punctuation", "**"]]], + ["inline", [["punctuation", "_"], ["italic", [ + ["inline", [["punctuation", "*"], ["bold", "a"], ["punctuation", "*"]]], + ["inline", [["punctuation", "**"], ["bold", "b"], ["punctuation", "**"]]], + ["inline", [["punctuation", "??"], ["cite", "c"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "d"], ["punctuation", "@"]]], + ["inline", [["punctuation", "+"], ["inserted", "e"], ["punctuation", "+"]]], + ["inline", [["punctuation", "-"], ["deleted", "f"], ["punctuation", "-"]]], + ["inline", [["punctuation", "%"], ["span", "g"], ["punctuation", "%"]]], + ["inline", [["punctuation", "^"], "h", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "i", ["punctuation", "~"]]] + ]], ["punctuation", "_"]]], + ["inline", [["punctuation", "__"], ["italic", [ + ["inline", [["punctuation", "*"], ["bold", "a"], ["punctuation", "*"]]], + ["inline", [["punctuation", "**"], ["bold", "b"], ["punctuation", "**"]]], + ["inline", [["punctuation", "??"], ["cite", "c"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "d"], ["punctuation", "@"]]], + ["inline", [["punctuation", "+"], ["inserted", "e"], ["punctuation", "+"]]], + ["inline", [["punctuation", "-"], ["deleted", "f"], ["punctuation", "-"]]], + ["inline", [["punctuation", "%"], ["span", "g"], ["punctuation", "%"]]], + ["inline", [["punctuation", "^"], "h", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "i", ["punctuation", "~"]]] + ]], ["punctuation", "__"]]], + ["inline", [["punctuation", "+"], ["inserted", [ + ["inline", [["punctuation", "*"], ["bold", "a"], ["punctuation", "*"]]], + ["inline", [["punctuation", "**"], ["bold", "b"], ["punctuation", "**"]]], + ["inline", [["punctuation", "_"], ["italic", "c"], ["punctuation", "_"]]], + ["inline", [["punctuation", "__"], ["italic", "d"], ["punctuation", "__"]]], + ["inline", [["punctuation", "??"], ["cite", "e"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "f"], ["punctuation", "@"]]], + ["inline", [["punctuation", "-"], ["deleted", "g"], ["punctuation", "-"]]], + ["inline", [["punctuation", "%"], ["span", "h"], ["punctuation", "%"]]], + ["inline", [["punctuation", "^"], "i", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "j", ["punctuation", "~"]]] + ]], ["punctuation", "+"]]], + ["inline", [["punctuation", "-"], ["deleted", [ + ["inline", [["punctuation", "*"], ["bold", "a"], ["punctuation", "*"]]], + ["inline", [["punctuation", "**"], ["bold", "b"], ["punctuation", "**"]]], + ["inline", [["punctuation", "_"], ["italic", "c"], ["punctuation", "_"]]], + ["inline", [["punctuation", "__"], ["italic", "d"], ["punctuation", "__"]]], + ["inline", [["punctuation", "??"], ["cite", "e"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "f"], ["punctuation", "@"]]], + ["inline", [["punctuation", "+"], ["inserted", "g"], ["punctuation", "+"]]], + ["inline", [["punctuation", "%"], ["span", "h"], ["punctuation", "%"]]], + ["inline", [["punctuation", "^"], "i", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "j", ["punctuation", "~"]]] + ]], ["punctuation", "-"]]], + ["inline", [["punctuation", "%"], ["span", [ + ["inline", [["punctuation", "*"], ["bold", "a"], ["punctuation", "*"]]], + ["inline", [["punctuation", "**"], ["bold", "b"], ["punctuation", "**"]]], + ["inline", [["punctuation", "_"], ["italic", "c"], ["punctuation", "_"]]], + ["inline", [["punctuation", "__"], ["italic", "d"], ["punctuation", "__"]]], + ["inline", [["punctuation", "??"], ["cite", "e"], ["punctuation", "??"]]], + ["inline", [["punctuation", "@"], ["code", "f"], ["punctuation", "@"]]], + ["inline", [["punctuation", "+"], ["inserted", "g"], ["punctuation", "+"]]], + ["inline", [["punctuation", "-"], ["deleted", "h"], ["punctuation", "-"]]], + ["inline", [["punctuation", "^"], "i", ["punctuation", "^"]]], + ["inline", [["punctuation", "~"], "j", ["punctuation", "~"]]] + ]], ["punctuation", "%"]]] + ]] +] + +---------------------------------------------------- + +Checks for inline styles and nesting. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/link-ref_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/link-ref_feature.test new file mode 100644 index 0000000000..9036f6401c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/link-ref_feature.test @@ -0,0 +1,25 @@ +[foo]http://prismjs.com +[bar]http://www.example.com + +---------------------------------------------------- + +[ + ["phrase", [ + ["link-ref", [ + ["punctuation", "["], + ["string", "foo"], + ["punctuation", "]"], + ["url", "http://prismjs.com"] + ]], + ["link-ref", [ + ["punctuation", "["], + ["string", "bar"], + ["punctuation", "]"], + ["url", "http://www.example.com"] + ]] + ]] +] + +---------------------------------------------------- + +Checks for links references. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/link_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/link_feature.test new file mode 100644 index 0000000000..5694e5b21f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/link_feature.test @@ -0,0 +1,44 @@ +"Foo bar":http://prismjs.com +"Baz":foo +"Foobar":link-ref +"(foo)[en]{color:blue;}Foo":bar + +---------------------------------------------------- + +[ + ["phrase", [ + ["link", [ + ["punctuation", "\""], + ["text", "Foo bar"], + ["punctuation", "\""], ["punctuation", ":"], + ["url", "http://prismjs.com"] + ]], + ["link", [ + ["punctuation", "\""], + ["text", "Baz"], + ["punctuation", "\""], ["punctuation", ":"], + ["url", "foo"] + ]], + ["link", [ + ["punctuation", "\""], + ["text", "Foobar"], + ["punctuation", "\""], ["punctuation", ":"], + ["url", "link-ref"] + ]], + ["link", [ + ["punctuation", "\""], + ["modifier", [ + ["punctuation", "("], ["class-id", "foo"], ["punctuation", ")"], + ["punctuation", "["], ["lang", "en"], ["punctuation", "]"], + ["css", ["{color:blue;}"]] + ]], + ["text", "Foo"], + ["punctuation", "\""], ["punctuation", ":"], + ["url", "bar"] + ]] + ]] +] + +---------------------------------------------------- + +Checks for links. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/list_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/list_feature.test new file mode 100644 index 0000000000..4fe0f9d0b3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/list_feature.test @@ -0,0 +1,36 @@ +# foo +# bar +## baz +#[fr](#foo){background:pink} Foobar + +* foo +** bar +*** baz + +---------------------------------------------------- + +[ + ["phrase", [ + ["list", [["punctuation", "#"], " foo"]], + ["list", [["punctuation", "#"], " bar"]], + ["list", [["punctuation", "##"], " baz"]], + ["list", [ + ["punctuation", "#"], + ["modifier", [ + ["punctuation", "["], ["lang", "fr"], ["punctuation", "]"], + ["punctuation", "("], ["class-id", "#foo"], ["punctuation", ")"], + ["css", ["{background:pink}"]] + ]], + " Foobar" + ]] + ]], + ["phrase", [ + ["list", [["punctuation", "*"], " foo"]], + ["list", [["punctuation", "**"], " bar"]], + ["list", [["punctuation", "***"], " baz"]] + ]] +] + +---------------------------------------------------- + +Checks for list items. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/mark_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/mark_feature.test new file mode 100644 index 0000000000..7360ca5b92 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/mark_feature.test @@ -0,0 +1,17 @@ +Prism(C) +Foo(TM) +Foobar(R) + +---------------------------------------------------- + +[ + ["phrase", [ + "Prism", ["mark", [["punctuation", "("], "C", ["punctuation", ")"]]], + "\r\nFoo", ["mark", [["punctuation", "("], "TM", ["punctuation", ")"]]], + "\r\nFoobar", ["mark", [["punctuation", "("], "R", ["punctuation", ")"]]] + ]] +] + +---------------------------------------------------- + +Checks for marks symbols. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/textile/table_feature.test b/dashboard-ui/bower_components/prism/tests/languages/textile/table_feature.test new file mode 100644 index 0000000000..872c89dc61 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/textile/table_feature.test @@ -0,0 +1,177 @@ +|_. foo |<_. bar |>_. baz | +|<>. foo |(((. bar |)). baz | +|~. foo |^. bar |=. baz | +|/2. bar |\2. foo +bar +baz | +|\2~>. foobarbaz | + +(foo).|(bar).Baz| +(#foo).|(#bar).Baz| +[fr].|[en].Baz| +{color: blue}.|{font-weight:bold}.Baz| +(foo#bar){font-style:italic}[fr].|{background:red;}(bar#baz)[en].Baz| + +|*bold*|**bold**|_italic_|__italic__| +|??cite??|@code@|+inserted+|-deleted-| +|%span%|"foo":http://example.com|!foo.jpg!|bar[2]| +|\2.CSS(Cascading Style Sheet)|\2.Foo(TM)| + +---------------------------------------------------- + +[ + ["phrase", [ + ["table", [ + ["punctuation", "|"], + ["modifier", [["punctuation", "_"]]], + ["punctuation", "."], + " foo ", + ["punctuation", "|"], + ["modifier", [["punctuation", "<"], ["punctuation", "_"]]], + ["punctuation", "."], + " bar ", + ["punctuation", "|"], + ["modifier", [["punctuation", ">"], ["punctuation", "_"]]], + ["punctuation", "."], + " baz ", ["punctuation", "|"], + + ["punctuation", "|"], + ["modifier", [["punctuation", "<"], ["punctuation", ">"]]], + ["punctuation", "."], + " foo ", + ["punctuation", "|"], + ["modifier", [["punctuation", "("], ["punctuation", "("], ["punctuation", "("]]], + ["punctuation", "."], + " bar ", + ["punctuation", "|"], + ["modifier", [["punctuation", ")"], ["punctuation", ")"]]], + ["punctuation", "."], + " baz ", ["punctuation", "|"], + + ["punctuation", "|"], + ["modifier", [["punctuation", "~"]]], + ["punctuation", "."], + " foo ", + ["punctuation", "|"], + ["modifier", [["punctuation", "^"]]], + ["punctuation", "."], + " bar ", + ["punctuation", "|"], + ["modifier", [["punctuation", "="]]], + ["punctuation", "."], + " baz ", ["punctuation", "|"], + + ["punctuation", "|"], + ["modifier", [["punctuation", "/2"]]], + ["punctuation", "."], + " bar ", + ["punctuation", "|"], + ["modifier", [["punctuation", "\\2"]]], + ["punctuation", "."], + " foo\r\nbar\r\nbaz ", ["punctuation", "|"], + + ["punctuation", "|"], + ["modifier", [["punctuation", "\\2"], ["punctuation", "~"], ["punctuation", ">"]]], + ["punctuation", "."], + " foobarbaz ", ["punctuation", "|"] + ]] + ]], + + ["phrase", [ + ["table", [ + ["modifier", [ + ["punctuation", "("], ["class-id", "foo"], ["punctuation", ")"] + ]], + ["punctuation", "."], ["punctuation", "|"], + ["modifier", [ + ["punctuation", "("], ["class-id", "bar"], ["punctuation", ")"] + ]], + ["punctuation", "."], "Baz", ["punctuation", "|"], + + ["modifier", [ + ["punctuation", "("], ["class-id", "#foo"], ["punctuation", ")"] + ]], + ["punctuation", "."], ["punctuation", "|"], + ["modifier", [ + ["punctuation", "("], ["class-id", "#bar"], ["punctuation", ")"] + ]], + ["punctuation", "."], "Baz", ["punctuation", "|"], + + ["modifier", [ + ["punctuation", "["], ["lang", "fr"], ["punctuation", "]"] + ]], + ["punctuation", "."], ["punctuation", "|"], + ["modifier", [ + ["punctuation", "["], ["lang", "en"], ["punctuation", "]"] + ]], + ["punctuation", "."], "Baz", ["punctuation", "|"], + + ["modifier", [ + ["css", ["{color: blue}"]] + ]], + ["punctuation", "."], ["punctuation", "|"], + ["modifier", [ + ["css", ["{font-weight:bold}"]] + ]], + ["punctuation", "."], "Baz", ["punctuation", "|"], + + ["modifier", [ + ["punctuation", "("], ["class-id", "foo#bar"], ["punctuation", ")"], + ["css", ["{font-style:italic}"]], + ["punctuation", "["], ["lang", "fr"], ["punctuation", "]"] + ]], + ["punctuation", "."], ["punctuation", "|"], + ["modifier", [ + ["css", ["{background:red;}"]], + ["punctuation", "("], ["class-id", "bar#baz"], ["punctuation", ")"], + ["punctuation", "["], ["lang", "en"], ["punctuation", "]"] + ]], + ["punctuation", "."], "Baz", ["punctuation", "|"] + ]] + ]], + + ["phrase", [ + ["table", [ + ["punctuation", "|"], + ["inline", [["punctuation", "*"], ["bold", "bold"], ["punctuation", "*"]]], + ["punctuation", "|"], + ["inline", [["punctuation", "**"], ["bold", "bold"], ["punctuation", "**"]]], + ["punctuation", "|"], + ["inline", [["punctuation", "_"], ["italic", "italic"], ["punctuation", "_"]]], + ["punctuation", "|"], + ["inline", [["punctuation", "__"], ["italic", "italic"], ["punctuation", "__"]]], + ["punctuation", "|"], + + ["punctuation", "|"], + ["inline", [["punctuation", "??"], ["cite", "cite"], ["punctuation", "??"]]], + ["punctuation", "|"], + ["inline", [["punctuation", "@"], ["code", "code"], ["punctuation", "@"]]], + ["punctuation", "|"], + ["inline", [["punctuation", "+"], ["inserted", "inserted"], ["punctuation", "+"]]], + ["punctuation", "|"], + ["inline", [["punctuation", "-"], ["deleted", "deleted"], ["punctuation", "-"]]], + ["punctuation", "|"], + + ["punctuation", "|"], + ["inline", [["punctuation", "%"], ["span", "span"], ["punctuation", "%"]]], + ["punctuation", "|"], + ["link", [["punctuation", "\""], ["text", "foo"], ["punctuation", "\""], ["punctuation", ":"], ["url", "http://example.com"]]], + ["punctuation", "|"], + ["image", [["punctuation", "!"], ["source", "foo.jpg"], ["punctuation", "!"]]], + ["punctuation", "|"], + "bar", ["footnote", [["punctuation", "["], "2", ["punctuation", "]"]]], + ["punctuation", "|"], + + ["punctuation", "|"], ["modifier", [["punctuation", "\\2"]]], ["punctuation", "."], + ["acronym", ["CSS", ["punctuation", "("], ["comment", "Cascading Style Sheet"], ["punctuation", ")"]]], + ["punctuation", "|"], ["modifier", [["punctuation", "\\2"]]], ["punctuation", "."], + "Foo", ["mark", [["punctuation", "("], "TM", ["punctuation", ")"]]], + ["punctuation", "|"] + ]] + ]] +] + +---------------------------------------------------- + +Checks for tables with alignment modifiers and spanning. +Also checks for nesting inline styles. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/twig+jade/twig_inclusion.test b/dashboard-ui/bower_components/prism/tests/languages/twig+jade/twig_inclusion.test new file mode 100644 index 0000000000..7609ed77ef --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/twig+jade/twig_inclusion.test @@ -0,0 +1,19 @@ +:atpl + {{42}} + +---------------------------------------------------- + +[ + ["filter-atpl", [ + ["filter-name", ":atpl"], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["number", "42"], + ["rd", [["punctuation", "}}"]]] + ]] + ]] +] + +---------------------------------------------------- + +Checks for atpl filter (Twig) in Jade. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/twig/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/twig/boolean_feature.test new file mode 100644 index 0000000000..47f3c25ef3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/twig/boolean_feature.test @@ -0,0 +1,27 @@ +{{ null }} +{{- true -}} +{{ false }} + +---------------------------------------------------- + +[ + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["boolean", "null"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{-"]]], + ["boolean", "true"], + ["rd", [["punctuation", "-}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["boolean", "false"], + ["rd", [["punctuation", "}}"]]] + ]] +] + +---------------------------------------------------- + +Checks for booleans and null. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/twig/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/twig/comment_feature.test new file mode 100644 index 0000000000..827ed32e5e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/twig/comment_feature.test @@ -0,0 +1,16 @@ +{##} +{# foo #} +{# foo +bar #} + +---------------------------------------------------- + +[ + ["comment", "{##}"], + ["comment", "{# foo #}"], + ["comment", "{# foo\r\nbar #}"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/twig/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/twig/keyword_feature.test new file mode 100644 index 0000000000..a14dea864c --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/twig/keyword_feature.test @@ -0,0 +1,53 @@ +{% for foo in bar if baz %}{% endfor %} +{%- if foo() -%}{%- endif -%} +{% macro foobar() %}{% endmacro %} +{{ foo is even or bar is odd }} + +---------------------------------------------------- + +[ + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "for"]]], + ["property", "foo"], + ["operator", "in"], ["property", "bar"], + ["keyword", "if"], ["property", "baz"], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "endfor"]]], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%-"], ["keyword", "if"]]], + ["property", "foo"], ["punctuation", "("], ["punctuation", ")"], + ["rd", [["punctuation", "-%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%-"], ["keyword", "endif"]]], + ["rd", [["punctuation", "-%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "macro"]]], + ["property", "foobar"], ["punctuation", "("], ["punctuation", ")"], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "endmacro"]]], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "foo"], + ["operator", "is"], + ["keyword", "even"], + ["operator", "or"], + ["property", "bar"], + ["operator", "is"], + ["keyword", "odd"], + ["rd", [["punctuation", "}}"]]] + ]] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/twig/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/twig/number_feature.test new file mode 100644 index 0000000000..95f6a47ba8 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/twig/number_feature.test @@ -0,0 +1,45 @@ +{{ 0xBadFace }} +{{ 42 }} +{{ 3.14159 }} +{{ 3e15 }} +{{ 4.5E-4 }} +{{ 0.2e+8 }} + +---------------------------------------------------- + +[ + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["number", "0xBadFace"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["number", "42"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["number", "3.14159"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["number", "3e15"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["number", "4.5E-4"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["number", "0.2e+8"], + ["rd", [["punctuation", "}}"]]] + ]] +] + +---------------------------------------------------- + +Checks for hexadecimal and decimal numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/twig/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/twig/operator_feature.test new file mode 100644 index 0000000000..640138c8e5 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/twig/operator_feature.test @@ -0,0 +1,179 @@ +{% set a = 4 %} +{{ a == 4 }} +{{ b != c }} +{{ c < d }} +{{ d <= e }} +{{ e > f }} +{{ f >= g }} +{{ g + h }} +{{ h - i }} +{{ i ~ j }} +{{ j * k }} +{{ k ** l }} +{{ l / m }} +{{ m // n }} +{{ n % o }} +{{ o|default('foo') }} +{{ p ? q : r }} +{{ s ?: t }} + +{% if a and b or not c %} +{% for p in foo %} +{% if d b-and e and f b-xor g or h b-or i %} +{% if j starts with 'h' %} +{% if i ends with 'j' %} +{% if k is same as false %} +{% if l matches '/f[o]{2,}(?:bar)?' %} + +---------------------------------------------------- + +[ + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "set"]]], + ["property", "a"], ["operator", "="], ["number", "4"], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "a"], ["operator", "=="], ["number", "4"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "b"], ["operator", "!="], ["property", "c"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "c"], ["operator", "<"], ["property", "d"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "d"], ["operator", "<="], ["property", "e"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "e"], ["operator", ">"], ["property", "f"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "f"], ["operator", ">="], ["property", "g"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "g"], ["operator", "+"], ["property", "h"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "h"], ["operator", "-"], ["property", "i"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "i"], ["operator", "~"], ["property", "j"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "j"], ["operator", "*"], ["property", "k"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "k"], ["operator", "**"], ["property", "l"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "l"], ["operator", "/"], ["property", "m"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "m"], ["operator", "//"], ["property", "n"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "n"], ["operator", "%"], ["property", "o"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "o"], + ["operator", "|"], + ["property", "default"], + ["punctuation", "("], + ["string", [["punctuation", "'"], "foo", ["punctuation", "'"]]], + ["punctuation", ")"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "p"], ["operator", "?"], + ["property", "q"], ["punctuation", ":"], + ["property", "r"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["property", "s"], ["operator", "?:"], ["property", "t"], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "if"]]], + ["property", "a"], ["operator", "and"], ["property", "b"], + ["operator", "or"], ["operator", "not"], ["property", "c"], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "for"]]], + ["property", "p"], ["operator", "in"], ["property", "foo"], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "if"]]], + ["property", "d"], ["operator", "b-and"], + ["property", "e"], ["operator", "and"], + ["property", "f"], ["operator", "b-xor"], + ["property", "g"], ["operator", "or"], + ["property", "h"], ["operator", "b-or"], + ["property", "i"], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "if"]]], + ["property", "j"], + ["operator", "starts with"], + ["string", [["punctuation", "'"], "h", ["punctuation", "'"]]], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "if"]]], + ["property", "i"], + ["operator", "ends with"], + ["string", [["punctuation", "'"], "j", ["punctuation", "'"]]], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "if"]]], + ["property", "k"], ["operator", "is"], + ["operator", "same as"], ["boolean", "false"], + ["rd", [["punctuation", "%}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{%"], ["keyword", "if"]]], + ["property", "l"], ["operator", "matches"], + ["string", [["punctuation", "'"], "/f[o]{2,}(?:bar)?", ["punctuation", "'"]]], + ["rd", [["punctuation", "%}"]]] + ]] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/twig/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/twig/string_feature.test new file mode 100644 index 0000000000..e81837545f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/twig/string_feature.test @@ -0,0 +1,33 @@ +{{ '' }} +{{ "" }} +{{ "ba\"r" }} +{{ 'ba\'z' }} + +---------------------------------------------------- + +[ + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["string", [["punctuation", "'"], ["punctuation", "'"]]], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["string", [["punctuation", "\""], ["punctuation", "\""]]], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["string", [["punctuation", "\""], "ba\\\"r", ["punctuation", "\""]]], + ["rd", [["punctuation", "}}"]]] + ]], + ["tag", [ + ["ld", [["punctuation", "{{"]]], + ["string", [["punctuation", "'"], "ba\\'z", ["punctuation", "'"]]], + ["rd", [["punctuation", "}}"]]] + ]] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/typescript/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/typescript/keyword_feature.test new file mode 100644 index 0000000000..154766b721 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/typescript/keyword_feature.test @@ -0,0 +1,123 @@ +break +case +catch +class; +const +continue +debugger +default +delete +do +else +enum +export +extends; +false +finally +for +function +get +if +implements; +import +in +instanceof; +interface; +let +new; +null +package +private +protected +public +return +set +static +super +switch +this +throw +true +try +typeof +var +void +while +with +yield +module +declare +constructor +string +Function +any +number +boolean +Array +enum + +---------------------------------------------------- + +[ + ["keyword", "break"], + ["keyword", "case"], + ["keyword", "catch"], + ["keyword", "class"], ["punctuation", ";"], + ["keyword", "const"], + ["keyword", "continue"], + ["keyword", "debugger"], + ["keyword", "default"], + ["keyword", "delete"], + ["keyword", "do"], + ["keyword", "else"], + ["keyword", "enum"], + ["keyword", "export"], + ["keyword", "extends"], ["punctuation", ";"], + ["keyword", "false"], + ["keyword", "finally"], + ["keyword", "for"], + ["keyword", "function"], + ["keyword", "get"], + ["keyword", "if"], + ["keyword", "implements"], ["punctuation", ";"], + ["keyword", "import"], + ["keyword", "in"], + ["keyword", "instanceof"], ["punctuation", ";"], + ["keyword", "interface"], ["punctuation", ";"], + ["keyword", "let"], + ["keyword", "new"], ["punctuation", ";"], + ["keyword", "null"], + ["keyword", "package"], + ["keyword", "private"], + ["keyword", "protected"], + ["keyword", "public"], + ["keyword", "return"], + ["keyword", "set"], + ["keyword", "static"], + ["keyword", "super"], + ["keyword", "switch"], + ["keyword", "this"], + ["keyword", "throw"], + ["keyword", "true"], + ["keyword", "try"], + ["keyword", "typeof"], + ["keyword", "var"], + ["keyword", "void"], + ["keyword", "while"], + ["keyword", "with"], + ["keyword", "yield"], + ["keyword", "module"], + ["keyword", "declare"], + ["keyword", "constructor"], + ["keyword", "string"], + ["keyword", "Function"], + ["keyword", "any"], + ["keyword", "number"], + ["keyword", "boolean"], + ["keyword", "Array"], + ["keyword", "enum"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/comment_feature.test new file mode 100644 index 0000000000..ca7d27766a --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/comment_feature.test @@ -0,0 +1,18 @@ +// +// Foobar +/**/ +/* foo +bar */ + +---------------------------------------------------- + +[ + ["comment", "//"], + ["comment", "// Foobar"], + ["comment", "/**/"], + ["comment", "/* foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/constant_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/constant_feature.test new file mode 100644 index 0000000000..33dc2bc3a6 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/constant_feature.test @@ -0,0 +1,13 @@ +`define +`UNKNOWN + +---------------------------------------------------- + +[ + ["constant", "`define"], + ["constant", "`UNKNOWN"] +] + +---------------------------------------------------- + +Checks for user defined constants. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/function_feature.test new file mode 100644 index 0000000000..1d70542fc9 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/function_feature.test @@ -0,0 +1,15 @@ +foo() +foo_bar() +foo_BAR_42() + +---------------------------------------------------- + +[ + ["function", "foo"], ["punctuation", "("], ["punctuation", ")"], + ["function", "foo_bar"], ["punctuation", "("], ["punctuation", ")"], + ["function", "foo_BAR_42"], ["punctuation", "("], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/important_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/important_feature.test new file mode 100644 index 0000000000..12008820d4 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/important_feature.test @@ -0,0 +1,27 @@ +always_latch +always_comb +always_ff +always + +always_latch @ +always_comb @ +always_ff @ +always @ + +---------------------------------------------------- + +[ + ["important", "always_latch"], + ["important", "always_comb"], + ["important", "always_ff"], + ["important", "always"], + + ["important", "always_latch @"], + ["important", "always_comb @"], + ["important", "always_ff @"], + ["important", "always @"] +] + +---------------------------------------------------- + +Checks for logic blocks. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/keyword_feature.test new file mode 100644 index 0000000000..5d603ae1a7 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/keyword_feature.test @@ -0,0 +1,443 @@ +alias +and +assert +assign +assume +automatic +before +begin +bind +bins +binsof +bit +break +buf +bufif0 +bufif1 +byte +class +case +casex +casez +cell +chandle +clocking +cmos +config +const +constraint +context +continue +cover +covergroup +coverpoint +cross +deassign +default +defparam +design +disable +dist +do +edge +else +end +endcase +endclass +endclocking +endconfig +endfunction +endgenerate +endgroup +endinterface +endmodule +endpackage +endprimitive +endprogram +endproperty +endspecify +endsequence +endtable +endtask +enum +event +expect +export +extends +extern +final +first_match +for +force +foreach +forever +fork +forkjoin +function +generate +genvar +highz0 +highz1 +if +iff +ifnone +ignore_bins +illegal_bins +import +incdir +include +initial +inout +input +inside +instance +int +integer +interface +intersect +join +join_any +join_none +large +liblist +library +local +localparam +logic +longint +macromodule +matches +medium +modport +module +nand +negedge +new +nmos +nor +noshowcancelled +not +notif0 +notif1 +null +or +output +package +packed +parameter +pmos +posedge +primitive +priority +program +property +protected +pull0 +pull1 +pulldown +pullup +pulsestyle_onevent +pulsestyle_ondetect +pure +rand +randc +randcase +randsequence +rcmos +real +realtime +ref +reg +release +repeat +return +rnmos +rpmos +rtran +rtranif0 +rtranif1 +scalared +sequence +shortint +shortreal +showcancelled +signed +small +solve +specify +specparam +static +string +strong0 +strong1 +struct +super +supply0 +supply1 +table +tagged +task +this +throughout +time +timeprecision +timeunit +tran +tranif0 +tranif1 +tri +tri0 +tri1 +triand +trior +trireg +type +typedef +union +unique +unsigned +use +uwire +var +vectored +virtual +void +wait +wait_order +wand +weak0 +weak1 +while +wildcard +wire +with +within +wor +xnor +xor + +---------------------------------------------------- + +[ + ["keyword", "alias"], + ["keyword", "and"], + ["keyword", "assert"], + ["keyword", "assign"], + ["keyword", "assume"], + ["keyword", "automatic"], + ["keyword", "before"], + ["keyword", "begin"], + ["keyword", "bind"], + ["keyword", "bins"], + ["keyword", "binsof"], + ["keyword", "bit"], + ["keyword", "break"], + ["keyword", "buf"], + ["keyword", "bufif0"], + ["keyword", "bufif1"], + ["keyword", "byte"], + ["keyword", "class"], + ["keyword", "case"], + ["keyword", "casex"], + ["keyword", "casez"], + ["keyword", "cell"], + ["keyword", "chandle"], + ["keyword", "clocking"], + ["keyword", "cmos"], + ["keyword", "config"], + ["keyword", "const"], + ["keyword", "constraint"], + ["keyword", "context"], + ["keyword", "continue"], + ["keyword", "cover"], + ["keyword", "covergroup"], + ["keyword", "coverpoint"], + ["keyword", "cross"], + ["keyword", "deassign"], + ["keyword", "default"], + ["keyword", "defparam"], + ["keyword", "design"], + ["keyword", "disable"], + ["keyword", "dist"], + ["keyword", "do"], + ["keyword", "edge"], + ["keyword", "else"], + ["keyword", "end"], + ["keyword", "endcase"], + ["keyword", "endclass"], + ["keyword", "endclocking"], + ["keyword", "endconfig"], + ["keyword", "endfunction"], + ["keyword", "endgenerate"], + ["keyword", "endgroup"], + ["keyword", "endinterface"], + ["keyword", "endmodule"], + ["keyword", "endpackage"], + ["keyword", "endprimitive"], + ["keyword", "endprogram"], + ["keyword", "endproperty"], + ["keyword", "endspecify"], + ["keyword", "endsequence"], + ["keyword", "endtable"], + ["keyword", "endtask"], + ["keyword", "enum"], + ["keyword", "event"], + ["keyword", "expect"], + ["keyword", "export"], + ["keyword", "extends"], + ["keyword", "extern"], + ["keyword", "final"], + ["keyword", "first_match"], + ["keyword", "for"], + ["keyword", "force"], + ["keyword", "foreach"], + ["keyword", "forever"], + ["keyword", "fork"], + ["keyword", "forkjoin"], + ["keyword", "function"], + ["keyword", "generate"], + ["keyword", "genvar"], + ["keyword", "highz0"], + ["keyword", "highz1"], + ["keyword", "if"], + ["keyword", "iff"], + ["keyword", "ifnone"], + ["keyword", "ignore_bins"], + ["keyword", "illegal_bins"], + ["keyword", "import"], + ["keyword", "incdir"], + ["keyword", "include"], + ["keyword", "initial"], + ["keyword", "inout"], + ["keyword", "input"], + ["keyword", "inside"], + ["keyword", "instance"], + ["keyword", "int"], + ["keyword", "integer"], + ["keyword", "interface"], + ["keyword", "intersect"], + ["keyword", "join"], + ["keyword", "join_any"], + ["keyword", "join_none"], + ["keyword", "large"], + ["keyword", "liblist"], + ["keyword", "library"], + ["keyword", "local"], + ["keyword", "localparam"], + ["keyword", "logic"], + ["keyword", "longint"], + ["keyword", "macromodule"], + ["keyword", "matches"], + ["keyword", "medium"], + ["keyword", "modport"], + ["keyword", "module"], + ["keyword", "nand"], + ["keyword", "negedge"], + ["keyword", "new"], + ["keyword", "nmos"], + ["keyword", "nor"], + ["keyword", "noshowcancelled"], + ["keyword", "not"], + ["keyword", "notif0"], + ["keyword", "notif1"], + ["keyword", "null"], + ["keyword", "or"], + ["keyword", "output"], + ["keyword", "package"], + ["keyword", "packed"], + ["keyword", "parameter"], + ["keyword", "pmos"], + ["keyword", "posedge"], + ["keyword", "primitive"], + ["keyword", "priority"], + ["keyword", "program"], + ["keyword", "property"], + ["keyword", "protected"], + ["keyword", "pull0"], + ["keyword", "pull1"], + ["keyword", "pulldown"], + ["keyword", "pullup"], + ["keyword", "pulsestyle_onevent"], + ["keyword", "pulsestyle_ondetect"], + ["keyword", "pure"], + ["keyword", "rand"], + ["keyword", "randc"], + ["keyword", "randcase"], + ["keyword", "randsequence"], + ["keyword", "rcmos"], + ["keyword", "real"], + ["keyword", "realtime"], + ["keyword", "ref"], + ["keyword", "reg"], + ["keyword", "release"], + ["keyword", "repeat"], + ["keyword", "return"], + ["keyword", "rnmos"], + ["keyword", "rpmos"], + ["keyword", "rtran"], + ["keyword", "rtranif0"], + ["keyword", "rtranif1"], + ["keyword", "scalared"], + ["keyword", "sequence"], + ["keyword", "shortint"], + ["keyword", "shortreal"], + ["keyword", "showcancelled"], + ["keyword", "signed"], + ["keyword", "small"], + ["keyword", "solve"], + ["keyword", "specify"], + ["keyword", "specparam"], + ["keyword", "static"], + ["keyword", "string"], + ["keyword", "strong0"], + ["keyword", "strong1"], + ["keyword", "struct"], + ["keyword", "super"], + ["keyword", "supply0"], + ["keyword", "supply1"], + ["keyword", "table"], + ["keyword", "tagged"], + ["keyword", "task"], + ["keyword", "this"], + ["keyword", "throughout"], + ["keyword", "time"], + ["keyword", "timeprecision"], + ["keyword", "timeunit"], + ["keyword", "tran"], + ["keyword", "tranif0"], + ["keyword", "tranif1"], + ["keyword", "tri"], + ["keyword", "tri0"], + ["keyword", "tri1"], + ["keyword", "triand"], + ["keyword", "trior"], + ["keyword", "trireg"], + ["keyword", "type"], + ["keyword", "typedef"], + ["keyword", "union"], + ["keyword", "unique"], + ["keyword", "unsigned"], + ["keyword", "use"], + ["keyword", "uwire"], + ["keyword", "var"], + ["keyword", "vectored"], + ["keyword", "virtual"], + ["keyword", "void"], + ["keyword", "wait"], + ["keyword", "wait_order"], + ["keyword", "wand"], + ["keyword", "weak0"], + ["keyword", "weak1"], + ["keyword", "while"], + ["keyword", "wildcard"], + ["keyword", "wire"], + ["keyword", "with"], + ["keyword", "within"], + ["keyword", "wor"], + ["keyword", "xnor"], + ["keyword", "xor"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/number_feature.test new file mode 100644 index 0000000000..3d2bf4815e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/number_feature.test @@ -0,0 +1,39 @@ +#1 +##42 + +'h 12 +6'h 12 +8'B0010_1010 +123 +8'o 77 +'h x +16'h ???? + +3.14159 +4e8 +3.2E-14 +0.7e+8 + +---------------------------------------------------- + +[ + ["number", "#1"], + ["number", "##42"], + + ["number", "'h 12"], + ["number", "6'h 12"], + ["number", "8'B0010_1010"], + ["number", "123"], + ["number", "8'o 77"], + ["number", "'h x"], + ["number", "16'h ????"], + + ["number", "3.14159"], + ["number", "4e8"], + ["number", "3.2E-14"], + ["number", "0.7e+8"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/operator_feature.test new file mode 100644 index 0000000000..a19deb729e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/operator_feature.test @@ -0,0 +1,39 @@ +! ~ & | +~& ~| ^ +~^ ^~ ++ - { } +* ** / % +<< >> <<< >>> +< <= > >= +== != === !== +==? !=? +&& || ? +-> <-> +++ -- ++= -= /= *= +%= &= |= ^= +<<= >>= <<<= >>>= + +---------------------------------------------------- + +[ + ["operator", "!"], ["operator", "~"], ["operator", "&"], ["operator", "|"], + ["operator", "~&"], ["operator", "~|"], ["operator", "^"], + ["operator", "~^"], ["operator", "^~"], + ["operator", "+"], ["operator", "-"], ["operator", "{"], ["operator", "}"], + ["operator", "*"], ["operator", "**"], ["operator", "/"], ["operator", "%"], + ["operator", "<<"], ["operator", ">>"], ["operator", "<<<"], ["operator", ">>>"], + ["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="], + ["operator", "=="], ["operator", "!="], ["operator", "==="], ["operator", "!=="], + ["operator", "==?"], ["operator", "!=?"], + ["operator", "&&"], ["operator", "||"], ["operator", "?"], + ["operator", "->"], ["operator", "<->"], + ["operator", "++"], ["operator", "--"], + ["operator", "+="], ["operator", "-="], ["operator", "/="], ["operator", "*="], + ["operator", "%="], ["operator", "&="], ["operator", "|="], ["operator", "^="], + ["operator", "<<="], ["operator", ">>="], ["operator", "<<<="], ["operator", ">>>="] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/property_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/property_feature.test new file mode 100644 index 0000000000..f11e148cca --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/property_feature.test @@ -0,0 +1,11 @@ +$display() + +---------------------------------------------------- + +[ + ["property", "$display"], ["punctuation", "("], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for kernel functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/verilog/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/verilog/string_feature.test new file mode 100644 index 0000000000..bfafa46637 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/verilog/string_feature.test @@ -0,0 +1,16 @@ +"" +"fo\"obar" +"foo\ +bar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"obar\""], + ["string", "\"foo\\\r\nbar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/boolean_feature.test new file mode 100644 index 0000000000..a40f8d95d2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/boolean_feature.test @@ -0,0 +1,13 @@ +true +false + +---------------------------------------------------- + +[ + ["boolean", "true"], + ["boolean", "false"] +] + +---------------------------------------------------- + +Checks for booleans. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/comment_feature.test new file mode 100644 index 0000000000..eaca8704f9 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/comment_feature.test @@ -0,0 +1,13 @@ +-- Foo +--foobar + +---------------------------------------------------- + +[ + ["comment", "-- Foo"], + ["comment", "--foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/constant_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/constant_feature.test new file mode 100644 index 0000000000..4b4bc81165 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/constant_feature.test @@ -0,0 +1,13 @@ +use +library + +---------------------------------------------------- + +[ + ["constant", "use"], + ["constant", "library"] +] + +---------------------------------------------------- + +Checks for constants. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/function_feature.test new file mode 100644 index 0000000000..397f428aa9 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/function_feature.test @@ -0,0 +1,29 @@ +Bit_vector(7 downto 0) +DataBus(7) +function BOOL_TO_SL(X : boolean) +function "*"(a : resistance; b : capacitance) + +---------------------------------------------------- + +[ + ["function", "Bit_vector"], + ["punctuation", "("], ["number", "7"], + ["keyword", "downto"], ["number", "0"], ["punctuation", ")"], + + ["function", "DataBus"], + ["punctuation", "("], ["number", "7"], ["punctuation", ")"], + + ["keyword", "function"], ["function", "BOOL_TO_SL"], + ["punctuation", "("], "X ", + ["punctuation", ":"], " boolean", ["punctuation", ")"], + + ["keyword", "function"], ["quoted-function", "\"*\""], + ["punctuation", "("], "a ", + ["punctuation", ":"], " resistance", + ["punctuation", ";"], " b ", + ["punctuation", ":"], " capacitance", ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for functions and operator overloading. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/keyword_feature.test new file mode 100644 index 0000000000..9395bf38e2 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/keyword_feature.test @@ -0,0 +1,229 @@ +A'active +A'ascending +A'base +A'delayed +A'driving +A'driving_value +A'event +A'high +A'image +A'instance_name +A'last_active +A'last_event +A'last_value +A'left +A'leftof +A'length +A'low +A'path_name +A'pos +A'pred +A'quiet +A'range +A'reverse_range +A'right +A'rightof +A'simple_name +A'stable +A'succ +A'transaction +A'val +A'value +access +after +alias +all +architecture +array +assert +attribute +begin +block +body +buffer +bus +case +component +configuration +constant +disconnect +downto +else +elsif +end +entity +exit +file +for +function +generate +generic +group +guarded +if +impure +in +inertial +inout +is +label +linkage +literal +loop +map +new +next +null +of +on +open +others +out +package +port +postponed +procedure +process +pure +range +record +register +reject +report +return +select +severity +shared +signal +subtype +then +to +transport +type +unaffected +units +until +variable +wait +when +while +with + +---------------------------------------------------- + +[ + "A", ["keyword", "'active"], + "\r\nA", ["keyword", "'ascending"], + "\r\nA", ["keyword", "'base"], + "\r\nA", ["keyword", "'delayed"], + "\r\nA", ["keyword", "'driving"], + "\r\nA", ["keyword", "'driving_value"], + "\r\nA", ["keyword", "'event"], + "\r\nA", ["keyword", "'high"], + "\r\nA", ["keyword", "'image"], + "\r\nA", ["keyword", "'instance_name"], + "\r\nA", ["keyword", "'last_active"], + "\r\nA", ["keyword", "'last_event"], + "\r\nA", ["keyword", "'last_value"], + "\r\nA", ["keyword", "'left"], + "\r\nA", ["keyword", "'leftof"], + "\r\nA", ["keyword", "'length"], + "\r\nA", ["keyword", "'low"], + "\r\nA", ["keyword", "'path_name"], + "\r\nA", ["keyword", "'pos"], + "\r\nA", ["keyword", "'pred"], + "\r\nA", ["keyword", "'quiet"], + "\r\nA", ["keyword", "'range"], + "\r\nA", ["keyword", "'reverse_range"], + "\r\nA", ["keyword", "'right"], + "\r\nA", ["keyword", "'rightof"], + "\r\nA", ["keyword", "'simple_name"], + "\r\nA", ["keyword", "'stable"], + "\r\nA", ["keyword", "'succ"], + "\r\nA", ["keyword", "'transaction"], + "\r\nA", ["keyword", "'val"], + "\r\nA", ["keyword", "'value"], + ["keyword", "access"], + ["keyword", "after"], + ["keyword", "alias"], + ["keyword", "all"], + ["keyword", "architecture"], + ["keyword", "array"], + ["keyword", "assert"], + ["keyword", "attribute"], + ["keyword", "begin"], + ["keyword", "block"], + ["keyword", "body"], + ["keyword", "buffer"], + ["keyword", "bus"], + ["keyword", "case"], + ["keyword", "component"], + ["keyword", "configuration"], + ["keyword", "constant"], + ["keyword", "disconnect"], + ["keyword", "downto"], + ["keyword", "else"], + ["keyword", "elsif"], + ["keyword", "end"], + ["keyword", "entity"], + ["keyword", "exit"], + ["keyword", "file"], + ["keyword", "for"], + ["keyword", "function"], + ["keyword", "generate"], + ["keyword", "generic"], + ["keyword", "group"], + ["keyword", "guarded"], + ["keyword", "if"], + ["keyword", "impure"], + ["keyword", "in"], + ["keyword", "inertial"], + ["keyword", "inout"], + ["keyword", "is"], + ["keyword", "label"], + ["keyword", "linkage"], + ["keyword", "literal"], + ["keyword", "loop"], + ["keyword", "map"], + ["keyword", "new"], + ["keyword", "next"], + ["keyword", "null"], + ["keyword", "of"], + ["keyword", "on"], + ["keyword", "open"], + ["keyword", "others"], + ["keyword", "out"], + ["keyword", "package"], + ["keyword", "port"], + ["keyword", "postponed"], + ["keyword", "procedure"], + ["keyword", "process"], + ["keyword", "pure"], + ["keyword", "range"], + ["keyword", "record"], + ["keyword", "register"], + ["keyword", "reject"], + ["keyword", "report"], + ["keyword", "return"], + ["keyword", "select"], + ["keyword", "severity"], + ["keyword", "shared"], + ["keyword", "signal"], + ["keyword", "subtype"], + ["keyword", "then"], + ["keyword", "to"], + ["keyword", "transport"], + ["keyword", "type"], + ["keyword", "unaffected"], + ["keyword", "units"], + ["keyword", "until"], + ["keyword", "variable"], + ["keyword", "wait"], + ["keyword", "when"], + ["keyword", "while"], + ["keyword", "with"] +] + +---------------------------------------------------- + +Checks for all keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/number_feature.test new file mode 100644 index 0000000000..374a804bbf --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/number_feature.test @@ -0,0 +1,37 @@ +'0' +'1' +'x' +'z' + +42 +42_000 +3.14159 +2.4E8 +3.0e-2 +7.54e+24 + +2#1010_1010# +16#BadFace# + +---------------------------------------------------- + +[ + ["number", "'0'"], + ["number", "'1'"], + ["number", "'x'"], + ["number", "'z'"], + + ["number", "42"], + ["number", "42_000"], + ["number", "3.14159"], + ["number", "2.4E8"], + ["number", "3.0e-2"], + ["number", "7.54e+24"], + + ["number", "2#1010_1010#"], + ["number", "16#BadFace#"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/operator_feature.test new file mode 100644 index 0000000000..ad7e0c5bc3 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/operator_feature.test @@ -0,0 +1,29 @@ +> >= +< <= +:= ++ - +* / +& = +abs not mod rem +sll srl sla sra +rol ror and or +nand xnor xor nor + +---------------------------------------------------- + +[ + ["operator", ">"], ["operator", ">="], + ["operator", "<"], ["operator", "<="], + ["operator", ":="], + ["operator", "+"], ["operator", "-"], + ["operator", "*"], ["operator", "/"], + ["operator", "&"], ["operator", "="], + ["operator", "abs"], ["operator", "not"], ["operator", "mod"], ["operator", "rem"], + ["operator", "sll"], ["operator", "srl"], ["operator", "sla"], ["operator", "sra"], + ["operator", "rol"], ["operator", "ror"], ["operator", "and"], ["operator", "or"], + ["operator", "nand"], ["operator", "xnor"], ["operator", "xor"], ["operator", "nor"] +] + +---------------------------------------------------- + +Checks for operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/string_feature.test new file mode 100644 index 0000000000..48595d1cbd --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/string_feature.test @@ -0,0 +1,16 @@ +"" +"fo\"o" +"fo\"o\ +bar" + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"fo\\\"o\""], + ["string", "\"fo\\\"o\\\r\nbar\""] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vhdl/vhdl-vectors_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vhdl/vhdl-vectors_feature.test new file mode 100644 index 0000000000..51702580cb --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vhdl/vhdl-vectors_feature.test @@ -0,0 +1,21 @@ +B"1111_1111" +O"353" +X"AA55" +"010101" +"Z" +"X" + +---------------------------------------------------- + +[ + ["vhdl-vectors", "B\"1111_1111\""], + ["vhdl-vectors", "O\"353\""], + ["vhdl-vectors", "X\"AA55\""], + ["vhdl-vectors", "\"010101\""], + ["vhdl-vectors", "\"Z\""], + ["vhdl-vectors", "\"X\""] +] + +---------------------------------------------------- + +Checks for vectors \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vim/builtin_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vim/builtin_feature.test new file mode 100644 index 0000000000..518af1d6bd --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vim/builtin_feature.test @@ -0,0 +1,2289 @@ +autocmd +acd +ai +akm +aleph +allowrevins +altkeymap +ambiwidth +ambw +anti +antialias +arab +arabic +arabicshape +ari +arshape +autochdir +autoindent +autoread +autowrite +autowriteall +aw +awa +background +backspace +backup +backupcopy +backupdir +backupext +backupskip +balloondelay +ballooneval +balloonexpr +bdir +bdlay +beval +bex +bexpr +bg +bh +bin +binary +biosk +bioskey +bk +bkc +bomb +breakat +brk +browsedir +bs +bsdir +bsk +bt +bufhidden +buflisted +buftype +casemap +ccv +cdpath +cedit +cfu +ch +charconvert +ci +cin +cindent +cink +cinkeys +cino +cinoptions +cinw +cinwords +clipboard +cmdheight +cmdwinheight +cmp +cms +columns +com +comments +commentstring +compatible +complete +completefunc +completeopt +consk +conskey +copyindent +cot +cpo +cpoptions +cpt +cscopepathcomp +cscopeprg +cscopequickfix +cscopetag +cscopetagorder +cscopeverbose +cspc +csprg +csqf +cst +csto +csverb +cuc +cul +cursorcolumn +cursorline +cwh +debug +deco +def +define +delcombine +dex +dg +dict +dictionary +diff +diffexpr +diffopt +digraph +dip +dir +directory +dy +ea +ead +eadirection +eb +ed +edcompatible +ef +efm +ei +ek +enc +encoding +endofline +eol +ep +equalalways +equalprg +errorbells +errorfile +errorformat +esckeys +et +eventignore +expandtab +exrc +fcl +fcs +fdc +fde +fdi +fdl +fdls +fdm +fdn +fdo +fdt +fen +fenc +fencs +fex +ff +ffs +fileencoding +fileencodings +fileformat +fileformats +fillchars +fk +fkmap +flp +fml +fmr +foldcolumn +foldenable +foldexpr +foldignore +foldlevel +foldlevelstart +foldmarker +foldmethod +foldminlines +foldnestmax +foldtext +formatexpr +formatlistpat +formatoptions +formatprg +fp +fs +fsync +ft +gcr +gd +gdefault +gfm +gfn +gfs +gfw +ghr +gp +grepformat +grepprg +gtl +gtt +guicursor +guifont +guifontset +guifontwide +guiheadroom +guioptions +guipty +guitablabel +guitabtooltip +helpfile +helpheight +helplang +hf +hh +hi +hidden +highlight +hk +hkmap +hkmapp +hkp +hl +hlg +hls +hlsearch +ic +icon +iconstring +ignorecase +im +imactivatekey +imak +imc +imcmdline +imd +imdisable +imi +iminsert +ims +imsearch +inc +include +includeexpr +incsearch +inde +indentexpr +indentkeys +indk +inex +inf +infercase +insertmode +isf +isfname +isi +isident +isk +iskeyword +isprint +joinspaces +js +key +keymap +keymodel +keywordprg +km +kmp +kp +langmap +langmenu +laststatus +lazyredraw +lbr +lcs +linebreak +lines +linespace +lisp +lispwords +listchars +loadplugins +lpl +lsp +lz +macatsui +magic +makeef +makeprg +matchpairs +matchtime +maxcombine +maxfuncdepth +maxmapdepth +maxmem +maxmempattern +maxmemtot +mco +mef +menuitems +mfd +mh +mis +mkspellmem +ml +mls +mm +mmd +mmp +mmt +modeline +modelines +modifiable +modified +more +mouse +mousef +mousefocus +mousehide +mousem +mousemodel +mouses +mouseshape +mouset +mousetime +mp +mps +msm +mzq +mzquantum +nf +nrformats +numberwidth +nuw +odev +oft +ofu +omnifunc +opendevice +operatorfunc +opfunc +osfiletype +pa +para +paragraphs +paste +pastetoggle +patchexpr +patchmode +path +pdev +penc +pex +pexpr +pfn +ph +pheader +pi +pm +pmbcs +pmbfn +popt +preserveindent +previewheight +previewwindow +printdevice +printencoding +printexpr +printfont +printheader +printmbcharset +printmbfont +printoptions +prompt +pt +pumheight +pvh +pvw +qe +quoteescape +readonly +remap +report +restorescreen +revins +rightleft +rightleftcmd +rl +rlc +ro +rs +rtp +ruf +ruler +rulerformat +runtimepath +sbo +sc +scb +scr +scroll +scrollbind +scrolljump +scrolloff +scrollopt +scs +sect +sections +secure +sel +selection +selectmode +sessionoptions +sft +shcf +shellcmdflag +shellpipe +shellquote +shellredir +shellslash +shelltemp +shelltype +shellxquote +shiftround +shiftwidth +shm +shortmess +shortname +showbreak +showcmd +showfulltag +showmatch +showmode +showtabline +shq +si +sidescroll +sidescrolloff +siso +sj +slm +smartcase +smartindent +smarttab +smc +smd +softtabstop +sol +spc +spell +spellcapcheck +spellfile +spelllang +spellsuggest +spf +spl +splitbelow +splitright +sps +sr +srr +ss +ssl +ssop +stal +startofline +statusline +stl +stmp +su +sua +suffixes +suffixesadd +sw +swapfile +swapsync +swb +swf +switchbuf +sws +sxq +syn +synmaxcol +syntax +tabline +tabpagemax +tabstop +tagbsearch +taglength +tagrelative +tagstack +tal +tb +tbi +tbidi +tbis +tbs +tenc +term +termbidi +termencoding +terse +textauto +textmode +textwidth +tgst +thesaurus +tildeop +timeout +timeoutlen +title +titlelen +titleold +titlestring +toolbar +toolbariconsize +top +tpm +tsl +tsr +ttimeout +ttimeoutlen +ttm +tty +ttybuiltin +ttyfast +ttym +ttymouse +ttyscroll +ttytype +tw +tx +uc +ul +undolevels +updatecount +updatetime +ut +vb +vbs +vdir +verbosefile +vfile +viewdir +viewoptions +viminfo +virtualedit +visualbell +vop +wak +warn +wb +wc +wcm +wd +weirdinvert +wfh +wfw +whichwrap +wi +wig +wildchar +wildcharm +wildignore +wildmenu +wildmode +wildoptions +wim +winaltkeys +window +winfixheight +winfixwidth +winheight +winminheight +winminwidth +winwidth +wiv +wiw +wm +wmh +wmnu +wmw +wop +wrap +wrapmargin +wrapscan +writeany +writebackup +writedelay +ww +noacd +noai +noakm +noallowrevins +noaltkeymap +noanti +noantialias +noar +noarab +noarabic +noarabicshape +noari +noarshape +noautochdir +noautoindent +noautoread +noautowrite +noautowriteall +noaw +noawa +nobackup +noballooneval +nobeval +nobin +nobinary +nobiosk +nobioskey +nobk +nobl +nobomb +nobuflisted +nocf +noci +nocin +nocindent +nocompatible +noconfirm +noconsk +noconskey +nocopyindent +nocp +nocscopetag +nocscopeverbose +nocst +nocsverb +nocuc +nocul +nocursorcolumn +nocursorline +nodeco +nodelcombine +nodg +nodiff +nodigraph +nodisable +noea +noeb +noed +noedcompatible +noek +noendofline +noeol +noequalalways +noerrorbells +noesckeys +noet +noex +noexpandtab +noexrc +nofen +nofk +nofkmap +nofoldenable +nogd +nogdefault +noguipty +nohid +nohidden +nohk +nohkmap +nohkmapp +nohkp +nohls +noic +noicon +noignorecase +noim +noimc +noimcmdline +noimd +noincsearch +noinf +noinfercase +noinsertmode +nois +nojoinspaces +nojs +nolazyredraw +nolbr +nolinebreak +nolisp +nolist +noloadplugins +nolpl +nolz +noma +nomacatsui +nomagic +nomh +noml +nomod +nomodeline +nomodifiable +nomodified +nomore +nomousef +nomousefocus +nomousehide +nonu +nonumber +noodev +noopendevice +nopaste +nopi +nopreserveindent +nopreviewwindow +noprompt +nopvw +noreadonly +noremap +norestorescreen +norevins +nori +norightleft +norightleftcmd +norl +norlc +noro +nors +noru +noruler +nosb +nosc +noscb +noscrollbind +noscs +nosecure +nosft +noshellslash +noshelltemp +noshiftround +noshortname +noshowcmd +noshowfulltag +noshowmatch +noshowmode +nosi +nosm +nosmartcase +nosmartindent +nosmarttab +nosmd +nosn +nosol +nospell +nosplitbelow +nosplitright +nospr +nosr +nossl +nosta +nostartofline +nostmp +noswapfile +noswf +nota +notagbsearch +notagrelative +notagstack +notbi +notbidi +notbs +notermbidi +noterse +notextauto +notextmode +notf +notgst +notildeop +notimeout +notitle +noto +notop +notr +nottimeout +nottybuiltin +nottyfast +notx +novb +novisualbell +nowa +nowarn +nowb +noweirdinvert +nowfh +nowfw +nowildmenu +nowinfixheight +nowinfixwidth +nowiv +nowmnu +nowrap +nowrapscan +nowrite +nowriteany +nowritebackup +nows +invacd +invai +invakm +invallowrevins +invaltkeymap +invanti +invantialias +invar +invarab +invarabic +invarabicshape +invari +invarshape +invautochdir +invautoindent +invautoread +invautowrite +invautowriteall +invaw +invawa +invbackup +invballooneval +invbeval +invbin +invbinary +invbiosk +invbioskey +invbk +invbl +invbomb +invbuflisted +invcf +invci +invcin +invcindent +invcompatible +invconfirm +invconsk +invconskey +invcopyindent +invcp +invcscopetag +invcscopeverbose +invcst +invcsverb +invcuc +invcul +invcursorcolumn +invcursorline +invdeco +invdelcombine +invdg +invdiff +invdigraph +invdisable +invea +inveb +inved +invedcompatible +invek +invendofline +inveol +invequalalways +inverrorbells +invesckeys +invet +invex +invexpandtab +invexrc +invfen +invfk +invfkmap +invfoldenable +invgd +invgdefault +invguipty +invhid +invhidden +invhk +invhkmap +invhkmapp +invhkp +invhls +invhlsearch +invic +invicon +invignorecase +invim +invimc +invimcmdline +invimd +invincsearch +invinf +invinfercase +invinsertmode +invis +invjoinspaces +invjs +invlazyredraw +invlbr +invlinebreak +invlisp +invlist +invloadplugins +invlpl +invlz +invma +invmacatsui +invmagic +invmh +invml +invmod +invmodeline +invmodifiable +invmodified +invmore +invmousef +invmousefocus +invmousehide +invnu +invnumber +invodev +invopendevice +invpaste +invpi +invpreserveindent +invpreviewwindow +invprompt +invpvw +invreadonly +invremap +invrestorescreen +invrevins +invri +invrightleft +invrightleftcmd +invrl +invrlc +invro +invrs +invru +invruler +invsb +invsc +invscb +invscrollbind +invscs +invsecure +invsft +invshellslash +invshelltemp +invshiftround +invshortname +invshowcmd +invshowfulltag +invshowmatch +invshowmode +invsi +invsm +invsmartcase +invsmartindent +invsmarttab +invsmd +invsn +invsol +invspell +invsplitbelow +invsplitright +invspr +invsr +invssl +invsta +invstartofline +invstmp +invswapfile +invswf +invta +invtagbsearch +invtagrelative +invtagstack +invtbi +invtbidi +invtbs +invtermbidi +invterse +invtextauto +invtextmode +invtf +invtgst +invtildeop +invtimeout +invtitle +invto +invtop +invtr +invttimeout +invttybuiltin +invttyfast +invtx +invvb +invvisualbell +invwa +invwarn +invwb +invweirdinvert +invwfh +invwfw +invwildmenu +invwinfixheight +invwinfixwidth +invwiv +invwmnu +invwrap +invwrapscan +invwrite +invwriteany +invwritebackup +invws +t_AB +t_AF +t_al +t_AL +t_bc +t_cd +t_ce +t_Ce +t_cl +t_cm +t_Co +t_cs +t_Cs +t_CS +t_CV +t_da +t_db +t_dl +t_DL +t_EI +t_F1 +t_F2 +t_F3 +t_F4 +t_F5 +t_F6 +t_F7 +t_F8 +t_F9 +t_fs +t_IE +t_IS +t_k1 +t_K1 +t_k2 +t_k3 +t_K3 +t_k4 +t_K4 +t_k5 +t_K5 +t_k6 +t_K6 +t_k7 +t_K7 +t_k8 +t_K8 +t_k9 +t_K9 +t_KA +t_kb +t_kB +t_KB +t_KC +t_kd +t_kD +t_KD +t_ke +t_KE +t_KF +t_KG +t_kh +t_KH +t_kI +t_KI +t_KJ +t_KK +t_kl +t_KL +t_kN +t_kP +t_kr +t_ks +t_ku +t_le +t_mb +t_md +t_me +t_mr +t_ms +t_nd +t_op +t_RI +t_RV +t_Sb +t_se +t_Sf +t_SI +t_so +t_sr +t_te +t_ti +t_ts +t_ue +t_us +t_ut +t_vb +t_ve +t_vi +t_vs +t_WP +t_WS +t_xs +t_ZH +t_ZR + +---------------------------------------------------- + +[ + ["builtin", "autocmd"], + ["builtin", "acd"], + ["builtin", "ai"], + ["builtin", "akm"], + ["builtin", "aleph"], + ["builtin", "allowrevins"], + ["builtin", "altkeymap"], + ["builtin", "ambiwidth"], + ["builtin", "ambw"], + ["builtin", "anti"], + ["builtin", "antialias"], + ["builtin", "arab"], + ["builtin", "arabic"], + ["builtin", "arabicshape"], + ["builtin", "ari"], + ["builtin", "arshape"], + ["builtin", "autochdir"], + ["builtin", "autoindent"], + ["builtin", "autoread"], + ["builtin", "autowrite"], + ["builtin", "autowriteall"], + ["builtin", "aw"], + ["builtin", "awa"], + ["builtin", "background"], + ["builtin", "backspace"], + ["builtin", "backup"], + ["builtin", "backupcopy"], + ["builtin", "backupdir"], + ["builtin", "backupext"], + ["builtin", "backupskip"], + ["builtin", "balloondelay"], + ["builtin", "ballooneval"], + ["builtin", "balloonexpr"], + ["builtin", "bdir"], + ["builtin", "bdlay"], + ["builtin", "beval"], + ["builtin", "bex"], + ["builtin", "bexpr"], + ["builtin", "bg"], + ["builtin", "bh"], + ["builtin", "bin"], + ["builtin", "binary"], + ["builtin", "biosk"], + ["builtin", "bioskey"], + ["builtin", "bk"], + ["builtin", "bkc"], + ["builtin", "bomb"], + ["builtin", "breakat"], + ["builtin", "brk"], + ["builtin", "browsedir"], + ["builtin", "bs"], + ["builtin", "bsdir"], + ["builtin", "bsk"], + ["builtin", "bt"], + ["builtin", "bufhidden"], + ["builtin", "buflisted"], + ["builtin", "buftype"], + ["builtin", "casemap"], + ["builtin", "ccv"], + ["builtin", "cdpath"], + ["builtin", "cedit"], + ["builtin", "cfu"], + ["builtin", "ch"], + ["builtin", "charconvert"], + ["builtin", "ci"], + ["builtin", "cin"], + ["builtin", "cindent"], + ["builtin", "cink"], + ["builtin", "cinkeys"], + ["builtin", "cino"], + ["builtin", "cinoptions"], + ["builtin", "cinw"], + ["builtin", "cinwords"], + ["builtin", "clipboard"], + ["builtin", "cmdheight"], + ["builtin", "cmdwinheight"], + ["builtin", "cmp"], + ["builtin", "cms"], + ["builtin", "columns"], + ["builtin", "com"], + ["builtin", "comments"], + ["builtin", "commentstring"], + ["builtin", "compatible"], + ["builtin", "complete"], + ["builtin", "completefunc"], + ["builtin", "completeopt"], + ["builtin", "consk"], + ["builtin", "conskey"], + ["builtin", "copyindent"], + ["builtin", "cot"], + ["builtin", "cpo"], + ["builtin", "cpoptions"], + ["builtin", "cpt"], + ["builtin", "cscopepathcomp"], + ["builtin", "cscopeprg"], + ["builtin", "cscopequickfix"], + ["builtin", "cscopetag"], + ["builtin", "cscopetagorder"], + ["builtin", "cscopeverbose"], + ["builtin", "cspc"], + ["builtin", "csprg"], + ["builtin", "csqf"], + ["builtin", "cst"], + ["builtin", "csto"], + ["builtin", "csverb"], + ["builtin", "cuc"], + ["builtin", "cul"], + ["builtin", "cursorcolumn"], + ["builtin", "cursorline"], + ["builtin", "cwh"], + ["builtin", "debug"], + ["builtin", "deco"], + ["builtin", "def"], + ["builtin", "define"], + ["builtin", "delcombine"], + ["builtin", "dex"], + ["builtin", "dg"], + ["builtin", "dict"], + ["builtin", "dictionary"], + ["builtin", "diff"], + ["builtin", "diffexpr"], + ["builtin", "diffopt"], + ["builtin", "digraph"], + ["builtin", "dip"], + ["builtin", "dir"], + ["builtin", "directory"], + ["builtin", "dy"], + ["builtin", "ea"], + ["builtin", "ead"], + ["builtin", "eadirection"], + ["builtin", "eb"], + ["builtin", "ed"], + ["builtin", "edcompatible"], + ["builtin", "ef"], + ["builtin", "efm"], + ["builtin", "ei"], + ["builtin", "ek"], + ["builtin", "enc"], + ["builtin", "encoding"], + ["builtin", "endofline"], + ["builtin", "eol"], + ["builtin", "ep"], + ["builtin", "equalalways"], + ["builtin", "equalprg"], + ["builtin", "errorbells"], + ["builtin", "errorfile"], + ["builtin", "errorformat"], + ["builtin", "esckeys"], + ["builtin", "et"], + ["builtin", "eventignore"], + ["builtin", "expandtab"], + ["builtin", "exrc"], + ["builtin", "fcl"], + ["builtin", "fcs"], + ["builtin", "fdc"], + ["builtin", "fde"], + ["builtin", "fdi"], + ["builtin", "fdl"], + ["builtin", "fdls"], + ["builtin", "fdm"], + ["builtin", "fdn"], + ["builtin", "fdo"], + ["builtin", "fdt"], + ["builtin", "fen"], + ["builtin", "fenc"], + ["builtin", "fencs"], + ["builtin", "fex"], + ["builtin", "ff"], + ["builtin", "ffs"], + ["builtin", "fileencoding"], + ["builtin", "fileencodings"], + ["builtin", "fileformat"], + ["builtin", "fileformats"], + ["builtin", "fillchars"], + ["builtin", "fk"], + ["builtin", "fkmap"], + ["builtin", "flp"], + ["builtin", "fml"], + ["builtin", "fmr"], + ["builtin", "foldcolumn"], + ["builtin", "foldenable"], + ["builtin", "foldexpr"], + ["builtin", "foldignore"], + ["builtin", "foldlevel"], + ["builtin", "foldlevelstart"], + ["builtin", "foldmarker"], + ["builtin", "foldmethod"], + ["builtin", "foldminlines"], + ["builtin", "foldnestmax"], + ["builtin", "foldtext"], + ["builtin", "formatexpr"], + ["builtin", "formatlistpat"], + ["builtin", "formatoptions"], + ["builtin", "formatprg"], + ["builtin", "fp"], + ["builtin", "fs"], + ["builtin", "fsync"], + ["builtin", "ft"], + ["builtin", "gcr"], + ["builtin", "gd"], + ["builtin", "gdefault"], + ["builtin", "gfm"], + ["builtin", "gfn"], + ["builtin", "gfs"], + ["builtin", "gfw"], + ["builtin", "ghr"], + ["builtin", "gp"], + ["builtin", "grepformat"], + ["builtin", "grepprg"], + ["builtin", "gtl"], + ["builtin", "gtt"], + ["builtin", "guicursor"], + ["builtin", "guifont"], + ["builtin", "guifontset"], + ["builtin", "guifontwide"], + ["builtin", "guiheadroom"], + ["builtin", "guioptions"], + ["builtin", "guipty"], + ["builtin", "guitablabel"], + ["builtin", "guitabtooltip"], + ["builtin", "helpfile"], + ["builtin", "helpheight"], + ["builtin", "helplang"], + ["builtin", "hf"], + ["builtin", "hh"], + ["builtin", "hi"], + ["builtin", "hidden"], + ["builtin", "highlight"], + ["builtin", "hk"], + ["builtin", "hkmap"], + ["builtin", "hkmapp"], + ["builtin", "hkp"], + ["builtin", "hl"], + ["builtin", "hlg"], + ["builtin", "hls"], + ["builtin", "hlsearch"], + ["builtin", "ic"], + ["builtin", "icon"], + ["builtin", "iconstring"], + ["builtin", "ignorecase"], + ["builtin", "im"], + ["builtin", "imactivatekey"], + ["builtin", "imak"], + ["builtin", "imc"], + ["builtin", "imcmdline"], + ["builtin", "imd"], + ["builtin", "imdisable"], + ["builtin", "imi"], + ["builtin", "iminsert"], + ["builtin", "ims"], + ["builtin", "imsearch"], + ["builtin", "inc"], + ["builtin", "include"], + ["builtin", "includeexpr"], + ["builtin", "incsearch"], + ["builtin", "inde"], + ["builtin", "indentexpr"], + ["builtin", "indentkeys"], + ["builtin", "indk"], + ["builtin", "inex"], + ["builtin", "inf"], + ["builtin", "infercase"], + ["builtin", "insertmode"], + ["builtin", "isf"], + ["builtin", "isfname"], + ["builtin", "isi"], + ["builtin", "isident"], + ["builtin", "isk"], + ["builtin", "iskeyword"], + ["builtin", "isprint"], + ["builtin", "joinspaces"], + ["builtin", "js"], + ["builtin", "key"], + ["builtin", "keymap"], + ["builtin", "keymodel"], + ["builtin", "keywordprg"], + ["builtin", "km"], + ["builtin", "kmp"], + ["builtin", "kp"], + ["builtin", "langmap"], + ["builtin", "langmenu"], + ["builtin", "laststatus"], + ["builtin", "lazyredraw"], + ["builtin", "lbr"], + ["builtin", "lcs"], + ["builtin", "linebreak"], + ["builtin", "lines"], + ["builtin", "linespace"], + ["builtin", "lisp"], + ["builtin", "lispwords"], + ["builtin", "listchars"], + ["builtin", "loadplugins"], + ["builtin", "lpl"], + ["builtin", "lsp"], + ["builtin", "lz"], + ["builtin", "macatsui"], + ["builtin", "magic"], + ["builtin", "makeef"], + ["builtin", "makeprg"], + ["builtin", "matchpairs"], + ["builtin", "matchtime"], + ["builtin", "maxcombine"], + ["builtin", "maxfuncdepth"], + ["builtin", "maxmapdepth"], + ["builtin", "maxmem"], + ["builtin", "maxmempattern"], + ["builtin", "maxmemtot"], + ["builtin", "mco"], + ["builtin", "mef"], + ["builtin", "menuitems"], + ["builtin", "mfd"], + ["builtin", "mh"], + ["builtin", "mis"], + ["builtin", "mkspellmem"], + ["builtin", "ml"], + ["builtin", "mls"], + ["builtin", "mm"], + ["builtin", "mmd"], + ["builtin", "mmp"], + ["builtin", "mmt"], + ["builtin", "modeline"], + ["builtin", "modelines"], + ["builtin", "modifiable"], + ["builtin", "modified"], + ["builtin", "more"], + ["builtin", "mouse"], + ["builtin", "mousef"], + ["builtin", "mousefocus"], + ["builtin", "mousehide"], + ["builtin", "mousem"], + ["builtin", "mousemodel"], + ["builtin", "mouses"], + ["builtin", "mouseshape"], + ["builtin", "mouset"], + ["builtin", "mousetime"], + ["builtin", "mp"], + ["builtin", "mps"], + ["builtin", "msm"], + ["builtin", "mzq"], + ["builtin", "mzquantum"], + ["builtin", "nf"], + ["builtin", "nrformats"], + ["builtin", "numberwidth"], + ["builtin", "nuw"], + ["builtin", "odev"], + ["builtin", "oft"], + ["builtin", "ofu"], + ["builtin", "omnifunc"], + ["builtin", "opendevice"], + ["builtin", "operatorfunc"], + ["builtin", "opfunc"], + ["builtin", "osfiletype"], + ["builtin", "pa"], + ["builtin", "para"], + ["builtin", "paragraphs"], + ["builtin", "paste"], + ["builtin", "pastetoggle"], + ["builtin", "patchexpr"], + ["builtin", "patchmode"], + ["builtin", "path"], + ["builtin", "pdev"], + ["builtin", "penc"], + ["builtin", "pex"], + ["builtin", "pexpr"], + ["builtin", "pfn"], + ["builtin", "ph"], + ["builtin", "pheader"], + ["builtin", "pi"], + ["builtin", "pm"], + ["builtin", "pmbcs"], + ["builtin", "pmbfn"], + ["builtin", "popt"], + ["builtin", "preserveindent"], + ["builtin", "previewheight"], + ["builtin", "previewwindow"], + ["builtin", "printdevice"], + ["builtin", "printencoding"], + ["builtin", "printexpr"], + ["builtin", "printfont"], + ["builtin", "printheader"], + ["builtin", "printmbcharset"], + ["builtin", "printmbfont"], + ["builtin", "printoptions"], + ["builtin", "prompt"], + ["builtin", "pt"], + ["builtin", "pumheight"], + ["builtin", "pvh"], + ["builtin", "pvw"], + ["builtin", "qe"], + ["builtin", "quoteescape"], + ["builtin", "readonly"], + ["builtin", "remap"], + ["builtin", "report"], + ["builtin", "restorescreen"], + ["builtin", "revins"], + ["builtin", "rightleft"], + ["builtin", "rightleftcmd"], + ["builtin", "rl"], + ["builtin", "rlc"], + ["builtin", "ro"], + ["builtin", "rs"], + ["builtin", "rtp"], + ["builtin", "ruf"], + ["builtin", "ruler"], + ["builtin", "rulerformat"], + ["builtin", "runtimepath"], + ["builtin", "sbo"], + ["builtin", "sc"], + ["builtin", "scb"], + ["builtin", "scr"], + ["builtin", "scroll"], + ["builtin", "scrollbind"], + ["builtin", "scrolljump"], + ["builtin", "scrolloff"], + ["builtin", "scrollopt"], + ["builtin", "scs"], + ["builtin", "sect"], + ["builtin", "sections"], + ["builtin", "secure"], + ["builtin", "sel"], + ["builtin", "selection"], + ["builtin", "selectmode"], + ["builtin", "sessionoptions"], + ["builtin", "sft"], + ["builtin", "shcf"], + ["builtin", "shellcmdflag"], + ["builtin", "shellpipe"], + ["builtin", "shellquote"], + ["builtin", "shellredir"], + ["builtin", "shellslash"], + ["builtin", "shelltemp"], + ["builtin", "shelltype"], + ["builtin", "shellxquote"], + ["builtin", "shiftround"], + ["builtin", "shiftwidth"], + ["builtin", "shm"], + ["builtin", "shortmess"], + ["builtin", "shortname"], + ["builtin", "showbreak"], + ["builtin", "showcmd"], + ["builtin", "showfulltag"], + ["builtin", "showmatch"], + ["builtin", "showmode"], + ["builtin", "showtabline"], + ["builtin", "shq"], + ["builtin", "si"], + ["builtin", "sidescroll"], + ["builtin", "sidescrolloff"], + ["builtin", "siso"], + ["builtin", "sj"], + ["builtin", "slm"], + ["builtin", "smartcase"], + ["builtin", "smartindent"], + ["builtin", "smarttab"], + ["builtin", "smc"], + ["builtin", "smd"], + ["builtin", "softtabstop"], + ["builtin", "sol"], + ["builtin", "spc"], + ["builtin", "spell"], + ["builtin", "spellcapcheck"], + ["builtin", "spellfile"], + ["builtin", "spelllang"], + ["builtin", "spellsuggest"], + ["builtin", "spf"], + ["builtin", "spl"], + ["builtin", "splitbelow"], + ["builtin", "splitright"], + ["builtin", "sps"], + ["builtin", "sr"], + ["builtin", "srr"], + ["builtin", "ss"], + ["builtin", "ssl"], + ["builtin", "ssop"], + ["builtin", "stal"], + ["builtin", "startofline"], + ["builtin", "statusline"], + ["builtin", "stl"], + ["builtin", "stmp"], + ["builtin", "su"], + ["builtin", "sua"], + ["builtin", "suffixes"], + ["builtin", "suffixesadd"], + ["builtin", "sw"], + ["builtin", "swapfile"], + ["builtin", "swapsync"], + ["builtin", "swb"], + ["builtin", "swf"], + ["builtin", "switchbuf"], + ["builtin", "sws"], + ["builtin", "sxq"], + ["builtin", "syn"], + ["builtin", "synmaxcol"], + ["builtin", "syntax"], + ["builtin", "tabline"], + ["builtin", "tabpagemax"], + ["builtin", "tabstop"], + ["builtin", "tagbsearch"], + ["builtin", "taglength"], + ["builtin", "tagrelative"], + ["builtin", "tagstack"], + ["builtin", "tal"], + ["builtin", "tb"], + ["builtin", "tbi"], + ["builtin", "tbidi"], + ["builtin", "tbis"], + ["builtin", "tbs"], + ["builtin", "tenc"], + ["builtin", "term"], + ["builtin", "termbidi"], + ["builtin", "termencoding"], + ["builtin", "terse"], + ["builtin", "textauto"], + ["builtin", "textmode"], + ["builtin", "textwidth"], + ["builtin", "tgst"], + ["builtin", "thesaurus"], + ["builtin", "tildeop"], + ["builtin", "timeout"], + ["builtin", "timeoutlen"], + ["builtin", "title"], + ["builtin", "titlelen"], + ["builtin", "titleold"], + ["builtin", "titlestring"], + ["builtin", "toolbar"], + ["builtin", "toolbariconsize"], + ["builtin", "top"], + ["builtin", "tpm"], + ["builtin", "tsl"], + ["builtin", "tsr"], + ["builtin", "ttimeout"], + ["builtin", "ttimeoutlen"], + ["builtin", "ttm"], + ["builtin", "tty"], + ["builtin", "ttybuiltin"], + ["builtin", "ttyfast"], + ["builtin", "ttym"], + ["builtin", "ttymouse"], + ["builtin", "ttyscroll"], + ["builtin", "ttytype"], + ["builtin", "tw"], + ["builtin", "tx"], + ["builtin", "uc"], + ["builtin", "ul"], + ["builtin", "undolevels"], + ["builtin", "updatecount"], + ["builtin", "updatetime"], + ["builtin", "ut"], + ["builtin", "vb"], + ["builtin", "vbs"], + ["builtin", "vdir"], + ["builtin", "verbosefile"], + ["builtin", "vfile"], + ["builtin", "viewdir"], + ["builtin", "viewoptions"], + ["builtin", "viminfo"], + ["builtin", "virtualedit"], + ["builtin", "visualbell"], + ["builtin", "vop"], + ["builtin", "wak"], + ["builtin", "warn"], + ["builtin", "wb"], + ["builtin", "wc"], + ["builtin", "wcm"], + ["builtin", "wd"], + ["builtin", "weirdinvert"], + ["builtin", "wfh"], + ["builtin", "wfw"], + ["builtin", "whichwrap"], + ["builtin", "wi"], + ["builtin", "wig"], + ["builtin", "wildchar"], + ["builtin", "wildcharm"], + ["builtin", "wildignore"], + ["builtin", "wildmenu"], + ["builtin", "wildmode"], + ["builtin", "wildoptions"], + ["builtin", "wim"], + ["builtin", "winaltkeys"], + ["builtin", "window"], + ["builtin", "winfixheight"], + ["builtin", "winfixwidth"], + ["builtin", "winheight"], + ["builtin", "winminheight"], + ["builtin", "winminwidth"], + ["builtin", "winwidth"], + ["builtin", "wiv"], + ["builtin", "wiw"], + ["builtin", "wm"], + ["builtin", "wmh"], + ["builtin", "wmnu"], + ["builtin", "wmw"], + ["builtin", "wop"], + ["builtin", "wrap"], + ["builtin", "wrapmargin"], + ["builtin", "wrapscan"], + ["builtin", "writeany"], + ["builtin", "writebackup"], + ["builtin", "writedelay"], + ["builtin", "ww"], + ["builtin", "noacd"], + ["builtin", "noai"], + ["builtin", "noakm"], + ["builtin", "noallowrevins"], + ["builtin", "noaltkeymap"], + ["builtin", "noanti"], + ["builtin", "noantialias"], + ["builtin", "noar"], + ["builtin", "noarab"], + ["builtin", "noarabic"], + ["builtin", "noarabicshape"], + ["builtin", "noari"], + ["builtin", "noarshape"], + ["builtin", "noautochdir"], + ["builtin", "noautoindent"], + ["builtin", "noautoread"], + ["builtin", "noautowrite"], + ["builtin", "noautowriteall"], + ["builtin", "noaw"], + ["builtin", "noawa"], + ["builtin", "nobackup"], + ["builtin", "noballooneval"], + ["builtin", "nobeval"], + ["builtin", "nobin"], + ["builtin", "nobinary"], + ["builtin", "nobiosk"], + ["builtin", "nobioskey"], + ["builtin", "nobk"], + ["builtin", "nobl"], + ["builtin", "nobomb"], + ["builtin", "nobuflisted"], + ["builtin", "nocf"], + ["builtin", "noci"], + ["builtin", "nocin"], + ["builtin", "nocindent"], + ["builtin", "nocompatible"], + ["builtin", "noconfirm"], + ["builtin", "noconsk"], + ["builtin", "noconskey"], + ["builtin", "nocopyindent"], + ["builtin", "nocp"], + ["builtin", "nocscopetag"], + ["builtin", "nocscopeverbose"], + ["builtin", "nocst"], + ["builtin", "nocsverb"], + ["builtin", "nocuc"], + ["builtin", "nocul"], + ["builtin", "nocursorcolumn"], + ["builtin", "nocursorline"], + ["builtin", "nodeco"], + ["builtin", "nodelcombine"], + ["builtin", "nodg"], + ["builtin", "nodiff"], + ["builtin", "nodigraph"], + ["builtin", "nodisable"], + ["builtin", "noea"], + ["builtin", "noeb"], + ["builtin", "noed"], + ["builtin", "noedcompatible"], + ["builtin", "noek"], + ["builtin", "noendofline"], + ["builtin", "noeol"], + ["builtin", "noequalalways"], + ["builtin", "noerrorbells"], + ["builtin", "noesckeys"], + ["builtin", "noet"], + ["builtin", "noex"], + ["builtin", "noexpandtab"], + ["builtin", "noexrc"], + ["builtin", "nofen"], + ["builtin", "nofk"], + ["builtin", "nofkmap"], + ["builtin", "nofoldenable"], + ["builtin", "nogd"], + ["builtin", "nogdefault"], + ["builtin", "noguipty"], + ["builtin", "nohid"], + ["builtin", "nohidden"], + ["builtin", "nohk"], + ["builtin", "nohkmap"], + ["builtin", "nohkmapp"], + ["builtin", "nohkp"], + ["builtin", "nohls"], + ["builtin", "noic"], + ["builtin", "noicon"], + ["builtin", "noignorecase"], + ["builtin", "noim"], + ["builtin", "noimc"], + ["builtin", "noimcmdline"], + ["builtin", "noimd"], + ["builtin", "noincsearch"], + ["builtin", "noinf"], + ["builtin", "noinfercase"], + ["builtin", "noinsertmode"], + ["builtin", "nois"], + ["builtin", "nojoinspaces"], + ["builtin", "nojs"], + ["builtin", "nolazyredraw"], + ["builtin", "nolbr"], + ["builtin", "nolinebreak"], + ["builtin", "nolisp"], + ["builtin", "nolist"], + ["builtin", "noloadplugins"], + ["builtin", "nolpl"], + ["builtin", "nolz"], + ["builtin", "noma"], + ["builtin", "nomacatsui"], + ["builtin", "nomagic"], + ["builtin", "nomh"], + ["builtin", "noml"], + ["builtin", "nomod"], + ["builtin", "nomodeline"], + ["builtin", "nomodifiable"], + ["builtin", "nomodified"], + ["builtin", "nomore"], + ["builtin", "nomousef"], + ["builtin", "nomousefocus"], + ["builtin", "nomousehide"], + ["builtin", "nonu"], + ["builtin", "nonumber"], + ["builtin", "noodev"], + ["builtin", "noopendevice"], + ["builtin", "nopaste"], + ["builtin", "nopi"], + ["builtin", "nopreserveindent"], + ["builtin", "nopreviewwindow"], + ["builtin", "noprompt"], + ["builtin", "nopvw"], + ["builtin", "noreadonly"], + ["builtin", "noremap"], + ["builtin", "norestorescreen"], + ["builtin", "norevins"], + ["builtin", "nori"], + ["builtin", "norightleft"], + ["builtin", "norightleftcmd"], + ["builtin", "norl"], + ["builtin", "norlc"], + ["builtin", "noro"], + ["builtin", "nors"], + ["builtin", "noru"], + ["builtin", "noruler"], + ["builtin", "nosb"], + ["builtin", "nosc"], + ["builtin", "noscb"], + ["builtin", "noscrollbind"], + ["builtin", "noscs"], + ["builtin", "nosecure"], + ["builtin", "nosft"], + ["builtin", "noshellslash"], + ["builtin", "noshelltemp"], + ["builtin", "noshiftround"], + ["builtin", "noshortname"], + ["builtin", "noshowcmd"], + ["builtin", "noshowfulltag"], + ["builtin", "noshowmatch"], + ["builtin", "noshowmode"], + ["builtin", "nosi"], + ["builtin", "nosm"], + ["builtin", "nosmartcase"], + ["builtin", "nosmartindent"], + ["builtin", "nosmarttab"], + ["builtin", "nosmd"], + ["builtin", "nosn"], + ["builtin", "nosol"], + ["builtin", "nospell"], + ["builtin", "nosplitbelow"], + ["builtin", "nosplitright"], + ["builtin", "nospr"], + ["builtin", "nosr"], + ["builtin", "nossl"], + ["builtin", "nosta"], + ["builtin", "nostartofline"], + ["builtin", "nostmp"], + ["builtin", "noswapfile"], + ["builtin", "noswf"], + ["builtin", "nota"], + ["builtin", "notagbsearch"], + ["builtin", "notagrelative"], + ["builtin", "notagstack"], + ["builtin", "notbi"], + ["builtin", "notbidi"], + ["builtin", "notbs"], + ["builtin", "notermbidi"], + ["builtin", "noterse"], + ["builtin", "notextauto"], + ["builtin", "notextmode"], + ["builtin", "notf"], + ["builtin", "notgst"], + ["builtin", "notildeop"], + ["builtin", "notimeout"], + ["builtin", "notitle"], + ["builtin", "noto"], + ["builtin", "notop"], + ["builtin", "notr"], + ["builtin", "nottimeout"], + ["builtin", "nottybuiltin"], + ["builtin", "nottyfast"], + ["builtin", "notx"], + ["builtin", "novb"], + ["builtin", "novisualbell"], + ["builtin", "nowa"], + ["builtin", "nowarn"], + ["builtin", "nowb"], + ["builtin", "noweirdinvert"], + ["builtin", "nowfh"], + ["builtin", "nowfw"], + ["builtin", "nowildmenu"], + ["builtin", "nowinfixheight"], + ["builtin", "nowinfixwidth"], + ["builtin", "nowiv"], + ["builtin", "nowmnu"], + ["builtin", "nowrap"], + ["builtin", "nowrapscan"], + ["builtin", "nowrite"], + ["builtin", "nowriteany"], + ["builtin", "nowritebackup"], + ["builtin", "nows"], + ["builtin", "invacd"], + ["builtin", "invai"], + ["builtin", "invakm"], + ["builtin", "invallowrevins"], + ["builtin", "invaltkeymap"], + ["builtin", "invanti"], + ["builtin", "invantialias"], + ["builtin", "invar"], + ["builtin", "invarab"], + ["builtin", "invarabic"], + ["builtin", "invarabicshape"], + ["builtin", "invari"], + ["builtin", "invarshape"], + ["builtin", "invautochdir"], + ["builtin", "invautoindent"], + ["builtin", "invautoread"], + ["builtin", "invautowrite"], + ["builtin", "invautowriteall"], + ["builtin", "invaw"], + ["builtin", "invawa"], + ["builtin", "invbackup"], + ["builtin", "invballooneval"], + ["builtin", "invbeval"], + ["builtin", "invbin"], + ["builtin", "invbinary"], + ["builtin", "invbiosk"], + ["builtin", "invbioskey"], + ["builtin", "invbk"], + ["builtin", "invbl"], + ["builtin", "invbomb"], + ["builtin", "invbuflisted"], + ["builtin", "invcf"], + ["builtin", "invci"], + ["builtin", "invcin"], + ["builtin", "invcindent"], + ["builtin", "invcompatible"], + ["builtin", "invconfirm"], + ["builtin", "invconsk"], + ["builtin", "invconskey"], + ["builtin", "invcopyindent"], + ["builtin", "invcp"], + ["builtin", "invcscopetag"], + ["builtin", "invcscopeverbose"], + ["builtin", "invcst"], + ["builtin", "invcsverb"], + ["builtin", "invcuc"], + ["builtin", "invcul"], + ["builtin", "invcursorcolumn"], + ["builtin", "invcursorline"], + ["builtin", "invdeco"], + ["builtin", "invdelcombine"], + ["builtin", "invdg"], + ["builtin", "invdiff"], + ["builtin", "invdigraph"], + ["builtin", "invdisable"], + ["builtin", "invea"], + ["builtin", "inveb"], + ["builtin", "inved"], + ["builtin", "invedcompatible"], + ["builtin", "invek"], + ["builtin", "invendofline"], + ["builtin", "inveol"], + ["builtin", "invequalalways"], + ["builtin", "inverrorbells"], + ["builtin", "invesckeys"], + ["builtin", "invet"], + ["builtin", "invex"], + ["builtin", "invexpandtab"], + ["builtin", "invexrc"], + ["builtin", "invfen"], + ["builtin", "invfk"], + ["builtin", "invfkmap"], + ["builtin", "invfoldenable"], + ["builtin", "invgd"], + ["builtin", "invgdefault"], + ["builtin", "invguipty"], + ["builtin", "invhid"], + ["builtin", "invhidden"], + ["builtin", "invhk"], + ["builtin", "invhkmap"], + ["builtin", "invhkmapp"], + ["builtin", "invhkp"], + ["builtin", "invhls"], + ["builtin", "invhlsearch"], + ["builtin", "invic"], + ["builtin", "invicon"], + ["builtin", "invignorecase"], + ["builtin", "invim"], + ["builtin", "invimc"], + ["builtin", "invimcmdline"], + ["builtin", "invimd"], + ["builtin", "invincsearch"], + ["builtin", "invinf"], + ["builtin", "invinfercase"], + ["builtin", "invinsertmode"], + ["builtin", "invis"], + ["builtin", "invjoinspaces"], + ["builtin", "invjs"], + ["builtin", "invlazyredraw"], + ["builtin", "invlbr"], + ["builtin", "invlinebreak"], + ["builtin", "invlisp"], + ["builtin", "invlist"], + ["builtin", "invloadplugins"], + ["builtin", "invlpl"], + ["builtin", "invlz"], + ["builtin", "invma"], + ["builtin", "invmacatsui"], + ["builtin", "invmagic"], + ["builtin", "invmh"], + ["builtin", "invml"], + ["builtin", "invmod"], + ["builtin", "invmodeline"], + ["builtin", "invmodifiable"], + ["builtin", "invmodified"], + ["builtin", "invmore"], + ["builtin", "invmousef"], + ["builtin", "invmousefocus"], + ["builtin", "invmousehide"], + ["builtin", "invnu"], + ["builtin", "invnumber"], + ["builtin", "invodev"], + ["builtin", "invopendevice"], + ["builtin", "invpaste"], + ["builtin", "invpi"], + ["builtin", "invpreserveindent"], + ["builtin", "invpreviewwindow"], + ["builtin", "invprompt"], + ["builtin", "invpvw"], + ["builtin", "invreadonly"], + ["builtin", "invremap"], + ["builtin", "invrestorescreen"], + ["builtin", "invrevins"], + ["builtin", "invri"], + ["builtin", "invrightleft"], + ["builtin", "invrightleftcmd"], + ["builtin", "invrl"], + ["builtin", "invrlc"], + ["builtin", "invro"], + ["builtin", "invrs"], + ["builtin", "invru"], + ["builtin", "invruler"], + ["builtin", "invsb"], + ["builtin", "invsc"], + ["builtin", "invscb"], + ["builtin", "invscrollbind"], + ["builtin", "invscs"], + ["builtin", "invsecure"], + ["builtin", "invsft"], + ["builtin", "invshellslash"], + ["builtin", "invshelltemp"], + ["builtin", "invshiftround"], + ["builtin", "invshortname"], + ["builtin", "invshowcmd"], + ["builtin", "invshowfulltag"], + ["builtin", "invshowmatch"], + ["builtin", "invshowmode"], + ["builtin", "invsi"], + ["builtin", "invsm"], + ["builtin", "invsmartcase"], + ["builtin", "invsmartindent"], + ["builtin", "invsmarttab"], + ["builtin", "invsmd"], + ["builtin", "invsn"], + ["builtin", "invsol"], + ["builtin", "invspell"], + ["builtin", "invsplitbelow"], + ["builtin", "invsplitright"], + ["builtin", "invspr"], + ["builtin", "invsr"], + ["builtin", "invssl"], + ["builtin", "invsta"], + ["builtin", "invstartofline"], + ["builtin", "invstmp"], + ["builtin", "invswapfile"], + ["builtin", "invswf"], + ["builtin", "invta"], + ["builtin", "invtagbsearch"], + ["builtin", "invtagrelative"], + ["builtin", "invtagstack"], + ["builtin", "invtbi"], + ["builtin", "invtbidi"], + ["builtin", "invtbs"], + ["builtin", "invtermbidi"], + ["builtin", "invterse"], + ["builtin", "invtextauto"], + ["builtin", "invtextmode"], + ["builtin", "invtf"], + ["builtin", "invtgst"], + ["builtin", "invtildeop"], + ["builtin", "invtimeout"], + ["builtin", "invtitle"], + ["builtin", "invto"], + ["builtin", "invtop"], + ["builtin", "invtr"], + ["builtin", "invttimeout"], + ["builtin", "invttybuiltin"], + ["builtin", "invttyfast"], + ["builtin", "invtx"], + ["builtin", "invvb"], + ["builtin", "invvisualbell"], + ["builtin", "invwa"], + ["builtin", "invwarn"], + ["builtin", "invwb"], + ["builtin", "invweirdinvert"], + ["builtin", "invwfh"], + ["builtin", "invwfw"], + ["builtin", "invwildmenu"], + ["builtin", "invwinfixheight"], + ["builtin", "invwinfixwidth"], + ["builtin", "invwiv"], + ["builtin", "invwmnu"], + ["builtin", "invwrap"], + ["builtin", "invwrapscan"], + ["builtin", "invwrite"], + ["builtin", "invwriteany"], + ["builtin", "invwritebackup"], + ["builtin", "invws"], + ["builtin", "t_AB"], + ["builtin", "t_AF"], + ["builtin", "t_al"], + ["builtin", "t_AL"], + ["builtin", "t_bc"], + ["builtin", "t_cd"], + ["builtin", "t_ce"], + ["builtin", "t_Ce"], + ["builtin", "t_cl"], + ["builtin", "t_cm"], + ["builtin", "t_Co"], + ["builtin", "t_cs"], + ["builtin", "t_Cs"], + ["builtin", "t_CS"], + ["builtin", "t_CV"], + ["builtin", "t_da"], + ["builtin", "t_db"], + ["builtin", "t_dl"], + ["builtin", "t_DL"], + ["builtin", "t_EI"], + ["builtin", "t_F1"], + ["builtin", "t_F2"], + ["builtin", "t_F3"], + ["builtin", "t_F4"], + ["builtin", "t_F5"], + ["builtin", "t_F6"], + ["builtin", "t_F7"], + ["builtin", "t_F8"], + ["builtin", "t_F9"], + ["builtin", "t_fs"], + ["builtin", "t_IE"], + ["builtin", "t_IS"], + ["builtin", "t_k1"], + ["builtin", "t_K1"], + ["builtin", "t_k2"], + ["builtin", "t_k3"], + ["builtin", "t_K3"], + ["builtin", "t_k4"], + ["builtin", "t_K4"], + ["builtin", "t_k5"], + ["builtin", "t_K5"], + ["builtin", "t_k6"], + ["builtin", "t_K6"], + ["builtin", "t_k7"], + ["builtin", "t_K7"], + ["builtin", "t_k8"], + ["builtin", "t_K8"], + ["builtin", "t_k9"], + ["builtin", "t_K9"], + ["builtin", "t_KA"], + ["builtin", "t_kb"], + ["builtin", "t_kB"], + ["builtin", "t_KB"], + ["builtin", "t_KC"], + ["builtin", "t_kd"], + ["builtin", "t_kD"], + ["builtin", "t_KD"], + ["builtin", "t_ke"], + ["builtin", "t_KE"], + ["builtin", "t_KF"], + ["builtin", "t_KG"], + ["builtin", "t_kh"], + ["builtin", "t_KH"], + ["builtin", "t_kI"], + ["builtin", "t_KI"], + ["builtin", "t_KJ"], + ["builtin", "t_KK"], + ["builtin", "t_kl"], + ["builtin", "t_KL"], + ["builtin", "t_kN"], + ["builtin", "t_kP"], + ["builtin", "t_kr"], + ["builtin", "t_ks"], + ["builtin", "t_ku"], + ["builtin", "t_le"], + ["builtin", "t_mb"], + ["builtin", "t_md"], + ["builtin", "t_me"], + ["builtin", "t_mr"], + ["builtin", "t_ms"], + ["builtin", "t_nd"], + ["builtin", "t_op"], + ["builtin", "t_RI"], + ["builtin", "t_RV"], + ["builtin", "t_Sb"], + ["builtin", "t_se"], + ["builtin", "t_Sf"], + ["builtin", "t_SI"], + ["builtin", "t_so"], + ["builtin", "t_sr"], + ["builtin", "t_te"], + ["builtin", "t_ti"], + ["builtin", "t_ts"], + ["builtin", "t_ue"], + ["builtin", "t_us"], + ["builtin", "t_ut"], + ["builtin", "t_vb"], + ["builtin", "t_ve"], + ["builtin", "t_vi"], + ["builtin", "t_vs"], + ["builtin", "t_WP"], + ["builtin", "t_WS"], + ["builtin", "t_xs"], + ["builtin", "t_ZH"], + ["builtin", "t_ZR"] +] + +---------------------------------------------------- + +Checks for builtins. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vim/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vim/comment_feature.test new file mode 100644 index 0000000000..c8dc92ebed --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vim/comment_feature.test @@ -0,0 +1,13 @@ +" +" Foobar + +---------------------------------------------------- + +[ + ["comment", "\""], + ["comment", "\" Foobar"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vim/function_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vim/function_feature.test new file mode 100644 index 0000000000..c09d299610 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vim/function_feature.test @@ -0,0 +1,13 @@ +has("mac") +exists("s:call_count") + +---------------------------------------------------- + +[ + ["function", "has"], ["punctuation", "("], ["string", "\"mac\""], ["punctuation", ")"], + ["function", "exists"], ["punctuation", "("], ["string", "\"s:call_count\""], ["punctuation", ")"] +] + +---------------------------------------------------- + +Checks for functions. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vim/keyword_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vim/keyword_feature.test new file mode 100644 index 0000000000..23fd747476 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vim/keyword_feature.test @@ -0,0 +1,1661 @@ +ab +abbreviate +abc +abclear +abo +aboveleft +al +all +arga +argadd +argd +argdelete +argdo +arge +argedit +argg +argglobal +argl +arglocal +ar +args +argu +argument +as +ascii +bad +badd +ba +ball +bd +bdelete +be +bel +belowright +bf +bfirst +bl +blast +bm +bmodified +bn +bnext +bN +bNext +bo +botright +bp +bprevious +brea +break +breaka +breakadd +breakd +breakdel +breakl +breaklist +br +brewind +bro +browse +bufdo +b +buffer +buffers +bun +bunload +bw +bwipeout +ca +cabbrev +cabc +cabclear +caddb +caddbuffer +cad +caddexpr +caddf +caddfile +cal +call +cat +catch +cb +cbuffer +cc +ccl +cclose +cd +ce +center +cex +cexpr +cf +cfile +cfir +cfirst +cgetb +cgetbuffer +cgete +cgetexpr +cg +cgetfile +c +change +changes +chd +chdir +che +checkpath +checkt +checktime +cla +clast +cl +clist +clo +close +cmapc +cmapclear +cnew +cnewer +cn +cnext +cN +cNext +cnf +cnfile +cNfcNfile +cnorea +cnoreabbrev +col +colder +colo +colorscheme +comc +comclear +comp +compiler +conf +confirm +con +continue +cope +copen +co +copy +cpf +cpfile +cp +cprevious +cq +cquit +cr +crewind +cuna +cunabbrev +cu +cunmap +cw +cwindow +debugg +debuggreedy +delc +delcommand +d +delete +delf +delfunction +delm +delmarks +diffg +diffget +diffoff +diffpatch +diffpu +diffput +diffsplit +diffthis +diffu +diffupdate +dig +digraphs +di +display +dj +djump +dl +dlist +dr +drop +ds +dsearch +dsp +dsplit +earlier +echoe +echoerr +echom +echomsg +echon +e +edit +el +else +elsei +elseif +em +emenu +endfo +endfor +endf +endfunction +endfun +en +endif +endt +endtry +endw +endwhile +ene +enew +ex +exi +exit +exu +exusage +f +file +files +filetype +fina +finally +fin +find +fini +finish +fir +first +fix +fixdel +fo +fold +foldc +foldclose +folddoc +folddoclosed +foldd +folddoopen +foldo +foldopen +for +fu +fun +function +go +goto +gr +grep +grepa +grepadd +ha +hardcopy +h +help +helpf +helpfind +helpg +helpgrep +helpt +helptags +hid +hide +his +history +ia +iabbrev +iabc +iabclear +if +ij +ijump +il +ilist +imapc +imapclear +in +inorea +inoreabbrev +isearch +isp +isplit +iuna +iunabbrev +iu +iunmap +j +join +ju +jumps +k +keepalt +keepj +keepjumps +kee +keepmarks +laddb +laddbuffer +lad +laddexpr +laddf +laddfile +lan +language +la +last +later +lb +lbuffer +lc +lcd +lch +lchdir +lcl +lclose +let +left +lefta +leftabove +lex +lexpr +lf +lfile +lfir +lfirst +lgetb +lgetbuffer +lgete +lgetexpr +lg +lgetfile +lgr +lgrep +lgrepa +lgrepadd +lh +lhelpgrep +l +list +ll +lla +llast +lli +llist +lmak +lmake +lm +lmap +lmapc +lmapclear +lnew +lnewer +lne +lnext +lN +lNext +lnf +lnfile +lNf +lNfile +ln +lnoremap +lo +loadview +loc +lockmarks +lockv +lockvar +lol +lolder +lop +lopen +lpf +lpfile +lp +lprevious +lr +lrewind +ls +lt +ltag +lu +lunmap +lv +lvimgrep +lvimgrepa +lvimgrepadd +lw +lwindow +mak +make +ma +mark +marks +mat +match +menut +menutranslate +mk +mkexrc +mks +mksession +mksp +mkspell +mkvie +mkview +mkv +mkvimrc +mod +mode +m +move +mzf +mzfile +mz +mzscheme +nbkey +new +n +next +N +Next +nmapc +nmapclear +noh +nohlsearch +norea +noreabbrev +nu +number +nun +nunmap +omapc +omapclear +on +only +o +open +opt +options +ou +ounmap +pc +pclose +ped +pedit +pe +perl +perld +perldo +po +pop +popu +popu +popup +pp +ppop +pre +preserve +prev +previous +p +print +P +Print +profd +profdel +prof +profile +promptf +promptfind +promptr +promptrepl +ps +psearch +pta +ptag +ptf +ptfirst +ptj +ptjump +ptl +ptlast +ptn +ptnext +ptN +ptNext +ptp +ptprevious +ptr +ptrewind +pts +ptselect +pu +put +pw +pwd +pyf +pyfile +py +python +qa +qall +q +quit +quita +quitall +r +read +rec +recover +redi +redir +red +redo +redr +redraw +redraws +redrawstatus +reg +registers +res +resize +ret +retab +retu +return +rew +rewind +ri +right +rightb +rightbelow +rub +ruby +rubyd +rubydo +rubyf +rubyfile +ru +runtime +rv +rviminfo +sal +sall +san +sandbox +sa +sargument +sav +saveas +sba +sball +sbf +sbfirst +sbl +sblast +sbm +sbmodified +sbn +sbnext +sbN +sbNext +sbp +sbprevious +sbr +sbrewind +sb +sbuffer +scripte +scriptencoding +scrip +scriptnames +se +set +setf +setfiletype +setg +setglobal +setl +setlocal +sf +sfind +sfir +sfirst +sh +shell +sign +sil +silent +sim +simalt +sla +slast +sl +sleep +sm +smagic +sm +smap +smapc +smapclear +sme +smenu +sn +snext +sN +sNext +sni +sniff +sno +snomagic +snor +snoremap +snoreme +snoremenu +sor +sort +so +source +spelld +spelldump +spe +spellgood +spelli +spellinfo +spellr +spellrepall +spellu +spellundo +spellw +spellwrong +sp +split +spr +sprevious +sre +srewind +sta +stag +startg +startgreplace +star +startinsert +startr +startreplace +stj +stjump +st +stop +stopi +stopinsert +sts +stselect +sun +sunhide +sunm +sunmap +sus +suspend +sv +sview +syncbind +t +tab +tabc +tabclose +tabd +tabdo +tabe +tabedit +tabf +tabfind +tabfir +tabfirst +tabl +tablast +tabm +tabmove +tabnew +tabn +tabnext +tabN +tabNext +tabo +tabonly +tabp +tabprevious +tabr +tabrewind +tabs +ta +tag +tags +tc +tcl +tcld +tcldo +tclf +tclfile +te +tearoff +tf +tfirst +th +throw +tj +tjump +tl +tlast +tm +tm +tmenu +tn +tnext +tN +tNext +to +topleft +tp +tprevious +tr +trewind +try +ts +tselect +tu +tu +tunmenu +una +unabbreviate +u +undo +undoj +undojoin +undol +undolist +unh +unhide +unlet +unlo +unlockvar +unm +unmap +up +update +verb +verbose +ve +version +vert +vertical +vie +view +vim +vimgrep +vimgrepa +vimgrepadd +vi +visual +viu +viusage +vmapc +vmapclear +vne +vnew +vs +vsplit +vu +vunmap +wa +wall +wh +while +winc +wincmd +windo +winp +winpos +win +winsize +wn +wnext +wN +wNext +wp +wprevious +wq +wqa +wqall +w +write +ws +wsverb +wv +wviminfo +X +xa +xall +x +xit +xm +xmap +xmapc +xmapclear +xme +xmenu +XMLent +XMLns +xn +xnoremap +xnoreme +xnoremenu +xu +xunmap +y +yank + +---------------------------------------------------- + +[ + ["keyword", "ab"], + ["keyword", "abbreviate"], + ["keyword", "abc"], + ["keyword", "abclear"], + ["keyword", "abo"], + ["keyword", "aboveleft"], + ["keyword", "al"], + ["keyword", "all"], + ["keyword", "arga"], + ["keyword", "argadd"], + ["keyword", "argd"], + ["keyword", "argdelete"], + ["keyword", "argdo"], + ["keyword", "arge"], + ["keyword", "argedit"], + ["keyword", "argg"], + ["keyword", "argglobal"], + ["keyword", "argl"], + ["keyword", "arglocal"], + ["keyword", "ar"], + ["keyword", "args"], + ["keyword", "argu"], + ["keyword", "argument"], + ["keyword", "as"], + ["keyword", "ascii"], + ["keyword", "bad"], + ["keyword", "badd"], + ["keyword", "ba"], + ["keyword", "ball"], + ["keyword", "bd"], + ["keyword", "bdelete"], + ["keyword", "be"], + ["keyword", "bel"], + ["keyword", "belowright"], + ["keyword", "bf"], + ["keyword", "bfirst"], + ["keyword", "bl"], + ["keyword", "blast"], + ["keyword", "bm"], + ["keyword", "bmodified"], + ["keyword", "bn"], + ["keyword", "bnext"], + ["keyword", "bN"], + ["keyword", "bNext"], + ["keyword", "bo"], + ["keyword", "botright"], + ["keyword", "bp"], + ["keyword", "bprevious"], + ["keyword", "brea"], + ["keyword", "break"], + ["keyword", "breaka"], + ["keyword", "breakadd"], + ["keyword", "breakd"], + ["keyword", "breakdel"], + ["keyword", "breakl"], + ["keyword", "breaklist"], + ["keyword", "br"], + ["keyword", "brewind"], + ["keyword", "bro"], + ["keyword", "browse"], + ["keyword", "bufdo"], + ["keyword", "b"], + ["keyword", "buffer"], + ["keyword", "buffers"], + ["keyword", "bun"], + ["keyword", "bunload"], + ["keyword", "bw"], + ["keyword", "bwipeout"], + ["keyword", "ca"], + ["keyword", "cabbrev"], + ["keyword", "cabc"], + ["keyword", "cabclear"], + ["keyword", "caddb"], + ["keyword", "caddbuffer"], + ["keyword", "cad"], + ["keyword", "caddexpr"], + ["keyword", "caddf"], + ["keyword", "caddfile"], + ["keyword", "cal"], + ["keyword", "call"], + ["keyword", "cat"], + ["keyword", "catch"], + ["keyword", "cb"], + ["keyword", "cbuffer"], + ["keyword", "cc"], + ["keyword", "ccl"], + ["keyword", "cclose"], + ["keyword", "cd"], + ["keyword", "ce"], + ["keyword", "center"], + ["keyword", "cex"], + ["keyword", "cexpr"], + ["keyword", "cf"], + ["keyword", "cfile"], + ["keyword", "cfir"], + ["keyword", "cfirst"], + ["keyword", "cgetb"], + ["keyword", "cgetbuffer"], + ["keyword", "cgete"], + ["keyword", "cgetexpr"], + ["keyword", "cg"], + ["keyword", "cgetfile"], + ["keyword", "c"], + ["keyword", "change"], + ["keyword", "changes"], + ["keyword", "chd"], + ["keyword", "chdir"], + ["keyword", "che"], + ["keyword", "checkpath"], + ["keyword", "checkt"], + ["keyword", "checktime"], + ["keyword", "cla"], + ["keyword", "clast"], + ["keyword", "cl"], + ["keyword", "clist"], + ["keyword", "clo"], + ["keyword", "close"], + ["keyword", "cmapc"], + ["keyword", "cmapclear"], + ["keyword", "cnew"], + ["keyword", "cnewer"], + ["keyword", "cn"], + ["keyword", "cnext"], + ["keyword", "cN"], + ["keyword", "cNext"], + ["keyword", "cnf"], + ["keyword", "cnfile"], + ["keyword", "cNfcNfile"], + ["keyword", "cnorea"], + ["keyword", "cnoreabbrev"], + ["keyword", "col"], + ["keyword", "colder"], + ["keyword", "colo"], + ["keyword", "colorscheme"], + ["keyword", "comc"], + ["keyword", "comclear"], + ["keyword", "comp"], + ["keyword", "compiler"], + ["keyword", "conf"], + ["keyword", "confirm"], + ["keyword", "con"], + ["keyword", "continue"], + ["keyword", "cope"], + ["keyword", "copen"], + ["keyword", "co"], + ["keyword", "copy"], + ["keyword", "cpf"], + ["keyword", "cpfile"], + ["keyword", "cp"], + ["keyword", "cprevious"], + ["keyword", "cq"], + ["keyword", "cquit"], + ["keyword", "cr"], + ["keyword", "crewind"], + ["keyword", "cuna"], + ["keyword", "cunabbrev"], + ["keyword", "cu"], + ["keyword", "cunmap"], + ["keyword", "cw"], + ["keyword", "cwindow"], + ["keyword", "debugg"], + ["keyword", "debuggreedy"], + ["keyword", "delc"], + ["keyword", "delcommand"], + ["keyword", "d"], + ["keyword", "delete"], + ["keyword", "delf"], + ["keyword", "delfunction"], + ["keyword", "delm"], + ["keyword", "delmarks"], + ["keyword", "diffg"], + ["keyword", "diffget"], + ["keyword", "diffoff"], + ["keyword", "diffpatch"], + ["keyword", "diffpu"], + ["keyword", "diffput"], + ["keyword", "diffsplit"], + ["keyword", "diffthis"], + ["keyword", "diffu"], + ["keyword", "diffupdate"], + ["keyword", "dig"], + ["keyword", "digraphs"], + ["keyword", "di"], + ["keyword", "display"], + ["keyword", "dj"], + ["keyword", "djump"], + ["keyword", "dl"], + ["keyword", "dlist"], + ["keyword", "dr"], + ["keyword", "drop"], + ["keyword", "ds"], + ["keyword", "dsearch"], + ["keyword", "dsp"], + ["keyword", "dsplit"], + ["keyword", "earlier"], + ["keyword", "echoe"], + ["keyword", "echoerr"], + ["keyword", "echom"], + ["keyword", "echomsg"], + ["keyword", "echon"], + ["keyword", "e"], + ["keyword", "edit"], + ["keyword", "el"], + ["keyword", "else"], + ["keyword", "elsei"], + ["keyword", "elseif"], + ["keyword", "em"], + ["keyword", "emenu"], + ["keyword", "endfo"], + ["keyword", "endfor"], + ["keyword", "endf"], + ["keyword", "endfunction"], + ["keyword", "endfun"], + ["keyword", "en"], + ["keyword", "endif"], + ["keyword", "endt"], + ["keyword", "endtry"], + ["keyword", "endw"], + ["keyword", "endwhile"], + ["keyword", "ene"], + ["keyword", "enew"], + ["keyword", "ex"], + ["keyword", "exi"], + ["keyword", "exit"], + ["keyword", "exu"], + ["keyword", "exusage"], + ["keyword", "f"], + ["keyword", "file"], + ["keyword", "files"], + ["keyword", "filetype"], + ["keyword", "fina"], + ["keyword", "finally"], + ["keyword", "fin"], + ["keyword", "find"], + ["keyword", "fini"], + ["keyword", "finish"], + ["keyword", "fir"], + ["keyword", "first"], + ["keyword", "fix"], + ["keyword", "fixdel"], + ["keyword", "fo"], + ["keyword", "fold"], + ["keyword", "foldc"], + ["keyword", "foldclose"], + ["keyword", "folddoc"], + ["keyword", "folddoclosed"], + ["keyword", "foldd"], + ["keyword", "folddoopen"], + ["keyword", "foldo"], + ["keyword", "foldopen"], + ["keyword", "for"], + ["keyword", "fu"], + ["keyword", "fun"], + ["keyword", "function"], + ["keyword", "go"], + ["keyword", "goto"], + ["keyword", "gr"], + ["keyword", "grep"], + ["keyword", "grepa"], + ["keyword", "grepadd"], + ["keyword", "ha"], + ["keyword", "hardcopy"], + ["keyword", "h"], + ["keyword", "help"], + ["keyword", "helpf"], + ["keyword", "helpfind"], + ["keyword", "helpg"], + ["keyword", "helpgrep"], + ["keyword", "helpt"], + ["keyword", "helptags"], + ["keyword", "hid"], + ["keyword", "hide"], + ["keyword", "his"], + ["keyword", "history"], + ["keyword", "ia"], + ["keyword", "iabbrev"], + ["keyword", "iabc"], + ["keyword", "iabclear"], + ["keyword", "if"], + ["keyword", "ij"], + ["keyword", "ijump"], + ["keyword", "il"], + ["keyword", "ilist"], + ["keyword", "imapc"], + ["keyword", "imapclear"], + ["keyword", "in"], + ["keyword", "inorea"], + ["keyword", "inoreabbrev"], + ["keyword", "isearch"], + ["keyword", "isp"], + ["keyword", "isplit"], + ["keyword", "iuna"], + ["keyword", "iunabbrev"], + ["keyword", "iu"], + ["keyword", "iunmap"], + ["keyword", "j"], + ["keyword", "join"], + ["keyword", "ju"], + ["keyword", "jumps"], + ["keyword", "k"], + ["keyword", "keepalt"], + ["keyword", "keepj"], + ["keyword", "keepjumps"], + ["keyword", "kee"], + ["keyword", "keepmarks"], + ["keyword", "laddb"], + ["keyword", "laddbuffer"], + ["keyword", "lad"], + ["keyword", "laddexpr"], + ["keyword", "laddf"], + ["keyword", "laddfile"], + ["keyword", "lan"], + ["keyword", "language"], + ["keyword", "la"], + ["keyword", "last"], + ["keyword", "later"], + ["keyword", "lb"], + ["keyword", "lbuffer"], + ["keyword", "lc"], + ["keyword", "lcd"], + ["keyword", "lch"], + ["keyword", "lchdir"], + ["keyword", "lcl"], + ["keyword", "lclose"], + ["keyword", "let"], + ["keyword", "left"], + ["keyword", "lefta"], + ["keyword", "leftabove"], + ["keyword", "lex"], + ["keyword", "lexpr"], + ["keyword", "lf"], + ["keyword", "lfile"], + ["keyword", "lfir"], + ["keyword", "lfirst"], + ["keyword", "lgetb"], + ["keyword", "lgetbuffer"], + ["keyword", "lgete"], + ["keyword", "lgetexpr"], + ["keyword", "lg"], + ["keyword", "lgetfile"], + ["keyword", "lgr"], + ["keyword", "lgrep"], + ["keyword", "lgrepa"], + ["keyword", "lgrepadd"], + ["keyword", "lh"], + ["keyword", "lhelpgrep"], + ["keyword", "l"], + ["keyword", "list"], + ["keyword", "ll"], + ["keyword", "lla"], + ["keyword", "llast"], + ["keyword", "lli"], + ["keyword", "llist"], + ["keyword", "lmak"], + ["keyword", "lmake"], + ["keyword", "lm"], + ["keyword", "lmap"], + ["keyword", "lmapc"], + ["keyword", "lmapclear"], + ["keyword", "lnew"], + ["keyword", "lnewer"], + ["keyword", "lne"], + ["keyword", "lnext"], + ["keyword", "lN"], + ["keyword", "lNext"], + ["keyword", "lnf"], + ["keyword", "lnfile"], + ["keyword", "lNf"], + ["keyword", "lNfile"], + ["keyword", "ln"], + ["keyword", "lnoremap"], + ["keyword", "lo"], + ["keyword", "loadview"], + ["keyword", "loc"], + ["keyword", "lockmarks"], + ["keyword", "lockv"], + ["keyword", "lockvar"], + ["keyword", "lol"], + ["keyword", "lolder"], + ["keyword", "lop"], + ["keyword", "lopen"], + ["keyword", "lpf"], + ["keyword", "lpfile"], + ["keyword", "lp"], + ["keyword", "lprevious"], + ["keyword", "lr"], + ["keyword", "lrewind"], + ["keyword", "ls"], + ["keyword", "lt"], + ["keyword", "ltag"], + ["keyword", "lu"], + ["keyword", "lunmap"], + ["keyword", "lv"], + ["keyword", "lvimgrep"], + ["keyword", "lvimgrepa"], + ["keyword", "lvimgrepadd"], + ["keyword", "lw"], + ["keyword", "lwindow"], + ["keyword", "mak"], + ["keyword", "make"], + ["keyword", "ma"], + ["keyword", "mark"], + ["keyword", "marks"], + ["keyword", "mat"], + ["keyword", "match"], + ["keyword", "menut"], + ["keyword", "menutranslate"], + ["keyword", "mk"], + ["keyword", "mkexrc"], + ["keyword", "mks"], + ["keyword", "mksession"], + ["keyword", "mksp"], + ["keyword", "mkspell"], + ["keyword", "mkvie"], + ["keyword", "mkview"], + ["keyword", "mkv"], + ["keyword", "mkvimrc"], + ["keyword", "mod"], + ["keyword", "mode"], + ["keyword", "m"], + ["keyword", "move"], + ["keyword", "mzf"], + ["keyword", "mzfile"], + ["keyword", "mz"], + ["keyword", "mzscheme"], + ["keyword", "nbkey"], + ["keyword", "new"], + ["keyword", "n"], + ["keyword", "next"], + ["keyword", "N"], + ["keyword", "Next"], + ["keyword", "nmapc"], + ["keyword", "nmapclear"], + ["keyword", "noh"], + ["keyword", "nohlsearch"], + ["keyword", "norea"], + ["keyword", "noreabbrev"], + ["keyword", "nu"], + ["keyword", "number"], + ["keyword", "nun"], + ["keyword", "nunmap"], + ["keyword", "omapc"], + ["keyword", "omapclear"], + ["keyword", "on"], + ["keyword", "only"], + ["keyword", "o"], + ["keyword", "open"], + ["keyword", "opt"], + ["keyword", "options"], + ["keyword", "ou"], + ["keyword", "ounmap"], + ["keyword", "pc"], + ["keyword", "pclose"], + ["keyword", "ped"], + ["keyword", "pedit"], + ["keyword", "pe"], + ["keyword", "perl"], + ["keyword", "perld"], + ["keyword", "perldo"], + ["keyword", "po"], + ["keyword", "pop"], + ["keyword", "popu"], + ["keyword", "popu"], + ["keyword", "popup"], + ["keyword", "pp"], + ["keyword", "ppop"], + ["keyword", "pre"], + ["keyword", "preserve"], + ["keyword", "prev"], + ["keyword", "previous"], + ["keyword", "p"], + ["keyword", "print"], + ["keyword", "P"], + ["keyword", "Print"], + ["keyword", "profd"], + ["keyword", "profdel"], + ["keyword", "prof"], + ["keyword", "profile"], + ["keyword", "promptf"], + ["keyword", "promptfind"], + ["keyword", "promptr"], + ["keyword", "promptrepl"], + ["keyword", "ps"], + ["keyword", "psearch"], + ["keyword", "pta"], + ["keyword", "ptag"], + ["keyword", "ptf"], + ["keyword", "ptfirst"], + ["keyword", "ptj"], + ["keyword", "ptjump"], + ["keyword", "ptl"], + ["keyword", "ptlast"], + ["keyword", "ptn"], + ["keyword", "ptnext"], + ["keyword", "ptN"], + ["keyword", "ptNext"], + ["keyword", "ptp"], + ["keyword", "ptprevious"], + ["keyword", "ptr"], + ["keyword", "ptrewind"], + ["keyword", "pts"], + ["keyword", "ptselect"], + ["keyword", "pu"], + ["keyword", "put"], + ["keyword", "pw"], + ["keyword", "pwd"], + ["keyword", "pyf"], + ["keyword", "pyfile"], + ["keyword", "py"], + ["keyword", "python"], + ["keyword", "qa"], + ["keyword", "qall"], + ["keyword", "q"], + ["keyword", "quit"], + ["keyword", "quita"], + ["keyword", "quitall"], + ["keyword", "r"], + ["keyword", "read"], + ["keyword", "rec"], + ["keyword", "recover"], + ["keyword", "redi"], + ["keyword", "redir"], + ["keyword", "red"], + ["keyword", "redo"], + ["keyword", "redr"], + ["keyword", "redraw"], + ["keyword", "redraws"], + ["keyword", "redrawstatus"], + ["keyword", "reg"], + ["keyword", "registers"], + ["keyword", "res"], + ["keyword", "resize"], + ["keyword", "ret"], + ["keyword", "retab"], + ["keyword", "retu"], + ["keyword", "return"], + ["keyword", "rew"], + ["keyword", "rewind"], + ["keyword", "ri"], + ["keyword", "right"], + ["keyword", "rightb"], + ["keyword", "rightbelow"], + ["keyword", "rub"], + ["keyword", "ruby"], + ["keyword", "rubyd"], + ["keyword", "rubydo"], + ["keyword", "rubyf"], + ["keyword", "rubyfile"], + ["keyword", "ru"], + ["keyword", "runtime"], + ["keyword", "rv"], + ["keyword", "rviminfo"], + ["keyword", "sal"], + ["keyword", "sall"], + ["keyword", "san"], + ["keyword", "sandbox"], + ["keyword", "sa"], + ["keyword", "sargument"], + ["keyword", "sav"], + ["keyword", "saveas"], + ["keyword", "sba"], + ["keyword", "sball"], + ["keyword", "sbf"], + ["keyword", "sbfirst"], + ["keyword", "sbl"], + ["keyword", "sblast"], + ["keyword", "sbm"], + ["keyword", "sbmodified"], + ["keyword", "sbn"], + ["keyword", "sbnext"], + ["keyword", "sbN"], + ["keyword", "sbNext"], + ["keyword", "sbp"], + ["keyword", "sbprevious"], + ["keyword", "sbr"], + ["keyword", "sbrewind"], + ["keyword", "sb"], + ["keyword", "sbuffer"], + ["keyword", "scripte"], + ["keyword", "scriptencoding"], + ["keyword", "scrip"], + ["keyword", "scriptnames"], + ["keyword", "se"], + ["keyword", "set"], + ["keyword", "setf"], + ["keyword", "setfiletype"], + ["keyword", "setg"], + ["keyword", "setglobal"], + ["keyword", "setl"], + ["keyword", "setlocal"], + ["keyword", "sf"], + ["keyword", "sfind"], + ["keyword", "sfir"], + ["keyword", "sfirst"], + ["keyword", "sh"], + ["keyword", "shell"], + ["keyword", "sign"], + ["keyword", "sil"], + ["keyword", "silent"], + ["keyword", "sim"], + ["keyword", "simalt"], + ["keyword", "sla"], + ["keyword", "slast"], + ["keyword", "sl"], + ["keyword", "sleep"], + ["keyword", "sm"], + ["keyword", "smagic"], + ["keyword", "sm"], + ["keyword", "smap"], + ["keyword", "smapc"], + ["keyword", "smapclear"], + ["keyword", "sme"], + ["keyword", "smenu"], + ["keyword", "sn"], + ["keyword", "snext"], + ["keyword", "sN"], + ["keyword", "sNext"], + ["keyword", "sni"], + ["keyword", "sniff"], + ["keyword", "sno"], + ["keyword", "snomagic"], + ["keyword", "snor"], + ["keyword", "snoremap"], + ["keyword", "snoreme"], + ["keyword", "snoremenu"], + ["keyword", "sor"], + ["keyword", "sort"], + ["keyword", "so"], + ["keyword", "source"], + ["keyword", "spelld"], + ["keyword", "spelldump"], + ["keyword", "spe"], + ["keyword", "spellgood"], + ["keyword", "spelli"], + ["keyword", "spellinfo"], + ["keyword", "spellr"], + ["keyword", "spellrepall"], + ["keyword", "spellu"], + ["keyword", "spellundo"], + ["keyword", "spellw"], + ["keyword", "spellwrong"], + ["keyword", "sp"], + ["keyword", "split"], + ["keyword", "spr"], + ["keyword", "sprevious"], + ["keyword", "sre"], + ["keyword", "srewind"], + ["keyword", "sta"], + ["keyword", "stag"], + ["keyword", "startg"], + ["keyword", "startgreplace"], + ["keyword", "star"], + ["keyword", "startinsert"], + ["keyword", "startr"], + ["keyword", "startreplace"], + ["keyword", "stj"], + ["keyword", "stjump"], + ["keyword", "st"], + ["keyword", "stop"], + ["keyword", "stopi"], + ["keyword", "stopinsert"], + ["keyword", "sts"], + ["keyword", "stselect"], + ["keyword", "sun"], + ["keyword", "sunhide"], + ["keyword", "sunm"], + ["keyword", "sunmap"], + ["keyword", "sus"], + ["keyword", "suspend"], + ["keyword", "sv"], + ["keyword", "sview"], + ["keyword", "syncbind"], + ["keyword", "t"], + ["keyword", "tab"], + ["keyword", "tabc"], + ["keyword", "tabclose"], + ["keyword", "tabd"], + ["keyword", "tabdo"], + ["keyword", "tabe"], + ["keyword", "tabedit"], + ["keyword", "tabf"], + ["keyword", "tabfind"], + ["keyword", "tabfir"], + ["keyword", "tabfirst"], + ["keyword", "tabl"], + ["keyword", "tablast"], + ["keyword", "tabm"], + ["keyword", "tabmove"], + ["keyword", "tabnew"], + ["keyword", "tabn"], + ["keyword", "tabnext"], + ["keyword", "tabN"], + ["keyword", "tabNext"], + ["keyword", "tabo"], + ["keyword", "tabonly"], + ["keyword", "tabp"], + ["keyword", "tabprevious"], + ["keyword", "tabr"], + ["keyword", "tabrewind"], + ["keyword", "tabs"], + ["keyword", "ta"], + ["keyword", "tag"], + ["keyword", "tags"], + ["keyword", "tc"], + ["keyword", "tcl"], + ["keyword", "tcld"], + ["keyword", "tcldo"], + ["keyword", "tclf"], + ["keyword", "tclfile"], + ["keyword", "te"], + ["keyword", "tearoff"], + ["keyword", "tf"], + ["keyword", "tfirst"], + ["keyword", "th"], + ["keyword", "throw"], + ["keyword", "tj"], + ["keyword", "tjump"], + ["keyword", "tl"], + ["keyword", "tlast"], + ["keyword", "tm"], + ["keyword", "tm"], + ["keyword", "tmenu"], + ["keyword", "tn"], + ["keyword", "tnext"], + ["keyword", "tN"], + ["keyword", "tNext"], + ["keyword", "to"], + ["keyword", "topleft"], + ["keyword", "tp"], + ["keyword", "tprevious"], + ["keyword", "tr"], + ["keyword", "trewind"], + ["keyword", "try"], + ["keyword", "ts"], + ["keyword", "tselect"], + ["keyword", "tu"], + ["keyword", "tu"], + ["keyword", "tunmenu"], + ["keyword", "una"], + ["keyword", "unabbreviate"], + ["keyword", "u"], + ["keyword", "undo"], + ["keyword", "undoj"], + ["keyword", "undojoin"], + ["keyword", "undol"], + ["keyword", "undolist"], + ["keyword", "unh"], + ["keyword", "unhide"], + ["keyword", "unlet"], + ["keyword", "unlo"], + ["keyword", "unlockvar"], + ["keyword", "unm"], + ["keyword", "unmap"], + ["keyword", "up"], + ["keyword", "update"], + ["keyword", "verb"], + ["keyword", "verbose"], + ["keyword", "ve"], + ["keyword", "version"], + ["keyword", "vert"], + ["keyword", "vertical"], + ["keyword", "vie"], + ["keyword", "view"], + ["keyword", "vim"], + ["keyword", "vimgrep"], + ["keyword", "vimgrepa"], + ["keyword", "vimgrepadd"], + ["keyword", "vi"], + ["keyword", "visual"], + ["keyword", "viu"], + ["keyword", "viusage"], + ["keyword", "vmapc"], + ["keyword", "vmapclear"], + ["keyword", "vne"], + ["keyword", "vnew"], + ["keyword", "vs"], + ["keyword", "vsplit"], + ["keyword", "vu"], + ["keyword", "vunmap"], + ["keyword", "wa"], + ["keyword", "wall"], + ["keyword", "wh"], + ["keyword", "while"], + ["keyword", "winc"], + ["keyword", "wincmd"], + ["keyword", "windo"], + ["keyword", "winp"], + ["keyword", "winpos"], + ["keyword", "win"], + ["keyword", "winsize"], + ["keyword", "wn"], + ["keyword", "wnext"], + ["keyword", "wN"], + ["keyword", "wNext"], + ["keyword", "wp"], + ["keyword", "wprevious"], + ["keyword", "wq"], + ["keyword", "wqa"], + ["keyword", "wqall"], + ["keyword", "w"], + ["keyword", "write"], + ["keyword", "ws"], + ["keyword", "wsverb"], + ["keyword", "wv"], + ["keyword", "wviminfo"], + ["keyword", "X"], + ["keyword", "xa"], + ["keyword", "xall"], + ["keyword", "x"], + ["keyword", "xit"], + ["keyword", "xm"], + ["keyword", "xmap"], + ["keyword", "xmapc"], + ["keyword", "xmapclear"], + ["keyword", "xme"], + ["keyword", "xmenu"], + ["keyword", "XMLent"], + ["keyword", "XMLns"], + ["keyword", "xn"], + ["keyword", "xnoremap"], + ["keyword", "xnoreme"], + ["keyword", "xnoremenu"], + ["keyword", "xu"], + ["keyword", "xunmap"], + ["keyword", "y"], + ["keyword", "yank"] +] + +---------------------------------------------------- + +Checks for keywords. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vim/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vim/number_feature.test new file mode 100644 index 0000000000..70b47e0b1b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vim/number_feature.test @@ -0,0 +1,15 @@ +0xBadFace +42 +3.14159 + +---------------------------------------------------- + +[ + ["number", "0xBadFace"], + ["number", "42"], + ["number", "3.14159"] +] + +---------------------------------------------------- + +Checks for numbers. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vim/operator_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vim/operator_feature.test new file mode 100644 index 0000000000..460b914c55 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vim/operator_feature.test @@ -0,0 +1,37 @@ +|| && +? * / % ++ += +- -= +. .= += == =~ +==# =~# ==? =~? +! != !~ +!=# !~# !=? !~? +< <= +<# <=# >= +># >=# >? >=? +is isnot + +---------------------------------------------------- + +[ + ["operator", "||"], ["operator", "&&"], + ["operator", "?"], ["operator", "*"], ["operator", "/"], ["operator", "%"], + ["operator", "+"], ["operator", "+="], + ["operator", "-"], ["operator", "-="], + ["operator", "."], ["operator", ".="], + ["operator", "="], ["operator", "=="], ["operator", "=~"], + ["operator", "==#"], ["operator", "=~#"], ["operator", "==?"], ["operator", "=~?"], + ["operator", "!"], ["operator", "!="], ["operator", "!~"], + ["operator", "!=#"], ["operator", "!~#"], ["operator", "!=?"], ["operator", "!~?"], + ["operator", "<"], ["operator", "<="], + ["operator", "<#"], ["operator", "<=#"], ["operator", ""], ["operator", ">="], + ["operator", ">#"], ["operator", ">=#"], ["operator", ">?"], ["operator", ">=?"], + ["operator", "is"], ["operator", "isnot"] +] + +---------------------------------------------------- + +Checks for all operators. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/vim/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/vim/string_feature.test new file mode 100644 index 0000000000..fe7400da9f --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/vim/string_feature.test @@ -0,0 +1,19 @@ +"" +"Fo\"ob'ar" +'' +'\' +'Foo''bar' + +---------------------------------------------------- + +[ + ["string", "\"\""], + ["string", "\"Fo\\\"ob'ar\""], + ["string", "''"], + ["string", "'\\'"], + ["string", "'Foo''bar'"] +] + +---------------------------------------------------- + +Checks for strings. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/block-comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/block-comment_feature.test new file mode 100644 index 0000000000..9de1cbecec --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/block-comment_feature.test @@ -0,0 +1,16 @@ +/**/ +/* foo */ +/* foo +bar */ + +---------------------------------------------------- + +[ + ["block-comment", "/**/"], + ["block-comment", "/* foo */"], + ["block-comment", "/* foo\r\nbar */"] +] + +---------------------------------------------------- + +Checks for comments. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/emphasis_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/emphasis_feature.test new file mode 100644 index 0000000000..6a139fb524 --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/emphasis_feature.test @@ -0,0 +1,27 @@ +'''''foo''''' +'''bar''' +''baz'' + +---------------------------------------------------- + +[ + ["emphasis", [ + ["punctuation", "'''''"], + ["bold italic", "foo"], + ["punctuation", "'''''"] + ]], + ["emphasis", [ + ["punctuation", "'''"], + ["bold", "bar"], + ["punctuation", "'''"] + ]], + ["emphasis", [ + ["punctuation", "''"], + ["italic", "baz"], + ["punctuation", "''"] + ]] +] + +---------------------------------------------------- + +Checks for bold and italic. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/heading_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/heading_feature.test new file mode 100644 index 0000000000..500d65297e --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/heading_feature.test @@ -0,0 +1,33 @@ += Header 1 = +== Header 2 == +=== Header 3 === +==== Header 4 ==== +===== Header 5 ===== +====== Header 6 ====== + +---------------------------------------------------- + +[ + ["heading", [ + ["punctuation", "="], ["important", " Header 1 "], ["punctuation", "="] + ]], + ["heading", [ + ["punctuation", "=="], ["important", " Header 2 "], ["punctuation", "=="] + ]], + ["heading", [ + ["punctuation", "==="], ["important", " Header 3 "], ["punctuation", "==="] + ]], + ["heading", [ + ["punctuation", "===="], ["important", " Header 4 "], ["punctuation", "===="] + ]], + ["heading", [ + ["punctuation", "====="], ["important", " Header 5 "], ["punctuation", "====="] + ]], + ["heading", [ + ["punctuation", "======"], ["important", " Header 6 "], ["punctuation", "======"] + ]] +] + +---------------------------------------------------- + +Checks for titles. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/hr_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/hr_feature.test new file mode 100644 index 0000000000..d99083d97b --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/hr_feature.test @@ -0,0 +1,13 @@ +---- +----- + +---------------------------------------------------- + +[ + ["hr", "----"], + ["hr", "-----"] +] + +---------------------------------------------------- + +Checks for horizontal rows. \ No newline at end of file diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/nowiki_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/nowiki_feature.test new file mode 100644 index 0000000000..a86f2556cc --- /dev/null +++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/nowiki_feature.test @@ -0,0 +1,63 @@ +{{foo}} ''bar'' +{{foo}} ''bar'' +
{{foo}} ''bar'' 
+ +---------------------------------------------------- + +[ + ["nowiki", [ + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "nowiki" + ]], + ["punctuation", ">"] + ]], + "{{foo}} ''bar'' ", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]] + ]], + ["nowiki", [ + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "source" + ]], + ["punctuation", ">"] + ]], + "{{foo}} ''bar'' ", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]] + ]], + ["nowiki", [ + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "pre" + ]], + ["punctuation", ">"] + ]], + "{{foo}} ''bar'' ", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]] + ]] +] + +---------------------------------------------------- + +Checks that no highlighting is done inside ,
 and  tags.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/symbol_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/symbol_feature.test
new file mode 100644
index 0000000000..af99fdc858
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/symbol_feature.test
@@ -0,0 +1,17 @@
+#REDIRECT [[somewhere]]
+~~~
+~~~~
+~~~~~
+
+----------------------------------------------------
+
+[
+	["symbol", "#REDIRECT"], ["url", "[[somewhere]]"],
+	["symbol", "~~~"],
+	["symbol", "~~~~"],
+	["symbol", "~~~~~"]
+]
+
+----------------------------------------------------
+
+Checks for redirects and signatures.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/url_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/url_feature.test
new file mode 100644
index 0000000000..cc8fd5b0e6
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/url_feature.test
@@ -0,0 +1,29 @@
+[[w:en:Formal_grammar|Formal grammar]]
+[http://www.cl.cam.ac.uk/~mgk25/iso-ebnf.html EBNF help]
+
+ISBN 1234567890
+ISBN 123456789x
+ISBN      1 2 3-4-5 6789 X
+ISBN 978-9999999999
+
+RFC 822
+PMID 822
+
+----------------------------------------------------
+
+[
+	["url", "[[w:en:Formal_grammar|Formal grammar]]"],
+	["url", "[http://www.cl.cam.ac.uk/~mgk25/iso-ebnf.html EBNF help]"],
+
+	["url", "ISBN 1234567890"],
+	["url", "ISBN 123456789x"],
+	["url", "ISBN      1 2 3-4-5 6789 X"],
+	["url", "ISBN 978-9999999999"],
+
+	["url", "RFC 822"],
+	["url", "PMID 822"]
+]
+
+----------------------------------------------------
+
+Checks for links, ISBN, RFC and PMID.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/wiki/variable_feature.test b/dashboard-ui/bower_components/prism/tests/languages/wiki/variable_feature.test
new file mode 100644
index 0000000000..8327de38bd
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/wiki/variable_feature.test
@@ -0,0 +1,19 @@
+__NOTOC__
+{{{1}}}
+{{!}}
+{{SITENAME}}
+{{#ifexists:foo}}
+
+----------------------------------------------------
+
+[
+	["variable", "__NOTOC__"],
+	["variable", "{{{1}}}"],
+	["variable", "{{!}}"],
+	["variable", "{{SITENAME}}"],
+	["variable", "{{#ifexists:foo}}"]
+]
+
+----------------------------------------------------
+
+Checks for variables and magic words.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/boolean_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/boolean_feature.test
new file mode 100644
index 0000000000..471862fb01
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/boolean_feature.test
@@ -0,0 +1,17 @@
+---
+foo: true
+bar: false
+
+----------------------------------------------------
+
+[
+	["punctuation", "---"],
+	["key", "foo"], ["punctuation", ":"],
+	["boolean", "true"],
+	["key", "bar"], ["punctuation", ":"],
+	["boolean", "false"]
+]
+
+----------------------------------------------------
+
+Checks for booleans.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/comment_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/comment_feature.test
new file mode 100644
index 0000000000..710014b88d
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/comment_feature.test
@@ -0,0 +1,13 @@
+#
+# foobar
+
+----------------------------------------------------
+
+[
+	["comment", "#"],
+	["comment", "# foobar"]
+]
+
+----------------------------------------------------
+
+Checks for comments.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/datetime_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/datetime_feature.test
new file mode 100644
index 0000000000..31849d9a22
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/datetime_feature.test
@@ -0,0 +1,31 @@
+---
+canonical: 2001-12-15T02:59:43.1Z
+iso8601: 2001-12-14t21:59:43.10-05:00
+spaced: 2001-12-14 21:59:43.10 -5
+date: 2002-12-14
+times:
+	- 10:53
+	- 10:53:20.53
+
+----------------------------------------------------
+
+[
+	["punctuation", "---"],
+	["key", "canonical"], ["punctuation", ":"],
+	["datetime", "2001-12-15T02:59:43.1Z"],
+	["key", "iso8601"], ["punctuation", ":"],
+	["datetime", "2001-12-14t21:59:43.10-05:00"],
+	["key", "spaced"], ["punctuation", ":"],
+	["datetime", "2001-12-14 21:59:43.10 -5"],
+	["key", "date"], ["punctuation", ":"],
+	["datetime", "2002-12-14"],
+	["key", "times"], ["punctuation", ":"],
+	["punctuation", "-"],
+	["datetime", "10:53"],
+	["punctuation", "-"],
+	["datetime", "10:53:20.53"]
+]
+
+----------------------------------------------------
+
+Checks for dates, times and datetimes.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/directive_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/directive_feature.test
new file mode 100644
index 0000000000..31b2fb9dfa
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/directive_feature.test
@@ -0,0 +1,13 @@
+%YAML 1.2
+%TAG
+
+----------------------------------------------------
+
+[
+	["directive", "%YAML 1.2"],
+	["directive", "%TAG"]
+]
+
+----------------------------------------------------
+
+Checks for directives.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/important_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/important_feature.test
new file mode 100644
index 0000000000..f694b77692
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/important_feature.test
@@ -0,0 +1,19 @@
+&B1
+&A
+*A
+&SS
+*SS
+
+----------------------------------------------------
+
+[
+	["important", "&B1"],
+	["important", "&A"],
+	["important", "*A"],
+	["important", "&SS"],
+	["important", "*SS"]
+]
+
+----------------------------------------------------
+
+Checks for important.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/key_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/key_feature.test
new file mode 100644
index 0000000000..a90789496c
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/key_feature.test
@@ -0,0 +1,15 @@
+---
+foo: 4
+FooBar : 5
+
+----------------------------------------------------
+
+[
+	["punctuation", "---"],
+	["key", "foo"], ["punctuation", ":"], ["number", "4"],
+	["key", "FooBar"], ["punctuation", ":"], ["number", "5"]
+]
+
+----------------------------------------------------
+
+Checks for keys.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/null_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/null_feature.test
new file mode 100644
index 0000000000..b1333a1210
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/null_feature.test
@@ -0,0 +1,17 @@
+---
+foo: null
+bar: ~
+
+----------------------------------------------------
+
+[
+	["punctuation", "---"],
+	["key", "foo"], ["punctuation", ":"],
+	["null", "null"],
+	["key", "bar"], ["punctuation", ":"],
+	["null", "~"]
+]
+
+----------------------------------------------------
+
+Checks for null and ~.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/number_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/number_feature.test
new file mode 100644
index 0000000000..d0e108d636
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/number_feature.test
@@ -0,0 +1,38 @@
+---
+foo: 0xBadFace
+bar: 0o754
+baz: 42
+foo: 3.14159
+bar: 4e8
+baz: 3.1E-7
+foo: 0.4e+2
+bar: -0xFF
+baz: +0o123
+
+----------------------------------------------------
+
+[
+	["punctuation", "---"],
+	["key", "foo"], ["punctuation", ":"],
+	["number", "0xBadFace"],
+	["key", "bar"], ["punctuation", ":"],
+	["number", "0o754"],
+	["key", "baz"], ["punctuation", ":"],
+	["number", "42"],
+	["key", "foo"], ["punctuation", ":"],
+	["number", "3.14159"],
+	["key", "bar"], ["punctuation", ":"],
+	["number", "4e8"],
+	["key", "baz"], ["punctuation", ":"],
+	["number", "3.1E-7"],
+	["key", "foo"], ["punctuation", ":"],
+	["number", "0.4e+2"],
+	["key", "bar"], ["punctuation", ":"],
+	["number", "-0xFF"],
+	["key", "baz"], ["punctuation", ":"],
+	["number", "+0o123"]
+]
+
+----------------------------------------------------
+
+Checks for numbers.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/scalar_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/scalar_feature.test
new file mode 100644
index 0000000000..c404ceac87
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/scalar_feature.test
@@ -0,0 +1,23 @@
+---
+foo: >
+	Foo bar
+	baz
+bar: |
+	Foo bar
+	baz
+
+----------------------------------------------------
+
+[
+	["punctuation", "---"],
+	["key", "foo"], ["punctuation", ":"],
+	["punctuation", ">"],
+	["scalar", "\r\n\tFoo bar\r\n\tbaz"],
+	["key", "bar"], ["punctuation", ":"],
+	["punctuation", "|"],
+	["scalar", "\r\n\tFoo bar\r\n\tbaz"]
+]
+
+----------------------------------------------------
+
+Checks for scalars.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/string_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/string_feature.test
new file mode 100644
index 0000000000..81a113b4a6
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/string_feature.test
@@ -0,0 +1,23 @@
+---
+foo: ""
+bar: "fo\"obar"
+foo: ''
+bar: 'fo\'obar'
+
+----------------------------------------------------
+
+[
+	["punctuation", "---"],
+	["key", "foo"], ["punctuation", ":"],
+	["string", "\"\""],
+	["key", "bar"], ["punctuation", ":"],
+	["string", "\"fo\\\"obar\""],
+	["key", "foo"], ["punctuation", ":"],
+	["string", "''"],
+	["key", "bar"], ["punctuation", ":"],
+	["string", "'fo\\'obar'"]
+]
+
+----------------------------------------------------
+
+Checks for strings.
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/languages/yaml/tag_feature.test b/dashboard-ui/bower_components/prism/tests/languages/yaml/tag_feature.test
new file mode 100644
index 0000000000..e12a9dc14e
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/languages/yaml/tag_feature.test
@@ -0,0 +1,15 @@
+!!map
+!!str
+!!seq
+
+----------------------------------------------------
+
+[
+	["tag", "!!map"],
+	["tag", "!!str"],
+	["tag", "!!seq"]
+]
+
+----------------------------------------------------
+
+Checks for tags
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/run-child.js b/dashboard-ui/bower_components/prism/tests/run-child.js
new file mode 100644
index 0000000000..c7313a4f11
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/run-child.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var TestCase = require("./helper/test-case");
+var argv = require("yargs").argv;
+
+if (argv.language) {
+	process.on('message', function (data) {
+		if (data.filePath) {
+			try {
+				TestCase.runTestCase(argv.language, data.filePath);
+				process.send({success: true});
+			} catch (e) {
+				process.send({error: e});
+			}
+		}
+	});
+}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/run.js b/dashboard-ui/bower_components/prism/tests/run.js
new file mode 100644
index 0000000000..3acfa90bdb
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/run.js
@@ -0,0 +1,67 @@
+"use strict";
+
+var TestDiscovery = require("./helper/test-discovery");
+var path = require("path");
+var argv = require("yargs").argv;
+var child_process = require("child_process");
+
+var testSuite;
+if (argv.language) {
+	testSuite = TestDiscovery.loadSomeTests(__dirname + "/languages", argv.language);
+} else {
+	// load complete test suite
+	testSuite = TestDiscovery.loadAllTests(__dirname + "/languages");
+}
+
+// define tests for all tests in all languages in the test suite
+for (var language in testSuite) {
+	if (!testSuite.hasOwnProperty(language)) {
+		continue;
+	}
+
+	(function (language, testFiles) {
+		describe("Testing language '" + language + "'", function () {
+			this.timeout(10000);
+
+			// Each set of tests runs in its own child process
+			var child;
+			before(function () {
+				child = child_process.fork(__dirname + "/run-child.js", ['--language=' + language], {
+					stdio: 'inherit'
+				});
+			});
+
+			after(function () {
+				child.kill();
+			});
+
+			testFiles.forEach(
+				function (filePath) {
+			        var fileName = path.basename(filePath, path.extname(filePath));
+
+			        it("– should pass test case '" + fileName + "'",
+			            function (done) {
+
+				            child.removeAllListeners('message');
+			                child.on('message', function (o) {
+				                // We have to delay the call,
+				                // otherwise the first message is received
+				                // over and over again.
+				                setTimeout(function() {
+					                if (o.error) {
+						                throw o.error;
+					                } else if (o.success) {
+						                done();
+					                }
+				                }, 1);
+			                });
+				            child.send({
+					            filePath: filePath
+				            });
+			            }
+			        );
+				}
+			);
+		});
+	})(language, testSuite[language]);
+}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/tests/testrunner-tests.js b/dashboard-ui/bower_components/prism/tests/testrunner-tests.js
new file mode 100644
index 0000000000..24ad32cd8a
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/tests/testrunner-tests.js
@@ -0,0 +1,166 @@
+"use strict";
+
+var assert = require("chai").assert;
+var TokenStreamTransformer = require("./helper/token-stream-transformer");
+var TestCase = require("./helper/test-case");
+
+
+//region Token Stream Transformer
+describe("The token stream transformer",
+	function () {
+		it("should handle all kinds of simple transformations",
+			function () {
+				var tokens = [
+					{type: "type", content: "content"},
+					"string"
+				];
+
+				var expected = [
+					["type", "content"],
+					"string"
+				];
+
+				assert.deepEqual(TokenStreamTransformer.simplify(tokens), expected);
+			}
+		);
+
+
+		it("should handle nested structures",
+			function () {
+				var tokens = [
+					{
+						type: "type",
+						content: [
+							{
+								type: "insideType", content:
+								[
+									{type: "insideInsideType", content: "content"}
+								]
+							}
+						]
+					}
+				];
+
+				var expected = [
+					["type", [
+						["insideType", [
+							["insideInsideType", "content"]
+						]]
+					]]
+				];
+
+				assert.deepEqual(TokenStreamTransformer.simplify(tokens), expected);
+			}
+		);
+
+
+		it("should strip empty tokens",
+			function () {
+				var tokenStream = [
+					"",
+					"\r\n",
+					"\t",
+					" "
+				];
+
+				var expectedSimplified = [];
+
+				assert.deepEqual(TokenStreamTransformer.simplify(tokenStream), expectedSimplified);
+			}
+		);
+
+
+		it("should strip empty token tree branches",
+			function () {
+				var tokenStream = [
+					{
+						type: "type",
+						content: [
+							["", ""],
+							"",
+							{type: "nested", content: [""]}
+						]
+					},
+					[[[[[[[""]]]]]]]
+				];
+
+				var expectedSimplified = [
+					["type", [
+						["nested", []]
+					]]
+				];
+
+				assert.deepEqual(TokenStreamTransformer.simplify(tokenStream), expectedSimplified);
+			}
+		);
+
+
+		it("should ignore all properties in tokens except value and content",
+			function () {
+
+				var tokenStream = [
+					{type: "type", content: "content", alias: "alias"}
+				];
+
+				var expectedSimplified = [
+					["type", "content"]
+				];
+
+				assert.deepEqual(TokenStreamTransformer.simplify(tokenStream), expectedSimplified);
+			}
+		);
+	}
+);
+//endregion
+
+
+//region Language name parsing
+describe("The language name parsing",
+	function () {
+		it("should use the last language as the main language if no language is specified",
+			function () {
+				assert.deepEqual(
+					TestCase.parseLanguageNames("a"),
+					{
+						languages: ["a"],
+						mainLanguage: "a"
+					}
+				);
+
+				assert.deepEqual(
+					TestCase.parseLanguageNames("a+b+c"),
+					{
+						languages: ["a", "b", "c"],
+						mainLanguage: "c"
+					}
+				);
+			}
+		);
+
+
+		it("should use the specified language as main language",
+			function () {
+				assert.deepEqual(
+					TestCase.parseLanguageNames("a+b!+c"),
+					{
+						languages: ["a", "b", "c"],
+						mainLanguage: "b"
+					}
+				);
+			}
+		);
+
+
+		it("should throw an error if there are multiple main languages",
+			function () {
+				assert.throw(
+					function () {
+						TestCase.parseLanguageNames("a+b!+c!");
+					},
+					"There are multiple main languages defined."
+				);
+			}
+		);
+	}
+);
+//endregion
diff --git a/dashboard-ui/bower_components/prism/themes/prism-coy.css b/dashboard-ui/bower_components/prism/themes/prism-coy.css
new file mode 100644
index 0000000000..147b59b9b6
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism-coy.css
@@ -0,0 +1,236 @@
+/**
+ * prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML
+ * Based on https://github.com/tshedor/workshop-wp-theme (Example: http://workshop.kansan.com/category/sessions/basics or http://workshop.timshedor.com/category/sessions/basics);
+ * @author Tim  Shedor
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: black;
+	background: none;
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	direction: ltr;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	position: relative;
+	margin: .5em 0;
+	-webkit-box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+	-moz-box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+	box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+	border-left: 10px solid #358ccb;
+	background-color: #fdfdfd;
+	background-image: -webkit-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+	background-image: -moz-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+	background-image: -ms-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+	background-image: -o-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+	background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+	background-size: 3em 3em;
+	background-origin: content-box;
+	overflow: visible;
+	padding: 0;
+}
+
+code[class*="language"] {
+	max-height: inherit;
+	height: 100%;
+	padding: 0 1em;
+	display: block;
+	overflow: auto;
+}
+
+/* Margin bottom to accomodate shadow */
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+	background-color: #fdfdfd;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	margin-bottom: 1em;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	position: relative;
+	padding: .2em;
+	-webkit-border-radius: 0.3em;
+	-moz-border-radius: 0.3em;
+	-ms-border-radius: 0.3em;
+	-o-border-radius: 0.3em;
+	border-radius: 0.3em;
+	color: #c92c2c;
+	border: 1px solid rgba(0, 0, 0, 0.1);
+	display: inline;
+	white-space: normal;
+}
+
+pre[class*="language-"]:before,
+pre[class*="language-"]:after {
+	content: '';
+	z-index: -2;
+	display: block;
+	position: absolute;
+	bottom: 0.75em;
+	left: 0.18em;
+	width: 40%;
+	height: 20%;
+	max-height: 13em;
+	-webkit-box-shadow: 0px 13px 8px #979797;
+	-moz-box-shadow: 0px 13px 8px #979797;
+	box-shadow: 0px 13px 8px #979797;
+	-webkit-transform: rotate(-2deg);
+	-moz-transform: rotate(-2deg);
+	-ms-transform: rotate(-2deg);
+	-o-transform: rotate(-2deg);
+	transform: rotate(-2deg);
+}
+
+:not(pre) > code[class*="language-"]:after,
+pre[class*="language-"]:after {
+	right: 0.75em;
+	left: auto;
+	-webkit-transform: rotate(2deg);
+	-moz-transform: rotate(2deg);
+	-ms-transform: rotate(2deg);
+	-o-transform: rotate(2deg);
+	transform: rotate(2deg);
+}
+
+.token.comment,
+.token.block-comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: #7D8B99;
+}
+
+.token.punctuation {
+	color: #5F6364;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.function-name,
+.token.constant,
+.token.symbol,
+.token.deleted {
+	color: #c92c2c;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.function,
+.token.builtin,
+.token.inserted {
+	color: #2f9c0a;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.token.variable {
+	color: #a67f59;
+	background: rgba(255, 255, 255, 0.5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword,
+.token.class-name {
+	color: #1990b8;
+}
+
+.token.regex,
+.token.important {
+	color: #e90;
+}
+
+.language-css .token.string,
+.style .token.string {
+	color: #a67f59;
+	background: rgba(255, 255, 255, 0.5);
+}
+
+.token.important {
+	font-weight: normal;
+}
+
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+@media screen and (max-width: 767px) {
+	pre[class*="language-"]:before,
+	pre[class*="language-"]:after {
+		bottom: 14px;
+		-webkit-box-shadow: none;
+		-moz-box-shadow: none;
+		box-shadow: none;
+	}
+
+}
+
+/* Plugin styles */
+.token.tab:not(:empty):before,
+.token.cr:before,
+.token.lf:before {
+	color: #e0d7d1;
+}
+
+/* Plugin styles: Line Numbers */
+pre[class*="language-"].line-numbers {
+	padding-left: 0;
+}
+
+pre[class*="language-"].line-numbers code {
+	padding-left: 3.8em;
+}
+
+pre[class*="language-"].line-numbers .line-numbers-rows {
+	left: 0;
+}
+
+/* Plugin styles: Line Highlight */
+pre[class*="language-"][data-line] {
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 0;
+}
+pre[data-line] code {
+	position: relative;
+	padding-left: 4em;
+}
+pre .line-highlight {
+	margin-top: 0;
+}
diff --git a/dashboard-ui/bower_components/prism/themes/prism-dark.css b/dashboard-ui/bower_components/prism/themes/prism-dark.css
new file mode 100644
index 0000000000..8d5c291561
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism-dark.css
@@ -0,0 +1,129 @@
+/**
+ * prism.js Dark theme for JavaScript, CSS and HTML
+ * Based on the slides of the talk “/Reg(exp){2}lained/”
+ * @author Lea Verou
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: white;
+	background: none;
+	text-shadow: 0 -.1em .2em black;
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	direction: ltr;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+@media print {
+	code[class*="language-"],
+	pre[class*="language-"] {
+		text-shadow: none;
+	}
+}
+
+pre[class*="language-"],
+:not(pre) > code[class*="language-"] {
+	background: hsl(30, 20%, 25%);
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+	border: .3em solid hsl(30, 20%, 40%);
+	border-radius: .5em;
+	box-shadow: 1px 1px .5em black inset;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .15em .2em .05em;
+	border-radius: .3em;
+	border: .13em solid hsl(30, 20%, 40%);
+	box-shadow: 1px 1px .3em -.1em black inset;
+	white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: hsl(30, 20%, 50%);
+}
+
+.token.punctuation {
+	opacity: .7;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol {
+	color: hsl(350, 40%, 70%);
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+	color: hsl(75, 70%, 60%);
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string,
+.token.variable {
+	color: hsl(40, 90%, 60%);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+	color: hsl(350, 40%, 70%);
+}
+
+.token.regex,
+.token.important {
+	color: #e90;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
+
+.token.deleted {
+	color: red;
+}
diff --git a/dashboard-ui/bower_components/prism/themes/prism-funky.css b/dashboard-ui/bower_components/prism/themes/prism-funky.css
new file mode 100644
index 0000000000..e4d676d6ca
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism-funky.css
@@ -0,0 +1,117 @@
+/**
+ * prism.js Funky theme
+ * Based on “Polyfilling the gaps” talk slides http://lea.verou.me/polyfilling-the-gaps/
+ * @author Lea Verou
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	direction: ltr;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: .4em .8em;
+	margin: .5em 0;
+	overflow: auto;
+	background: url('data:image/svg+xml;charset=utf-8,%0D%0A%0D%0A%0D%0A<%2Fsvg>');
+	background-size: 1em 1em;
+}
+
+code[class*="language-"] {
+	background: black;
+	color: white;
+	box-shadow: -.3em 0 0 .3em black, .3em 0 0 .3em black;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .2em;
+	border-radius: .3em;
+	box-shadow: none;
+	white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: #aaa;
+}
+
+.token.punctuation {
+	color: #999;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol {
+	color: #0cf;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin {
+	color: yellow;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.toke.variable,
+.token.inserted {
+	color: yellowgreen;
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+	color: deeppink;
+}
+
+.token.regex,
+.token.important {
+	color: orange;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
+
+.token.deleted {
+	color: red;
+}
diff --git a/dashboard-ui/bower_components/prism/themes/prism-okaidia.css b/dashboard-ui/bower_components/prism/themes/prism-okaidia.css
new file mode 100644
index 0000000000..d7c6bb7d53
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism-okaidia.css
@@ -0,0 +1,122 @@
+/**
+ * okaidia theme for JavaScript, CSS and HTML
+ * Loosely based on Monokai textmate theme by http://www.monokai.nl/
+ * @author ocodia
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: #f8f8f2;
+	background: none;
+	text-shadow: 0 1px rgba(0, 0, 0, 0.3);
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	direction: ltr;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+	border-radius: 0.3em;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+	background: #272822;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .1em;
+	border-radius: .3em;
+	white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: slategray;
+}
+
+.token.punctuation {
+	color: #f8f8f2;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.constant,
+.token.symbol,
+.token.deleted {
+	color: #f92672;
+}
+
+.token.boolean,
+.token.number {
+	color: #ae81ff;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+	color: #a6e22e;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string,
+.token.variable {
+	color: #f8f8f2;
+}
+
+.token.atrule,
+.token.attr-value,
+.token.function {
+	color: #e6db74;
+}
+
+.token.keyword {
+	color: #66d9ef;
+}
+
+.token.regex,
+.token.important {
+	color: #fd971f;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
diff --git a/dashboard-ui/bower_components/prism/themes/prism-solarizedlight.css b/dashboard-ui/bower_components/prism/themes/prism-solarizedlight.css
new file mode 100644
index 0000000000..4418410433
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism-solarizedlight.css
@@ -0,0 +1,149 @@
+/*
+ Solarized Color Schemes originally by Ethan Schoonover
+ http://ethanschoonover.com/solarized
+
+ Ported for PrismJS by Hector Matos
+ Website: https://krakendev.io
+ Twitter Handle: https://twitter.com/allonsykraken)
+*/
+
+/*
+SOLARIZED HEX
+--------- -------
+base03    #002b36
+base02    #073642
+base01    #586e75
+base00    #657b83
+base0     #839496
+base1     #93a1a1
+base2     #eee8d5
+base3     #fdf6e3
+yellow    #b58900
+orange    #cb4b16
+red       #dc322f
+magenta   #d33682
+violet    #6c71c4
+blue      #268bd2
+cyan      #2aa198
+green     #859900
+*/
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: #657b83; /* base00 */
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	direction: ltr;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+	background: #073642; /* base02 */
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+	background: #073642; /* base02 */
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+	border-radius: 0.3em;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+	background-color: #fdf6e3; /* base3 */
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .1em;
+	border-radius: .3em;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: #93a1a1; /* base1 */
+}
+
+.token.punctuation {
+	color: #586e75; /* base01 */
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+	color: #268bd2; /* blue */
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.url,
+.token.inserted {
+	color: #2aa198; /* cyan */
+}
+
+.token.entity {
+	color: #657b83; /* base00 */
+	background: #eee8d5; /* base2 */
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+	color: #859900; /* green */
+}
+
+.token.function {
+	color: #b58900; /* yellow */
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+	color: #cb4b16; /* orange */
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/prism/themes/prism-tomorrow.css b/dashboard-ui/bower_components/prism/themes/prism-tomorrow.css
new file mode 100644
index 0000000000..5c192741d9
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism-tomorrow.css
@@ -0,0 +1,122 @@
+/**
+ * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
+ * Based on https://github.com/chriskempson/tomorrow-theme
+ * @author Rose Pritchard
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: #ccc;
+	background: none;
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	direction: ltr;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+	background: #2d2d2d;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .1em;
+	border-radius: .3em;
+	white-space: normal;
+}
+
+.token.comment,
+.token.block-comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: #999;
+}
+
+.token.punctuation {
+	color: #ccc;
+}
+
+.token.tag,
+.token.attr-name,
+.token.namespace,
+.token.deleted {
+	color: #e2777a;
+}
+
+.token.function-name {
+	color: #6196cc;
+}
+
+.token.boolean,
+.token.number,
+.token.function {
+	color: #f08d49;
+}
+
+.token.property,
+.token.class-name,
+.token.constant,
+.token.symbol {
+	color: #f8c555;
+}
+
+.token.selector,
+.token.important,
+.token.atrule,
+.token.keyword,
+.token.builtin {
+	color: #cc99cd;
+}
+
+.token.string,
+.token.char,
+.token.attr-value,
+.token.regex,
+.token.variable {
+	color: #7ec699;
+}
+
+.token.operator,
+.token.entity,
+.token.url {
+	color: #67cdcc;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
+
+.token.inserted {
+	color: green;
+}
diff --git a/dashboard-ui/bower_components/prism/themes/prism-twilight.css b/dashboard-ui/bower_components/prism/themes/prism-twilight.css
new file mode 100644
index 0000000000..f70e5c50d8
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism-twilight.css
@@ -0,0 +1,202 @@
+/**
+ * prism.js Twilight theme
+ * Based (more or less) on the Twilight theme originally of Textmate fame.
+ * @author Remy Bach
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+	color: white;
+	background: none;
+	direction: ltr;
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	text-align: left;
+	text-shadow: 0 -.1em .2em black;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+pre[class*="language-"],
+:not(pre) > code[class*="language-"] {
+	background: hsl(0, 0%, 8%); /* #141414 */
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	border-radius: .5em;
+	border: .3em solid hsl(0, 0%, 33%); /* #282A2B */
+	box-shadow: 1px 1px .5em black inset;
+	margin: .5em 0;
+	overflow: auto;
+	padding: 1em;
+}
+
+pre[class*="language-"]::-moz-selection {
+	/* Firefox */
+	background: hsl(200, 4%, 16%); /* #282A2B */
+}
+
+pre[class*="language-"]::selection {
+	/* Safari */
+	background: hsl(200, 4%, 16%); /* #282A2B */
+}
+
+/* Text Selection colour */
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+	text-shadow: none;
+	background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+	text-shadow: none;
+	background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	border-radius: .3em;
+	border: .13em solid hsl(0, 0%, 33%); /* #545454 */
+	box-shadow: 1px 1px .3em -.1em black inset;
+	padding: .15em .2em .05em;
+	white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: hsl(0, 0%, 47%); /* #777777 */
+}
+
+.token.punctuation {
+	opacity: .7;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.tag,
+.token.boolean,
+.token.number,
+.token.deleted {
+	color: hsl(14, 58%, 55%); /* #CF6A4C */
+}
+
+.token.keyword,
+.token.property,
+.token.selector,
+.token.constant,
+.token.symbol,
+.token.builtin {
+	color: hsl(53, 89%, 79%); /* #F9EE98 */
+}
+
+.token.attr-name,
+.token.attr-value,
+.token.string,
+.token.char,
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string,
+.token.variable,
+.token.inserted {
+	color: hsl(76, 21%, 52%); /* #8F9D6A */
+}
+
+.token.atrule {
+	color: hsl(218, 22%, 55%); /* #7587A6 */
+}
+
+.token.regex,
+.token.important {
+	color: hsl(42, 75%, 65%); /* #E9C062 */
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
+
+pre[data-line] {
+	padding: 1em 0 1em 3em;
+	position: relative;
+}
+
+/* Markup */
+.language-markup .token.tag,
+.language-markup .token.attr-name,
+.language-markup .token.punctuation {
+	color: hsl(33, 33%, 52%); /* #AC885B */
+}
+
+/* Make the tokens sit above the line highlight so the colours don't look faded. */
+.token {
+	position: relative;
+	z-index: 1;
+}
+
+.line-highlight {
+	background: -moz-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
+	background: -o-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
+	background: -webkit-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
+	background: hsla(0, 0%, 33%, 0.25); /* #545454 */
+	background: linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
+	border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */
+	border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */
+	left: 0;
+	line-height: inherit;
+	margin-top: 0.75em; /* Same as .prism’s padding-top */
+	padding: inherit 0;
+	pointer-events: none;
+	position: absolute;
+	right: 0;
+	white-space: pre;
+	z-index: 0;
+}
+
+.line-highlight:before,
+.line-highlight[data-end]:after {
+	background-color: hsl(215, 15%, 59%); /* #8794A6 */
+	border-radius: 999px;
+	box-shadow: 0 1px white;
+	color: hsl(24, 20%, 95%); /* #F5F2F0 */
+	content: attr(data-start);
+	font: bold 65%/1.5 sans-serif;
+	left: .6em;
+	min-width: 1em;
+	padding: 0 .5em;
+	position: absolute;
+	text-align: center;
+	text-shadow: none;
+	top: .4em;
+	vertical-align: .3em;
+}
+
+.line-highlight[data-end]:after {
+	bottom: .4em;
+	content: attr(data-end);
+	top: auto;
+}
diff --git a/dashboard-ui/bower_components/prism/themes/prism.css b/dashboard-ui/bower_components/prism/themes/prism.css
new file mode 100644
index 0000000000..f677cdf81a
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/themes/prism.css
@@ -0,0 +1,138 @@
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: black;
+	background: none;
+	text-shadow: 0 1px white;
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	direction: ltr;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+	text-shadow: none;
+	background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+	text-shadow: none;
+	background: #b3d4fc;
+}
+
+@media print {
+	code[class*="language-"],
+	pre[class*="language-"] {
+		text-shadow: none;
+	}
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+	background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .1em;
+	border-radius: .3em;
+	white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: slategray;
+}
+
+.token.punctuation {
+	color: #999;
+}
+
+.namespace {
+	opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+	color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+	color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+	color: #a67f59;
+	background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+	color: #07a;
+}
+
+.token.function {
+	color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+	color: #e90;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
diff --git a/dashboard-ui/bower_components/prism/vendor/promise.js b/dashboard-ui/bower_components/prism/vendor/promise.js
new file mode 100644
index 0000000000..9bcc799101
--- /dev/null
+++ b/dashboard-ui/bower_components/prism/vendor/promise.js
@@ -0,0 +1,5 @@
+/**
+ * ES6-Promises
+ * https://github.com/jakearchibald/es6-promise
+ */
+!function(){var a,b,c,d;!function(){var e={},f={};a=function(a,b,c){e[a]={deps:b,callback:c}},d=c=b=function(a){function c(b){if("."!==b.charAt(0))return b;for(var c=b.split("/"),d=a.split("/").slice(0,-1),e=0,f=c.length;f>e;e++){var g=c[e];if(".."===g)d.pop();else{if("."===g)continue;d.push(g)}}return d.join("/")}if(d._eak_seen=e,f[a])return f[a];if(f[a]={},!e[a])throw new Error("Could not find module "+a);for(var g,h=e[a],i=h.deps,j=h.callback,k=[],l=0,m=i.length;m>l;l++)"exports"===i[l]?k.push(g={}):k.push(b(c(i[l])));var n=j.apply(this,k);return f[a]=g||n}}(),a("promise/all",["./utils","exports"],function(a,b){"use strict";function c(a){var b=this;if(!d(a))throw new TypeError("You must pass an array to all.");return new b(function(b,c){function d(a){return function(b){f(a,b)}}function f(a,c){h[a]=c,0===--i&&b(h)}var g,h=[],i=a.length;0===i&&b([]);for(var j=0;j